Run Remus example

Remus transactions involve multiple Ethereum-like rollup transactions bundled within a single Solana transaction. This structure allows for cross-rollup atomic transactions.

Run Remus example using

cargo run --example remus

Methods used

We explain the methods used in rome-sdk/examples/remus.rs below.

Main methods

The Rome struct will be used to compose transactions. Initialize it with your configuration:

let config = RomeConfig::load_json(common::CONFIG_PATH.parse()?).await?;
let rome = Rome::new_with_config(config).await?;

Create a RemusTx transaction and then compose it using the Rome transaction structure:

let remus_tx = RemusTx::new(txs);
let mut rome_tx = rome.compose_cross_rollup_tx(remus_tx).await?;

Send the transaction to the Solana network:

let signature = rome.send_and_confirm(&mut *rome_tx).await?;

Helper methods

The helper methods are same as in the Rhea example.

Example Results

cargo run --example remus

INFO remus: https://explorer.solana.com/tx/ikbKwMcTWZXodVgqnmhxtVrdxkE5QMiFgfTAvhLSQ21SrvX12S9jYGdiUwjCBZpGvCyE8nWFU9ZM3YZpRGC6ABe?cluster=devnet

Solana Transaction

The Solana block explorer shows the Solana transaction below (link here). This transaction contains two relevant instructions executed atomically within this single Solana transaction.

  • Instruction 3 logs show transfer from wallet ae600d1f94680ef43ab12f8d618f8aafc208fe25 to wallet b94f5374fce5edbc8e2a8697c15331677e6ebf0b for chain 200003.

  • Instruction 4 logs show transfer from wallet ae600d1f94680ef43ab12f8d618f8aafc208fe25 to wallet b94f5374fce5edbc8e2a8697c15331677e6ebf0b for chain 200004.

Rollup Transactions

The Rollup block explorers show these rollup transactions for chains 200003 and 200004 from wallet ae600d1f94680ef43ab12f8d618f8aafc208fe25 to b94f5374fce5edbc8e2a8697c15331677e6ebf0b.

Last updated