このエントリーをはてなブックマークに追加

イーサリアムで遊ぶ

最近、ブロックチェーンにははまり中。 何か作りたくなったので電子チケットを売買するサービスをイーサリアムで作ろうと思ろうと思う。基本的には勉強が目的。 まぁ、いつかイーサリアムが廃れて別の分散アプリケーションプラットフォームが台頭してきたときは、いらない知識になるかもしれない。

開発環境を作る

何はともあれ、開発環境がないと始まらないので、作ってみる。 ちなみに、面倒くさかった。 今回はvertual boxにubuntu desktopをインストールして、そこに開発環境を構築した。 Mac環境はいろいろ汚れててはまりまくったからやめたっていうのは内緒。

ubuntu desktopをインストールする

以下からISOをダウンロードしてインストールする

パッケージを入れる

大体必要なものを入れておく

apt-get install -y curl git build-essential software-properties-common

goを入れる

1.8以降

sudo add-apt-repository -y  ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install -y golang-go

gethを入れる

ここに従う

リポジトリを使っていれる。

sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get install -y ethereum solc

上をやっていれば基本的に必要ないけど、git cloneしたい人は以下

git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make geth

nodejsを入れる

ここに従う

sudo apt-get install -y nodejs npm
sudo npm cache clean
sudo npm install n -g
sudo n 6.11.1
sudo ln -sf /usr/local/bin/node /usr/bin/node
sudo apt-get purge -y nodejs npm

mistを入れる

ここに従う

curl https://install.meteor.com/ | sh
curl -o- -L https://yarnpkg.com/install.sh | bash

インストールが終わると、パスを通せとメッセージが出るので、yarnにパスを通す。

vi .profile
PATH="$HOME/bin:$HOME/.local/bin:$HOME/.yarn/bin:$PATH"

続き

source .profile
yarn global add electron@1.4.15
yarn global add gulp
git clone https://github.com/ethereum/mist.git
cd mist
yarn

remix (browser-solidity) を入れる

ここに従う

git clone https://github.com/ethereum/browser-solidity
cd browser-solidity
npm install
npm run prepublish

起動

ここまでで、必要なものが入ったので今度はこれらを起動していく。

mkdir work
cd work

gethを起動

ここまでで、必要なものが入ったので今度はこれらを起動していく。 前提として、開発用のプライベートなネットワークを作り、そこに作った契約を配置する。 そのため、gethの初期化処理に渡す、genesisファイルを作る必要がある。

vi testGenesis.json
{
  "config": {
      "chainId": 1,
      "homesteadBlock": 0,
      "eip155Block": 0,
      "eip158Block": 0
  },
  "nonce": "0x0000000000000042",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x00",
  "gasLimit": "0x8000000",
  "difficulty": "0x01",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {}
}

次にこのファイルを指定して初期化する

geth --datadir=$(pwd)/data init $(pwd)/testGenesis.json

gethの起動

geth --networkid "1" --nodiscover --ipcpath ${HOME}/.ethereum/geth.ipc  --rpc --rpcaddr 0.0.0.0 --rpcport 8545 -ws --wsaddr 0.0.0.0 --wsport 8546 --port 30303 --minerthreads 1 --datadir $(pwd)/data console 2>> $(pwd)/geth.log

mistを起動する

別のターミナルを開く

cd mist/interface
meteor --no-release-check

さらに別のターミナルを開く

cd mist
electron .

mistが起動する

remixを起動

さらに別のターミナルを開く

cd browser-solidity
npm start

firefoxでhttp://localhost:8080にアクセスする

結果

最終的にこんな画面が出来上がる

../../../_images/dev.png
name:
email:
comment: