Creating and Managing Accounts
此内容尚不支持你的语言。
Kaptos supports three account patterns you should know when building production apps:
- Legacy Ed25519 account (
Ed25519Account/Account.generate()default) - SingleKey account (
SingleKeyAccount) using unified auth keys - MultiKey account (
MultiKeyAccount) for threshold-style signing
Legacy account (Ed25519)
Section titled “Legacy account (Ed25519)”The default Account.generate() path creates a legacy Ed25519 account.
val legacy = Account.generate()
val explicitLegacy = Account.generate( scheme = SigningSchemeInput.Ed25519, legacy = true,)You can also derive a legacy account from an existing Ed25519 private key:
val legacyFromPrivateKey = Account.fromPrivateKey( privateKey = Ed25519PrivateKey("0x...") )SingleKey account (Ed25519 or Secp256k1)
Section titled “SingleKey account (Ed25519 or Secp256k1)”Use SingleKeyAccount when you want unified authentication and key agility.
val ed25519Single = SingleKeyAccount.generate(scheme = SigningSchemeInput.Ed25519)val secp256k1Single = SingleKeyAccount.generate(scheme = SigningSchemeInput.Secp256k1)You can also request a single-key account via Account.generate(...):
val singleViaAccount = Account.generate( scheme = SigningSchemeInput.Ed25519, legacy = false,)To derive from existing private keys:
val ed25519SingleFromPrivateKey = SingleKeyAccount( privateKey = Ed25519PrivateKey("0x...") )
val secp256k1SingleFromPrivateKey = SingleKeyAccount( privateKey = Secp256k1PrivateKey(HexInput.fromString("0x...")) )MultiKey account (threshold signing)
Section titled “MultiKey account (threshold signing)”MultiKeyAccount lets you define a threshold signing identity from multiple public keys.
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), )In the current API, signers.size must match signaturesRequired.
Because MultiKeyAccount extends Account, it can sign transactions like other account types:
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")On-chain account creation
Section titled “On-chain account creation”Generating an account only creates local credentials. The address is not usable on-chain until funded/created.
aptos .fundAccount(accountAddress = legacy.accountAddress, amount = 100_000_000L) .expect("Failed to fund account")On testnet, you can also mint using the faucet page.