账户迁移交易可将现有账户从旧钱包迁移至新钱包。当您钱包的密钥可能遭遇泄露(例如,打印密钥的纸张丢失)时,这个功能非常有用。为了安全目的,您可以发出账户迁移交易,从旧钱包转至新生成的钱包。本次迁移后,您所有的现有代币余额都将移至新账户,您之前拥有的资产可被转移或使用。

协议定义

如需迁移账户,您应使用AccountMigrateTx消息:

message AccountMigrateTx {

bytes pk = 1; // new public key

WalletType type = 2 [deprecated = true]; // new wallet type, not used any more since address is embedded with this info.

string address = 3; // new wallet address



google.protobuf.Any data = 15;

}

您需要将pkaddress填写入本 itx,然后用旧钱包集合并签署交易。在链上执行后,您的旧账户将被封闭,所有涉及旧地址的事项均会指向新的地址。

以下是发送账户迁移交易的示例:

old_wallet = ForgeSdk.create_wallet()

ForgeSdk.declare(ForgeAbi.DeclareTx.new(moniker: "sisyphus"), wallet: old_wallet)

# after a while you feel old_wallet is not safe any more

new_wallet = ForgeSdk.create_wallet()

ForgeSdk.account_migrate(ForgeAbi.AccountMigrateTx.new(pk: new_wallet.pk, address: new_wallet.address), wallet: old_wallet)