Транзакция

Транзакция (англ. transaction, сокращенно tx) — операция сохранения данных в блокчейне, в ходе которой происходит передача криптоактивов или другой информации между кошельками. Отправка транзакции происходит после её создания в кошельке и подписания цифровой подписью на основе закрытого ключа. Транзакции проверяются майнерами (валидаторами) блокчейна, которые получают за это комиссионное вознаграждение. Комиссию за транзакцию всегда платит отправитель. Подтвержденная транзакция включается в блок — часть цепочки (блокчейна), дважды послать одни и те же монеты (токены) невозможно. После сохранения транзакции в блокчейне ее можно найти по хэшу, который часто называется идентификатором транзакции (tx id). Хэш каждой транзакции уникален в пределах блокчейна.

Информация обо всех транзакциях в публичных блокчейнах прозрачна и общедоступна, включая адреса отправителя и получателя, передаваемую сумму и другие данные. Некоторые блокчейны обеспечивают сокрытие основных данных транзакций за счет технологий анонимизации. Транзакции могут создаваться как в подключенном к сети кошельке (ончейн), так и без подключения, с отложенной отправкой (оффчейн).

Входы и выходы

Финансовая схема транзакции состоит из входа (input), суммы передаваемого криптоактива и выхода (output). Входы — это имеющиеся в кошельке криптоактивы, полученные во входящих платежах, которые отправляются в транзакции. При отправке транзакции создается исходящий платеж на нужную сумму, который называется выходом. Выходы одной транзакции затем используются новым владельцем как входы новых транзакций.

Узлы сети отслеживают хранимые в блокчейне активные выходы транзакций — их общая сумма всегда равна сумме обращающихся в блокчейне монет на момент создания последнего блока. Выходы, которые еще не использовались в последующей транзакции, называются неизрасходованными (UTXO — Unspent Transactions Output).

Отправка и подтверждение

Для отправки криптоактивов или метаданных пользователь должен подписать транзакцию своим закрытым ключом — создать цифровую подпись. Для каждой транзакции создается хэш — её контрольная сумма. Хэш зависит не только от данных самой транзакции, но и от хэша предыдущей транзакции. Даже при отправке второй транзакции на ту же сумму тому же получателю будет создан новый хэш.

После отправки транзакция транслируется в блокчейн. Узлы сети проверяют соответствие транзакции правилам протокола, после чего она может быть включена в блок. До подтверждения она находится в очереди неподтвержденных транзакций — мемпуле (mempool) в кошельках майнеров.  После помещения транзакции в блок и его подтверждения майнерами никакая информация о ней не может быть изменена, а данные транзакции доступны через API кошелька или обозреватели блокчейна.

Транзакция может быть отклонена или не использована майнерами. Слишком низкая комиссия — наиболее частая причина задержки или невозможности подтверждения транзакции, особенно в периоды высокой загруженности сети. Отклоненные транзакции через несколько суток исключаются из мемпула и не появляются в блокчейне, а криптоактивы остаются на адресе отправителя.

В Биткоине и некоторых других криптовалютах существуют методы ускорения подтверждения уже отправленной транзакции путем увеличения комиссии. Например, это технология Replace-by-fee (RBF).

Конфиденциальность

Некоторые блокчейны используют технологии шифрования для скрытия информации об отправителе, получателе и сумме передаваемых криптоактивов. В блокчейне Monero анонимность транзакций обеспечивается двумя технологиями — кольцевыми подписями и скрытыми адресами. Анонимные транзакции доступны в других сетях, например, Zcash и Dash.

Можно ли отменить транзакцию?

Транзакция теоретически может быть изменена или перенаправлена только до подтверждения майнерами. После добавления транзакции в блок она остается в блокчейне навсегда и будет храниться на всех полных узлах сети. Для изменения любой транзакции, уже хранящейся в блокчейне, придется пересоздать все блоки после того, в который она записана.

Есть инструменты, позволяющие вернуть транзакцию после отправки на ошибочный адрес или адрес смарт-контракта, не принимающего депозиты. Отправитель и получатель должны ввести пароль. Если получатель не вводит пароль, транзакция автоматически возвращается отправителю. Но для использования этой возможности нужно использовать специальный кошелек или вручную добавить в транзакцию необходимый скрипт до ее отправки. Например, такую возможность дает инструмент Retrievable Transfer компании Kirobo для Биткоина и Эфириума.

Калькулятор майнинга
BitsMedia YouTube