Saltearse al contenido

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.

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.

  1. 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();
  2. 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 un id_token. Necesitarás almacenar este id_token en una ubicación segura en la aplicación. Es importante que el id_token tenga un campo nonce que coincida con el campo nonce dentro del EphemeralKeyPair.

    Ejemplo:

    var nonce = ephemeralKeyPair.Nonce;
    var authorizationUrl = "https://accounts.google.com/o/oauth2/v2/auth&nonce=" + nonce;
  3. 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 del EphemeralKeyPair coincida con el campo nonce dentro del id_token para asegurar que el usuario pueda firmar transacciones.

    var client = new AptosClient(Networks.Mainnet);
    var keylessAccount = await client.Keyless.DeriveAccount(idToken, ephemeralKeyPair);
  4. Firmar y Enviar transacciones

    Después de derivar una cuenta Keyless, puedes firmar y enviar transacciones usando el AptosClient.

    // 1. Construir la transacción
    var 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ón
    var submittedTransaction = await client.Transaction.SignAndSubmitTransaction(keylessAccount, transaction);
    // 3. (Opcional) Esperar a que la transacción sea confirmada
    var committedTransaction = await client.Transaction.WaitForTransaction(submittedTransaction.Hash);