Run Rhea example

Rhea enables fair sequencing of rollup transactions. Rhea transaction encapsulates a single Ethereum-like rollup transaction within a Solana transaction.

Run Rhea example using

cargo run --example rhea

Ensure the from address (0xae600d1f94680ef43ab12f8d618f8aafc208fe25) has sufficient funds, otherwise airdrop to from address using https://rometestus1.testnet.romeprotocol.xyz/request_airdrop

Methods used

We explain the methods used in rome-sdk/examples/rhea.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 RheaTx transaction and then compose it using the Rome transaction structure:

let rhea_tx = RheaTx::new(tx);
let mut rome_tx = rome.compose_rollup_tx(rhea_tx).await?;

Send the transaction to the Solana network:

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

Helper methods

To enable tracing and logging for easier debugging, initialize a tracing subscriber using

tracing_subscriber::fmt::init();

Log relevant information using

tracing::info!("Signature: {:?}", signature);
tracing::info!(
    "https://explorer.solana.com/tx/{}?cluster={}",
    signature,
    rpc_url
);

Create Ethereum wallet using

let wallet = common::create_wallet();

Construct a transfer transaction using

let tx: EthSignedTxTuple = common::construct_transfer_tx(&rome, &wallet, CHAIN_ID).await?;

The steps involved in transaction construction are:

  • Retrieve to and from addresses

  • Obtain the nonce

  • Create a transaction request (using ethers library)

  • Estimate gas fees

  • Sign the transaction

Last updated