Привет, Хабр! Представляю вашему вниманию перевод статьи "A Deeper Look at Different Smart Contract Platforms".

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

В этой статье мы рассмотрим одну из новых платформам смарт-контрактов Cardano и посмотрим, в чем ее отличие.

Прежде чем мы это сделаем, давайте зададим себе вопрос.

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


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

Какие же свойства смарт-контрактов удовлетворят условиям использования в распределенных реестрах?

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

— Детерминированность
— Способность завершиться в срок
— Изолированность


Функция №1: Детерминированность


Программа является детерминированной, если она каждый раз дает один и тот же выход на заданный вход. Напр. Если 3+1 = 4, то 3+1 всегда будет 4. Поэтому, когда программа выдает один и тот же набор входных данных на разных компьютерах, программа называется детерминированной.

Существуют различные моменты, когда программа может действовать в недетерминированной манере:

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

Функция №2: Способность завершиться в срок


В математической логике мы имеем ошибку, называемую «проблема останова». Она утверждает, что нет способа узнать, может ли данная программа выполнять свою функцию в течение периода времени. В 1936 году Алан Тьюринг доказал, используя Диагональную проблему Кантора, что нет никакого способа узнать, может ли данная программа закончить свою работу в срок или нет…
Это, очевидно, проблема с смарт-контрактами, потому что контракты по определению должны быть способны к завершению в заданный срок. Есть несколько способов обеспечения способа завершения контракта извне и избежать вхождения в истощающий ресурсы бесконечный цикл:

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

Функция № 3: Изолированность


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

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

  • Виртуальные машины: ( Ethereum и Neo )
  • Docker: ( Fabric )

Давайте сравним эти два и определим, что создает лучшую экосистему. Для простоты мы собираемся сравнить Ethereum (виртуальная машина) с Fabric (Docker).

Виртуальные машины Docker
Контракты содержат недетерминированные функции и данные ограничены информацией, содержащейся в блокчейн. При этом динамические вызовы могут быть недетерминированными по своей сути. Доступные данные детерминированы Из-за особенностей дизайна Docker, система зависит от пользователей, которые создают детерминированные контракты. Не лучший вариант решения
Ethereum использует «Измеритель стоимости» для завершения контракта. Каждый шаг контракта стоит «газа» и как только стоимость исполнения превышает предоплаченную сумму, выполнение прекращается. Fabric использует таймер. Поскольку такймеры у различных нод могут быть различными из-за разных вычислительных мощностей, есть риск нарушения процесса консенсуса.
Хорошие свойства изолированнoсти Изоляция определяется докер-экосистемой (недостаточная изоляция)

Таким образом, виртуальные машины обеспечивают лучшую детерминированность, завершаемость и изолированность среды для смарт-контрактов.

Мы рассмотрели некоторые особенности реализации смарт-контрактов.

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

Вот некоторые блокчейн платформы, предоставляющие возможности смарт-контрактов:

  • Ethereum
  • EOS
  • Stellar
  • Cardano
  • Neo
  • Hyperledger Fabric
  • Ripple
  • Waves
  • Ergo platform

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

Комментарии (3)


  1. kozyabka
    31.05.2018 12:18

    «Мы живем в эпоху смарт-контрактов.»
    Та и не говорите, открываю холодильник а там смарт контракт сидит. В душе и тот один спрятался. Вот так эпоха!


  1. LeqWiser
    31.05.2018 18:49
    +1

    А как же Bitcoin, Litecoin с их возможностями, относящихся к произвольной неполноте по Тьюрингу?


    1. intarc Автор
      01.06.2018 12:11

      там не совсем Тьюринг неполнота, Bitcoin script — стековый язык, предполагает выполнение ограниченного ряда инструкций с выдачей true или false на выходе. То есть неопределенность отсутствует в принципе. В статье рассматриваются способы реализации более произвольной логики и способы защиты от неопределенностей и «вечных» циклов.