Удалить транзакции coinbase в частной сети

Я был готов настроить частную сеть Эфириума с низкой сложностью. Я могу установить сложность каждого блока на 1 (или постоянную), чтобы избежать проблемы очень высокой сложности с увеличением количества блоков.

Но у этого есть и обратная сторона: уменьшенное время блока и, следовательно, более раннее исчерпание места на диске.

Можно ли каким-либо образом изменить исходный код geth, чтобы удалить вознаграждение майнерам и, следовательно, транзакции coinbase? Таким образом, блок добавляется в цепочку, когда есть какая-то реальная транзакция. Это значительно сэкономит место на диске, и мы сможем наслаждаться постоянными трудностями.

Ответы (3)

Ethereum не имеет транзакции coinbase. Вознаграждения зачисляются автоматически на адрес майнера в заголовке блока (после обработки всех транзакций). Адрес майнера составляет всего 20 байт, поэтому вы не сэкономите много, убрав его.

В цепочке PoW безопасность основана на добытых блоках, поэтому генерация меньшего количества блоков противоречит безопасности цепочки. Возможно, вы захотите переключиться на сеть PoA или другую альтернативу, например, на использование цепи Plasma.

Можно ли каким-либо образом изменить исходный код geth, чтобы удалить вознаграждение майнерам и, следовательно, транзакции coinbase?

Ethereum будет давать вознаграждение за майнинг для coinbase , добавляя к своему балансу. Затем, если вы не хотите давать вознаграждение за coinbase , вам нужно только удалить эти строки ниже в согласии.

https://github.com/ethereum/go-ethereum/blob/a1f8549262567ddacac3d4180f8a6ca0826036a9/consensus/ethash/consensus.go#L567

https://github.com/ethereum/go-ethereum/blob/a1f8549262567ddacac3d4180f8a6ca0826036a9/consensus/ethash/consensus.go#L575

Надеюсь, это поможет!

Просто добавьте следующую опцию в gethкомандную строку:

--exec 'setInterval (() => txpool.status.pending > 0 ? miner.start () : miner.stop (), 100)'

Он автоматически начнет добычу, когда будет что добывать, и остановит добычу в обратном случае.

Дополнительные сведения см. в документации geth по командной строке и API управления .