跳转到内容

Multikey 账户

Aptos .NET SDK 提供 Multikey 账户实现,可通过多个密钥对组合创建账户。这对多签账户很有用。本指南提供创建账户的代码片段。

MultiKeyAccount 用于签署交易,其账户受多个私钥控制。

创建 MultiKey 账户需要以下组件:

  • PublicKeys:控制 MultiKey 账户的账户公钥。
  • SignaturesRequired:签署交易所需的最小签名者数量。
  • Signers:用于签署交易的账户签名者。签名者数量应等于或大于 SignaturesRequired
  1. 创建账户

    创建账户;它们可以是不同类型的账户。

    var account1 = Ed25519Account.Generate();
    var account2 = SingleKeyAccount.Generate(PublicKeyVariant.Secp256k1Ecdsa);
  2. 创建 MultiKey 验证密钥

    使用 PublicKeysSignaturesRequired 创建 MultiKey 验证密钥。在此例中,有两个账户控制 MultiKey,并要求 2 个签名者签署交易。

    var multiKey = new MultiKey(
    publicKeys: [account1.PublicKey, account2.PublicKey],
    signaturesRequired: 2,
    );
  3. 创建 MultiKey 账户

    使用 PublicKeysSignaturesRequiredSigners 创建 MultiKey 账户。

    var multikeyAccount = new MultiKeyAccount(
    multiKey: multiKey,
    signers: [account1, account2]
    );
  4. 签署并提交交易

    创建 MultiKey 账户后,可使用 AptosClient 签署并提交交易。

    // 1. Build the transaction
    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. Sign and submit the transaction
    var submittedTransaction = await client.Transaction.SignAndSubmitTransaction(multikeyAccount, transaction);
    // 3. (Optional) Wait for the transaction to be committed
    var committedTransaction = await client.Transaction.WaitForTransaction(submittedTransaction.Hash);