以太坊创世块专用网络

Ethereum Genesis Block Private Network

我正在尝试在专用网络上进行挖矿。

如何在前沿以太坊中为私有网络创建创世块?

我已经看到:https://blog.ethereum.org/2015/07/27/final-steps/ 但这是为了获得 public 创世块。

您可以简单地使用生成的 here 并修改帐户和余额。

同时将气体限制设置为更高的数字,例如 0x2dc6c0 (3mio),并将难度降低至 0xb

{
    "nonce": "0x0000000000000042",
    "difficulty": "0x000000100",
    "alloc": {

    },
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "gasLimit": "0x16388"
}

你基本上可以创建任何你喜欢的创世块,只要它根据 黄皮书 4.3.4 是有效的。区块头有效性.

Genesis Block 并未指明矿工在哪个区块链上工作。这是通过连接到正确的对等网络来定义的,或者,如果您在具有多个区块链 运行 的网络上使用发现机制,则使用网络 ID。

(创世)块描述了这个特定块的参数,它们是根据矿工的算法设置的。当然,任何违法行为都会被共识机制拒绝。

总之,您可以为所有自定义区块链使用相同的 GB。

在数学验证方面必须正确的值是 nonce(工作量证明),mixhash(Fowler– Noll–Vo 减少 DAG 值集),timestamp(创建时间)。此示例中的极客值是原始 Frontier 版本 Genesis Block 的副本。 parentHash 指向链中的父块,创世块是唯一允许和需要 0 的块。 alloc 允许 "pre-fill" 帐户使用以太币,但这里不需要,因为我们可以非常快速地挖掘以太币。

难度[​​=41=]定义了矿工(哈希)算法找到有效区块所满足的条件。在测试网络上,它通常保持较小,以便为每次迭代找到一个块。这对于测试很有用,因为需要在区块链上执行交易。块生成频率是区块链的响应时间。

gasLimit是一笔交易可以燃烧的Gas的上限。它被继承到下一个块中。 extraData 是 32 字节的自由文本,您可以在其中 et(h)ernalise 区块链上的智能事物 :) coinbase 是获得该区块的挖矿和交易执行奖励,以以太币形式。它可以在这里为 0,因为它将根据找到区块(并添加交易)的矿工的 coinbase 为每个新区块设置。

我已经对此进行了更详细的记录 here

希望对您有所帮助:)

具体来说,私有网络的创世块构建在 this short article 中有很好的解释。

我想在这里提到的一件事是,创世块的唯一区别是它没有引用前一个块。

{
"config": {
           "chainId":2010,
           "homesteadBlock":0,
           "eip155Block":0,
           "eip158Block":0
           },
"gasLimit": "0x8000000",     
"difficulty": "0x400",
"alloc": {}
}

Geth 版本 1.9 (go1.9) 仅接受以上属性