搭建以太坊私链

ubuntu 下搭建以太坊私链

1. 安装以太坊客户端


 sudo apt-get install software-properties-common 
 sudo add-apt-repository -y ppa:ethereum/ethereum 
 sudo apt-get update
 sudo apt-get install ethereum

2. 初始化

编写创世纪文件


{
"nonce": "0x0000000000000042",
    "config": {
        "chainId": 1123,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x00",
  "gasLimit": "0x80000000",
  "difficulty": "0x10",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {     }
}
  • nonce:一个64位随机数,用于挖矿。
  • mixhash:与nonce配合用于挖矿,由上一个区块的一部分生成的hash。
  • difficulty:设置当前区块的难度。哈希验证时,哈希值的前几位必须与difficulty相同。
  • alloc: 用来预置账号以及账号的以太币数量。
  • coinbase:矿工的账号。
  • timestamp:设置创世块的时间戳。
  • parentHash:上一个区块的hash值。
  • extraData:附加信息,随便填。 1.6版本以后,信息必须为十六位字符串
  • gasLimit:该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总。

编写启动脚本


geth  --identity "newEth" --rpc --rpccorsdomain "*" --datadir "cdata2" --port 30304 --rpcapi "personal,db,eth,net,web3" --networkid 999  --rpcport 8081  console
  • identity :区块链的标示,用于标示目前网络的名字

  • init:指定创世块文件的位置,并创建初始块

  • datadir:设置当前区块链网络数据存放的位置

  • port:网络监听端口

  • rpc:启动rpc通信,可以进行智能合约的部署和调试

  • rpcapi:设置允许连接的rpc的客户端,一般为db,eth,net,web3

  • networkid:设置当前区块链的网络ID,用于区分不同的网络,是一个数字

  • console:启动命令行模式,可以在Geth中执行命令

    由于两个节点设置在一个主机上,必须使用不同的端口

启动节点

用之前创建的创世纪文件 init.json对私链进行初始化

datadir为区块链的网络数据存放文件,这用cdata1

启动之前编写的启动脚本start.sh


 geth --datadir "cdata1" init init.json
 sh start.sh

注意启动第二个节点的时候,更改一下启动脚本里设置的端口,以防端口冲突

3.节点通信

​ 1、首先要保证节点之间是可以互通互联的 ​ 2、需要有相同的创世纪文件 ​ 3、需要有相同的netwokid

评论

热门博文