Как избежать генерации Ethereum DAG для тестов?

У меня есть интеграционные тесты с частной сетью Ethereum, работающей в Docker. Генерация DAG занимает несколько минут и занимает не менее 2 Гб (1 Гб для эпохи 0 и 1). Я установил сложность в пользовательском блоке генезиса 0x1, и это все еще слишком много.

Я могу запускать тесты на локальной машине и монтировать том в /root/.ethash, чтобы повторно использовать DAG между тестами. Но это не позволяет мне запускать тесты на Bitbucket из-за ограничений по времени и объему памяти.

Есть ли способ избежать создания DAG для тестов?


person 4ntoine    schedule 31.05.2018    source источник
comment
Будет ли возможен консенсус PoA?   -  person rustyx    schedule 31.05.2018
comment
Я решил ту же проблему, создав собственный образ Docker на основе ethereum/client-go. Он содержит слой с папкой /root/.ethash, содержащей предварительно созданную DAG.   -  person Dmitriy Melnik    schedule 19.03.2019


Ответы (1)


Для майнинга Ethash требуется DAG.

Быстрый обходной путь для частных тестовых сетей — вместо этого использовать Clique (консенсус PoA).

Вы можете настроить Clique в genesis.json следующим образом:

  "config": {

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

Запечатывание будет происходить с регулярными интервалами в period секунды. Другого влияния на работу сети или контрактов нет.

Единственным потенциальным недостатком является то, что для Clique требуется как минимум 2 узла.

person rustyx    schedule 31.05.2018
comment
как минимум 2 узла miner? - person 4ntoine; 31.05.2018