Cuentas Keyless
El SDK .NET de Aptos proporciona una implementación de cuentas Keyless para derivar cuentas de inicios de sesión de proveedores sociales. En esta guía, proporcionaremos fragmentos de crear cuentas.
Crear KeylessAccounts
Sección titulada «Crear KeylessAccounts»Las KeylessAccounts se crean para firmar transacciones e interactuar con la blockchain usando inicios de sesión de proveedores sociales. Para crear una cuenta Keyless, necesitarás seguir algunos pasos para obtener los componentes necesarios de una cuenta Keyless.
-
Crear un Par de Claves Efímeras
El primer paso para crear una cuenta Keyless es crear un par de claves efímeras. Esta es una clave efímera usada para firmar transacciones. Es importante almacenar este par de claves en una ubicación segura en la aplicación ya que se usará para firmar transacciones.
var ephemeralKeyPair = EphemeralKeyPair.Generate(); -
Obtener un Token de Identidad OpenID Connect (OIDC)
Para obtener un
id_token(Token de Identidad OIDC), necesitarás autenticarte con un proveedor social. Al final del flujo de autorización, el usuario debería ser redirigido a tu aplicación con unid_token. Necesitarás almacenar esteid_tokenen una ubicación segura en la aplicación. Es importante que elid_tokentenga un campo nonce que coincida con el campononcedentro delEphemeralKeyPair.Ejemplo:
var nonce = ephemeralKeyPair.Nonce;var authorizationUrl = "https://accounts.google.com/o/oauth2/v2/auth&nonce=" + nonce; -
Derivar una Cuenta Keyless
Una vez que el usuario tenga los siguientes componentes, debería poder derivar una cuenta Keyless.
id_token: Obtenido del flujo de autorización.EphemeralKeyPair: Creado en los pasos anteriores.
Es importante que el campo
noncedentro delEphemeralKeyPaircoincida con el campononcedentro delid_tokenpara asegurar que el usuario pueda firmar transacciones.var client = new AptosClient(Networks.Mainnet);var keylessAccount = await client.Keyless.DeriveAccount(idToken, ephemeralKeyPair); -
Firmar y Enviar transacciones
Después de derivar una cuenta Keyless, puedes firmar y enviar transacciones usando el
AptosClient.// 1. Construir la transacciónvar 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. Firmar y enviar la transacciónvar submittedTransaction = await client.Transaction.SignAndSubmitTransaction(keylessAccount, transaction);// 3. (Opcional) Esperar a que la transacción sea confirmadavar committedTransaction = await client.Transaction.WaitForTransaction(submittedTransaction.Hash);