For the complete documentation index, see llms.txt. This page is also available as Markdown.

Choose your core

A dual-lane app can hold its core logic on the Solidity side or the native Solana side. It's a judgment call — weigh what matters for your app.

Most Rome apps are dual-lane: one shared state, reached by both MetaMask (EVM) and Phantom (Solana) users. You can build one in two mirror-image shapes, differing in which side holds the core logic. There's no hard-and-fast rule for which to pick — it's a soft judgment from what matters for your app: the code and assets you already have, your team's expertise, your security posture, the tooling you prefer, performance, and how each audience will use it.

(a) Solidity core; Solana users via a synthetic sender

Your logic is a Solidity contract. A Phantom user's Solana signature is executed as an EVM transaction from their Rome-derived identity (the external_auth PDA) — they never need an EVM key. Often a good fit when you already have a Solidity contract (especially a hardened or audited one), want standard EVM tooling (Hardhat / Foundry / viem), or the logic is straightforward.

Read: aerarium — a Compound v3 lending market (Solidity core) that EVM and Solana users share.

(b) Native Solana program core; EVM users via a thin CPI router

Your logic is a native Solana program; a thin Solidity router lets EVM users reach it via CPI. Often a good fit when you already have a Solana program, or when running the core natively matters for what you're building.

Read: rome-dex — a native AMM (Solana core) with an EVM router, so both lanes trade one pool.

For example: performance

Performance is one thing that might tip the choice — consider it as an example. Native Solana execution can be considerably cheaper than the EVM interpreter for heavy logic: one swap we measured ran roughly 6× cheaper natively. If your app has a hot, compute-heavy path, that kind of difference might matter to you; if it doesn't, it probably won't drive the decision. Treat it as one input among many, not a rule.

Whichever you choose

Keep the core authority-agnostic — act on whichever authority signs, so the caller can be a Solana pubkey or an EVM user's PDA — keep the account set lean and ALT-friendly so the EVM lane stays cheap, and test both lanes.

What's next

Last updated

Was this helpful?