Officine Bitcoin Bitcoin-only урок Этот проект поддерживается valerio-vaccaro
🌍 Переводы
🇨🇳 中文 🇬🇧 English 🇪🇸 Español 🇵🇹 Português 🇷🇺 Русский 🇫🇷 Français 🇩🇪 Deutsch 🇮🇹 Italiano 🇭🇺 Magyar 🏳️ Milanés 🏳️ Veneto
Жизненный цикл транзакции Bitcoin
Что такое транзакция Bitcoin
Транзакция Bitcoin — это действие, записанное в блокчейне, которое передает стоимость от одного или нескольких входов (ранее полученных средств, называемых UTXO — неизрасходованные выходы транзакции) к одному или нескольким выходам (новым получателям).
Входные данные — это выходные данные прошлых транзакций, которые еще не были потрачены, а выходные данные присваивают сатоши определенным адресам. Исключением является транзакция «coinbase», первая в каждом блоке, которая генерирует новые биткойны (вознаграждение майнера и комиссия) без ввода данных. Если не все средства с входа потрачены, разница (сдача) возвращается отправителю через дальнейший выход или, если не управляется, теряется навсегда.
Фазы жизненного цикла
Вот жизненный цикл транзакции:
- Создание: кошелек создает транзакцию, выбирая UTXO для расходования на основе суммы, подлежащей отправке, и стратегии минимизации комиссий. Если входные данные превышают выходные данные, генерируется выходное «изменение», которое возвращается отправителю, но увеличивает размер транзакции и затраты. Некоторые кошельки стараются этого избежать.
- Подпись: транзакция подписывается одной или несколькими цифровыми подписями для каждого ввода, удостоверяющими ее подлинность. Этот шаг имеет решающее значение для достоверности и может включать в себя несколько сторон в случае multisig-транзакций.
- Распространение: подписанная транзакция передается в сеть («широковещательная рассылка») и вставляется в mempool локального узла. mempool проверяет транзакцию в соответствии с правилами консенсуса (например, действительные подписи, доступные средства) и местными правилами (например, максимальный размер 400 КБ во избежание спама). Затем узел передает его узлам, которые проверяют его и вставляют в свой mempool, создавая каскадное распространение. mempool различаются между узлами для разных конфигураций или соединений.
- Подтверждение: майнер включает транзакцию в блок, подтверждая ее в блокчейне. Однако до тех пор, пока у него больше не будет подтверждений (последующих блоков), он остается уязвимым для замены или форка. Транзакция с низкой комиссией может оставаться в mempool в течение длительного времени или быть отменена, но она может быть добыта даже через несколько месяцев, если входные данные останутся неизрасходованными.
Управление проблемами
- Транзакция исчезла из mempool: если транзакция с низкой комиссией удалена (например, из-за пикового трафика), ее можно повторно передать вручную с помощью TXID, даже с помощью скрипта или проводника. Кто-то мог бы сделать это для третьих лиц.
- Замена комиссионным (RBF): если комиссия недостаточна, вы можете заменить транзакцию на более платную, если она отмечена флагом RBF. Одно из предложений предполагает, что все транзакции неявно заменяемы, поскольку майнеры в любом случае предпочитают более высокие комиссии.
- Child Pays for Parent (CPFP): если вы не можете использовать RBF (например, чужая транзакция или исчерпанные средства), вы тратите выход заблокированной транзакции на новую транзакцию, которая платит высокие комиссии, что делает оба варианта привлекательными для майнеров. Сумма сборов должна покрывать и то, и другое. Проблемы возникают, если узлы отбрасывают первую транзакцию, разрывая цепочку; разрабатываемый протокол направлен на широковещательную рассылку пакетов транзакций, чтобы избежать этого.
Окончательное подтверждение
Транзакция считается окончательной только при наличии нескольких подтверждений (блоков выше своего). Одного подтверждения недостаточно, поскольку форки или двойные траты могут сделать его недействительным. В Белой книге предлагается 6 подтверждений (около 60 минут, в среднем с блоками каждые 10 минут), но количество варьируется в зависимости от суммы и риска. Разница во времени блока высока, но среднее значение сохраняется благодаря сложности майнинга.
Заключение
Цикл завершается транзакцией, «вырезанной» в блокчейне, навсегда фиксируя изменение стоимости.
Программа
Этот урок был создан для Satoshi Spritz Connect.