Наверх
Изображение - Примеры смарт контрактов и технология их создания

Примеры смарт контрактов и технология их создания

15.08.2018 | Автор: Евгений Наумов

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

smart-contract2.png

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

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

  • смысл контракта трактуется однозначно;

  • содержание не меняется;

  • условия доступны всем пользователям блокчейна, в том числе аудиторам;

  • исполнение контракта в автоматическом режиме исключает любые отклонения, связанные с человеческим фактором;

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

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

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

Чтобы смарт-контракт состоялся, необходимо выполнение следующих условий:

  • наличие децентрализованной сети блокчейн, которая поддерживает смарт-контракты и обеспечивает взаимодействие виртуального и реального миров;

  • четкое определение условий исполнения контракта;

  • подписание разработанного соглашения всеми его сторонами с помощью электронных ключей для данной сети;

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

12 сфер применения смарт контрактов в повседневной жизни

correct-diverse-diversity-1282270.jpg

«Белая книга» Палаты цифровой коммерции очертила 12 сфер, где можно применять смарт-контракт:

1.   Оцифровка Единого торгового кодекса и его автоматическое обновление.

2.   Сохранение конфиденциальности определенных личных данных и цифровых активов, контроль своей репутации.

3.   Отказ от посредников при покупке ценных бумаг, автоматизированное управление и выплата дивидендов.

4.   Обеспечение быстрых аккредитивов без значительных сопутствующих затрат в международных расчетах.

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

6.   Передача прав собственности с исключением фактов мошенничества на 100%.

7.   Исключение возможных манипуляций в ходе выборов. Данные избирателей остаются анонимными и не допускают изменений.

8.   Отслеживание цепочки поставок в реальном времени, что важно и удобно в сфере логистики.

9.   Хранение данных страховых полисов автомобилей, а также фактов ДТП.

10.   Улучшение обслуживания пациентов, хранение истории болезней и исследований их здоровья в блокчейне.

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

12.   При полной конфиденциальности пациентов можно распространить данные о заболеваниях.


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

abstract-ai-art-355948.jpg
Если попытаться объяснить что же такое смарт контракт простыми словами, то на выходе получится нечто вроде комплекса договоренностей между сторонами. Для того чтобы представить, как же реализовать их практическое применение, необходимо просто вспомнить, как часто в повседневной жизни необходимо заключение соглашений. Далее, дабы увидеть возможности использования смарт контрактов, обратимся к примерам:


1 – Сфера продаж

Некто господин N сочинил музыку. Он записал ее и теперь готов представить публике. За свою работу он хочет получить вознаграждение, однако если он обратиться в продюсерский центр, он не получит возможности контролировать отчисления, поскольку отношения сторон не будут прозрачными. Тогда он принимает решение создать смарт-контракт и с его помощью вести распространение. Работать схема будет следующим образом:

  • господин N через децентрализованное приложение задает стоимость возможности скачивания музыки собственного сочинения, прописывая все нюансы в смарт-контракте (к примеру, покупка 1 композиции будет стоить 2 доллара, а при покупке пяти треков, будет предоставляться скидка в размере 10%);
  • пользователь находит предложение, и принимает решение купить музыку;
  • через смарт-контракт на счету пользователя блокируется необходимая для приобретения сумма;
  • после того, как пользователь подтвердил, что он удовлетворен покупкой, средства переводятся продавцу.

2 – Сфера услуг

Следующий пример смарт контракта будет основан на несколько более длительных взаимоотношениях сторон. Работодатель ищет того, кто смог бы сделать перевод книги на иностранный язык. Поскольку он не может доверять исполнителю на 100%, он принимает решение составить следующий смарт-контракт:

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

3 – Краудфандинг.

Весьма любопытные возможности открываются в поле применения смарт контрактов для ICO. С их помощью стороны могут:

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

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

*При DAICO инвестированные деньги становятся доступными разработчикам только в случае согласия на то большинства инвесторов. Работа может быть реализована через смарт-контракты.
Конечно же, для упрощенного осуществления представленных примеров, сторонам будет необходима соответствующая платформа для смарт контрактов.

Безопасность смарт контрактов

