错误的 ATA 帐户
Bad ATA account
使用metaplex
auction-house
合约时,部分用户无法完成sell
命令。
确认如果相同的 NFT
被发送到不同的钱包,那个钱包可以 sell
就好了。
这个问题似乎很糟糕ATA
。
最初,通过 https://github.com/metaplex-foundation/metaplex/blob/b7760611d0838307757b831505eaaffee25b1b2a/js/packages/cli/src/auction-house-cli.ts#L260 返回的 ATA
帐户内部没有 owner
或 token
。
当发送到另一个钱包时,能够完成就好了。
https://explorer.solana.com/tx/GUybhU53qY56bu4j2raQyp7uecGLgaFge6GBvRNtX1u8gqDzocKk8MDg52upZV985UPW8FAregpwTv7JGyWdNwf
手动设置 ATA
后,仍然没有帮助。
https://explorer.solana.com/address/Cu6Dru1j6PZa3f9K2acuqsHcaVDRxniFVqPPk7WX7RaC
似乎是因为令牌是 0
。
尝试使用 getTokenLargestAccounts
找到正确的 ATA
但后来我得到 0x12c
说 PublicKeyMismatch
.
希望能找到一些稳定的方法来完成这个,很多用户偶尔会遇到这种情况。
您链接的代码 getATAForMint
实际上并未创建 ATA,这就是未填充 owner
和 token
的原因。
您正确链接的后续事务创建了 ATA,这就是它成功的原因。
所以解决这个问题的一种方法是:
- 在向您的用户转账之前,请检查该地址是否存在帐户,也许可以通过在 ATA 上调用
getAccountInfo
:https://docs.solana.com/developing/clients/jsonrpc-api#getaccountinfo
- 检查
owner
字段是否为 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
提供的令牌程序。有关所有权的更多信息,请访问:https://docs.solana.com/developing/programming-model/accounts#ownership-and-assignment-to-programs
- 如果该帐户存在,那太好了,无事可做。如果它不存在,那么你必须添加一条指令来创建关联的令牌帐户,即。通过这样的调用:https://github.com/solana-labs/solana-program-library/blob/8eb2c3ce60bfe943e277eb172ba8e9ce9b6bdae6/token/js/client/token.js#L494
使用metaplex
auction-house
合约时,部分用户无法完成sell
命令。
确认如果相同的 NFT
被发送到不同的钱包,那个钱包可以 sell
就好了。
这个问题似乎很糟糕ATA
。
最初,通过 https://github.com/metaplex-foundation/metaplex/blob/b7760611d0838307757b831505eaaffee25b1b2a/js/packages/cli/src/auction-house-cli.ts#L260 返回的 ATA
帐户内部没有 owner
或 token
。
当发送到另一个钱包时,能够完成就好了。 https://explorer.solana.com/tx/GUybhU53qY56bu4j2raQyp7uecGLgaFge6GBvRNtX1u8gqDzocKk8MDg52upZV985UPW8FAregpwTv7JGyWdNwf
手动设置 ATA
后,仍然没有帮助。
https://explorer.solana.com/address/Cu6Dru1j6PZa3f9K2acuqsHcaVDRxniFVqPPk7WX7RaC
似乎是因为令牌是 0
。
尝试使用 getTokenLargestAccounts
找到正确的 ATA
但后来我得到 0x12c
说 PublicKeyMismatch
.
希望能找到一些稳定的方法来完成这个,很多用户偶尔会遇到这种情况。
您链接的代码 getATAForMint
实际上并未创建 ATA,这就是未填充 owner
和 token
的原因。
您正确链接的后续事务创建了 ATA,这就是它成功的原因。
所以解决这个问题的一种方法是:
- 在向您的用户转账之前,请检查该地址是否存在帐户,也许可以通过在 ATA 上调用
getAccountInfo
:https://docs.solana.com/developing/clients/jsonrpc-api#getaccountinfo - 检查
owner
字段是否为TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
提供的令牌程序。有关所有权的更多信息,请访问:https://docs.solana.com/developing/programming-model/accounts#ownership-and-assignment-to-programs - 如果该帐户存在,那太好了,无事可做。如果它不存在,那么你必须添加一条指令来创建关联的令牌帐户,即。通过这样的调用:https://github.com/solana-labs/solana-program-library/blob/8eb2c3ce60bfe943e277eb172ba8e9ce9b6bdae6/token/js/client/token.js#L494