RP1’s EVM module is native to the chain application. It maps EVM account, nonce, code, storage, gas, logs, and state-root behavior into RP1 state while exposing an Ethereum-compatible JSON-RPC surface.
Connect
Use the EVM endpoint for the target network. The public testnet endpoint is https://testnet.evm.rp.one; query the actual EVM chain ID and gas configuration before signing.
curl -fsS https://testnet.evm.rp.one \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'JSON-RPC scope
The server supports the eth_*, web3_*, and net_* families needed for balances, calls, transactions, blocks, receipts, and logs. eth_getLogs has bounded block ranges and address/topic list limits; a client should paginate rather than assume an unbounded indexer.
RP1-native precompile
The current application wiring registers one callable RP1-native precompile:
| Address | Capability | Availability |
|---|---|---|
0x0000000000000000000000000000000000000803 |
Velocity Script and supported Wasm/bridge workflows | Current application surface |
The 0x0800–0x0802 constants are reserved for Oracle, Privacy, and InstaWrap adapters, but are not callable precompiles in the current application wiring. Use the native module messages and queries for those capabilities. Use the target release’s Solidity interfaces for 0x0803, and remember that a precompile preserves the called module’s permission, proof, gas, pause, and accounting boundary; it is not a privileged escape hatch.
Contract lifecycle
- Compile and inspect bytecode locally.
- Call
eth_estimateGasor a bounded simulation where the endpoint supports it. - Sign with the target chain ID and native gas denom.
- Observe the receipt, logs, and committed height.
- Reconcile any precompile or bridge intent through its module query.
See smart contracts and programmable workflows.