Keyless 账户
Aptos .NET SDK 提供 Keyless 账户实现,可从社交提供商登录派生账户。本指南提供创建账户的代码片段。
创建 KeylessAccount
Section titled “创建 KeylessAccount”KeylessAccount 用于通过社交提供商登录签署交易并与区块链交互。创建 Keyless 账户时,需要完成几个步骤以获得必要组件。
-
创建临时密钥对
创建 Keyless 账户的第一步是创建临时密钥对。这是用于签署交易的临时密钥;务必将其安全存储在应用中,因为它将用于签署交易。
var ephemeralKeyPair = EphemeralKeyPair.Generate(); -
获取 OpenID Connect(OIDC)身份令牌
要取得
id_token(OIDC 身份令牌),需要通过社交提供商进行身份验证。授权流程结束时,用户应携带id_token被重定向回应用。需要将此id_token安全存储在应用中。请务必确保id_token的 nonce 字段与EphemeralKeyPair中的nonce字段相匹配。示例:
var nonce = ephemeralKeyPair.Nonce;var authorizationUrl = "https://accounts.google.com/o/oauth2/v2/auth&nonce=" + nonce; -
派生 Keyless 账户
用户获得以下组件后,应能派生 Keyless 账户:
id_token:从授权流程获得。EphemeralKeyPair:在前述步骤中创建。
请务必确保
EphemeralKeyPair中的nonce字段与id_token中的nonce字段相匹配,以确保用户能够签署交易。var client = new AptosClient(Networks.Mainnet);var keylessAccount = await client.Keyless.DeriveAccount(idToken, ephemeralKeyPair); -
签署并提交交易
派生 Keyless 账户后,可使用
AptosClient签署并提交交易。// 1. Build the transactionvar transaction = await client.Transaction.Build(sender: keylessAccount,data: new GenerateEntryFunctionPayloadData(function: "0x1::aptos_account::transfer_coins",typeArguments: ["0x1::aptos_coin::AptosCoin"],functionArguments: [account.Address, "100000"]));// 2. Sign and submit the transactionvar submittedTransaction = await client.Transaction.SignAndSubmitTransaction(keylessAccount, transaction);// 3. (Optional) Wait for the transaction to be committedvar committedTransaction = await client.Transaction.WaitForTransaction(submittedTransaction.Hash);
KeylessAccount 参考 KeylessAccount 类的完整 API 参考。