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

in japanese •  6 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

これで補足は終了です。

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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