Metaplexのweb3.jsにNFT発行できる、actions.mintNFT関数があるが、それを実行したときのエラー。
Agenda
現象
node実行すると「Error: Non-base58 character」のエラーが出力。
% ts-node main.ts
/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/base-x/src/index.js:111
throw new Error('Non-base' + BASE + ' character')
^
Error: Non-base58 character
at Object.decode (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/base-x/src/index.js:111:11)
at BinaryWriter.borsh_1.BinaryWriter.writePubkeyAsString (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/@metaplex-foundation/mpl-core/src/utils/borsh.ts:44:33)
at serializeField (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/borsh/lib/index.js:258:63)
at /Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/borsh/lib/index.js:327:13
at Array.map (<anonymous>)
at serializeStruct (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/borsh/lib/index.js:326:29)
at serializeField (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/borsh/lib/index.js:306:13)
at /Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/borsh/lib/index.js:277:21
at BinaryWriter.writeArray (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/borsh/lib/index.js:128:13)
at serializeField (/Users/user/Documents/Programming/Blockchain/solana-anchor-react-minimal-example/js/mint-and-transfer-nft/node_modules/borsh/lib/index.js:276:24)
原因
ArweaveにアップしたMetadataのCreators Addressが誤りだった。
以下は誤って、Arweaveのウォレットアドレスを入れてしまっていた。
"properties": {
"creators": [
{
"address": "96JyNRHl2a8-cF_w-p5KPN9O5cTxp4J1oESbR2_V8zI",
"share": 100
}
]
}
対応
SolanaのウォレットアドレスをMetadataに記述する。
"properties": {
"creators": [
{
"address": "HXtBm8XZbxaTt41uqaKhwUAa6Z1aPyvJdsZVENiWsetg",
"share": 100
}
]
}
注意点として、MetaplexのmintNFT関数は、所有者が自分になっているNFTしかMintできないようになっているため(他者が勝手にMintできてしまうと問題なため)、自分のアドレスを記述すること。
Phantomで確認したり、自分のKeypairを読み込ませる必要がある。
参考
Solana Cookbook - Mint the NFT
You cannot mint an NFT with a different creator that your wallet.
If you run into creator issues, make sure your metadata lists you as the creator.