EthereumとRemixの開発環境を6分45秒で作成してくれるツールを作りました。

in #japanese6 years ago

rectangle_large_98b64bf0573ab17a6f53674d1f57a93a.jpg
こんにちは。DaiDaiです。EthereumとRemixの開発環境を6分45秒で作成してくれるツールを作りました。

開発環境の構築ってめんどくさくないですか?
せっかくprogateやドットインストールで毎日仕事終わりにコツコツ勉強しても、いざ何か作ろうってなった時にまず環境構築でつまづきます。せっかく身に着けたコーディング力も生かす場がなけらば何の意味もありません。ガシガシ開発をしたいのに出鼻をくじかれる気持ち、とてもわかります。

※本ツールは全自動ではありません。一部手動で操作する必要があります。了承した上でお買い求めください。
※Ubuntu16.04での動作は保証していますが、他OSでの動作は保証できません。

事前準備
$ sudo apt-get update && sudo apt-get upgrade -y

//自動化用のシェルスクリプトをペーストします。
$ vi eth_auto.sh
eth_auto.shにペーストするscript
echo
echo ///////////////////////////////////////////////////////////////
echo ////////////////////solidity install START/////////////////////
echo ///////////////////////////////////////////////////////////////
echo

cd /home/ubuntu
sudo apt-get install vim git curl build-essential libssl-dev -y

echo
echo ///////////////////////////////////////////////////////////////
echo /////////////////////////nvm install///////////////////////////
echo ///////////////////////////////////////////////////////////////
echo

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
nvm install 7

echo
echo ///////////////////////////////////////////////////////////////
echo /////////////////////////remix clone///////////////////////////
echo ///////////////////////////////////////////////////////////////
echo

git clone https://github.com/ethereum/remix-ide.git
cd remix-ide

echo
echo ///////////////////////////////////////////////////////////////
echo /////////////////////////npm install///////////////////////////
echo ///////////////////////////////////////////////////////////////
echo

npm install
npm run setupremix
cp /home/ubuntu/remix-ide/node_modules/solc/solcjs /home/ubuntu/remix-ide/node_modules/solc/soljson.js

echo
echo ///////////////////////////////////////////////////////////////
echo /////////////////////solidity install END//////////////////////
echo ///////////////////////////////////////////////////////////////
echo

echo
echo ///////////////////////////////////////////////////////////////
echo /////////////////////ethereum install START////////////////////
echo ///////////////////////////////////////////////////////////////
echo

cd /home/ubuntu
sudo apt-get install software-properties-common -y
sudo add-apt-repository -y ppa:ethereum/ethereum -y
sudo apt-get update
sudo apt-get install ethereum -y

echo
echo ///////////////////////////////////////////////////////////////
echo /////////////////////////eth_private_net///////////////////////
echo ///////////////////////////////////////////////////////////////
echo

mkdir /home/ubuntu/eth_private_net
cd eth_private_net
touch myGenesis.json

echo
echo ///////////////////////////////////////////////////////////////
echo /////////////////////ethereum install END//////////////////////
echo ///////////////////////////////////////////////////////////////
echo

vim myGenesis.json
実行
//実行権限をeth_auto.shにあげましょう。
$ sudo chmod 777 eth_auto.sh
 
//実行
$ ./eth_auto.sh
6分45秒待ちましょう!笑
画面が真っ暗になっているはずです。

実行後
画面が真っ暗になりましたか? GenesisBlockの中身が表示されているだけなので驚く必要はありません。以下のコードをペーストして保存しましょう。

{
"config": {
"chainId": 15
},
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}
これで環境構築は終了です。

動作確認
きちんと構築できているか起動してみましょう。

ethereum(geth)起動

//対象ディレクトリに移動
$ cd /home/ubuntu/eth_private_net/

//GenesisBlockの初期化
$ geth --datadir /home/ubuntu/eth_private_net init /home/ubuntu/eth_private_net/myGenesis.json
INFO [05-15|23:10:12] Maximum peer count ETH=25 LES=0 total=25
INFO [05-15|23:10:12] Allocated cache and file handles database=/home/ubuntu/eth_private_net/geth/chaindata c
ache=16 handles=16
INFO [05-15|23:10:12] Writing custom genesis block
INFO [05-15|23:10:12] Persisted trie from memory database nodes=0 size=0.00B time=4.798µs gcnodes=0 gcsize=0.00B
gctime=0s livenodes=1 livesize=0.00B
INFO [05-15|23:10:12] Successfully wrote genesis state database=chaindata h
ash=7b2e8b…7e0432
INFO [05-15|23:10:12] Allocated cache and file handles database=/home/ubuntu/eth_private_net/geth/lightchaind
ata cache=16 handles=16
INFO [05-15|23:10:12] Writing custom genesis block
INFO [05-15|23:10:12] Persisted trie from memory database nodes=0 size=0.00B time=2.178µs gcnodes=0 gcsize=0.00B
gctime=0s livenodes=1 livesize=0.00B
INFO [05-15|23:10:12] Successfully wrote genesis state database=lightchaindata
hash=7b2e8b…7e0432

//ethereum(geth)起動
$ geth --networkid 15 --datadir . --nodiscover --rpc --rpccorsdomain "*" --rpcport 8545 --rpcaddr "0.0.0.0" --rpcapi "web3,eth,net,personal" console 2>> err.log
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.8-stable-2688dab4/linux-amd64/go1.10
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

Welcome to the Geth JavaScript console!が表示されました。

remix起動

//対象ディレクトリに移動
$ cd /home/ubuntu/remix-ide

//remix起動
$ npm start

[email protected] start /home/ubuntu/remix-ide
npm-run-all -lpr serve watch onchange remixd

[serve ]
[serve ] > [email protected] serve /home/ubuntu/remix-ide
[serve ] > execr --silent http-server .
[serve ]
====================================
============== 省略 ===============
====================================
[watch ] NOW ASKING FOR CLIENT TO RELOAD
[watch ] 21692552 bytes written to build/app.js (35.23 seconds) at 11:11:17 PM
[onchange]
[onchange] > [email protected] lint /home/ubuntu/remix-ide
[onchange] > standard | notify-error
[onchange]
うまく起動できました。

補足
外部環境からRemixの画面を見たい場合は、portの開放をしてあげる必要があります。

$ cd /
$ sudo vi /etc/iptables/iptables.rules


*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

//外部から接続するためのportを開放
-A INPUT -p tcp --dport 8545 -j ACCEPT
-A INPUT -p tcp --dport 8080 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT


//port適用
$ sudo /sbin/iptables-restore < /etc/iptables/iptables.rules
これで外部から接続できるようになりました。
http://XXX.XX.XX.XXX:8080/にアクセスしてみるとRemixの画面が見れるはずです。
※XXX.XX.XX.XXXはUbuntuのIPアドレスを指定してください。

picture_pc_4b7a3dd2e5df1aee0b8d641af901d791.jpg

これで補足は終了です。

まとめ
何か実際に動かしてみて動かない等あればコメントください。

Sort:  

日本語の情報が少ないので助かります。