Привет, Хабр! Представляю вашему вниманию перевод статьи "A Deeper Look at Different Smart Contract Platforms".
Мы живем в эпоху смарт-контрактов. В то время как Биткоин показал нам, что платежная система может существовать в децентрализованной одноранговой сети, именно Эфириум открыл ящик Пандоры второго поколения блокчейн, и люди наконец увидели истинный потенциал распределенных приложений (Dapps) и смарт-контрактов.
В этой статье мы рассмотрим одну из новых платформам смарт-контрактов Cardano и посмотрим, в чем ее отличие.
Прежде чем мы это сделаем, давайте зададим себе вопрос.
Смарт-контракты автоматизированные контракты. Они самоисполняются с конкретными инструкциями, написанными на языке программирования, которые выполняются при выполнении определенных условий.
Какие же свойства смарт-контрактов удовлетворят условиям использования в распределенных реестрах?
Все, что работает на блокчейне, должно быть неизменным и иметь возможность работать на нескольких узлах без ущерба целостности состояния системы. В результате чего, функциональность смарт-контракта должна быть три вещи:
— Детерминированность
— Способность завершиться в срок
— Изолированность
Программа является детерминированной, если она каждый раз дает один и тот же выход на заданный вход. Напр. Если 3+1 = 4, то 3+1 всегда будет 4. Поэтому, когда программа выдает один и тот же набор входных данных на разных компьютерах, программа называется детерминированной.
Существуют различные моменты, когда программа может действовать в недетерминированной манере:
— вызов недетерминированной функции
— использование недетерминированных данных
— динамические вызов, поскольку вызываемая функция или программа определяется только во время выполнения, то сам вызов носит недетерминированный характер.
В математической логике мы имеем ошибку, называемую «проблема останова». Она утверждает, что нет способа узнать, может ли данная программа выполнять свою функцию в течение периода времени. В 1936 году Алан Тьюринг доказал, используя Диагональную проблему Кантора, что нет никакого способа узнать, может ли данная программа закончить свою работу в срок или нет…
Это, очевидно, проблема с смарт-контрактами, потому что контракты по определению должны быть способны к завершению в заданный срок. Есть несколько способов обеспечения способа завершения контракта извне и избежать вхождения в истощающий ресурсы бесконечный цикл:
В блокчейн каждый участник может загрузить смарт-контракт. Однако контракты могут, сознательно и бессознательно содержать вирусы и ошибки.
Если контракт не изолирован, это может нарушить работу всей системы. Следовательно, очень важно, чтобы контракт был изолирован, чтобы спасти всю экосистему от любых негативных последствий. Обычно смарт-контракты выполняются с использованием одной из двух систем:
Давайте сравним эти два и определим, что создает лучшую экосистему. Для простоты мы собираемся сравнить Ethereum (виртуальная машина) с Fabric (Docker).
Таким образом, виртуальные машины обеспечивают лучшую детерминированность, завершаемость и изолированность среды для смарт-контрактов.
Мы рассмотрели некоторые особенности реализации смарт-контрактов.
Надо сказать, что смарт-контракты становятся неотъемлемой частью и необходимым компонентом современных распределенных приложений.
Вот некоторые блокчейн платформы, предоставляющие возможности смарт-контрактов:
В следующих статьях рассмотрим подробнее механизмы смарт-контрактов некоторых из этих платформ.
Мы живем в эпоху смарт-контрактов. В то время как Биткоин показал нам, что платежная система может существовать в децентрализованной одноранговой сети, именно Эфириум открыл ящик Пандоры второго поколения блокчейн, и люди наконец увидели истинный потенциал распределенных приложений (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)
LeqWiser
31.05.2018 18:49+1А как же Bitcoin, Litecoin с их возможностями, относящихся к произвольной неполноте по Тьюрингу?
intarc Автор
01.06.2018 12:11там не совсем Тьюринг неполнота, Bitcoin script — стековый язык, предполагает выполнение ограниченного ряда инструкций с выдачей true или false на выходе. То есть неопределенность отсутствует в принципе. В статье рассматриваются способы реализации более произвольной логики и способы защиты от неопределенностей и «вечных» циклов.
kozyabka
«Мы живем в эпоху смарт-контрактов.»
Та и не говорите, открываю холодильник а там смарт контракт сидит. В душе и тот один спрятался. Вот так эпоха!