以太坊创建私有链 go-ethereum

目录

启动节点同步

同步主网区块

同步测试网络的区块

同步Ropsten测试网络的区块

 同步RinkeyBy测试网络区块

搭建自己的私有链 

创建genesis.json

init初始化gensis.json 

启动私链


启动节点同步

同步主网区块

安装好了Geth,现在我们可以尝试运行以下它。执行下面的命令,geth就会开始同步区块,并存储在当前目录下。这里的 --syncmode fast 参数表示我们会以“快速”模式同步区块。

在这种模式下,我们指挥下载每个区块头区块体,但不会执行验证所有的交易,直到所有区块同步完毕再去获取一个系统的状态。这样就节省了很多交易验证的时间。

geth --datadir .--syncmode fast

通常,在同步以太坊区块链时,客户端会一开始就下载并验证每个块每个交易,也就是说可以从创世区块开始。

毫无疑问,如果我们不加 --syncmode fast参数,同步将会花费很长时间,并且具有很高的资源要求(它将需要更多的RAM,如果你没有快速存储,则需要很长时间)。

有些文章会把这个参数写成 --fast,这是以前快速同步模式的参数写法,现在已经被

--syncmode fast 取代

同步测试网络的区块

同步Ropsten测试网络的区块

geth --testnet --datadir .--syncmode fast

 --testnet 则个参数会告诉 geth 启动并连接到最新的测试网络,也就是 Ropsten 。测试网络的区块和交易数量会明显少于主网,所以会更快一点。但即便是用快速模式同步测试网络,也会需要几个小时的时间。

 同步RinkeyBy测试网络区块

geth --Rinkeby --datadir .--syncmode fast


搭建自己的私有链 

创建genesis.json

因为公共网络的区块数量太多,同步耗时太长,我们未来方便快速了解Geth,可以试着用它来搭一个只属于自己的私链

首先,我们需要创建网络的“创世(genesis)”状态,这写在一个小小的JSON文件里(例如,我们将其命名未genesis.json):

chainId:链id,尽量不要和公链id和测试链id一致

difficulty:挖矿难度系数,2000不算大

gasLimit:一个块里面 gas 的上限要求

alloc:初始账号信息,包含一个地址和对象,表示创世区块一创建,balance里面有多少钱

balance:余额,单位是wei

{
    "config": {
    "chainId": 15,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0
    },
    "alloc": {
    "0x1E17ECE93b3c72277E4B22a58B87934C9F654089":{"balance":"900000000000000000000"}},
    "coinbase": "0x0000000000000000000000000000000000000000",
    "difficulty": "0x200",
    "extraData": "",
    "gasLimit": "0x2fefd8",
    "nonce": "0x0000000000000042",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp": "0x00"
}

init初始化gensis.json 

要创建一条以它为创世块的区块链,我们可以使用下面的命令:

其中 path/to/custom/data/folder 是你存储的目录

geth --datadir path/to/custom/data/folder init gensis.json

 

 init 初试化私链成功

geth --datadir ~/桌面/geth-project/myChain/ init ~/桌面/geth-project/myChain/genesis.json

启动私链

在当前目录下运行 geth ,就会启动这条私链

注意要将 networkid 设置为创世块配置里的 chainId 一致

geth --datadir path/to/custom/data/folder --networkid 15

我们可以看到节点正常启动:

geth --datadir ~/桌面/geth-project/myChain --networkid 15

这样,我们就已经启动了一条自己的私链

猜你喜欢

转载自blog.csdn.net/m0_46262108/article/details/123273386
今日推荐