Введение
Концепция смарт-контрактов — это краеугольный камень в блокчейн технологиях. Их популярность объясняется тем, что, в отличие от людей, они безразличны к таким факторам, как законодательные лазейки, ложь, недопонимание и прочие манипуляции. Каждый смарт-контракт — это программа, которая не может лгать, если не запрограммирована соответствующим образом, которая обрабатывает данные строго по правилам, не подвержена манипуляциям и усталости.
Тем не менее, как в обычном контракте могут применяться различные хитрости и уловки, так и в смарт-контракте может быть скрыта ловушка. К счастью, ее можно избежать. Любой смарт-контракт можно протестировать на собственном блокчейне, поскольку его код известен и доступен для каждого. По крайней мере, так предполагалось изначально.
Впрочем, это не единственная причина популярности смарт-контрактов. Ряд документов, составляющий какой-либо кодекс, или сборник правил обычно слишком большие для единовременного применения. Требуется специально обученный человек, который понимает все нюансы. И все же время, затраченное на анализ и применение этих правил, будет огромным. Между тем смарт-контракты написаны на языках программирования и выполняются за секунду. Они могу обращаться друг к другу и передавать параметры. Такая конструкция получила название «dApp» — распределенное приложение. DApp представляет собой сложное программное обеспечение, где несколько программ, взаимодействуя между собой, производят результат.
Условия среды
К сожалению, ничто не совершенно в нашем мире, и смарт-контракты не исключение. Они обладают собственными ограничениями и запретами. Чтобы понять их правильно, рассмотрим расположение обычного смарт-контракта в блокчейне. Тут стоит оговориться. Существуют не только разнообразные платформы для написания смарт-контрактов на различных языках, но и многочисленные концепции самих смартов. Рассмотрим их в контексте блокчейна Эфириум.
По правилам Эфириума каждый смарт-контракт — это программа, написанная на Solidity или другом подходящем языке, обладающая правильным адресом и расположенная на блокчейне. Поскольку блокчейн хранится каждой полной нодой одновременно, один и тот же смарт-контракт будет вычислен каждым участником с полной нодой. Для одного смарт-контракта сеть будет выглядеть следующим образом:
Ограничения
Первое важное ограничение, которое следует учитывать, — это вычислительные мощности. Каждая транзакция применяет изменения к состоянию. Все транзакции, призванные менять состояние одновременно, объединяются в блоки. Каждая транзакция должна быть обработана полной нодой. Из-за больших возможных различий между транзакциями их исполнение измеряется специальными единицами «газа». Газ можно рассматривать как топливо. Количество изменений состояния и их серьезность ограничены объемом газа на блок. Каждый новый блок не может содержать транзакции с суммой газа большей, чем газовый потолок блока. Каждая единица газа, в свою очередь, оплачивается эфиром.
Второе ограничение касается размера контракта. Газ платится не только за выполнение транзакций, но и за хранение данных. Смарт-контракты должны храниться где-то в среде Эфириума. Хранение больших контрактов приводит к двум последствиям. Во-первых, вам надо платить газ за хранение. Во-вторых, каждый раз, когда кто-то вызывает ваш контракт, ему, возможно, придется заплатить пропорционально сложности контракта.
Последнее ограничение, скорее всего, самое важное из всех. Вы можете собрать достаточно эфира, чтобы оплатить хранение данных, ваш контракт может быть достаточно хорош, чтобы за него платили. Единственное, чего он никогда не сделает, — не станет функционировать вне блокчейна. Звучит странно, но именно так обстоят дела. Все взаимодействия, изменения состояний, вызовы контрактов и передачи эфира осуществляются исключительно внутри блокчейна. И в рамках классической парадигмы блокчейн-технологии нет способа это изменить.
Послесловие
Похоже, что «умные» контракты не так уж и умны. Несмотря на преимущества, у них есть значительные, порой раздражающие недостатки. Тем не менее существуют способы решить эти проблемы. Речь идет о так называемых «оракулах» — программных решениях, предназначенных для обеспечения связи блокчейна с внешним миром. О них мы поговорим в нашей следующей статье.
Сергей Борсук, Blockspoint