Skip to content

RISE System Contracts

This page provides a reference for all the system contract addresses on RISE Testnet.

Layer 1 (Sepolia) Contracts

These contracts are deployed on the Sepolia Ethereum testnet and handle the communication between L1 and RISE Testnet.

Contract NameDescriptionAddress
AnchorStateRegistryProxyStores state roots of the L2 chain0x5ca4bfe196aa3a1ed9f8522f224ec5a7a7277d5a
BatchSubmitterSubmits batches of transactions0x45Bd8Bc15FfC21315F8a1e3cdF67c73b487768e8
ChallengerHandles challenges to invalid state transitions0xb49077bAd82968A1119B9e717DBCFb9303E91f0F
DelayedWETHProxyWrapped ETH with withdrawal delay0x3547e7b4af6f0a2d626c72fd7066b939e8489450
DisputeGameFactoryProxyCreates dispute games for challenging invalid state0x790e18c477bfb49c784ca0aed244648166a5022b
L1CrossDomainMessengerProxyHandles message passing from L1 to L20xcc1c4f905d0199419719f3c3210f43bb990953fc
L1ERC721BridgeProxyBridge for NFTs between L1 and L20xfc197687ac16218bad8589420978f40097c42a44
L1StandardBridgeProxyBridge for ETH and ERC20 tokens0xe9a531a5d7253c9823c74af155d22fe14568b610
MIPSMIPS verification for fault proofs0xaa33f21ada0dc6c40a33d94935de11a0b754fec4
OptimismMintableERC20FactoryProxyFactory for creating bridged tokens on L20xb9b92645886135838abd71a1bbf55e34260dabf6
OptimismPortalProxyMain entry point for L1 to L2 transactions0x77cce5cd26c75140c35c38104d0c655c7a786acb
PreimageOracleStores preimages for fault proofs0xca8f0068cd4894e1c972701ce8da7f934444717d
ProposerProposes new L2 state roots0x407379B3eBd88B4E92F8fF8930D244B592D65c06
SystemConfigProxyConfiguration for the RISE system0x5088a091bd20343787c5afc95aa002d13d9f3535
UnsafeBlockSignerSigns blocks in development mode0x8d451372bAdE8723F45BF5134550017F639dFb11

Layer 2 (RISE Testnet) Contracts

These are the predeploy contracts on RISE Testnet (L2).

Contract NameDescriptionAddress
L2ToL1MessagePasserInitiates withdrawals to L10x4200000000000000000000000000000000000016
L2CrossDomainMessengerHandles message passing from L2 to L10x4200000000000000000000000000000000000007
L2StandardBridgeL2 side of the token bridge0x4200000000000000000000000000000000000010
L2ERC721BridgeL2 side of the NFT bridge0x4200000000000000000000000000000000000014
SequencerFeeVaultCollects sequencer fees0x4200000000000000000000000000000000000011
OptimismMintableERC20FactoryCreates standard bridged tokens0x4200000000000000000000000000000000000012
OptimismMintableERC721FactoryCreates bridged NFTs0x4200000000000000000000000000000000000017
L1BlockProvides L1 block information0x4200000000000000000000000000000000000015
GasPriceOracleProvides gas price information0x420000000000000000000000000000000000000F
ProxyAdminAdmin for proxy contracts0x4200000000000000000000000000000000000018
BaseFeeVaultCollects base fee0x4200000000000000000000000000000000000019
L1FeeVaultCollects L1 data fees0x420000000000000000000000000000000000001A
GovernanceTokenRISE governance token0x4200000000000000000000000000000000000042
SchemaRegistryEAS schema registry0x4200000000000000000000000000000000000020
EASEthereum Attestation Service0x4200000000000000000000000000000000000021

Using System Contracts

These system contracts follow similar interfaces to other Ethereum Layer 2 solutions. You can interact with these contracts using standard Ethereum libraries and tools.

Example: Bridging ETH from L1 to L2

solidity
// On Sepolia (L1)
IL1StandardBridge bridge = IL1StandardBridge(0xe9a531a5d7253c9823c74af155d22fe14568b610);

// Deposit ETH to L2
bridge.depositETH{value: amount}(
    minGasLimit,
    emptyBytes  // No additional data
);

Example: Sending a Message from L2 to L1

solidity
// On RISE Testnet (L2)
IL2CrossDomainMessenger messenger = IL2CrossDomainMessenger(0x4200000000000000000000000000000000000007);

// Send message to L1
messenger.sendMessage(
    targetL1Address,
    abi.encodeWithSignature("someFunction(uint256)", value),
    minGasLimit
);

For detailed information about how to use these contracts, refer to the RISE Developer Documentation.