В Биткойне многие форки происходят, когда несколько майнеров добывают блоки одновременно. Тогда будет несколько блоков на той же высоте блока. Я просматривал руководство разработчика Bitcoin P2P по адресу https://developer.bitcoin.org/devguide/p2p_network.html .
Для распространения блоков ретранслятор отправляет сообщение «inv» своим одноранговым узлам. Одноранговые узлы запрашивают информацию о заголовке с помощью «getheaders», а ретранслятор отвечает сообщением «headers». Затем одноранговые узлы запрашивают информацию о блоке с помощью «getdata», а реле отвечает сообщением «блок».
В этом случае, как можно гарантировать, что одноранговые узлы получат несколько блоков одинаковой высоты? Ретранслятор может преднамеренно распространять сообщения «inv» и «headers» только для одного из блоков на той же высоте блока.
Как сверстники вообще могут знать, что произошел форк? Является ли получение информации о форке обязанностью ретранслятора или узла?
Допущение безопасности состоит в том, что узлы подключены по крайней мере к одному честному узлу. Если все их сверстники являются злонамеренными, для них вполне возможно скрыть информацию об определенных блоках или транзакциях от жертвы. Посмотрите атаки Eclipse, если вы хотите узнать больше об этом стиле атак или о существующих средствах защиты от них.
сатья
сатья
Питер Уилле
сатья
сатья
сатья
Питер Уилле
Питер Уилле