Ethereum

Ethereumの環境構築(ethereum1)

Inside Mac

Mac上でvagrantにguestを追加

bash
vagrant box add "ubuntu-16_0_4" https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box
bash
mkdir ethereum_workspace
bash
cd ethereum_workspace
bash
vagrant init
bash
vi Vagrantfile
Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.define "host" do |node|
    node.vm.box = "ubuntu-16_0_4"
    node.vm.hostname = "ethereum1"
    node.vm.network :private_network, ip: "192.168.43.61"
  end

  config.vm.provider "virtualbox" do |vm|
    vm.customize ["modifyvm", :id, "--memory", "2048"]
  end
end
bash
vagrant up
bash
vagrant ssh

inside Ubuntu

bash
sudo apt-get update
bash
sudo apt-get install -y build-essential libgmp3-dev golang git tree
bash
cd
bash
git clone https://github.com/ethereum/go-ethereum.git
bash
cd go-ethereum/
bash
git checkout refs/tags/v1.5.5

build

bash
make geth

check geth version

bash
./build/bin/geth version
shell-session
Geth
Version: 1.5.5-stable
Git Commit: ff07d54843ea7ed9997c420d216b4c007f9c80c3
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.6.2
OS: linux
GOPATH=
GOROOT=/usr/lib/go-1.6
bash
sudo cp build/bin/geth /usr/local/bin/

confirm user

bash
id
shell-session
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),110(lxd)
mkdir ~/data_testnet
cd ~/data_testnet
pwd
shell-session
/home/ubuntu/data_testnet
vi genesis.json
genesis.json
{
  "nonce": "0x0000000000000042",
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x0",
  "gasLimit": "0x8000000",
  "difficulty": "0x4000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {}
}

Gethを初期化

geth --datadir ~/data_testnet init ~/data_testnet/genesis.json
shell-session
I1219 08:17:08.410343 cmd/utils/flags.go:615] WARNING: No etherbase set and no accounts found as default
I1219 08:17:08.410851 ethdb/database.go:83] Allotted 128MB cache and 1024 file handles to /home/ubuntu/data_testnet/geth/chaindata
I1219 08:17:08.418139 ethdb/database.go:176] closed db:/home/ubuntu/data_testnet/geth/chaindata
I1219 08:17:08.418272 ethdb/database.go:83] Allotted 128MB cache and 1024 file handles to /home/ubuntu/data_testnet/geth/chaindata
I1219 08:17:08.423806 cmd/geth/chaincmd.go:131] successfully wrote genesis block and/or chain rule set: 3b3326d56983eec74bcd3c5757801dcd42e0bf2f169fc0c5d695e28e20f217d7

check current status

tree
.
├── genesis.json
├── geth
│   └── chaindata
│       ├── 000002.log
│       ├── CURRENT
│       ├── LOCK
│       ├── LOG
│       └── MANIFEST-000003
└── keystore

start geth

geth --networkid 4649 --nodiscover --maxpeers 0 --datadir /home/ubuntu/data_testnet console 2>> /home/ubuntu/data_testnet/geth.log
Welcome to the Geth JavaScript console!

instance: Geth/v1.5.5-stable-ff07d548/linux/go1.6.2
 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

explanation of option

サービスレベル サービス名
--networkid 4649 ネットワーク識別子(整数)。0 ~ 3 は予約済みです (0=Olympic (disused), 1=Frontier, 2=Morden (disused), 3=Ropsten) (default: 1)。それ以外の数値であれば問題ありません。今回は 4649 を指定 しました。
--nodiscover あなたのノードを、他のノードから検出できないようにするオプションです。ノード追加は手動にな ります。指定しないと、同じ GenesisファイルとネットワークIDのブロックチェーンネットワークにあなたのノードが接続してしまう可能性があります。
--maxpeers 0 あなたのノードに接続できるノード数です。0 を指定すると、他のノードとは接続しなくなります。
--datadir /home/ubuntu/data_testnet データディレクトリを指定します。指定しないと、デフォルトのディレクトリが使用されます。
console 対話型のJavaScriptコンソールを起動します。
2>> /home/ubuntu/data_testnet/geth.log ログファイルを作成するため、エラー出力をリダイレクトします。これは Geth のオプションではあ りません。