Ethereum dApps をローカル環境で動かす

dApps 開発者ギルド勉強会 #1 に参加して
ローカル環境で dApps をデプロイして動かすことろまでができたので記録を残しておく.

環境構築と Truffle を使って Ganache のローカルチェーンにデプロイするところまでは
オオキマキさん (@ookimaki_JP) のブログの通りにすすめていけば問題なくできると思う. (ありがたい!)

 環境構築

givinglog.com

 Ethereum dApps Quickstart

givinglog.com

Ethereum dApps Quickstart の動作確認

MetaMask は file://~ から始まる URL では動作しないため, live-server を使って確認する.

$ npm install -g live-server
$ cd src/
$ live-server

ブラウザが自動で立ち上がり http://127.0.0.1:8080 が開く.

テキストエリアに文字を入れて, set をクリックで MetaMask が表示されるのでそのまま submit

alert で Txhash: 0xxxxxx と表示されれば成功.

Ganache の Transactions タブでも同じアドレスが確認できるはず.

発生したエラーと対策

npm install でエラー

  async awaitCurrentBlock () {
        ^^^^^^^^^^^^^^^^^

SyntaxError: Unexpected identifier
対策

7.6系以降の Node.js を使用する.
安定版の8.x系を使っておけば安心.

truffle migrate でエラー 

$ truffle migrate
Using network 'development'.

Error: Attempting to run transaction which calls a contract function, but recipient address 0xxxxx is not a contract address
対策
$ truffle migrate --reset

github.com

 Provided address "0xxxxx" is invalid (ブラウザのconsole)

 対策

src/index.htmlcontractAddress が間違っているので, truffle migrate した時のコントラクトアドレスを再度確認して正しいものを指定する.

 contract.methods.set is not a function (ブラウザのconsole)

対策

src/js/contract_abi.js の contractABI が間違っているので,   build/contracts/SimpleStore.json の abi を正しくコピーする.

 MetaMask - RPC Error: Error: Error: [ethjs-rpc] rpc error with payload (ブラウザのconsole)

MetaMask - RPC Error: Error: Error: [ethjs-rpc] rpc error with payload
対策

src/index.htmlcontractAddress が間違っているので, truffle migrate した時のコントラクトアドレスを再度確認して正しいものを指定する.

所感

  • ひとりでやったら1週間ぐらいかかりそうな内容が2時間でできた!
  • わからないことは気軽に聞くことができたり, 一緒に考えながらやっていけたり dApps 開発者ギルドに感謝!