创建和管理账户
Kaptos 支持三种适用于生产应用的账户模式:
- 传统 Ed25519 账户(
Ed25519Account/Account.generate()默认值) - 使用统一认证密钥的 SingleKey 账户(
SingleKeyAccount) - 用于阈值签名的 MultiKey 账户(
MultiKeyAccount)
传统账户(Ed25519)
Section titled “传统账户(Ed25519)”默认的 Account.generate() 路径会创建传统 Ed25519 账户。
val legacy = Account.generate()
val explicitLegacy = Account.generate( scheme = SigningSchemeInput.Ed25519, legacy = true,)您也可以从现有 Ed25519 私钥派生传统账户:
val legacyFromPrivateKey = Account.fromPrivateKey( privateKey = Ed25519PrivateKey("0x...") )SingleKey 账户(Ed25519 或 Secp256k1)
Section titled “SingleKey 账户(Ed25519 或 Secp256k1)”如果需要统一认证和密钥敏捷性,请使用 SingleKeyAccount。
val ed25519Single = SingleKeyAccount.generate(scheme = SigningSchemeInput.Ed25519)val secp256k1Single = SingleKeyAccount.generate(scheme = SigningSchemeInput.Secp256k1)也可以通过 Account.generate(...) 请求单密钥账户:
val singleViaAccount = Account.generate( scheme = SigningSchemeInput.Ed25519, legacy = false,)从现有私钥派生账户:
val ed25519SingleFromPrivateKey = SingleKeyAccount( privateKey = Ed25519PrivateKey("0x...") )
val secp256k1SingleFromPrivateKey = SingleKeyAccount( privateKey = Secp256k1PrivateKey(HexInput.fromString("0x...")) )MultiKey 账户(阈值签名)
Section titled “MultiKey 账户(阈值签名)”MultiKeyAccount 可让您基于多个公钥定义一个阈值签名身份。
val signerA = SingleKeyAccount.generate(scheme = SigningSchemeInput.Ed25519)val signerB = SingleKeyAccount.generate(scheme = SigningSchemeInput.Secp256k1)val signerC = SingleKeyAccount.generate(scheme = SigningSchemeInput.Ed25519)
val multiKeyAccount = MultiKeyAccount.fromPublicKeysAndSigners( publicKeys = listOf(signerA.publicKey, signerB.publicKey, signerC.publicKey), signaturesRequired = 2, signers = listOf(signerA, signerC), )在当前 API 中,signers.size 必须与 signaturesRequired 相同。
由于 MultiKeyAccount 扩展自 Account,因此它可以像其他账户类型一样签名交易:
val txn = aptos.buildSimpleTransaction(sender = multiKeyAccount.accountAddress) { function = "0x1::coin::transfer" typeArgs("0x1::aptos_coin::AptosCoin") args(Account.generate().accountAddress, 1_000_000UL) }
val pending = aptos.signAndSubmitTransaction(signer = multiKeyAccount, transaction = txn).expect("Failed to submit transaction")链上创建账户
Section titled “链上创建账户”生成账户只会创建本地凭证。在获得资金并创建前,该地址无法在链上使用。
aptos .fundAccount(accountAddress = legacy.accountAddress, amount = 100_000_000L) .expect("Failed to fund account")在测试网中,也可以通过水龙头页面铸造代币。