Я не отметить, что Люк сделал создать отдельный тип сообщения для блоков необоснованных для того, чтобы указать на сверстник, что блок непроверенный.
Это сообщение может быть лишь хэш.
"fastblock"
заголовок блока
булево проверено
хэш [] txHashes
Эти блоки могут быть направлены до тех пор, как они (по всей видимости) увеличивают основную цепь. Проверяется поле указывает, если блок был проверен.
Я думаю, что p2pool делает что-то подобное?
Вершины могут ответить, задавая для всех сделок, которые они пропали без вести.
для начальной загрузки За исключением, кажется, мало смысла в использовании блок-сообщение оригинал.
котировка
избегает SPV узлов под угрозой
SPV узлы должны использовать ряд подтверждает для безопасности. Если есть 6 блоков вилки, они уже находятся в опасности.
Тем не менее, проверяются флаг по крайней мере, ставит атакующий под угрозой отключения.
котировка
Другое очевидное улучшение было бы разделить пересылку блока, чтобы избежать отправок избыточных данных для транзакций, которые уже были получены в дальнем конце, это может быть сделано без увеличения кругорейсов только используя существующие INV кэшей отслеживать то, что TXN мы знаем пир уже знает.
Отправка только хэши выполняет в основном это. Пусть узел запрашивать отсутствующую транзакции.
Если узлы не вперед, пока они не были все сделки, то это создает стимул, чтобы сделать уверены, что сделки выталкиваются заранее.
Я думаю, "blockpreview" Сообщение будет также полезно. Это было бы похоже на blockfast сообщение, но не будет на самом деле встретить POW (нонса = 0).
Предварительный просмотр будет список хэшей, которые будут включены в блок. Узлы будут хранить (Merkle-корень, Hash []) карту.
Для комбайна, процесс распространения блока может быть
Miner посылает (непроверенные) "заголовки" сообщение, содержащее новый блок [*]
Peer проверки, если заголовок расширяет блок дерева, если нет, то ничего не делает [**]
Peer проверки, если POW удовлетворяется и значение трудности является правильным, если нет, то разъединяются
Peer проверяет, Merkle корень находится в кэше просмотра карты, если нет, то он запрашивает "fastblock"
Peer проверки, если известны все операции, если нет, то он запрашивает дополнительные операции.
После операции все известно, он пересылает сообщение заголовков (непроверенные).
После операции все были проверены, блок может быть сохранен на диск и добавляется к цепочке.
[*] Сообщение заголовков должны проверенное поле
[**] Заголовки будут передаваться, даже если они проходят альтернативную цепочку (но, вероятно, только в течение последних нескольких блоков)