はじめに
最近Parity v2がリリースされた。以前までParityは、 http://localhost:8545
でアクセスするとウェブのUIが出てきて、そこでコントラクトの実行やデプロイもできたのだが、v1.10からはそれ用のアプリを落として来る必要が出てきた(もちろんウォレットの互換性はある)。しかも監視しているコントラクト一覧のタブが消えてまったく違うところに移動していたり、謎のバグに遭遇したりとかなり辛い...。
簡単なコントラクトであればParityのUI上でデプロイしても問題ないと思うが、がっつり開発していくとなると、コマンドラインからtestnetやmainnetにデプロイしたくなる。ここではParityを使ってkovanにコントラクトをデプロイしていく(mainnetもkovanも基本的にやり方は変わらない)。
Parity側の準備
以下Macを想定する。
# Parityをインストールしていなかった場合 $ brew install parity --devel # Parityのv1系がすでにインストールしてあった場合 $ brew upgrade parity --devel
次に以下のリンクからParity UIをインストールする。すでにインストールしてあったものとコンフリクトする場合は、 sudo rm -rf /Applications/Parity\ UI.app
を実行してからインストールする。すでにインストールしてある場合はスキップして問題ない。ただし、バージョンの互換性が著しくひどいので、もしその場合はアップグレードしておく。
Parityの起動
$ parity --chain kovan --jsonrpc-apis "eth,net,web3,personal,parity" --geth
上記のコマンドでParityが起動する。 --chain kovan
と指定することで、テストネットのkovanにつながる。初めて実行する場合、ブロックの同期に数時間はかかるので注意が必要。
コントラクト側の準備
簡単なコントラクトをTruffleを使って作成する。
[Ethereum]$ mkdir deploy-sample [Ethereum]$ cd deploy-sample/ [deploy-sample]$ truffle init Downloading... Unpacking... Setting up... Unbox successful. Sweet! Commands: Compile: truffle compile Migrate: truffle migrate Test contracts: truffle test [deploy-sample]$ [deploy-sample]$ truffle create contract Sample
truffle.js
にnetworkの設定を書いておく。
// truffle.js module.exports = { // See <http://truffleframework.com/docs/advanced/configuration> // to customize your Truffle configuration! networks: { development: { host: "127.0.0.1", port: 8545, network_id: 42, from: "0x002fA73D59421a7ec5525821c9C9f6BfCbf634E9", // replace this with your address gas: 5000000 } } };
デプロイする
web3.toHex(180)
で180秒間このアカウントをアンロックしている(手元で確認した時は、アンロック状態でParityを触るとなぜかうまくコントラクトが実行できなかったので180くらいがいいかもしれない)。
$ truffle console > web3.personal.unlockAccount('0x002fA73D59421a7ec5525821c9C9f6BfCbf634E9', 'YOUR_PASSWORD', web3.toHex(180)); > true # コントロール+Cで抜ける $ truffle migrate --reset
これでコントラクトがkovanにデプロイされているはず。