以太坊搭建私链(3)——区块的初始化以及启动节点

创世区块

创世区块的json文件内容如下:

{
  "config": {
    "chainId": 10086,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x20000",
  "extraData": "",
  "gasLimit": "0x1dcd65000",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

其中各个参数的含义如下表所示:

参数名含义
chainId指定了独立的区块链网络 ID。网络 ID 在连接到其他节点的时候会用到,以太坊公网的网络 ID 是 1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络 ID。不同 ID 网络的节点无法相互连接。
HomesteadBlock当设置为0表示使用Homestead发布该链。
noncenonce就是一个64位随机数,用于挖矿。
mixhash与nonce配合用于挖矿,由上一个区块的一部分生成的hash。
difficulty设置设置当前区块的难度,越大挖矿就越难。
alloc用来预置账号以及账号的以太币数量。
coinbase矿工账号
timestamp设置创世块的时间戳
parentHash上一个区块的hash,创世块就为0
extraData附加信息
gasLimit限制GAS的消耗总量

初始化创世区块

需要将上述内容保存为文件genesis.json,然后将其放入自己的文件夹中。
在终端cd进入放置genesis.json的文件夹中,输入代码:

## --datadir后面的路径表示当前区块链网络数据存放的位置
geth --datadir ./data/00 init ./genesis.json

这时候会发现指定的目录下多了geth和keystore两个文件,其中geth保存的该链上的区块数据,keystore保存的该链上的用户信息。

启动节点

geth --datadir ./data/00 --networkid 10086 --port 30303 --nodiscover --rpc --rpcaddr 192.168.119.129 --rpcport 8545 -allow-insecure-unlock --rpc.allow-unprotected-txs --rpccorsdomain "*" --rpcapi "db,eth,net,web3,personal,miner" console

其中各个参数的含义如下表所示:

参数名含义
datadir当前区块数据存放的位置
networkid设置当前区块链的网络ID,用于区分不同的网络,必须和创世区块的chainId相同
port网络监听端口,默认30303
nodiscover关闭p2p网络的自动发现,需要手动添加节点,这样有利于我们隐藏私有网络
rpc启动rpc通信
rpcaddr连接rpc的地址,默认为localhost
rpcport连接rpc的端口,默认为8545
-allow-insecure-unlock新版本geth,出于安全考虑,默认禁止了HTTP通道解锁账户,如果想要解锁账户进行转账的话,需要启动节点时添加这一参数
–rpc.allow-unprotected-txs允许通过 RPC 提交不受保护的(非 EIP155 签名)交易
rpccorsdomain指定什么url能连接到你的节点执行rpc定制端任务,如果输入的是“*”,则任何url都可以连接到你的rpc实例
rpcapi设置允许连接rpc的客户端,一般为db,eth,net,web3
console启动命令行模式,可以在Geth中执行命令

在这里我的–rpcaddr选择的是我的虚拟机的ip地址,查询虚拟机的IP地址需要在Ubuntu中安装一个工具,具体步骤可以参考:安装网络工具

安装成功后,按ctrl+alt+t打开终端,输入如下代码查询虚拟机ip地址:

ifconfig

返回的inet值即为虚拟机的IP地址。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值