首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于genesis.json的主要概念误解

关于genesis.json的主要概念误解
EN

Ethereum用户
提问于 2018-01-28 03:32:45
回答 1查看 417关注 0票数 0

我很难理解genesis.json文件。

假设:在我看来,它既可以初始化第一个块,也可以为链的其余部分设置配置参数。对还是错?

问题:

  1. genesis.json文件中的第一个块是否总是相同的?genesis.json文件对它的影响有多具体?
  2. 如果接受一个新的EIP,那么genesis.json文件可能会更改。具体来说,这将如何使第一个街区看起来不同?会吗?
  3. 为什么像noncemixHashcoinbase这样的选项要放在genesis.json文件中呢?如果第一个街区不能开采,它们有什么用途?
  4. 如果我最终与同行“同步”并下载他们的整个区块链,为什么我需要一个genesis.json文件?我是否真的通过genesis.json自己创建了第一个块,然后与我的同行同步其他块呢?
  5. 在Ethereum主干网上,成因块将乙醚分配给某些帐户。是否有相应的genesis.json文件在alloc {}部分中有这些帐户?或者第一个块是在没有这个文件的情况下创建的?
EN

回答 1

Ethereum用户

发布于 2018-01-28 08:04:32

  • 在我看来,它既可以初始化第一个块,也可以为链的其余部分设置配置参数。对还是错?

是真的。

  • genesis.json文件中的第一个块是否总是相同的?genesis.json文件对它的影响有多具体?

你的问题很棘手。要成为主网络的对等方,您需要与网络上的每个人完全相同的成因文件。如果不是,那你就不会是同龄人了。

  • 如果接受一个新的EIP,那么genesis.json文件可能会更改。具体来说,这将如何使第一个街区看起来不同?会吗?

我不这么认为,你从一个特定的成因文件开始,你结束它,或者你完全改变了链

  • 为什么像“现在”、"mixHash“和"coinbase”这样的选项要放在genesis.json文件中?如果第一个街区不能开采,它们有什么用途?

检查

  • 如果我最终与同行“同步”并下载他们的整个区块链,为什么我需要一个genesis.json文件?我是否真的通过genesis.json自己创建了第一个块,然后与我的同行同步其他块呢?

因为要声明是否允许同步,我们需要一种方法来知道是否要与这个特定的链同步。成因文件类似于链的ID。假设我有两个私有链,每个都有相同的chainID,但在成因文件中有不同的配置:我的一些节点将连接到链A,另一些将连接到B链,这取决于我给它们的创建。如果尝试与具有不同成因文件的对等程序同步,则将拒绝它。

实际上,您并不是“创建”第一个块。成因文件只是一个ID,并描述了块0之前的链。

  • 在Ethereum主干网上,成因块将乙醚分配给某些帐户。是否有相应的genesis.json文件在alloc {}节中具有这些帐户?或者第一个块是在没有这个文件的情况下创建的?

我想你对块文件和成因文件有误解。如前所述,成因文件是对第一个块之前的链的描述。如果成因文件有一些分配的地址,则链的状态将具有特定余额的地址,从块0开始。

下面是一个私有链的第一个块的例子,它有预先分配的地址,您可以看到,它只是一个没有任何事务的普通块。唯一具体的事情是parentHash。因为它不存在,而是来自创世纪文件。

代码语言:javascript
复制
{
  difficulty: 1024,
  extraData: "0x",
  gasLimit: 134217728,
  gasUsed: 0,
  hash: "0xd3f87ee4cf1e44bc4024a519d91b08efdf187fa05f3a7a39efd1e4f73c29426a",
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: "0x0000000000000000000000000000000000000000",
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: "0x0000000000000042",
  number: 0,
  parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 507,
  stateRoot: "0x041288fa59918e8775cddb418d92c1ef125438a1d9f2e4d481fae84ab85fcd22",
  timestamp: 0,
  totalDifficulty: 1024,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/37720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档