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_token
en una ubicación segura en la aplicación. Es importante que elid_token
tenga un campo nonce que coincida con el campononce
dentro 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
nonce
dentro delEphemeralKeyPair
coincida con el campononce
dentro delid_token
para 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);