Введение в технологию Блокчейн - страница 60

Шрифт
Интервал


Теперь предположим, что вы запустили новый узел и хотите присоединиться к сети.

Вы начинаете с простого сообщения для одного узла, о котором вы знаете.

Обычно он называется вашим семенным узлом seed node, и есть несколько разных способов поиска списков семенных узлов, к которым можно подключиться.

Вы отправляете специальное сообщение «Скажите мне адреса всех других узлов в сети, о которых вы знаете».

Вы можете повторить процесс с новыми узлами, о которых вы узнаете, столько раз, сколько хотите.

Затем вы можете выбрать, к каким из них следует подключиться, и вы станете полнофункциональным членом сети Bitcoin.

Существует несколько шагов, которые используют случайность, и результатом является то, что вы получаете случайный набор узлов.

Чтобы присоединиться к сети, все, что вам нужно знать, – это связаться с одним узлом, который уже находится в сети.

Для чего нужна сеть?

Конечно, чтобы поддерживать цепочку блоков.

Чтобы опубликовать транзакцию, мы хотим, чтобы об этом узнала вся сеть.



Это происходит с помощью простого алгоритма наводнения, иногда называемого протоколом сплетен.

Если Алиса хочет заплатить Бобу, ее клиент создает, и ее узел отправляет эту транзакцию ко всем узлам, с которыми она связана.

Каждый из этих узлов выполняет серию проверок, чтобы определить, принять и транслировать или нет дальше эту транзакцию.

Если проверки проходят успешно, узел, в свою очередь, отправляет транзакцию всем своим узлам-пирам.

Узлы, которые принимают эту транзакцию, помещают ее в пул транзакций, о которых они слышали, но которые еще не находятся в цепочке блоков.

Если узел получает транзакцию, которая уже находится в пуле, он больше не транслирует ее.

Это гарантирует, что протокол наводнения прекратится, и транзакции не будут циклически перемещаться по сети вечно.

Помните, что каждая транзакция однозначно определяется своим хешем, поэтому ее легко найти в пуле.

Теперь вопрос, когда узлы узнают о новой транзакции, как они решают, должны ли они ретранслировать ее?

Для этого существуют четыре проверки.

Первая и самая важная проверка – проверка транзакции – транзакция должна быть валидной для текущей цепочке блоков.

Узлы запускают скрипт для каждого предыдущего выхода, который тратится, и проверяют, чтобы скрипт вернул true.

Во-вторых, они проверяют, чтобы выходы, потраченные в этой транзакции, еще не были потрачены.