Что такое пластичность транзакций?

Чтобы понять пластичность транзакций (transaction malleability), следует думать о биткоине как о глобальной книге (ledger), а о транзакциях – как о банковских чеках.

Идентификатор транзакции, называемый хэшем транзакции, является чем-то вроде отпечатка пальца и является уникальным. В отличие от отпечатка пальца, идентификатор транзакции изменяется, если транзакция, которую он представляет, каким-либо образом изменяется.

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

Поскольку идентификатор транзакции учитывает всё в транзакции, идентификатор транзакции изменяется при изменении цифровой подписи. Эти тонкие изменения могут произойти только до того, как транзакция будет помещена в блок. Как только транзакция добавляется в блокчейн, транзакция, включая подпись, становится неизменяемой.

Изменчивость подписей вызывает проблемы, потому что кто-то может немного изменить подпись транзакции и тем самым изменить идентификатор транзакции.

Это эквивалентно замене подписи на чеке. Сумма на чеке не изменится, но изменение подписи приведет к изменению идентификатора чека.

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

Как податливость транзакций влияет на Lightning Network?

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

Для запуска канала Lightning Network, чек с двойной подписью (double-signed check) должен быть пополнен. Для того, чтобы чек с двойной подписью не удерживался не кооперативным контрагентом, этот чек подписывается обеими сторонами до отправки транзакции.

Чтобы Lightning Network работала, нам нужно, чтобы транзакция финансирования не транслировалась до тех пор, пока чек с двойной подписью не будет подписан.

Так как чек с двойной подписью ссылается на идентификатор финансирования сделки, если идентификатор финансирования сделки меняется, чек с двойной подписью станет недействительным. Это представляет риск для открытия канала Lightning Network. Есть способы заставить Lightning Network работать без устранения пластичности транзакций, но Lightning Network работает лучше, когда пластичность транзакций устранена.

Как Segregated Witness (SegWit) исправляет пластичность транзакций?

Оказывается, подписи – это единственный способ, которым злоумышленник может изменить идентификаторы транзакций. С SegWit, идентификатор транзакции больше не учитывает подписи. Это означает, что даже если злоумышленник изменит подпись, идентификатор транзакции останется прежним. Подписи по-прежнему проверяются, просто не используются для вычисления идентификатора транзакции.

Устранение пластичности транзакций означает, что Lightning Network может работать бесперебойно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *