Смарт-контракт — это цифровое соглашение, основанное на заранее определенных критериях и выполняемое автоматически. Например, в смарт-контракте может быть указано, что биткойны должны автоматически отправляться от одного пользователя другому после определенной временной задержки. Смарт-контракты могут быть чрезвычайно сложными и включать в себя несколько условных критериев, или же они могут быть простыми, как обычное требование цифровой подписи для расходования средств.
Сеть Биткойна поддерживает широкий спектр смарт-контрактов, используя для этого мощный скриптовый язык, называемый просто Script. Скрипты позволяют пользователям устанавливать критерии расходования своих биткойнов, и биткойн-транзакции привязывают к этим скриптам определенные суммы биткойнов. Теперь для того чтобы потратить эти биткойны, заблокированные скриптом, пользователь должен удовлетворить установленные критерии. И в этом смысле все биткойн-транзакции являются смарт-контрактами.
Критерий расходования средств называется scritPubKey или скриптом блокировки, а данные и скрипты, удовлетворяющие этому критерию, называются ScriptSig или ScriptWitness, в зависимости от того, использует ли вход транзакции SegWit или нет.
Язык Script доказал свою полезность и состоятельность для обеспечения работы сети Биткойна на протяжении вот уже 12 лет, но он не является Тьюринг-полным, и не поддерживает логические циклы. Это защищает сеть Биткойна от DoS-атак, которым подвержены многие другие криптовалютные сети.
Самый популярный тип скрипта в Биткойне — это Pay-to-Public-Key-Hash (P2PKH). Скрипты P2PKH позволяют отправлять биткойны на другой адрес, так что только владелец соответствующего секретного ключа сможет потратить эти биткойны.
На техническом уровне P2PKH скрипты устанавливают конкретное требование: чтобы потратить эти биткойны, пользователь должен предоставить ECDSA-подпись, соответствующую открытому ключу, хеш которого указывается скриптом. Поскольку действительную подпись может создать только владелец секретного ключа, соответствующего хешу открытого ключа, биткойны на этом адресе принадлежат исключительно владельцу секретного ключа.
Pay-to-Public-Key — один из самых простых смарт-контрактов Биткойна, но его полезность и простота делают его наиболее популярным. Bitcoin Script вполне допускает создание и более сложных смарт-контрактов, и бесконечное их разнообразие можно реализовать на дополнительных уровнях.
Если для P2PKH скриптов требуется только одна подпись, то скрипты мультиподписи могут требовать любого количества подписей, которые могут принадлежать любому количеству пользователей. Скрипты мультиподписи работают следующим образом. Определяются список из n открытых ключей и число m, меньшее либо равное n. Заблокированные таким скриптом биткойны могут быть потрачены только в том случае, если будет предоставлено m различных подписей, каждая из которых соответствует одному из n открытых ключей в списке. Такой дизайн называется мультиподписью m-из-n.
Пожалуй, самый распространенный вариант мультиподписи — это 2-из-3, требующая предоставления двух различных подписей от группы из трех открытых ключей. Это позволяет трем сторонам совместно хранить средства, гарантируя, что ни одна из этих сторон не сможет их присвоить или помешать большинству потратить их по своему усмотрению. Мультиподпись 2-из-3 используется децентрализованными сервисами, такими как Bisq или Hodl Hodl, для условного депонирования с минимально возможным доверием.
Биткойн-транзакции могут иметь временную блокировку, то есть они будут становиться действительными только по истечении определенного времени. Временные блокировки можно использовать как часть блокирующих скриптов для изменения требований к расходованию биткойнов. Например, скрипт может требовать 3 подписей для расходования биткойнов в течение определенного времени, после чего для расходования будет достаточно 1 подписи. Это позволяет предусмотреть запасные варианты, в идеале предотвращающие потерю средств.
Произвольно сложные скрипты стали возможны благодаря стандарту Pay-to-Script-Hash (P2SH), который при обновлении SegWit был расширен за счет включения P2WSH. Смарт-контракты P2SH и P2WSH позволяют отправлять биткойны на адрес/хеш любого скрипта, включая любые из приведенных выше примеров. Этот дизайн минимизирует стоимость отправки биткойнов в сложный смарт-контракт и обеспечивает лучшую конфиденциальность, пока биткойны не будут потрачены.
С активацией обновления Taproot будет введен новый тип скрипта под названием Pay-to-Taproot (P2TR), который объединит функциональность P2PKH и P2SH скриптов, позволяя отправлять биткойны как на открытый ключ, так и на произвольные скрипты. Однако если P2SH и P2WSH позволяли отправлять биткойны в один скрипт, то P2TR использует меркелизованные альтернативные деревья скриптов (MAST), позволяющие отправлять биткойны до 2^128 различным произвольным скриптам. Расходование биткойнов возможно при удовлетворении любого из этих скриптов.
Обновление Taproot значительно расширит возможности пользователей для построения сложных смарт-контрактов на блокчейне Биткойна. Это также обеспечивает повышение эффективности и конфиденциальности для lightning-каналов, которые и сами являются разновидностью смарт-контрактов.
Все упомянутые выше смарт-контракты выполняются на блокчейне Биткойна как обычные биткойн-транзакции. Однако биткойны можно тратить и использовать для выполнения смарт-контрактов на дополнительных уровнях, таких как Lightning Network.
Lightning Network использует multisig-транзакции, называемые Hashed Time-Locked Contracts (HTLC), для обеспечения мгновенных и практически бесплатных биткойн-платежей. HTLC позволяют бездоверительным образом маршрутизировать биткойн-платежи между различными сторонами, гарантируя выплату небольшой комиссии каждому пользователю, помогающему в маршрутизации платежа.
Lightning Network — лишь один из многих протоколов, которые позволяют передавать биткойны вне основного блокчейна. Другие протоколы, такие как Liquid Network, различные сайдчейны и стейтчейны (state chain, блокчейн состояния), также основываются на возможностях смарт-контрактов Биткойна для разработки новых вариантов использования. С продолжением развития Биткойна мы будем видеть все больше способов использования биткойнов (актива), в других сетях, помимо сети его основного блокчейна. Однако все эти решения будут по-прежнему основываться на безопасности блокчейна Биткойна и большинство из них по-прежнему будут во многом полагаться на мощный скриптовый язык Биткойна.
![]() |
54395.37 ![]() |
![]() |
2282.8 ![]() |
![]() |
0.463 ![]() |
![]() |
0.5273 ![]() |
![]() |
61.85 ![]() |
Актуальность 2024-09-08 05:20:06
Динамика курсов валют