rome-solidity is a Solidity smart contract monorepo for bidirectional EVM ↔ Solana interop primitives within the Rome-EVM program stack, token utilities, and a Meteora DEX AMM implementation, tested via Hardhat.
- Solana-compatible token/account behavior in EVM style
Meteora DAMMv1: automated market maker + factory/pool system- Cross-program invocation wrappers (CPI) — let Solidity contracts invoke native Solana programs via the precompile at
0xff…08(plus gas-token wrap/unwrap, withdraw) - Surface for MetaHook callbacks — Solana programs invoke Rome EVM contracts with a synthetic EVM sender derived from the calling Solana program ID; Solidity contracts can target this surface to be invoked from Solana side
- ERC20 interface to SPL tokens (supports liquidity flow in both directions: Solana liquidity consumed in Solidity, Rome-side liquidity contributed back to Solana protocols)
- Node.js 18+ (recommended)
- npm / yarn
- Hardhat dependencies (installed by
npm installbelow)
npm installnpx hardhat compileThis integration can be used as an example of how Rome-EVM can provide interoperability with native Solana smart-contracts.
- Go to https://devnet.meteora.ag/pools#dynamicpools and find Meteora DAMMv1 pool which your would like to use from within Rome-EVM
- Copy the address of this pool (base58) and convert it into HEX. Later we will refer to this address as POOL_ADDRESS
Example scripts:
- deploy_meteora_factory.ts
- deploy_meteora_pool.ts
export <CHAIN>_PRIVATE_KEY=<YOUR_PRIVATE_KEY>
export POOL_ADDRESS=<YOUR_POOL_ADDRESS>
npx hardhat run scripts/deploy_meteora_factory.ts --network <chain>
npx hardhat run scripts/deploy_meteora_pool.ts --network <chain>After successful deployment, you will see a new file /deployments/<network>.json
which contains information about deployed smart contracts. This file is later used by tests.
Set tester private key in dev keystore:
npx hardhat keystore set <CHAIN>_PRIVATE_KEY --devUse Hardhat test suite:
npx hardhat test tests/damm_v1_pool.integration.ts --network localMeteoraDAMMv1Factory- create pool factory
- manage pool creation and fee config
DAMMv1Pool- liquidity add/remove (WIP)
- swap with invariant (WIP)
- fee model
ERC20SPLFactory+SPL_ERC20- minting/burning wrapped SPL tokens
- bridging SPL tokens to ERC20 style
- Solidity currently targeted: 0.8.28
- Prefer non-reentrant checks and SafeMath semantics (built in)
- Maintain artifacts +
build-infofor deterministic testing - Cross-program invocations encouraged through clean wrappers in
interface.sol
- Fork repo
- branch
feature/<name> - add/adjust tests
npm test- PR with explanation + gas/security notes
- artifacts includes compiled JSON from existing snapshot builds.
deployments/<network>.jsoncarries the deployed contract metadata for each chain (perhardhat.config.tsnetworks). No live devnet currently — see CLAUDE.md "Networks" section for active hardhat networks.- Keep toolchain with hardhat.config.ts and
tsconfigconsistent with existing pattern.