Crate walletconnect_sdk

Crate walletconnect_sdk 

Source
Expand description

§walletconnect-sdk

A Rust implementation of WalletConnect specs.

§Features

  • Pairing using session settle
  • Types

§Example

API for interacting with WalletConnect relay

// Get project_id from https://cloud.reown.com
let project_id = "xxxx";

// Generate random once, store it in client and reuse it for all connections
let client_seed = [123u8; 32];

let conn = Connection::new(
    "https://relay.walletconnect.org/rpc",
    "https://relay.walletconnect.org",
    project_id,
    client_seed,  Metadata {
        name: "My Wallet Name".to_string(),
        description: "My wallet interacts with dapp".to_string(),
        url: "https://my-wallet-site.com".to_string(),
        icons: vec![],
    },
);

let uri_from_dapp = "wc:e4b9eb7a1372bf88abc46c37acac3687301afdfd0d2a4c2355945d66a1164464@2?relay-protocol=irn&symKey=d7430284e1b70853829a010518a088cde0e163bcad5f24425e3b17578b2b402d&expiryTimestamp=1749783095&methods=wc_sessionAuthenticate";

let (mut pairing, _) = conn
    .init_pairing(uri_from_dapp)
    .await
    .expect("pairing failed");

pairing
    .approve_with_session_settle(
        // Address of the wallet that is connecting to dApp
        "0x0000000000000000000000000000000000000123"
            .parse()
            .unwrap(),
    )
    .await
    .expect("approve failed");

loop {
    let result =
        pairing.watch_messages(Topic::Derived, None).await.unwrap();

    println!("result: {result:?}");
}

§License

MIT OR Apache-2.0

Re-exports§

pub use connection::Connection;
pub use error::Error;
pub use pairing::Pairing;

Modules§

cacao
connection
constants
error
message
pairing
relay_auth
types
utils
wc_message