【问题标题】:How to avoid generating Ethereum DAG for tests?如何避免生成以太坊 DAG 进行测试?
【发布时间】:2018-05-31 18:42:27
【问题描述】:

我正在与在 Docker 中运行的私有以太坊网络进行集成测试。生成 DAG 需要几分钟时间,至少需要 2 Gb(epoch 0 和 1 为 1Gb)。我已经在自定义创世块 0x1 中设置了难度,但难度仍然很大。

我可以在本地机器上运行测试并将卷挂载到/root/.ethash 以在测试之间重用 DAG。但由于时间和存储限制,它阻止了我在 Bitbucket 上运行测试。

有什么方法可以避免为测试生成 DAG?

【问题讨论】:

  • PoA 共识是一种选择吗?
  • 我通过创建基于ethereum/client-go 的自定义 Docker 映像解决了同样的问题。它包含一个层,其文件夹 /root/.ethash 包含预生成的 DAG。

标签: java docker integration-testing ethereum geth


【解决方案1】:

Ethash 挖矿needs DAG。

私有测试网的一个快速解决方法是改用 Clique(PoA 共识)。

您可以像这样在 genesis.json 中配置 Clique:

  "config": {

    "clique": {
      "period": 5,
      "epoch": 30000
    }
  }

密封将以period 秒的固定间隔发生。对网络或合同的运行没有其他影响。

唯一的潜在缺点是 Clique 至少需要 2 个节点。

【讨论】:

  • 至少 2 个 miner 节点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 2017-01-23
  • 1970-01-01
  • 2018-11-22
  • 2020-10-17
  • 2016-08-06
相关资源
最近更新 更多