728x90

Транзакция Биткоина — это же подписанный раздел заданных, который транслируется в паутина и записываются в блоки. Она ссылается на предшествующие транзакции и переводит определённое количество BTC (биткоин-монет) на обозначенный открытый ключ (Bitcoin-адрес). Транзакции транслируются в паутина без шифрования. Есть веб-сайты на которых можно заметить каждую транзакцию записанную в коалиция, этакие веб-сайты именуют обозревателями блокчейна (к примеру этот сайт). Они умеют быть полезны для выяснения технических деталей сделки, либо для доказательства платежа.

Пример транзакции Bitcoin

Вход:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Выход:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG

Объяснения

Вход данной нам транзакции импортирует 50 BTC с выхода #0 транзакции f5d8… Потом выход заданной транзакции высылает 50 BTC на Bitcoin-адрес (выраженный в шестнадцатеричном формате: 404371…). Когда получатель возжелает издержать эти денежки, он сформирует транзакцию, на входе которой будет ссылаться на выход #0 заданной сделки.

Вход

Вход — это же гиперссылка на выход иной транзакции. Зачастую в одной транзакции быть может записано несколько входов, в этаком случае значения любых упомянутых выходов предшествующих сделок суммируются и общая сумма записывается на выход текущей транзакции. Previous tx — это же хэш предшествующей транзакции. Index — заядлый выход транзакции на которую ссылаются. ScriptSig — это же подпись — 1-ая половина Скрипта.

Скрипт состоит из 2-ух компонент, подписи (ScriptSig) и открытого ключа (scriptPubKey). Открытый ключ принадлежит зачинателю транзакции и подтверждает чего же он владеет суммой нужной для исполнения транзакции (записанной на выходе транзакции). 2-ой ингридиент — это же подпись (ScriptSig) приобретенная из хэша транзакции по методу ECDSA (Elliptic Curve Digital Signature Algorithm — метод с открытым ключом для сотворения цифровой подписи). Вкупе они подтверждают чего же транзакция существовала сотворена действительным обладателем Bitcoin-адреса. Всевозможные флаги измеряют а как упростить транзакцию, и умеют быть применены для сотворения всевозможных типов оплаты.

Выход

Выход содержит аннотации на перевод BTC. Value – это же количество Сатоши (1 BTC = 100 000 000 Сатоши) участвующих в заданной транзакции (сумма которая будет списана с кошелька зачинателя сделки). ScriptPubKey — это же 2-ая половина Скрипта. Транзакция может содержать все больше единого выхода, для тамошнего чего же бы обработать всю сумму BTC обозначенную на входе, например: коли вход ссылается на транзакцию в 50 BTC, а вы жаждите выслыть получателю исключительно 25 BTC, то будет разработано 2 выхода: 1-ый к Bitcoin-адресу получателя, а 2-ой назад к вашему адресу. В тамошних вариантах когда на выходах транзакции обрабатывается перестать вся сумма BTC обозначенная на входе, хоть какой невозделанный остаток BTC признаётся комиссией за транзакцию: майнер, сгенерировавший коалиция в который включена запись об заданной транзакции — получит эти BTC.

Доказательство

Для доказательства тамошнего чего же выход транзакции имеет право задействовать суммы BTC на её входах, в Bitcoin применяется Forth-подобная Скрипт-система. ScriptSig, на входе, и ссылающийся на него scriptPubKey, на выходе, оцениваются (конкретно в этаком порядке), с внедрением значения scriptPubKey из стека scriptSig. Вход признаётся реальным, коли scriptPubKey возвращает значение true (правда). Сквозь конструкцию скриптов, отправитель может образовывать наиболее сложноватые условия, которым обязан соответствовать получатель суммы обозначенной на выходе транзакции. К примеру, можно разработать выход:

  • для получения суммы коего востребовано будет внедрить пароль (а перестать задействовать ключ);
  • для получения суммы коего востребованы будут подписи 10 всевозможных ключей и т. д.

Типы транзакций

В текущее время Bitcoin создаёт исключительно три всевозможные пары scriptSig/scriptPubKey. Они будут описаны ниже. Полностью вероятно создать и наиболее сложноватые облики транзакций и собрать них вкупе в криптографически-навязанном соглашении. Этакие транзакции в Bitcoin именуют Договоры.

Транзакция: перевод на IP-адрес

scriptPubKey: OP_CHECKSIG
scriptSig:

Отправитель получает открытый ключ получателя (pubKey) общаясь с ним. Когда сумма монет существовала выслана на IP-адрес, получатель обязан предоставить исключительно подпись (sig). Подпись сверяется с открытым ключом в scriptPubKey.

Процесс проверки:

Stack (Стек) Script (Скрипт) Описание
Пусто   OP_CHECKSIG scriptSig и scriptPubKey объединены.
OP_CHECKSIG Константы добавляются в стек
True (правда) Пусто Подпись проверяется на 2-ух верхних элементах стека

Транзакция: перевод на адресок биткоина

scriptPubKey: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
scriptSig:

Bitcoin-адрес воображает из себя хэш, благодаря чему отправитель перестать может указать комплексный открытый ключ в scriptPubKey. При получении монет отправленных на Bitcoin-адрес, получатель обязан предоставить и подпись (sig) и открытый ключ (pubKey). Скрипт инспектирует вероятно литров при помощи заданного открытого ключа получить присланный хэш, потом инспектирует подпись к предоставленному открытому ключу.

Stack (Стек) Script (Скрипт) Описание
Пусто OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG scriptSig и scriptPubKey объединены.
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG Константы добавляются в стек.
OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG Верхний элемент стека дублируется.
OP_EQUALVERIFY OP_CHECKSIG Верхний элемент стека хэшируется.
OP_EQUALVERIFY OP_CHECKSIG Константы добавляются в стек.
OP_CHECKSIG Проверяется эквивалентность 2-ух верхних частей стека.
True (правда) Пусто. Подпись проверяется на 2-ух верхних частей стека.

Транзакция: Генерация монет

Транзакция генерации монет имеет один вход с параметром «coinbase», заместо параметра scriptSig. Заданные в «coinbase» умеют быть хоть какими, они перестать употребляются. Выход транзакции генерации монет быть может каким угодно, однако Bitcoin создаёт один, схожий выходу в транзакции перевода на IP-адрес.