В случае, если я эгоистичный майнер и успешно разветвил блокчейн, я хотел бы знать состояние моих честных узлов в любой момент времени — как я могу этого добиться?
Обмениваются ли одноранговые узлы в отдельных блокчейнах информацией о своем прогрессе с помощью сообщений данных?
Давайте посмотрим на этот сценарий для лучшего понимания:
эгоистичный node= s ; честный узел = h
s : добывать блок №1 (дочерний блок генезиса), не сообщать
h : добывать блок №2, блок №3 публично
s : добывать блок №4, блок №5 тайно (не сообщать)
h : добывать блок # 4 публично
s : получить информацию о том, на какой высоте блока находится честная сеть !?
ПРИМЕЧАНИЕ:
pindexLastCommonBlock
кажется бесполезным, поскольку при вызове его высоты будет сказано, что последний общий блок равен 3, но не указано, на какой высоте находятся честные узлы.setInventoryKnown
в случае форка хранятся все когда-либо добытые блоки.Кошельки SPV обычно также отслеживают наиболее известный блок для каждого из своих одноранговых узлов, чтобы убедиться, что они обновлены и могут оценить безопасность своих транзакций (количество подтверждений). Они делают это так, чтобы запустить счетчик, инициализированный на высоте, указанной в version
сообщении. А затем, когда узел передает новое inv
(инвентаризационное) сообщение для блока, получает этот заголовок блока, и, если он основывается на их предыдущем лучшем заголовке, увеличивает счетчик. С помощью этого метода вы можете сохранить сопоставление узлов с их кончиками основной цепи.
По сути, это просто отслеживание трансляций inv
от пира, и именно так пиры публично сообщают о новых блоках.
морсекодер
peers on separate blockchains
- Если под отдельными блокчейнами вы подразумеваете разные монеты, то эти пиры вообще не разговаривают друг с другом. Если вы имеете в виду одноранговые узлы, работающие с одним и тем же блокчейном, но на разных этапах процесса синхронизации, эти одноранговые узлы обмениваются сообщениями данных.Алиакбар Ахмади
морсекодер
Алиакбар Ахмади