Smart Contracts: О чем молчат разработчики


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

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

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

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

Практическое применение смарт-контрактов

Использование смарт-контрактов упрощает работу во многих сферах деятельности, повышая доверие между бизнес-партнерами и уровень безопасности проводимых сделок, а также существенно сокращая расходы.

Так, согласно исследованию консалтинговой компании Accenture, один только банковский сектор может ежегодно экономить до $12 миллиардов, используя смарт-контракты и блокчейн. Также одним из потенциальных направлений развития смарт-контрактов является выборная система: они позволяют полностью исключить вероятность вмешательства и манипуляций в системе голосования. А в логистике, где используется сложная система поставок, в которой каждое звено должно согласовывать свои действия с другими участниками процесса, ис­поль­зо­ва­ние смарт-кон­трак­тов сэко­но­мит время и поз­во­лит от­сле­жи­вать работу системы в режиме ре­аль­ного вре­ме­ни. Кроме того, в менеджменте использование смарт-контрактов позволит производить выплаты сотрудникам и клиентам по достижении определенных условий, описанных в смарт-контрактах.

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

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

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

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

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

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

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

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

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

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

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

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

Главное, что нужно помнить, формируя техзадание разработчику на написание смарт-контракта: у вас не будет возможности додумать функционал и доработать контракт в процессе работы.

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

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

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


Comments 1