Skip to content

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

Kuest
Kuest Rust Builder Relayer Client

Wallet-only Rust client for the Kuest relayer.

Install

[dependencies]
kuest-builder-relayer-client = "0.1.8"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

Supported Chains

  • 137 Polygon mainnet

The production chain uses these Deposit Wallet contracts:

  • Factory: 0x2CcdC6C5dDcd895aFcCD259F291de9b618A5cA6c
  • Beacon: 0x74a618eBdd62Ff8579A8FE94f5B888d7623b9C35
  • Implementation: 0x65507Fa36589B3b2ceD54E77999909e843691e44

Environment

  • RELAYER_URL
  • KUEST_BUILDER_API_KEY
  • KUEST_BUILDER_SECRET
  • KUEST_BUILDER_PASSPHRASE

Usage

use kuest_builder_relayer_client::{
    BuilderApiKeyCreds, BuilderConfig, DepositWalletCall, RelayClient,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let builder_config = BuilderConfig::local(BuilderApiKeyCreds::new(
        std::env::var("KUEST_BUILDER_API_KEY")?,
        std::env::var("KUEST_BUILDER_SECRET")?,
        std::env::var("KUEST_BUILDER_PASSPHRASE")?,
    ))?;

    let client = RelayClient::new_with_private_key(
        &std::env::var("RELAYER_URL")?,
        137,
        "0xabc123...",
        Some(builder_config),
    )?;

    let wallet = client.derive_deposit_wallet()?;
    client.deploy_deposit_wallet().await?;
    client
        .execute_deposit_wallet_batch(
            &[DepositWalletCall {
                target: "0x0000000000000000000000000000000000000001".to_owned(),
                value: "0".to_owned(),
                data: "0x".to_owned(),
            }],
            &wallet,
            "1735689600",
        )
        .await?;

    Ok(())
}

Public API

  • get_nonce(address, tx_type)
  • get_transaction(transaction_id)
  • get_transactions()
  • get_deployed(address)
  • derive_deposit_wallet()
  • derive_deposit_wallet_address()
  • get_expected_deposit_wallet()
  • deploy_deposit_wallet()
  • execute_deposit_wallet_batch(calls, wallet_address, deadline)
  • execute_deposit_wallet_batch_public(calls, wallet_address, deadline)
  • poll_until_state(transaction_id, states, fail_state, max_polls, poll_frequency)

Builder Auth

Local builder auth mirrors the existing SDKs and signs:

timestamp + method + path + body

The generated headers remain:

  • KUEST_BUILDER_API_KEY
  • KUEST_BUILDER_PASSPHRASE
  • KUEST_BUILDER_TIMESTAMP
  • KUEST_BUILDER_SIGNATURE

Remote signing mode is also supported through BuilderConfig::remote(...).

Security Notes

  • Secrets use secrecy::SecretString and are redacted in debug output.
  • The crate does not log raw builder headers, signatures, or secrets.

Releases

Packages

Contributors

Languages