Найти в Дзене
Барахолка для ума

Что нужно знать перед написанием смарт-контракта? (Часть первая)

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

Большинство современных проектов используют блокчейн-технологии для технической реализации тех или иных составляющих своей повседневной деятельности (бизнеса).

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

Транзакция - это одно или несколько действий по изменению записей в блокчейне. Определённые правила совершения транзакций, зафиксированные в виде исполняемого в блокчейне программного кода - это смарт-контракт.

С точки зрения функционирования блокчейн - это один большой компьютер, с распределёнными узлами вычислений, объединенными в единую сеть. Есть разные типы организации механизма вычислений в сети (Proof of Work, Proof of Stake, Proof of Authority, другие), но с обывательской точки зрения важно понимать, что вычисления требуют определённых затрат машинного времени/ресурсов/производительности, за что при совершении каждой транзакции взымается плата в родной (базовой, нативной) криптовалюте данной сети. В большинстве случаев эта плата называется gas или gas fee (да-да, тот самый газ, плата за газ, и там без газа не обойтись!). В некоторых сетях эта плата за транзакции фиксирована, однако в большинстве сетей эта плата зависит от объёма и сложности вычислений.

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

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

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

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

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

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

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

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

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

Смарт-контрактом может быть предусмотрена возможность уничтожения (или в распространенных терминах - "сжигания") некоторого количества токенов. Данная функция полезна в проектах, где есть соответствие с объектами из внешнего/реального мира. По аналогии с вышеприведенным примером онлайн-голосования, это может потребоваться в случаях, когда кто-то прекратил своё членство, соответственно принадлежащие ему токены более не должны быть в обороте.

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

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

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

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

Автор статьи - Алексей Штерн
Автор статьи - Алексей Штерн

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

Продолжение следует...