Solana MetaplexでmintNFTすると「Non-base58 character」エラー

Metaplexのweb3.jsにNFT発行できる、actions.mintNFT関数があるが、それを実行したときのエラー。

現象

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.