向链上未存在账户转APT失败,调用0x1::coin::transfer报错如何解决?
解决APT转账时ECOIN_STORE_NOT_PUBLISHED错误的方法
当向链上未存在的账户转账APT时,账户会被自动创建,但默认不会为该账户发布APT对应的CoinStore资源。而0x1::coin::transfer函数要求接收方必须已注册目标币种的CoinStore,因此会触发ECOIN_STORE_NOT_PUBLISHED(0x60005)错误。
你可以通过以下两种方法解决:
方法1:使用APT专属转账函数
直接调用0x1::aptos_account::transfer,这个函数内部会自动检查接收方账户的CoinStore状态——如果未发布,会自动为其创建并发布APT的CoinStore,无需额外操作。
调用示例:
0x1::aptos_account::transfer(&signer, recipient_address, amount)
如果用APTOS CLI操作,对应的命令是:
aptos account transfer --from <你的账户地址> --to <接收方地址> --amount <转账数量>
方法2:先注册CoinStore再用通用转账函数
如果必须使用0x1::coin::transfer,需要先为接收方账户注册APT的CoinStore。可以调用0x1::coin::register函数(需接收方账户签名,或通过链上脚本执行):
注册示例:
0x1::coin::register<0x1::aptos_coin::AptosCoin>(&recipient_signer)
完成注册后,再调用0x1::coin::transfer即可正常转账。
注意事项
aptos_account::transfer仅适用于APT币种的转账,自定义币种仍需先注册CoinStore再使用通用转账函数。
内容的提问来源于stack exchange,提问作者Daniel Porteous
相关产品推荐
相关产品推荐