book-chain-computer-39584.jpg
Стоит понимать, что технология смарт контрактов – это чистой воды код. Да, возможности его реализации также будут зависеть от стабильности системы в целом, однако в случае допущения ошибки в самой структуре, пользователь также рискует получить не соответствующий ожиданиям результат. Говоря о безопасности, необходимо выделить следующие моменты:

  • Любопытное нововведение было предложено, в рамках составления смарт контрактов эфира – для подтверждения своих намерений, стороны должны заверить работу через подписи.
  • Каждый смарт-контракт принудительно проходит проверку соответствия безопасности (в случае выявления каких-либо проблем, он просто не будет обработан и соответственно, не будет записан в блокчейн).
  • После попадания на блокчейн (что происходит исключительно в случае полного соответствия нормативам безопасности), данные не могут быть изменены (согласно особенностям самой структуры блокчейн).
  • В работе полностью отсутствует посредническая сторона, которая может вносить свои коррективы/получать доступ к личной информации и проч.
  • Отсутствует возможность изменения смысловой нагрузки контракта: обе стороны предварительно в обязательном порядке знакомятся с заключенными обязательствами, которые в дальнейшем не могут быть изменены (иная трактовка также исключается из реестра возможных угроз).
  • Средства, заключенные в основу смарт-контракта, также находятся под гарантированной защитой блокчейн. В случае возникновения сложностей при их передаче второй стороне, они автоматически возвращаются отправителю.

Далее сравним обыкновенные контракты против их смарт-собратьев:


Простой контракт

Смарт контракт

Хранение

Централизованное (кто угодно может получить доступ и внести коррективы без ведома сторон).

Децентрализованное (отсутствует возможность внесения коррективов третьей стороной).

Процесс реализации

Вручную.

Автоматически.

Скорость

Оговоренный период реализации может быть нарушен во вред интересам сторон.

Максимально быстро.


Как самостоятельно создать смарт контракт на Эфириум

adult-beautiful-beauty-826349.jpg
В качестве примера возьмем самые популярные смарт контракты Ethereum (можно сказать что именно смарт контракт на эфириуме задали моду на данное направление работы). Для их создания необходимо наличие серьезных навыков программирования, а также знание специального языка платформы – Solidity. Поэтапно процесс будет выглядеть следующим образом:

  • Необходимо скачать программу Ganache, которая станет инструментом для формирования локальной версии блокчейна.
  • Для работы необходимо также MyEtherWallet (нужна копия).
  • Теперь, когда инструменты наготове, пользователю потребуется перейти на специальный  сайт.

  • Именно с его помощью, оперируя Solidity, может осуществляться создание смарт контрактов. Необходимо ввести соответствующие задаче значения в поля переменных.

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

Важно! В реальности создать смарт контракт на Solidity не так уж и просто. Воспользовавшись этой наличием этой проблемы, на свет стали появляться упрощенные проекты (примером может послужить вечно воюющий с Ethereum – Lisk).
Сами коды смарт контрактов можно найти на программных страницах. Если речь идет о проектах, которые сосредоточены на улучшении взаимодействия отношений между сторонами через упрощение возможностей создания смарт-контрактов, стоит отметить, что в данном случае придется выбирать из имеющихся шаблонов (при этом минуется сложный процесс самостоятельного написания и допущения возможных ошибок).

Платформы для разработки смарт контрактов

Хотя Ethereum является самой популярной платформой для написания смарт-контрактов, она не единственная.

1. Script in Bitcoin - Скрипт имеет ограниченные возможности. Позволяет указать, при каких условиях транзакция может быть погашена. Язык довольно ограничен, поскольку он содержит только некоторые основные арифметические, логические и криптографические операции (например, хэширование и проверка цифровых подписей).

2. Automated transactions - это еще один Тьюринг язык, используемый в таких криптовалютах как Burstcoin и Qora. Примером его использования является cross-chain торговля. Она позволяет двум сторонам, которые владеют разными криптовалютами, обменивать их без необходимости третьей, доверенной стороны.

3. NXT - это общедоступная платформа, которая содержит ограниченный набор шаблонов для смарт контрактов. Здесь можно использовать то, что дано, написать свой собственный код нельзя.

