Введение
Блокчейн-технология базируется на нескольких основополагающих принципах. Первый — структура самого блокчейна, включая компоненты и связи между ними. Из термина «блокчейн» (block — блок, chain — цепь) понятно, что он представляет собой последовательность блоков, каждый из которых включает в себя множество транзакций. Транзакцией называется минимальное действие, которое пользователь блокчейна может совершить со своими активами. Предлагаем рассмотреть подробнее, что собой представляет транзакция в сети Биткоин.
Простое описание
С точки зрения майнера транзакции бывают двух видов: базовая (coinbase) и обычная. Базовая транзакция всегда присутствует в блоке и расположена в его начале. Она предназначена для вознаграждения майнера за закрытие блока. Однако в некоторых случаях майнер может добавить в нее и другие функции.
Для получателя всё намного проще. Любая простейшая транзакция на блокчейне показывает «откуда» и «куда» необходимо переслать активы, а также «сколько» их. Такой формат предусмотрен в подавляющем большинстве реализаций денежных протоколов над блокчейнами. Если же вдаваться в детали, то даже родственные протоколы над похожими блокчейнами будут отличаться.
Как правило, эта разница выражается в дополнительных параметрах пересылки средств. Примерами таких параметров в Биткоине служат скрипты (ключи), присутствующие внутри каждой транзакции.
Компоненты транзакции
Скрипт на Биткоине
Скрипт в Биткоине — это небольшая инструкция, определяющая процесс проверки параметров транзакции. В простейшем случае она проверяет лишь соответствие заявленного открытого ключа закрытому, чтобы не произошло ошибочной передачи средств. Язык, на котором пишется эта инструкция, при желании позволяет вводить проверку других различных параметров. Этот язык не допускает циклов и повторений, но имеющихся команд хватает для написания достаточно сложных условий. Такой правильно сформулированный скрипт можно считать предком смарт-контрактов.
Входы
Каждая транзакция начинается с ключевого номера версии. Вторым идет указание количества входов в транзакцию и сами входы. Каждый вход — это отсылка к ранее подтвержденной транзакции из блокчейна, которая приносит на текущий адрес кошелька какие-то средства. Каждый вход соответствует одному выходу ранее проведенной транзакции, которая проассоциировала с данным кошельком некоторую сумму криптовалюты. Все множество входов подтверждается при помощи хеш-кода и открытого ключа в момент распространения транзакции по сети.
Выходы
После того, как все входы были перечислены, приходит очередь выходов. Вначале указывается их количество. Далее по очереди перечисляются адреса, на который необходимо послать средства. Для каждого выхода прописывается количество денег, предназначенных к пересылке. Сумма на всех входах обязательно должна быть больше или равна сумме на всех выходах. Если между этими значениями есть разница, то она будет получена майнером за очередной закрытый блок. Такая разница выступает в роли комиссии за транзакцию.
Метка времени
В последнем поле списка указывается время совершения транзакции либо номер блока. В любом случае это поле определяет, с какого момента транзакцию можно помещать в блок. Такая настройка позволяет откладывать время подтверждения транзакции.
Послесловие
Несмотря на то, что структура транзакции в блокчейне выглядит довольно сложной, лишь с ее помощью участники сети могут пересылать средства. К счастью, пользователям нет смысла вникать в детали концепции входов, связанных с выходами. Современные кошельки, как правило, выполняют все технические расчеты вместо человека. Однако при желании любой заинтересованный пользователь может овладеть используемым методом учета средств и понять его досконально.