Ubuntu16搭建以太坊私有链环境
2018-09-03 本文已影响51人
hasika
Ubuntu16搭建以太坊私有链环境
安装go
-
解压
tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz
-
添加环境变量
vim /etc/profile export PATH=$PATH:/usr/local/go/bin source /etc/profile
安装eth
-
下载
git clone https://github.com/ethereum/go-ethereum
-
make
cd go-ethereum make geth //只编译geth make all //编译所有工具
-
查看geth是否安装成功
./build/bin/geth version
-
start node
./build/bin/geth
-
geth常用参数:
- --rpc 开启HTTP-RPC服务
- -–rpcaddr 指定HTTP-RPC服务的地址,默认是localhost
- -–port 网络监听的端口,默认为8545
- -–rpccorsdomain 逗号分隔的域列表,指定HTTP-RPC服务允许从哪些域过来的跨域请求,*接受表示所有的域
- -–rpcapi 设定开放给HTTP-RPC的接口,默认只开放eth、net、web3
- --ws 启用WebSockets-RPC服务
- –-wsaddr 指定WebSockets-RPC服务地址,默认值localhost
- -–wsport 指定WebSockets-RPC服务端口,默认值8546
- -–wsapi 通过WebSockets-RPC提供的API,默认eth, net, web3
- -–wsorigins 指定WebSockets-RPC服务允许从哪些域过来的跨域请求,*表示接受表示所有的域
- -–datadir 设置当前区块链网络数据存放的位置
- -–identity 区块链的标识,用于标识目前网络的名字
- -–networkid 设置当前区块链的网络 ID,用于区分不同的网络,默认是1
- -–nodiscover 禁止网络中的对等节点发现你的节点。如果打算在本地网络中与其他人一起使用该私有区块链,就请不要使用此参数。 –dev console 开启一个可交互的JavaScript Console
- -–ipcdisable 禁用IPC-RPC服务
- -–ipcapi 通过IPC-RPC接口提供的API,默认值admin, debug, eth, miner, net, personal, shh, txpool, web3
- -–ipcpath 指定IPC路径
私链搭建
-
定义创世状态, 修改nonce防止和其他节点链接到你
e.g. genesis.json
{ "config": { "chainId": 11, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc" : {}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x20000", "extraData" : "", "gasLimit" : "0x2fefd8", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }
定义初始账号
"alloc": { "0x0000000000000000000000000000000000000001": {"balance": "111111111"}, "0x0000000000000000000000000000000000000002": {"balance": "222222222"} }
-
删除已缓存的数据
geth removedb
-
重新初始化每个节点
geth init path/to/genesis.json
-
启动bootnode
bootnode --genkey=boot.key bootnode --nodekey=boot.key
-
启动成员节点
geth --datadir=datadir --bootnodes=enode://66abf9b6ff7cbbd6bde7312752dabd43cbaccd75a6af4e2560bc210817d032fd333189e4eb95b69a4beda2c304626d9509ef01662780c162c6ea5da7a22637c8@192.168.235.130:30301
-
启动一个节点
geth --datadir /e/eth/a init ./genesis.json geth --datadir ./datadir/a --networkid 22 --nodiscover --port 30303 --c --rpcport 8545 --rpcaddr 0.0.0.0 --ipcdisable console
-
启动第二个节点
geth --datadir /e/eth/b init ./genesis.json //同一个区块链上的genesis.json必须一样 geth --datadir ./datadir/a --networkid 23 --nodiscover --port 30303 --rpc --rpccorsdomain "*" --rpcport 8545 --rpcaddr 0.0.0.0 --ipcdisable console
-
连接两个节点
//从其中一个节点中获得enode >admin.nodeInfo.enode "enode://a690738d5a7a079bcf4b38371f28d168317c9da9652c41c14ec123d6f4f1b13d3153b72fbe158ad39fc92d95403c5e17b510d71dfdf47a6a3aad7a182c1cd999@[::]:30303?discport=0" //在另一个节点环境添加peer admin.addPeer("enode://a690738d5a7a079bcf4b38371f28d168317c9da9652c41c14ec123d6f4f1b13d3153b72fbe158ad39fc92d95403c5e17b510d71dfdf47a6a3aad7a182c1cd999@[::]:30303?discport=0")
欢迎加入我的星球
我正在「哈斯卡和他的朋友们」和朋友们讨论有趣的话题,你一起来吧?
吧?
https://t.zsxq.com/iiMvfea