Транзакция Bitcoin — сообщение, которое кошелёк передаёт сети, когда вы хотите кому-то заплатить или переместить биткоин между своими кошельками. Она определяет, какие ранее полученные суммы использовать и при каких условиях можно будет потратить новые. Сеть проверяет ваше право на перевод и то, что вы не отправляете больше доступного. Нажать «Отправить» ещё не значит получить подтверждённый платёж.
У вас есть одна неизрасходованная сумма 100 000 sat, а отправить нужно 60 000 sat. Sat — наименьшая единица биткоина: 1 BTC содержит 100 000 000 sat. Кошелёк может подготовить транзакцию, которая передаст получателю 60 000 sat, вернёт вам 39 000 sat и оставит 1 000 sat как комиссию майнеру. Это напоминает оплату крупной купюрой с получением сдачи. Исходные 100 000 sat расходуются целиком, а вместо них возникают две новые суммы. Сдача обычно поступает на новый адрес вашего кошелька, а не постороннему человеку. Комиссия — разность общей использованной и созданной суммы, а не отдельный выход. Если забыть сдачу, комиссия может непреднамеренно оказаться слишком большой. [2]
Bitcoin учитывает неизрасходованные выходы предыдущих транзакций, сокращённо UTXO. Представляйте их как отдельные суммы, доступные вашему кошельку. Вход новой транзакции ссылается на такой старый выход; новый выход задаёт сумму и условия её следующего расходования. Кошелёк может объединить несколько сумм или разделить платёж между несколькими получателями. Поэтому вход не просто указывает адрес отправителя: он содержит идентификатор предыдущей транзакции txid и номер её выхода. Эта пара называется outpoint. Указанный выход должен существовать и быть доступен. Его нельзя потратить дважды или учесть двумя входами в одной транзакции. [1] [2]
При обычном платеже кошелёк создаёт цифровую подпись с помощью приватного ключа. Она доказывает право на перевод и проверяется без раскрытия ключа. Условия могут также требовать нескольких подписей или ожидания определённого момента. Технически необходимые данные передаются в scriptSig и, когда применимо, в отдельной части witness. Узлы используют их для проверки условий расходуемого выхода. Режим SIGHASH определяет, какие части транзакции подпись защищает от изменений. Но даже правильная подпись не позволяет потратить несуществующие средства, увеличить общую сумму или обойти временную блокировку, условия которой ещё не выполнены. [2]
После подписания кошелёк распространяет транзакцию. Узлы проверяют её и могут включить в свой mempool — очередь неподтверждённых транзакций. Попадание туда ещё не означает запись в блок. Первое подтверждение появляется при включении в действительный блок, а каждый последующий блок добавляет ещё одно. Правила передачи и хранения ожидающих транзакций могут различаться между узлами и не совпадают с правилами действительности блока. Ожидающую транзакцию может заменить другая, расходующая те же средства. Даже подтверждение может исчезнуть при реорганизации, когда сеть принимает другую действительную ветвь истории. Проверяйте получение в собственном кошельке в правильной сети по сумме, назначению и подтверждениям, а не по чужому скриншоту. [4]
Кошелёк обычно показывает txid — идентификатор для поиска транзакции. Технически он получается двойным применением SHA-256 к записи транзакции без данных witness. Второй идентификатор, wtxid, включает данные witness; если в транзакции их нет, оба идентификатора совпадают. Они определяют запись, но сами по себе не доказывают подтверждение платежа. Комиссия в основном зависит от размера данных и выбранной ставки, а не от стоимости отправленных биткоинов в обычной валюте. Для ставки используют виртуальный размер vsize: так называемый вес транзакции, разделённый на четыре с округлением вверх. Поэтому объединение множества мелких входов может стоить дороже, чем перевод одной крупной суммы. [3]
Входы минус выходы — это комиссия
Если обычная транзакция использует в общей сложности 250 000 sat и выделяет получателям, включая сдачу, 248 200 sat, оставшиеся 1 800 sat — комиссия майнеру. Она не отправляется отдельно на адрес для комиссий.
Для полной картины прочитайте эту статью вместе с UTXO, Private Key, Mempool, Transaction Fees, SegWit. На эту статью также ссылаются Bitcoin Whitepaper, Timechain / Blockchain, Full Node, UTXO.
01Можно ли отменить подтверждённую транзакцию Bitcoin?+
В Bitcoin нет кнопки «Отмена» или администратора, который по просьбе отзовёт подтверждённый перевод. Чтобы вернуть деньги, получатель обычно должен отправить их новой транзакцией. Это отличается от реорганизации цепочки, при которой платёж может временно потерять подтверждения. Каждый дополнительный блок увеличивает работу майнеров, то есть Proof of Work, необходимую для замены истории. Больше подтверждений повышает уверенность, но не даёт абсолютной гарантии.