Saltearse al contenido

Cuentas Multikey

El SDK .NET de Aptos proporciona una implementación de cuentas Multikey para crear cuentas desde una combinación de múltiples pares de claves. Esto es útil para cuentas Multisig. En esta guía, proporcionaremos fragmentos de crear cuentas.

Las MultiKeyAccount se crean para firmar transacciones donde la cuenta está controlada por múltiples claves privadas.

Para crear una cuenta MultiKey, necesitarás los siguientes componentes:

  • PublicKeys: Las claves públicas de las cuentas que controlan la cuenta MultiKey.
  • SignaturesRequired: El número mínimo de firmantes requeridos para firmar transacciones.
  • Signers: Los firmantes de cuenta que se usarán para firmar transacciones. El número de firmantes debería ser igual o mayor que SignaturesRequired.
  1. Crear tus Cuentas

    Crea tus cuentas, pueden ser diferentes tipos de cuentas.

    var account1 = Ed25519Account.Generate();
    var account2 = SingleKeyAccount.Generate(PublicKeyVariant.Secp256k1Ecdsa);
  2. Crear una Clave de Verificación MultiKey

    Crea una clave de verificación MultiKey usando las PublicKeys y SignaturesRequired. En este ejemplo, tenemos dos cuentas controlando el MultiKey y requerimos 2 firmantes para firmar transacciones.

    var multiKey = new MultiKey(
    publicKeys: [account1.PublicKey, account2.PublicKey],
    signaturesRequired: 2,
    );
  3. Crear la Cuenta MultiKey

    Crea la cuenta MultiKey usando las PublicKeys, SignaturesRequired, y Signers.

    var multikeyAccount = new MultiKeyAccount(
    multiKey: multiKey,
    signers: [account1, account2]
    );
  4. Firmar y Enviar transacciones

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

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