Она всегда имеет один вход и один выход, при этом вход не тратит предыдущий выход и, следовательно, содержит нулевой хэш указатель, так как он чеканит новые биткойны и не тратит существующие монеты.
Также стоимость выхода в настоящее время составляет около 6,25 биткойнов.
Выходное значение – это доход майнера от блока.
Оно состоит из двух компонентов: награды за добычу блока, которая устанавливается системой, и которая делится пополам каждые 210 000 блоков (около 4 лет) и комиссионных сборов, взимаемых с каждой транзакции, включенной в блок.
Также coinbase транзакция содержит специальный параметр coinbase, который абсолютно произволен – майнеры могут записывать туда все, что захотят.
Известно, что в самом первом блоке, добытом в Биткойне, параметр coinbase ссылался на историю в газете Times of London, в которой участвовал канцлер, спасающий банки.
Это интерпретировалось как политический комментарий о мотивации для запуска биткойн.
Это также служит доказательством того, что первый блок был добыт после того, как газета вышла 3 января 2009 года.
Также параметр coinbase может использоваться для уведомления майнерами о поддержке различных новых функций.
Чтобы лучше понять формат блока и формат транзакции, лучше всего изучить цепочку блоков.
Есть много веб-сайтов, которые делают эти данные доступными, например, blockchain.info.
Вы можете посмотреть графики транзакций, посмотреть, какие транзакции тратят другие транзакции, искать транзакции со сложными сценариями и просматривать структуру блоков и видеть, как блоки ссылаются на другие блоки.
Поскольку цепочка блоков представляет собой структуру публичных данных, разработчики создали красивые инструменты для ее графического анализа.
Сеть Bitcoin
До сих пор мы говорили о способности участников публиковать транзакцию и вводить ее в цепочку блоков, как будто это происходит по волшебству.
На самом деле это происходит с помощью сети Биткойн.
Это одноранговая сеть, и она наследует многие идеи одноранговых сетей.
В сети Bitcoin все узлы равны.
Здесь нет иерархии, и нет особых узлов или главных узлов.
Эта сеть работает через протокол TCP и имеет случайную топологию, где каждый узел связан с другими случайными узлами.
Новые узлы могут присоединиться в любое время.
Фактически, сегодня вы можете скачать клиент Bitcoin, развернуть свой компьютер в качестве узла, и он будет иметь равные права и возможности, как и любой другой узел в сети Bitcoin.
Сеть меняется со временем и очень динамична из-за входа и выхода узлов.
Не существует явного способа покинуть сеть.
Вместо этого, если узел не был слышен некоторое время – три часа – это длительность, которая жестко закодирована в большинстве клиентах – другие узлы начинают забывать этот узел.
Таким образом, сеть обрабатывает узлы, переходящие в офлайн режим.
Напомним, что узлы соединяются со случайными одноранговыми узлами и нет никакой географической топологии.
Теперь предположим, что вы запустили новый узел и хотите присоединиться к сети.
Вы начинаете с простого сообщения для одного узла, о котором вы знаете.
Обычно он называется вашим семенным узлом seed node, и есть несколько разных способов поиска списков семенных узлов, к которым можно подключиться.
Вы отправляете специальное сообщение «Скажите мне адреса всех других узлов в сети, о которых вы знаете».
Вы можете повторить процесс с новыми узлами, о которых вы узнаете, столько раз, сколько хотите.
Затем вы можете выбрать, к каким из них следует подключиться, и вы станете полнофункциональным членом сети Bitcoin.
Существует несколько шагов, которые используют случайность, и результатом является то, что вы получаете случайный набор узлов.
Чтобы присоединиться к сети, все, что вам нужно знать, – это связаться с одним узлом, который уже находится в сети.
Для чего нужна сеть?
Конечно, чтобы поддерживать цепочку блоков.
Чтобы опубликовать транзакцию, мы хотим, чтобы об этом узнала вся сеть.
Это происходит с помощью простого алгоритма наводнения, иногда называемого протоколом сплетен.
Если Алиса хочет заплатить Бобу, ее клиент создает, и ее узел отправляет эту транзакцию ко всем узлам, с которыми она связана.
Каждый из этих узлов выполняет серию проверок, чтобы определить, принять и транслировать или нет дальше эту транзакцию.
Если проверки проходят успешно, узел, в свою очередь, отправляет транзакцию всем своим узлам-пирам.
Узлы, которые принимают эту транзакцию, помещают ее в пул транзакций, о которых они слышали, но которые еще не находятся в цепочке блоков.
Если узел получает транзакцию, которая уже находится в пуле, он больше не транслирует ее.
Это гарантирует, что протокол наводнения прекратится, и транзакции не будут циклически перемещаться по сети вечно.
Помните, что каждая транзакция однозначно определяется своим хешем, поэтому ее легко найти в пуле.
Теперь вопрос, когда узлы узнают о новой транзакции, как они решают, должны ли они ретранслировать ее?
Для этого существуют четыре проверки.
Первая и самая важная проверка – проверка транзакции – транзакция должна быть валидной для текущей цепочке блоков.
Узлы запускают скрипт для каждого предыдущего выхода, который тратится, и проверяют, чтобы скрипт вернул true.