У меня есть общее представление о строительных блоках. Но я надеюсь, что кто-то может заполнить детали / пробелы. Кроме того, вы можете исправить, если что-то не так? Спасибо.
Сценарий:
Так вот где я немного неясен. Как/когда транзакции в выигрышном блоке проверяются остальной сетью? Это в то время, когда они проверяют выигрышный хэш? Проверяют ли они также, что все транзакции в это время успешны?
Сколько узлов должно одобрить/проверить выигрышный хэш, прежде чем он будет принят в сеть биткойнов в качестве следующего добавляемого блока?
Спасибо.
Все, что написал MCCCS, хорошо, но просто чтобы уточнить ваш последний вопрос:
Сколько узлов должно одобрить/проверить выигрышный хэш, прежде чем он будет принят в сеть биткойнов в качестве следующего добавляемого блока?
Этот вопрос немного ошибочен: не существует «принятия блока в сеть биткойн», потому что это предполагает наличие некоего общесетевого порога принятия, который должен быть достигнут, или некоего центрального переключателя «да/нет» для принятия блока.
Реальность такова, что сеть состоит из независимо действующих узлов . Каждый узел решает для себя, действителен ли блок, и именно благодаря этим «правилам консенсуса» сеть приходит к соглашению о том, какой блокчейн является самым длинным (наиболее работающим). Как только действующий блок будет передан в эфир, каждый узел будет независимо работать, чтобы убедиться, что он действителен, а затем добавить его в свою локальную копию блокчейна, если он пройдет все тесты. Сеть спроектирована таким образом, что мы ожидаем, что все узлы, которые следуют этим правилам консенсуса, останутся в консенсусе, даже если они действуют независимо.
3: У каждого узла есть собственный мемпул. Каждый узел проверяет новые транзакции, которые они получают, когда они получают.
4-5-6: Узлы майнят не майнеры. Майнеры никогда не останавливаются, и каждый [какой-то интервал] они получают новый шаблон блока с узла оператора пула, который[ose merkle hash] включает новые транзакции. Когда они находят блок, он публикуется, и транзакции в этом блоке не могут быть изменены.
В: Когда узлы получают новые блоки, они проверяют его хэш (независимо от того, ниже ли он сложности целевой), хэш предыдущего блока, который он содержит, и транзакции, которые он имеет. (Обратите внимание, что большинство принятых транзакций получаются дважды каждым узлом, что и пытается решить Compact Blocks).
В: Это не имеет значения, блоки распространяются быстро, и даже если (неправильно спроектированный) клиент отклоняет его, этот блок все еще является частью блокчейна (поскольку он действителен и нет конкурирующих блоков).
Я думаю, что если вы добавите еще два шага в начале, это будет иметь больше смысла.
Транзакция передается на соседние узлы, и эти узлы проверяют транзакцию. Если транзакция действительна, эти узлы передают ее дальше своим соседним узлам в сети. Если транзакция недействительна, она не заполняется в сети.