Атомарность в блокчейне: как работает принцип «всё или ничего»

Что такое атомарность в блокчейне?
Атомарность в блокчейне — это принцип выполнения транзакций, при котором все предусмотренные операцией изменения состояния сети либо выполняются полностью, либо не применяются вовсе. Атомарность в блокчейне предотвращает частичное исполнение транзакций и помогает сохранять целостность данных в распределенной системе.
Принцип атомарности в блокчейне гласит, что если измененное состояние системы не будет подтверждено, то система будет возвращена в исходное состояние, то есть "все или ничего".
Само понятие атомарности появилось задолго до блокчейна и используется, в частности, в теории баз данных. Атомарность является буквой A в модели ACID (Atomicity — атомарность, Consistency — согласованность, Isolation — изолированность, Durability — долговечность), описывающей свойства надежных транзакционных систем. Блокчейны используют тот же базовый принцип: промежуточное, частично измененное состояние не должно становиться итоговым результатом транзакции.
Атомарность в блокчейне является одним из ключевых стандартов практически всех блокчейн-протоколов, включая Bitcoin, Ethereum, XRP, Solana и многих других.
Происхождение термина "атомарность в блокчейне" связано с одной из главных особенностей децентрализованных систем — неделимостью или целостностью.
Другими словами, атомарность в блокчейне означает, что в любой децентрализованной системе транзакция представляет собой единый неделимый элемент, даже если она предусматривает несколько разных операций (например, перевод и обмен).
Атомарность в блокчейне обеспечивается за счет механизмов консенсуса, таких как Proof-of-Work (PoW) или Proof-of-Stake (PoS).
Помимо этого, атомарность в блокчейне связана с другими ключевыми свойствами децентрализованных систем:
- Финализация — невозможность изменить уже подтвержденное состояние системы;
- Компонуемость — способность разных протоколов к корректному взаимодействию друг с другом и отменять связанные изменения, если одна из операций завершается ошибкой;
- Корректность расчетов — соответствие исполнения транзакции правилам работы протокола.
При этом атомарность и финализация описывают разные свойства. Атомарность в блокчейне отвечает на вопрос, будет ли операция выполнена полностью или отменена, а финализация — насколько окончательным является уже принятое сетью состояние. Транзакция может быть успешно выполнена атомарно, но находиться в блоке, который еще не достиг окончательной финализации.
Компонуемость особенно важна для DeFi, где одна транзакция может последовательно использовать функции нескольких протоколов. Например, смарт-контракт может получить кредит, обменять актив на децентрализованной бирже и использовать полученные токены в другом протоколе — все в рамках одной логической операции. Атомарность в блокчейне позволяет избежать сохранения промежуточного состояния, если вся цепочка не может быть успешно завершена.
Значение атомарности в блокчейне
Атомарность в блокчейне играет важную роль в формировании транзакций. Завершение транзакций с ошибками могло бы привести к нарушению работы всей блокчейн-системы.
Это особенно важно потому, что при отклонении транзакции важно не только вернуть прежнее состояние блокчейна, но и восстановить балансы в кошельках участников операции.
Если для обычных транзакций, таких как перевод криптовалюты, данный процесс не представляет особых трудностей и является типовым стандартом, то для комплексных транзакций* все значительно сложнее.
* Комплексная транзакция — транзакция, выполнение которой включает несколько взаимосвязанных операций или последовательных изменений состояния блокчейна. Такие операции могут предусматривать взаимодействие с несколькими смарт-контрактами или протоколами, например обмен токенов, перевод активов, предоставление ликвидности или выполнение других действий в рамках одной логической цепочки.
Вот пример, когда атомарность в блокчейне имеет большое значение для обеспечения безопасности децентрализованных систем:
- Пользователю необходимо обменять токены в одном протоколе и перевести их в другой;
- Если на одном из этапов возникнет ошибка, то смарт-контракт должен откатить не только текущее, но и все предыдущие изменения в данной цепочке транзакций.
Другими словами, в случае ошибки при переводе токенов между протоколами отменена будет и транзакция с обменом криптоактивов. То есть система выполнит либо все транзакции целиком, либо отменит всю цепочку сразу — согласно принципу атомарности в блокчейне, других исходов быть не может.
Особую роль атомарность в блокчейне играет в сложных межсетевых или кроссчейн-транзакциях*, подразумевающих взаимодействие как минимум двух разных децентрализованных протоколов.
* Кроссчейн-транзакция — операция, предполагающая согласованное изменение состояния двух или более независимых блокчейн-сетей либо передачу между ними активов, данных или сообщений. Поскольку разные блокчейны имеют собственные механизмы консенсуса и независимо фиксируют состояние, они не могут напрямую подтвердить события друг в друге. Поэтому для выполнения кроссчейн-операций используются специальные протоколы взаимодействия — например, блокчейн-мосты, системы передачи сообщений, валидаторы, оракулы или другие механизмы подтверждения событий. При передаче активов исходные токены могут блокироваться или сжигаться в одной сети, после чего в другой сети выпускается их представление либо разблокируется соответствующий актив.
Это обусловлено тем, что если для операций в рамках одного блокчейна достаточно механизма консенсуса, то кроссчейн-транзакции требуют разработки отдельных протоколов координации.
Протоколы координации должны отвечать за состояние всех взаимодействующих систем для обеспечения атомарности в блокчейне. Это означает, что при неудачном переводе криптоактива из одного блокчейна в другой обе системы должны вернуться в исходное состояние.
Если атомарность в блокчейне при кроссчейн-транзакциях не будет соблюдаться, то злоумышленники смогут использовать уязвимость для кражи активов. Другими словами, все действия при обработке кроссчейн-транзакции должны быть согласованными, и нельзя допускать "разрыва" между состояниями разных блокчейнов.
Например, из-за подобной ошибки в протоколе был допущен взлом известного моста Nomad Bridge, в рамках которого атакующему удалось похитить активы на сумму около $200 млн. Причиной ошибки оказалась некорректная проверка доказательства в обновленной версии смарт-контракта при выполнении транзакций, то есть не был соблюден принцип атомарности в блокчейне.
Зачем нужна атомарность в блокчейне
Одним из главных смыслов атомарности в блокчейне является минимизация рисков контрагента. На практике это означает, что операции защищены от частичного исполнения и при недобросовестных действиях или возникновении случайных ошибок транзакция вернется в исходное состояние и средства пользователя будут в сохранности.
Также атомарность в блокчейне позволяет упростить транзакции и тем самым снизить риск возможных ошибок при выполнении их отдельными цепочками. Кроме того, объединение нескольких транзакций в одну может снизить расходы на комиссии сети.
При этом из-за свойства децентрализованных систем, связанных с устойчивостью к цензуре, ни одна сторона не может заблокировать или изменить транзакцию как в процессе ее исполнения, так и после завершения.
Однако у атомарности в блокчейне существуют и свои ограничения. Даже в случае отката транзакции комиссия за выполнение контракта будет списана. При этом чем больше будет неудачных попыток, тем сильнее вырастут расходы на комиссии. Таким образом, атомарность в блокчейне гарантирует безопасность и завершенность, но не успешный исход транзакций.
Например, в Ethereum при ошибке во время исполнения смарт-контракта изменения состояния могут быть отменены, однако вычислительные ресурсы, уже затраченные сетью на обработку транзакции, все равно оплачиваются. Таким образом, комиссия платится не за сам факт успешного изменения состояния блокчейна, а в том числе за вычислительную работу, которую узлы сети уже выполнили при обработке операции.
Кроме того, атомарность в блокчейне имеет ограничения в применении для транзакций со сложной логикой, например, при обмене токенов, связанным со сжиганием* в одной сети и выпуском в другой. В таком случае ошибка на втором этапе не позволит откатить первую операцию в цепочке, что может привести к необратимым потерям.
* Сжигание токенов (token burn) — необратимое выведение определенного количества токенов из обращения таким образом, чтобы ими больше нельзя было распоряжаться. Сжигание может выполняться на уровне смарт-контракта посредством уменьшения общего количества выпущенных токенов либо путем отправки активов на адрес, для которого заведомо отсутствует доступный приватный ключ.
Наконец, атомарность в блокчейне не гарантирует, что сама транзакция выгодна, безопасна или соответствует намерению пользователя. Атомарность в блокчейне не защитит от отправки средств на неправильный адрес, ошибки в коде смарт-контракта, манипуляции ценой или использования уязвимого протокола. Если правила контракта содержат ошибку, блокчейн способен совершенно корректно и атомарно выполнить именно ошибочную логику.
Поэтому главная задача атомарности в блокчейне — не гарантировать успешность или экономическую безопасность любой операции, а не допустить возникновения частично исполненного состояния там, где транзакция должна рассматриваться как единое целое.
