Плохая учетная запись ATA

#solana #nft #metaplex

#solana #nft #метаплекс

Вопрос:

При использовании metaplex auction-house контракта некоторые пользователи не могут выполнить sell команду. Подтверждено, что если то же NFT самое отправляется на другой кошелек, с этим кошельком может sell быть все в порядке.

Проблема, похоже, серьезная ATA . Первоначально ATA учетная запись, которая возвращалась через https://github.com/metaplex-foundation/metaplex/blob/b7760611d0838307757b831505eaaffee25b1b2a/js/packages/cli/src/auction-house-cli.ts#L260 не было owner или token внутри.

См. Сбой: https://explorer.solana.com/tx/4Y6ZBqeWH1yFvaEJ2Hv6mkCxqdVNt9GQ9iHq15PoJY5JVxmTzHJx3MSKABchMBaY3Jd5WY4HpeN4a9bSTQKEJv1Z

При отправке на другой кошелек все прошло нормально. https://explorer.solana.com/tx/GUybhU53qY56bu4j2raQyp7uecGLgaFge6GBvRNtX1u8gqDzocKk8MDg52upZV985UPW8FAregpwTv7JGyWdNwf

После ручной настройки ATA все равно не помогло. https://explorer.solana.com/address/Cu6Dru1j6PZa3f9K2acuqsHcaVDRxniFVqPPk7WX7RaC

Похоже, из-за токена 0 .

Попытался найти правильное ATA с помощью getTokenLargestAccounts , но затем я получаю 0x12c сообщение PublicKeyMismatch .

Хотелось бы получить помощь в поиске стабильного способа завершения этого, это происходит со многими пользователями время от времени.

Ответ №1:

Код, который вы связали, getATAForMint , фактически не создает ATA, поэтому owner и token не был заполнен.

Последующая транзакция, которую вы связали правильно, создает ATA, поэтому она выполняется успешно.

Итак, один из способов решить эту проблему:

Комментарии:

1. Извините, я не следил. Я добавил проверку, что ATA == largestTokenAccount и существует ли ATA. Создаст ATA и передаст в NFT по мере необходимости.