跳转到内容

创建和管理账户

使用 TypeScript SDK 有几种方式可以生成账户凭证.你可以使用:

  • Account.generate()
  • Account.fromPrivateKey()
  • Account.fromDerivationPath()

Account.generate() 是最常用的为新账户创建密钥的方法. 它默认使用 ED25519 密钥编码,但你也可以手动指定偏好的签名方案:

const account = Account.generate(); // 默认为 Legacy Ed25519
const account = Account.generate({ scheme: SigningSchemeInput.Secp256k1Ecdsa }); // Single Sender Secp256k1
const account = Account.generate({
scheme: SigningSchemeInput.Ed25519,
legacy: false,
}); // Single Sender Ed25519

生成凭证后,你必须为其注资,网络才能识别该账户的存在.

在本地网络/开发网络中,可以通过运行以下命令使用 faucet 完成:

const transaction = await aptos.fundAccount({
accountAddress: account.accountAddress,
amount: 100,
});

对于测试网络,你可以使用此处的铸币页面here.

如果你拥有私钥或等效表示形式,可以使用它们创建 Account 对象,在使用 TypeScript SDK 时管理这些凭证.

以下是几个展示如何使用特定编码方案实现的示例.

SDK 支持使用 fromPrivateKey() 静态方法从私钥派生账户. 此外,该方法还支持从私钥和账户地址派生账户. 该方法使用本地计算,因此用于派生尚未进行认证密钥轮换的 Account.

// 使用 legacy Ed25519 密钥方案派生账户
const privateKey = new Ed25519PrivateKey(privateKeyBytes);
const account = Account.fromPrivateKey({ privateKey });
// 使用 Single Sender Ed25519 密钥方案派生账户
const privateKey = new Ed25519PrivateKey(privateKeyBytes);
const account = Account.fromPrivateKey({ privateKey, legacy: false });
// 使用 Single Sender Secp256k1 密钥方案派生账户
const privateKey = new Secp256k1PrivateKey(privateKeyBytes);
const account = Account.fromPrivateKey({ privateKey });
// 使用私钥和账户地址派生账户
const privateKey = new Ed25519PrivateKey(privateKeyBytes);
const address = AccountAddress.from(address);
const account = Account.fromPrivateKey({ privateKey, address });

SDK 支持使用 fromDerivationPath() 静态方法从派生路径派生账户.

// 使用传统的 Ed25519 密钥方案派生账户
const { mnemonic, address, path } = wallet;
const account = Account.fromDerivationPath({
path,
mnemonic,
scheme: SigningSchemeInput.Ed25519,
});
// 使用 Single Sender Ed25519 密钥方案派生账户
const { mnemonic, address, path } = wallet;
const account = Account.fromDerivationPath({
path,
mnemonic,
scheme: SigningSchemeInput.Ed25519,
legacy: false,
});// 派生一个使用 Single Sender Secp256k1 密钥方案的账户
const { mnemonic, address, path } = wallet;
const account = Account.fromDerivationPath({
path,
mnemonic,
scheme: SigningSchemeInput.Secp256k1Ecdsa,
});