Skip to content
Logo

Example: turnkey_signer

To run this example:

  • Clone the examples repository: git clone git@github.com:alloy-rs/examples.git
  • Run: cargo run --locked -p examples-wallets --example turnkey_signer
//! Example showing how to use the Turnkey managed signer.
 
use alloy::{
    primitives::Address,
    signers::{turnkey::TurnkeySigner, Signer},
};
use example_support::required_env;
use eyre::{Result, WrapErr};
 
#[tokio::main]
async fn main() -> Result<()> {
    let organization_id = required_env("TURNKEY_ORGANIZATION_ID")?;
    let api_private_key = required_env("TURNKEY_API_PRIVATE_KEY")?;
    let address: Address = required_env("TURNKEY_ADDRESS")?
        .parse()
        .wrap_err("TURNKEY_ADDRESS must be a valid Ethereum address")?;
 
    let signer = TurnkeySigner::from_api_key(&api_private_key, organization_id, address, Some(1))?;
 
    let message = "Hello, world!";
    let signature = signer.sign_message(message.as_bytes()).await?;
    assert_eq!(signature.recover_address_from_msg(message)?, signer.address());
 
    Ok(())
}

Find the source code on Github here.