Smart Contracts. Матчасть или Секреты разработчиков

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

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

А их последующая работа так остается для неподготовленного предпринимателя чем-то из разряда фантастики. Для разработчиков это конечно, выгодно: : чем меньше людей владеют знаниями об их работе, тем больше они стоят как специалисты на трудовом рынке. Заказчики, которые привыкли работать  с традиционными контрактами , тем более не стремятся всматриваться  в структуру программного кода. Такое слепое делегирование делает  бизнесмена зависимым от технической команды. И если  «что-то пойдет не так», то могут появиться проблемы, о вероятности которых разработчики предпочтут не рассказывать.

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

Смарт-контракту нужны условия

Замысел логики договора, когда событие B не произойдет без обязательного события  А, совсем не нов. Его еще классики закрепили в формуле «утром деньги — вечером стулья»: смарт-контракт дает безапелляционное соблюдение договоренностей. Она обеспечивается математически, исключает зависимость участников сделки от всякой централизованной системы или влияния человеческого фактора и при этом гарантирует автоматизацию, прозрачность и безопасность каждого этапа процесса. Но только тогда, когда среда для смарт-контракта дает возможность выполнить запрограммированные условия и обеспечивает прямой доступ к объектам контракта. Через 14 лет после описания теории замысла смарт-контракта появился блокчейн, который и стал этой средой.

Сегодня рынок предлагает разработку смарт-контрактов для Ethereum, Hyperledger Fabric, Cardano, NEO и других блокчейн площадок. Но не каждая из них абсолютно подходит для исполнения смарт-контрактов. К примеру, у биткоина нет маркеров состояний и он не обеспечивает свободу действий программистов. А в NXT ограниченное число шаблонов смарт-контрактов и в нет нельзя  создать свою версию. Ethereum лишен обозначенных недостатков, потому и стал основной платформой для проведения смарт-контрактов.

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

Как понять компьютерный код

Несмотря на всю перспективность использования  смарт-контрактов, скептики-консерваторы имеют много аргументы против. Даже учитывая все недостатки классических договоров,  бумага с печатью и подписью для них авторитетней виртуального компьютерного алгоритма. Разработчикам, которые встретятся с таким убежденным клиентом, надо иметься терпение  и готовиться к просьбе дать почитать, потрогать и повертеть в руках «то, что вы там написали».

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

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

В 2014 году для записи кода смарт-контрактов специалист Ethereum спроектировали собственный  язык программирования Solidity. Он очень похож на Java Script и может реализовать любую вычислительную функцию.

Размер смарт-контракта зависит от числа строк с записями. Чем сложней условия, тем больше строк в программном коде. Конечный код смарт-контракта переходит в байт-код виртуальной машины Ethereum, которая и осуществляет исполнение контракта. По ходу выполнения условий контракта компьютеры и узлы блокчейна обновляют регистр.

Мы описали форму, а теперь поговорим о  содержании.  Для примера возьмем самую распространенную сферу использования смарт-контрактов — организацию первичного выпуска токенов.

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

Второй контракт включает данные о сборе средств и распределении токенов. Здесь прописана  общее количество выпущенных токенов, информация о балансах всех владельцев и реакция смарт-контракта на перемещения  токенов между ними. Элементы подконтракта crowdsale имеют обязательный характер, при некорректном заполнении этого элемента  токены не отобразятся в кошельке владельцев. Элемент fallback отвечает за порядок действий при поступлении эфиров на счет умного контракта. Он выявляет наличие  доступных для продажи токенов, фиксирует их цену и рассчитывает их число для отправки покупателю.

За crowdsale следует подконтракт, EasyToken,  который записывает полное и сокращенное имя токена, определяет его делимость или неделимость и, самое важное, разрешает юзерам использовать токены на бирже: выводить, снимать, обменивать.

И, наконец, самая приятная функция — вывод полученных эфиров — прописывается в контракте EasyCrowdsale.

Регистраций других условий смарт-контракта (срок  ICO, softcap и hardcap и прочие) ограничивается только фантазией разработчика. Но все же, нежелательно слишком утяжелять структуру кода без необходимости, хотя бы потому, что  вероятность допущения ошибки растет с увеличением количества данных.

Право на ошибку

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

Даже крупные игроки допускают ошибки при составлении смарт-контрактов, а обнаруживают их слишком поздно. Конечно, разработчику надо просчитать и заметить их раньше мошенников. Из-за такой ошибки, которую допустила  компания The DAO в 2016 году, хакеры взломали систему и вывели токены на свои кошельки. Это происшествие  обрушило курс эфира и даже повлияло на котировки биткоина.

А прошлой осенью пользователь Devops199 использовал критическую уязвимость смарт-контракта Parity и запустил его самоуничтожение. В итоги счета всех пользователей на сумму 513,774 ETH (по тем временам $160 миллионов) были заморожены.

Принимая во внимание недостаток квалифицированных разработчиков  и высокую занятость имеющихся, логичным развитием рынка  услуг в сфере блокчейн-технологий стало появление компаний, которые проводят аудит смарт-контракта перед запуском. За 20−30 тысяч рублей, малую по меркам капитализации рынка сумму, специалисты  перечитывают написанный код и выявят его ошибки и уязвимости .

 Без сомнений, смарт-контракты привлекательны для хакерских атак, так как работают с деньгами и не могут быть изменены. Ежедневно «темные силы»   блокчейна изучают новые коды и и пытаются их взломать. О том, каких успехов достигли злые гении на этом поприще мы расскажем в отдельной статье.

bit44.org

Обязательно подпишитесь на наш Telegram канал

ПОДПИСЫВАЮСЬ
ПОТОМ