Contract 9bc20974a79e4b5b267f769df68c1edced991088ce1f08272f5e8c1d02e9b6b0

← Back to Index 📥 Download WASM

Meta

rssdkver 23.2.1#ab415a33cc1f6bdce20ac4a12f0ddbe41a648949
rsver 1.91.1

Instances

  • CA33LFSHCUL5IKNAKX2ST4AXUN2VKO2VPVONTKVPRVDYTDCNT4UI6URU
  • CABMZYMYIC2GG7CO45HGUH5TAZTHKAYI4JVMXWTXLKC6T4DMDL2ZSIKW
  • CBDOVBXLQNZDKJIRTZLSWYWX3PQYARQCP5QDLIR74ANHH6EQAH4F77RR
  • CBJN67DJMDI3GDISCGJN6VXBN4WWQDTME4JDMQHYEENPS4BT5RNYWOWJ
  • CCK7UO2W3Q5AXHMFGDWTBE4CYEZ6DVOR32LJAQGNQFPLIE33PAR4ZM24
  • CCRRDSY3CFBWZCOCT2WCXBRPTEXRZUVSCEZMMS5TIUNIO3JY7XAXLTRB
  • CD5AOA2I7WTIEFHN3J3PQLKGFMUTUJYM32B2W7I35LSGWRGJKPSH6JKW
  • CDG3HNNDIDMOTQN4DX73V2PSTYRD3UO33QKLPC7SHRI76VYO6R7SSSST

Interface

Initialize the contract with the passkey secp256r1 public key (65-byte uncompressed).

fn init(env: soroban_sdk::Env, passkey_pubkey: soroban_sdk::BytesN<65>)

Read current nonce (monotonic).

fn get_nonce(env: soroban_sdk::Env) -> u64

Read the stored passkey pubkey (for debugging/verification).

fn get_passkey(env: soroban_sdk::Env) -> soroban_sdk::BytesN<65>

Transfer USDC from this contract to a recipient address. Only the registered passkey can authorize.

auth_data and client_data_json come from the WebAuthn assertion. The signature is over SHA256(auth_data || SHA256(client_data_json)). The challenge inside client_data_json must equal SHA256("transfer_usdc" | amount | nonce).

fn transfer_usdc(
    env: soroban_sdk::Env,
    recipient: soroban_sdk::Address,
    amount: i128,
    signature: soroban_sdk::BytesN<64>,
    auth_data: soroban_sdk::Bytes,
    client_data_json: soroban_sdk::Bytes,
)

Imports

WebAssembly Text (WAT) ▶