Реальная история.
Дело 1
Я получаю новый блок, и я проверить его в том числе содержащихся сделок. Мой blockchain теперь содержит 3 действительных блоки А, В и С
Правильно.
Тем не менее, лучше думать о нем, как блок-дерева, а не blockchain. Blockchain только самый длинный путь, хотя блок-дерево.
Случай 2
Это следует ситуации в случае 1. Я получаю новый блок, который появляется в силе, но построен на блок В, а не на блок C. У меня теперь есть два блока, C1 и C2 и C1 хранится в моей blockchain. Я игнорирую блок C2.
Это работает на основе
заголовки первых. Другой узел должен послать вам C2.header первым. Ваше дерево заголовка теперь хранит C1.header и C2.header. Каждый узел указывает обратно на своего родителя. Так C1.header и C2.header указывают обратно В качестве родителя. Существует также массив хранить основную цепь для быстрого поиска.
C1.header все еще считается самой длинной цепью, так как связи сломаны, на основании которых заголовок был получен ранее. Это называется "наконечник",
Вы не просите блок С2, так как он не на самой длинной цепи, как вы понимаете это.
Вопрос 3
Это следует случай 2. Я получаю новый действующий блок, который построен на С1. Я добавляю это к моему blockchain и называем это блок D, и я выбрасываю блок C2
Вы не выбрасывайте ничего. Даже если вы загрузили C2 в полном объеме, вы просто оставить его на диске. C2.header остается в базе данных.
Есть достаточно мало сирот, что это не имеет большого значения.
Это позволяет блоки должны быть сохранены с помощью "присоединять только" файлы. Вы просто продолжать добавлять новые данные на конец BLK ****. Даты файлов.
Случай 4
Это следует случай 2. Я получаю новый действующий блок, который построен на С2. Я удаляю C1 от моего blockchain, и я добавить C2 и D. Я отбрасывать C1
Вы бы загрузить D.header первым. Это означает, что ваше дерево заголовка показывает, что D является самой длинной цепью. Это называется повторно орг.
Каждый блок сочетается с "задний ход" информация в оборотах ****. DAT файлов.
Вы бы тогда обратный C1. При этом удаляется все выходы транзакций в C1 и добавляет обратно все выходы транзакций, C1, проведенные из базы данных неизрасходованного вывода транзакции (UTXO).
Наконечник теперь в B.
Вы бы затем загрузить C2 и применить его к выходу транзакций базы данных (а также создать обратные данные), а затем загрузить и применить D.
Наконечник блок теперь указывает на D.
Что происходит с моим mempool, так как она может содержать смесь операций из блоков C1, C2 и D. Должен ли я взять mempool от шахтера, который создал блок D?
Обратное также добавляет обратно все операции в С1 в mempool. Затем двигаться вперед будут удалены все транзакции в C2 и D от mempool.
Теперь, как я свой вклад в процесс утверждения? Мне кажется, что я бы только какое-то влияние в маловероятном случае, что шахтер подобран мои файлы.
Запуск полного узла и на самом деле не использовать его не помогает, что много для вилочного профилактики. Вклад, который вы делаете, чтобы помочь клиентам SPV для подключения, и это делает его более легким для новых узлов для загрузки blockchain.
Если вы на самом деле не использовать узел для операций, то это не имеет значения, что ваш узел делает, если есть развилка. Это не мешает другим людям формировать расходы их Bitcoin.
Если бы вы были купцом и использовали узел, затем разветвление вашего узла от сети не позволите людям быть в состоянии провести биткойна в вашем магазине. То есть, где анти-вилка сопротивление приходит.
Если 75% шахтеры были осуществлять жесткую вилку, то многие торговцы и биржи отказались бы принять их раздвоенные биткойно. Они будут иметь больше военнопленного на своей цепи, но большинство узлов будет считать его недействительным и не Bitcoin.
Если большинство торговцев, потребителей и обмены согласны с жесткой вилкой, а затем те, на старой цепи будет в конечном итоге не в состоянии потратить свои монеты.