4. Chain-Chain обеспечивает инфраструктуру блок-цепи корпоративного класса с SDK в Java, Ruby и NodeJS.

Ограничения в смарт контрактах

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

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

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

3. Наиболее важным ограничением для «умных контрактов» является то, что (в настоящее время) они используются для простых моделей контрактов, основанных на шаблоне «если a, тогда b» или аналогичных вариациях.

Инструменты для создания смарт-контрактов

1. Infura - обеспечивает масштабируемую инфраструктуру blockchain, которая исключает требование запуска полного узла Ethereum и позволяет разработчикам сосредоточиться на своем коде.

2. Mist Browser - инструмент для просмотра и использования dApps. Это отдельный браузер, который можно использовать для просмотра dApps и взаимодействия с ними.

3. Truffle Framework – популярный фреймворк для Ethereum. Он имеет встроенную компиляцию, связывание, развертывание и управление бинарными компиляторами, что значительно упрощает работу разработчика Ethereum.

4. Metamask - это мост, который позволяет посещать распределенную сеть завтра в своем браузере сегодня. Это позволяет пользователям запускать Ethereum dApps прямо в своем браузере без запуска полного узла Ethereum. Это плагин для браузера, который позволяет пользователям совершать транзакции Ethereum через обычные веб-сайты.

5. Remix - это веб-браузер, основанный на IDE, который позволяет пользователям писать смарт-контракты на языке Solidity, а затем развертывать и запускать смарт-контракт.

Языки для написания смарт контрактов

Двумя основными языками, которые используются для написания смарт-контрактов, являются Serpent и Solidity. Serpent - это более старый язык, который устарел с сентября 2017 года. Solidity  это язык на основе javascript, стал рекомендуемым языком для написания умных контрактов. Некоторые ключевые особенности этих языков:

1. Solidity - это контрактный, высокоуровневый язык, синтаксис которого аналогичен синтаксису JavaScript.

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

1. Viper - фокусируется на простоте и безопасности.

2. Lisk - использует javascript в качестве языка смарт контракта.

3. Chain - обеспечивает корпоративную блокцепь инфраструктуры с SDK на популярных языках, таких как Ruby, Java и NodeJS.

Детальный пример смарт контракта

Давайте рассмотрим пример контракта, написанный в Solidity.

Этот контракт также может использоваться для отправки монет с одного адреса на другой.

smart-contract.jpg
Разберем в деталях

address public minter;

определяет открытую переменную типа адреса, который является открытым. Тип адреса - это 160-битная переменная, идеальная для хранения адресов в сети Ethereum.

mapping (address => uint) public balances;

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

function Coin() {

minter = msg.sender;  

}

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

function mint(address receiver, uint amount)

Эта функция выполняется только в том случае, если она вызывается minter. Функция отправляет значение монеты, равное сумме, на адрес получателя. Если она вызывается кем-то другим, кроме minter, то эта функция не срабатывает.

function send(address receiver, uint amount)

Эта функция отправляет количество монет на адрес получателя из адреса, вызывающего функцию.

Развертывание смарт контракта в блокчейне Ethereum

После того, как вы написали контракт, вам нужно протестировать его, фактически развернув его и протестировать, функционирует ли он должным образом.

Что такое testnet?

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

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

Etherscan - это блок для Ethereum Blockchain. Блок-проводник - это, в основном, поисковая система, которая позволяет пользователям легко искать и проверять транзакции, которые произошли в Ethereum Blockchain.

Несколько шаблонов, которые помогут создать смарт-контракты

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

Документация Solidity

Примеры смарт-контрактов IBM Watson IOT

Руководство Ethereum dApps

Ethereum и Solidity содержат простые смарт-контракты для начинающих. После них вы можете ознакомиться с более продвинутыми шаблонами, предоставленными IBM. Шаблоны IBM показывают, как можно использовать выходные данные устройств IoT для управления интеллектуальными контрактами. Руководство Ethereum dApp дает пример от начала до конца о том, как реализовать и развернуть dApp на Ethereum.

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

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

Не забывайте подписываться на наши социальные сети и делиться информацией! Мы будем рады :)

Для того, чтобы оставить комментарий, необходимо авторизоваться или зарегистрироваться.