Truffle Box Filecoinチュートリアルのハマりポイント

Truffleの以下チュートリアルでいろいろハマったため、その時のメモ。

Truffle Box Filecoin

1. Unknown environment: developmentエラー

エラー内容

$ truffle preserve --environment development ./assets/ --filecoin
Unknown environment: development. Check your truffle-config.js?
Truffle v5.4.15 (core: 5.4.15)
Node v12.22.7

対応

  • 「$ npm install -g truffle@preserves」を実行する
  • 実行ディレクトリが正しいか確認する(ルートディレクトリで実行する)
  • truffle-config.jsをいじってなければ間違っていない可能性が高いので、それまでの手順が正しいか確認する

2. not found in global or local node modulesエラー

エラー内容

$ truffle preserve --environment development ./assets/ --filecoin
Error:
Error: truffle-plugin-debugger listed as a plugin, but not found in global or local node modules!

対応

debuggerがインストールされていないため、「$ npm i truffle-plugin-debugger」でインストールする。
trufflesuite / truffle-plugin-debugger

3. Invalid StartDealParams.Wallet provided.エラー

エラー内容

見やすいように整形しているため、コマンドに利用はしないでください。

$ curl -X POST \
     -H 'Content-Type: application/json' \
     -d '{
    "jsonrpc": "2.0",
    "id": 0,
    "method": "Filecoin.ClientStartDeal",
    "params": [
        {
            "Data": {
                "TransferType": "graphsync",
                "Root": {
                    "/": "QmZTR5bcpQD7cFgTorqxZDYaew1Wqgfbd2ud9QqGPAkK2V"
                },
                "PieceCid": null,
                "PieceSize": 0
            },
            "Wallet": "t3s3la37547tijmoeiep7ktogws3tep2eqrralh7rhi2mpe46q574gceyy467356onblzvwf7ejlelo2rdsg4q",
            "Miner": "t01000",
            "EpochPrice": "2500",
            "MinBlocksDuration": 300
        }
    ]
}' \
     http://localhost:7777/rpc/v0

【以下が実行結果】

{
    "jsonrpc": "2.0",
    "error": {
        "message": "Invalid StartDealParams.Wallet provided. Ganache doesn't have the private key for account with address t3s3la37547tijmoeiep7ktogws3tep2eqrralh7rhi2mpe46q574gceyy467356onblzvwf7ejlelo2rdsg4q",
        "stack": "Error: Invalid StartDealParams.Wallet provided. Ganache doesn't have the private key for account with address t3s3la37547tijmoeiep7ktogws3tep2eqrralh7rhi2mpe46q574gceyy467356onblzvwf7ejlelo2rdsg4q\n    at Blockchain.startDeal (/Users/xxx/Desktop/blockchain/filecoinDemo/node_modules/@ganache/filecoin/dist/node/ganache-filecoin.min.js:2:783097)\n    at async FilecoinApi.Filecoin.ClientStartDeal (/Users/xxx/Desktop/blockchain/filecoinDemo/node_modules/@ganache/filecoin/dist/node/ganache-filecoin.min.js:2:769545)",
        "code": -32700
    }
}

対応

ウォレットアドレスが誤っているため、「$ npx ganache filecoin」を打ったときに出力される、tから始まるウォレットアドレスを利用する。

ウォレットアドレスの変更部分は以下。
「"Wallet":"t3s3la37547tijmoeiep7ktogws3tep2eqrralh7rhi2mpe46q574gceyy467356onblzvwf7ejlelo2rdsg4q"」

4. Invalid JSON RPC response: 404 Not Foundエラー

エラー内容

$ truffle console
> Something went wrong while attempting to connect to the network. Check your network configuration.
Invalid JSON RPC response: "404 Not Found"
Truffle v5.2.7-preserves.5 (core: 5.2.7-preserves.5)
Node v12.22.7

対応

「$ truffle develop」コマンドを打つ。

「$ truffle console --network development」も試したが、うまくいかず上記コマンドのみ通った。

5. 最終的にどのようなコマンドが起動状態になるのか

NFTミントなどのトランザクション時

  • ルートディレクトリ:$ truffle develop (Filecoinブロックチェーンサーバー用。処理が終わったら閉じてもOK)
  • ルートディレクトリ:$ npm run start (NFTのミント用。同上)

NFT表示時

  • uiディレクトリ:$ npm run start (フロントエンド用)

この状態で http://localhost:3000/ にアクセスすると、以下が表示される。
フロントエンド側では画像をただ表示しているだけのため、ブロックチェーンサーバーの起動は必要ない。