Я создал частную тестовую сеть. В genesis.json
файле я изменил difficulty
на 1
. Тем не менее, добыча блока по-прежнему занимает несколько часов на моем процессоре. Я подозреваю, что это связано с некоторой конфигурацией, связанной с сетевой адаптацией.
Какова правильная процедура снижения сложности в частной тестовой сети, чтобы я мог добывать первые блоки на не очень мощном процессоре?
Есть 2 способа сделать это:
Измените значение параметра сложности в genesis.json
файле на небольшое число (желательно установить его на 0). Вы можете обратиться к этому примеру файла генезиса
{
"config": {
"chainId": 1994,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0
},
"difficulty": "0x0", //difficulty set to zero in hexadecimal format
"gasLimit": "0x8000000",
"alloc": {
"9a963d0eefeb62678d8efb48561c81e51c552797": {
"balance": "9606938044258990275541962092341162602522202993782792835301376"
},
"30f28686aef33adbfbc13797b1d9f5a2f2759f56": {
"balance": "9606938044258990275541962092341162602522202993782792835301376"
}
}
}
Проблема с этим методом заключается в том, что когда количество блоков увеличивается, сложность также начинает расти с высокой скоростью. Итак, чтобы решить эту проблему, обратитесь к следующей части.
consensus.go
, который находится по адресу, consensus/ethash/consensus.go
и найдите строку ниже.return CalcDifficulty(chain.Config(), time, parent)
Теперь замените строку выше на строку ниже.
return big.NewInt(1)
.
Теперь создайте go-ethereum с помощью make geth
команды.
Я настоятельно рекомендую вам прочитать эту статью для более подробной реализации описанного выше процесса.
Вы можете сделать сложность статической , изменив CalcDifficulty
в Geth так, чтобы она возвращала статическое число. Пример:
func CalcDifficulty(config *ChainConfig, time, parentTime uint64, parentNumber, parentDiff *big.Int) *big.Int {
return big.NewInt(1)
}
Пересоберите Geth и используйте вашу модифицированную версию.
Источник: Ответ на вопрос Можно ли изменить целевое время блока?
enode
которому я подключаюсь? Если да, влияет ли это на сложность текущей частной сети блокчейна (например, уже добыто 491 312 блоков)? @эт♦cpp-ethereum
? Я не нашел ни одного файла с похожим именем, например Consensus.cpp.Ethash::calculateDifficulty
.Как видно в этом блоге
сложность Скалярное значение, соответствующее уровню сложности, применяемому при обнаружении одноразового номера этого блока. Он определяет цель майнинга, которую можно рассчитать на основе уровня сложности предыдущего блока и метки времени. Чем выше сложность, тем статистически больше вычислений должен выполнить майнер, чтобы обнаружить допустимый блок. Это значение используется для управления временем генерации блоков в блокчейне, поддерживая частоту генерации блоков в целевом диапазоне. В тестовой сети мы сохраняем это значение низким, чтобы избежать ожидания во время тестов, поскольку для выполнения транзакции в блокчейне требуется обнаружение действительного блока.
Сложность установлена 0x4000
в блоке генезиса, что помогает мне добывать блок каждую ~5
секунду.
I0401 07:06:16.533385 4556 ethash.go:252] Generating DAG: 98%
I0401 07:06:16.533482 4556 ethash.go:252] Generating DAG: 99%
I0401 07:06:16.533586 4556 ethash.go:252] Generating DAG: 100%
I0401 07:06:16.533668 4556 ethash.go:237] Done generating DAG for epoch 0, it took 10.562412ms
и майнинг
I0401 07:06:26.062135 4556 worker.go:348] 🔨 Mined block (#219 / 9704b2d0). Wait 5 blocks for confirmation
I0401 07:06:26.062687 4556 worker.go:569] commit new work on block 220 with 0 txs & 0 uncles. Took 484.843µs
I0401 07:06:26.063166 4556 worker.go:569] commit new work on block 220 with 0 txs & 0 uncles. Took 375.001µs
I0401 07:06:32.221697 4556 worker.go:348] 🔨 Mined block (#220 / 77bb4f70). Wait 5 blocks for confirmation
I0401 07:06:32.222280 4556 worker.go:569] commit new work on block 221 with 0 txs & 0 uncles. Took 521.439µs
Вы можете следовать этому руководству с подробным объяснением: http://blog.coinfabrik.com/fast-smart-contracts-execution-ethereum-private-blockchain-development-environment/
никсмак
Майя Виктор
никсмак