Что такое смарт-контракт

Что такое смарт-контракт

@cryptopain

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

Технология смарт-контрактов

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

В сети биткоина это довольно простые процедуры, основанные на операторах if-then-else (если-то-иначе). Для начала его реализации необходимо ввести условие, проверить его и, в зависимости от результата, выполнить то или иное действие.

Условия в самоисполняемый договор поступают либо из:

  • блокчейна (обусловленный смарт-контракт);
  • внешнего мира (необусловленный смарт-контракт).

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


Смарт-контракт простыми словами

Простыми словами смарт контракт можно определить как специальную транзакцию по переводу активов от одного владельца другому. Если смарт-контракт запущен, то нет возможности его отменить, он будет выполняться пока выполняются указанные в нем условия. Контракт работает так, как запрограммировано: без задержек, дополнительных проверок, постороннего вмешательства.

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

Виталик Бутерин сравнивает работу смарт-контрактов с принципом домино — первая костяшка падая толкает вторую, та — третью и так далее, пока не упадут все.

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


Смарт-контракт на базе криптовалюты Ethereum

Работа смарт-контракта в блокчейне Etherium отличается от работы программ такого типа в распределенном реестре биткоина. Блокчейн последнего не содержит маркера состояния. Это сделано специально, чтобы не перегружать сеть.

Основатель Эфира, Виталик Бутерин, увидел эту особенность и, понял, что технология распределенного хранения может намного больше, чем разрешают ей протоколы сети биткоин. Сделав несколько попыток разработать смарт-контракты на основе цепи биткоина, он решил создать блокчейн для платформы Ethereum. Новая сеть поддерживает циклы и состояние (statefullness).

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

Платформа Эфира представляет собой виртуальную машину Ethereum (EVM), в которой исполняются команды языка Solidity. Смарт-контракты пишутся на этом языке.

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

Пример смарт-контракта для создания монеты:

contract Coin {

   address minter;

   mapping (address => uint) balances;


   event Send(address from, address to, uint value);


   function Coin() {

       minter = msg.sender;

   }

   function mint(address owner, uint amount) {

       if (msg.sender != minter) return;

       balances[owner] += amount;

   }

   function send(address receiver, uint amount) {

       if (balances[msg.sender] < amount) return;

       balances[msg.sender] -= amount;

       balances[receiver] += amount;

       Send(msg.sender, receiver, amount);

   }

   function queryBalance(address addr) constant returns (uint balance) {

       return balances[addr];

   }

}

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


Смарт-контракт для ICO

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

Смарт-контракты избавляют организаторов от массы рутинной работы, такой как:

  • регистрация новых инвесторов;
  • фиксация количества внесенных денег;
  • начисление токенов;
  • проверка данных инвесторов (адресов, данных платежа);
  • публикации информации о собранных средствах;
  • расчет средств, которые необходимо собрать;
  • возврат средств в случае недобора средств для запуска ICO.

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

Большинство смарт-контрактов для ICO написано на базе Ethereum.

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

Самоисполняемые контракты имеют преимущества и недостатки. К первым можно отнести то, что:

  1. все можно сделать со своего компьютера;
  2. устраняются посредники и третьи лица, обслуживающие договор;
  3. все смарт-контракты находятся в сети блокчейна, их нельзя “забыть” и потерять;
  4. в запущенный контракт нельзя внести изменения;
  5. сокращение расходов на оформление и поддержку;
  6. стандартизация — уже написано много контрактов, можно использовать отработанный вариант.

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

  1. проблема достоверности внешней информации, используемой как условие исполнения контракта;
  2. полная открытость в некоторых случаях является недостатком;
  3. контракты возможно использовать только при наличии эфира и кошелька, что особенно сказывается на организации голосования;
  4. скорость работы смарт-контрактов невысока;
  5. умные контракты обычно представляют из себя довольно простые программы, без сложных алгоритмов;
  6. в коде смарт-контракте могут оказаться ошибки или “закладки”, которые сложно обнаружить участвующим сторонам;
  7. единственный способ их устранить — перейти на новый контракт, если такая опция предусмотрена;
  8. если код смарт-контракта написан вновь и недостаточно отлажен, то может оказаться, что он действует на так, как ожидалось.

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

Report Page