Глоссарий / Транзакции и комиссии
Транзакция биткоина
Другие названия: Транзакция.
- Что такое транзакция биткоина?
- Транзакция биткоина представляет собой подписанную инструкцию, которая уничтожает некоторые существующие монеты и создает на их месте новые; это единственный способ, которым стоимость когда-либо перемещается в сети.
В биткоине ничто не хранит баланс. Реестр представляет собой набор неизрасходованных выходов, платеж расходует выходы целиком и создает вместо них новые, а все, что осталось, уходит майнеру в виде комиссии. Первая в истории транзакция переместила 10 биткоинов от Satoshi Nakamoto к Hal Finney в блоке 170 12 января 2009 года, и, как и все последующие, она не могла быть отозвана.
Как это работает
Транзакция биткоина представляет собой короткую бинарную структуру из шести частей, и кошелек собирает их все до того, как что-либо будет отправлено в сеть.
Версия занимает 4 байта. Версия 1 была исходной; версия 2 существует потому, что BIP68 придал номерам последовательности новое значение для относительных блокировок по времени, и современные кошельки задают ее по умолчанию. Затем идут входы, каждый из которых указывает на один ранее созданный выход и несет доказательство права его расходовать. Затем идут выходы, каждый содержит сумму в сатоши и скрипт блокировки, определяющий, кто может израсходовать его следующим. Транзакции SegWit добавляют раздел свидетеля, в котором хранятся подписи и который находится вне части, определяющей идентификатор транзакции. Последним идет locktime, 4 байта, обычно установленный на текущую высоту блока, чтобы транзакцию нельзя было включить в более ранний блок.
Поля комиссии в этой структуре нет нигде. Комиссия вычисляется арифметически: общая стоимость входов минус общая стоимость выходов, и все, что не назначено какому-либо выходу, получает тот, кто добудет блок. Поэтому ошибка кошелька в расчете сдачи, может выбросить реальные деньги, и поэтому каждый кошелек создает выход для сдачи обратно на свой адрес, а не оставляет остаток.
Подпись связывает все воедино. При правиле по умолчанию SIGHASH_ALL каждая подпись фиксирует каждый вход и каждый выход, поэтому изменение хотя бы одного сатоши в одном выходе делает недействительными все подписи транзакции. Именно поэтому отправленная в сеть транзакция окончательна по своему содержанию, хотя ее подтверждение еще не окончательно.
Размер измеряется в виртуальных байтах, а не в сырых байтах, потому что SegWit учитывает данные свидетеля лишь в размере четверти их веса, а блоки ограничены бюджетом в 4 млн единиц веса. Расход нативного SegWit с одним входом и двумя выходами составляет примерно 141 виртуальный байт.
Почему это важно при покупке биткоина
На бирже «отправкой биткоина» называют две совершенно разные вещи, и только одна из них является транзакцией.
Перемещение средств между счетами внутри одной платформы представляет собой обновление базы данных. Это мгновенно, обычно бесплатно и не оставляет следа в блокчейне, потому что транзакция не создавалась. Вывод на адрес, который вы контролируете, создает реальную транзакцию, оплачивает реальную комиссию, ждет реального блока и является единственным вариантом, в конце которого вы владеете биткоином, а не требованием к компании.
После вывода возникают три практических следствия.
Отменить ее нельзя. Replace-by-fee позволяет отправителю повысить комиссию, пока транзакция не подтверждена, но сделать это может только кошелек, который ее создал, а биржа не сделает это за вас. Проверьте адрес до подтверждения, а не после.
Каждое полученное пополнение становится средством, за расходование которого вы заплатите позже. Десять мелких покупок оставляют десять выходов, и будущий платеж, которому придется израсходовать все десять, обойдется в несколько раз дороже, чем один крупный выход. Выводить реже и более крупными суммами является самой дешевой привычкой в биткоине, и принять ее ничего не стоит.
Комиссия, которую взимает ваша биржа, является установленной ею цифрой, а не сетевой комиссией. Она задается заранее и редко следует за мемпулом, поэтому в спокойный день вы можете заплатить в несколько раз больше реальной стоимости, а в загруженный значительно меньше. Обзоры бирж на этом сайте фиксируют, как каждая площадка обрабатывает вывод, и те, которые позволяют выбрать собственную ставку комиссии, заслуживают предпочтения.
Как читать реальный вывод, поле за полем
Допустим, вы купили 0,05 BTC и выводите их. То, что появится в обозревателе блоков, вероятно, вас запутает, потому что транзакция не только ваша.
Крупные биржи объединяют выводы в пакеты. Одна транзакция вывода может израсходовать 3 входа из горячего кошелька общей стоимостью 2,41 BTC и создать 42 выхода, один из которых ваши 0,05 BTC, а другой сдача, возвращающаяся на биржу. При примерно 68 виртуальных байтах на вход, 31 байте на выход и примерно 11 байтах накладных расходов эта транзакция составляет почти 1517 виртуальных байт. При ставке комиссии 6 сат/vB майнер получает около 9102 сатоши, что составляет примерно 217 сатоши на каждого клиента в пакете. Отправленный отдельно, ваш вывод занял бы около 141 виртуального байта и стоил бы около 846 сатоши.
Так что обозреватель показывает транзакцию, перемещающую гораздо больше биткоина, чем вы вывели, с десятками получателей, о которых вы никогда не слышали. Все в порядке. Найдите свой собственный выход по сумме и адресу, запишите идентификатор транзакции и не обращайте внимания на остальное.
Транзакция биткоина vs txid
Транзакция представляет собой объект; txid является ее отпечатком. Идентификатор представляет собой хеш двойного SHA-256 от сериализованной транзакции без данных свидетеля, записанный как 64 шестнадцатеричных символа, и он существует, чтобы на транзакцию можно было ссылаться, не повторяя ее. Службы поддержки просят txid, обозреватели индексируют по нему, а последующие транзакции указывают на него. Но он не является квитанцией: txid доказывает, что транзакция с точно таким содержанием существует, и ничего не говорит о том, кто ее отправил и почему.
Транзакция биткоина vs PSBT
PSBT представляет собой транзакцию, которая еще не завершена. Формат, определенный в BIP174, содержит входы и выходы, а также дополнительную информацию, необходимую подписывающей стороне, например стоимость и скрипт каждого расходуемого входа, и передается между устройствами, а не по сети. На нем основаны изолированные от сети и мультиподписные конфигурации: офлайн-устройство подписи читает PSBT, добавляет свою подпись и возвращает его обратно. Только после того, как подписаны все входы, файл завершается в транзакцию, которую примет сеть, и до этого момента ничего не отправлено.