DaiDai avatar

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

daidai

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

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

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

remix-ide@0.6.3 start /home/ubuntu/remix-ide
npm-run-all -lpr serve watch onchange remixd

[serve ]
[serve ] > remix-ide@0.6.3 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] > remix-ide@0.6.3 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

これで補足は終了です。

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

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

Written by

Web系未経験で2018/01からBlockchain関連の会社に転職。ブロックチェーンエンジニアとして活動中の24歳。池袋に生息中。noteで技術記事の投稿、たまにBlockchainのイベントをやってます。ご相談や質問あれば気軽にDMください。マレーチャンいきましょ! #Ethereum #Hyperledger

Read more #japanese posts


Best Posts From DaiDai

We have not curated any of daidai's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From DaiDai