Хорошо, так что я бы сказал, что у меня есть очень четкое понимание основ Bitcoin, и blockchain в целом. Я могу объяснить, в значительной степени (на высоком уровне) поток почти в каждой части экосистемы. << Я говорю не потому, что я думаю, что знаю хотя бы часть того, что делают люди на этом форуме, а скорее, чтобы дать честную оценку того, где мой вопрос откуда.
Исходя из того, что вы сказали в своем посте, я подозреваю, что вы переоценивать то, что вы знаете. Кажется, что вы получили неверную информацию, и включить, что неверную информацию в ваши убеждения о том, как Bitcoin работ.
Я надеюсь, что вы по крайней мере, известны, что неподтвержденные транзакции передаются от одноранговых до почти вся сеть не слышала о сделке, и о том, что сделка считается, что его первым "подтверждение" когда он входит в блок.
Тем не менее, я не понимаю, что происходит на техническом, и я думаю, несколько низкого уровня фундаментального, когда блок "добавляют к цепи." Я часто слышу, как люди говорят о том, "Ах да, так после того, как шахтеры помоему блок, то они упаковать его с транзакциями, то бум, он добавляется к цепочке. И это безопасно, потому что все блоки требуют много работы, чтобы обратить вспять." Кажется, что большинство людей удовлетворены этим ответом. Ничего плохого в том, что это не просто я ищу больше.
Ответ неверный. Сделки не были добавлены после горняка шахты блока. Они добавляются ДО.
Я был бы весьма признателен, если кто-то (или несколько человек .. чем больше, тем лучше) могли бы объяснить, что на самом деле происходит. Что на самом деле определяет "Мы закончили с этим блоком, теперь давайте добавим его в цепи." Что происходит на техническом уровне, когда этот блок добавляется в цепи? Какой код бежится, чтобы облегчить это? Кто имеет доступ на запись в цепи?
Английский не является моим родным языком, поэтому я прошу прощения, если я точно не артикулировать свои вопросы. Там просто пустота знания, что делает меня неудобным. Я действительно хочу, чтобы понять все о процессе; каждая деталь имеет смысл для меня.
Заранее спасибо.
Каждые сверстники сети гарантируют, что сделка действительна до того, как передает его на какой-либо из других коллег, что он подключен. Это делает практически невозможным, чтобы затопить сеть с недопустимыми транзакциями, так как все сверстники отказываются передавать их.
Solo-шахтеры и майнинг работают равноправные узлы сети Bitcoin. Эти одноранговые узлы получать и проверять неподтвержденные транзакции от сверстников они подключены. Каждый соло-шахтер и майнинг отслеживает действительных неподтвержденных операций, которые он получил до сих пор. Этот список называется "mempool",
Обратите внимание, что участники майнинг делать, как правило, не запускать свои собственные узлы сверстников. Вместо этого они полагаются на бассейне, чтобы управлять, что для них, и они просто получают единица "Работа" из бассейна, чтобы закончить. Для остальной части этой должности, в любое время я использую слово "шахтер", Я говорю о сольных шахтерах или операторе майнинга.
Шахтер строит действительный блок в настоящее время неподтвержденных транзакций. Затем они создать заголовок 80 байт для этого блока операций. Заголовок содержит 6 частей информации:
- Номер версии
- Хэш предыдущего блока в blockchain (Yhis как блоки образуют "цепь", Каждый новый блок имеет ссылку на блок, который протекает весь путь обратно к самому первому блоку)
- Корень Merkle из списка транзакций (Это хэш, который представляет все транзакции, которые были выбраны для блока, а также определенный порядок, который был выбран для этих операций. Для того, чтобы изменить что-либо о списке транзакций, этот хэш должен быть пересчитан и будет отличаться. Это, как заголовок может доказать, что заголовок для этого конкретного блока операций.)
- временная метка
- В настоящее время добыча трудности в формате, который обычно называют "Nbits"
- Nonce (Это значение существует исключительно с целью модификации результата хеширования заголовка блока)
Минер затем начинает процесс "решение" этот блок. В случае майнинг, то пул посылает заголовок к участникам, чтобы они работали на него.
Процесс решения как это работает:
- 1. Хеш 80 байт заголовка блока, используя алгоритм SHA256.
- 2. Хэш результат этого хэша снова используя алгоритм SHA256.
- 3. Проверьте, чтобы увидеть, если результат этого второго хэширования является более низким значением, чем текущая цель сложности.
- 4а. Если она ниже, то блок "решена", Сразу же добавить блок на свой собственный экземпляр blockchain, и транслировать решенный блок всем подключенных сверстник.
- 4b.If это не ниже, то блок не решен. Изменить что-то о заголовке блока, и вернитесь к шагу 1.
Вот и все. Это все есть на него.
Как правило, "что нибудь" что изменяется примерно заголовок блока является "данное время", Тем не менее, одноразовое значение является только (значением бита 32) 4 байтового значения. Это означает, что есть максимум 4294967296 различных значений Nonce попробовать. Если вы пытаетесь все из них, и у вас еще нет "решена" блок, то вам нужно изменить что-то другое. Часто метка время может быть изменена, и они, вы можете попробовать еще 4294967296 значение Нонса. В очень большом майнинг, не может быть достаточно комбинации допустимых временных меток и Нонс значений для всех, чтобы получать разные результаты (не хотят участники тратить время и хэширования точно так же 80 значений байт). В этом случае список транзакций может быть немного изменен для каждого участника, так что каждый из них работает с совершенно другим корнем Merkle. Если участник имеет столько хэша силы, что они завершат все доступные действительные временные метки и Нонс комбинации для корня Merkle они были даны, то список транзакций может быть немного изменен снова, чтобы получить их еще Merkle корня работать. Поскольку постоянно новые сделки принимаются, шахтер может легко "изменить список транзакций" путем добавления новых сделок, которые они получили в список они используют, чтобы построить свой блок (и удаление более дешевые сделки, чтобы сохранить размер под требуемым пределом).
Как каждый узел получает новый блок от подключенных сверстников, они проверяют, чтобы убедиться, что все операции в блоке являются действительными. Они также проверить, чтобы убедиться, что Merkle корень в заголовке блока совпадает со списком транзакций. Они также проверить, чтобы убедиться, что все остальное в заголовке правомочно (метка времени, версия, предыдущий блок хэша, Nbits). Они также hcek, чтобы убедиться, что хэширования результаты заголовка блока в достаточно низкой хеш-значения (ниже текущей цели сложности). Если предположить, что блок оказывается полностью действительным, равноправный добавляет блок в их собственную копию blockchain, а затем передать его всем ровесников они подключены. В конце концов почти вся сеть будет наслышаны о блоке.
Поскольку каждый шахтер получает этот законченный блок, они делают то же самое, что и все остальные сверстникам делать (подтверждению блока, добавить его к своей собственной сети, и ретранслировать его сверстник они связаны с), а затем они строят все новые блоки работать на (с использованием хэш этого блока, что они просто получить, как новый "предыдущий блок хэш").
Это описывает, как строятся блоки, и как каждый получает копию своего собственного blockchain.
Причина это "безопасный" является то, что единственным способом кто-то может получить все узлы сети, чтобы заменить блок, который они уже приняли бы предусмотреть, что пэр с более действительной цепью, которая содержит блок замены. Это значит, что нападающим необходимо будет завершить хэширования "доказательство правильности работы" для блока, что они хотят, чтобы заменить PLUS всех блоков, которые приходят после этого (после их замены блока будут иметь другой хэш, и следующий блок включает в себя "предыдущий блок хэш" что им нужно будет изменить, чтобы соответствовать их замене) плюс один дополнительный блок (так как узлы будут только заменить существующую цепь с более длинной цепью). Так как весь мир работает непрерывно увеличивая длину текущего blockchain, это означает, что злоумышленник будет нужно больше хэш энергии, чем весь остальной мир вместе, чтобы решить блоки быстрее, чем остальной мир и догнать длина их цепи. Если злоумышленник имеет больше энергии, чем хэш остального мира вместе взятых, то они могут сделать гораздо больше денег, просто честно хэширования действительные новые блоки вместо того, чтобы пытаться заменить один старый блок.