docker 搭建以太坊私有链搭建
最近区块链,火得不行,身边也有朋友准备玩这个,说是搭了一个星期,没有把环境搭建起来,叫我帮忙看看环境怎么搭建
于是我找到了官方的地址 https://github.com/ethereum/go-ethereum
发现官方是支持docker 的
于是我创建了如下目录
➜ block-chain pwd /Users/jackluo/Works/block-chain ➜ block-chain ls ethereum start-ethereum.sh
start-ethereum.sh的内容如下
docker stop ethereum-node docker rm ethereum-node docker run -d --name ethereum-node -v /Users/jackluo/Works/block-chain/ethereum:/root \ -p 8545:8545 -p 30303:30303 \ ethereum/client-go docker exec -it ethereum-node /bin/sh
我们把当前的 ethereum目录,挂到了docker 的/root下
我们接下来创建私有链
➜ block-chain cd ethereum
➜ ethereum ls
genesis.json privatechain
我们根据官方的文档 创建 genesis.json文件里面写入
{ "config": { "chainId": 0, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc" : {}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x20000", "extraData" : "", "gasLimit" : "0x2fefd8", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }
参数的话,具体看文件档
接下来,我们启动以太坊的docker 容器
➜ block-chain ./start-ethereum.sh Error response from daemon: No such container: ethereum-node Error response from daemon: No such container: ethereum-node d421da09e63900d1cc9481529ab2a5868515fb821520b548f10e0bd2f3608c0c / # / # / # ls bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var / # cd /root/ ~ # ls genesis.json privatechain ~ # cd privatechain/ ~/privatechain # ls data0 genesis.json ~/privatechain # pwd /root/privatechain ~/privatechain #
接下来初始化他
~/privatechain # geth --datadir data0 init genesis.json INFO [03-06|05:21:40] Maximum peer count ETH=25 LES=0 total=25 INFO [03-06|05:21:40] Allocated cache and file handles database=/root/privatechain/data0/geth/chaindata cache=16 handles=16 INFO [03-06|05:21:40] Persisted trie from memory database nodes=0 size=0.00B time=41.5µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [03-06|05:21:40] Successfully wrote genesis state database=chaindata hash=ed1fb6…1760ca INFO [03-06|05:21:40] Allocated cache and file handles database=/root/privatechain/data0/geth/lightchaindata cache=16 handles=16 INFO [03-06|05:21:40] Persisted trie from memory database nodes=0 size=0.00B time=10.5µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [03-06|05:21:40] Successfully wrote genesis state database=lightchaindata hash=ed1fb6…1760ca
接下来,启动私有链
~/privatechain # geth --identity "TestNode" --rpc --rpcport "8545" --datadir data0 --port "3033" --nodiscover console INFO [03-06|05:26:44] Maximum peer count ETH=25 LES=0 total=25 INFO [03-06|05:26:44] Starting peer-to-peer node instance=Geth/TestNode/v1.8.2-unstable-0b814d32/linux-amd64/go1.9.4 INFO [03-06|05:26:44] Allocated cache and file handles database=/root/privatechain/data0/geth/chaindata cache=768 handles=1024 INFO [03-06|05:26:44] Initialised chain configuration config="{ChainID: 1024 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Constantinople: <nil> Engine: unknown}" INFO [03-06|05:26:44] Disk storage enabled for ethash caches dir=/root/privatechain/data0/geth/ethash count=3 INFO [03-06|05:26:44] Disk storage enabled for ethash DAGs dir=/root/.ethash count=2 INFO [03-06|05:26:44] Initialising Ethereum protocol versions="[63 62]" network=1 INFO [03-06|05:26:44] Loaded most recent local header number=0 hash=ed1fb6…1760ca td=1024 INFO [03-06|05:26:44] Loaded most recent local full block number=0 hash=ed1fb6…1760ca td=1024 INFO [03-06|05:26:44] Loaded most recent local fast block number=0 hash=ed1fb6…1760ca td=1024 INFO [03-06|05:26:44] Loaded local transaction journal transactions=0 dropped=0 INFO [03-06|05:26:44] Regenerated local transaction journal transactions=0 accounts=0 INFO [03-06|05:26:44] Starting P2P networking INFO [03-06|05:26:44] RLPx listener up self="enode://3264cbba213bc88c407c55576f148d5c2b6afa5013a7c204085e01c5e4dc24a9235bd9abf86681d0d36349fa8031367c31adb534a469f4ea1e156047bf96befb@[::]:3033?discport=0" INFO [03-06|05:26:44] IPC endpoint opened url=/root/privatechain/data0/geth.ipc INFO [03-06|05:26:44] HTTP endpoint opened url=http://127.0.0.1:8545 cors= vhosts=localhost Welcome to the Geth JavaScript console! instance: Geth/TestNode/v1.8.2-unstable-0b814d32/linux-amd64/go1.9.4 INFO [03-06|05:26:44] Etherbase automatically configured address=0xFc2D11A7A4408b77d95202c0A455cfd44F2A4cFD coinbase: 0xfc2d11a7a4408b77d95202c0a455cfd44f2a4cfd at block: 0 (Thu, 01 Jan 1970 00:00:00 UTC) datadir: /root/privatechain/data0 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
基本上已经启起来了
其它,参考了下 https://g2ex.github.io/2017/09/12/ethereum-guidance/ 这个