Важные новости

Как создать смарт-контракт? Пример простого смарт-контракта в системе Ethereum

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

  • Вычислительная техника
    • Микроконтроллеры микропроцессоры
    • ПЛИС
    • Мини-ПК
  • Силовая электроника
  • Датчики
  • Интерфейсы
  • Теория
    • Программирование
    • ТАУ и ЦОС
  • Перспективные технологии
    • 3D печать
    • Робототехника
    • Искусственный интеллект
    • Криптовалюты

Чтение RSS

Как создать смарт-контракт? Пример простого смарт-контракта в системе Ethereum

Что такое смарт-контракт мы рассмотрели на примере, который, возможно, поймет даже ребенок. Но как же создавать такие «умные» контракты? Многие думают, что это очень сложно. На самом деле это не так, и в данном примере мы рассмотрим создание смарт-контракта в сети Ethereum с помощью командной строки.

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

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

Что вы можете делать с такими контрактами? Ну, вы можете сделать практически все, что угодно, но в данном случае сделаем несколько простых вещей: для начала вы создадите классический контракт типа «Hello World», тогда вы сможете создать свой собственный криптографический токен, чтобы отправить кому бы то ни было. После того, как вы овладеете этим, вы сможете, например, собирать средства посредством ICO, который в случае успеха предоставит абсолютно прозрачную организацию.

Код простого смарт-контракта

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

Вы заметите, что в этом коде есть два разных контракта: «mortal» и «greeter». Это связано с тем, что Solidity (язык высокого уровня для контрактов, который мы используем) имеет свойство наследования, что означает, что один контракт может наследовать характеристики другого. Это очень полезно для упрощения программирования, поскольку общие черты контрактов не нужно переписывать каждый раз, и все контракты могут быть записаны в меньших, более читаемых фрагментах. Таким образом, просто объявив, что greeter является mortal, вы унаследовали все характеристики от контракта mortal и сохранили код greeter простым и легким для чтения. Унаследованная характеристика mortal просто означает, что контракт greeter может быть уничтожен его владельцем, чтобы очистить цепочку блоков и вернуть средства, вложенные в нее, когда контракт больше не нужен. Контракты в ethereum по умолчанию бессмертны и не имеют владельца, а это означает, что после выпуска автор больше не имеет особых привилегий. Учтите это перед выпуском.

Компилятор Solc

Прежде чем вы сможете выпустить смарт-контракт, вам понадобятся две вещи: скомпилированный код и интерфейс Application Binary Interface, который является объектом javascript и определяет, как взаимодействовать с контрактом. У вас должен быть встроенный компилятор solidity, встроенный в вашу geth-консоль. Чтобы проверить это, используйте следующую команду:

Если вы его установили, должно появиться что-то вроде этого:

Теперь вам нужно переформатировать свой контракт, удалив разрывы строк, чтобы он вписывался в строковую переменную (существуют некоторые онлайн-инструменты, которые сделают это):

Теперь вы скомпилировали свой код. Затем вам нужно подготовить его к выпуску, включая настройку некоторых переменных, например, какое приветствие вы хотите использовать. Измените первую строку ниже на нечто более интересное, чем «Hello World!». и выполните следующие команды:

Использование онлайн-компилятора

Если у вас не установлен Solc, то вы можете воспользоваться онлайн-компилятором. Скопируйте исходный код выше в онлайн-компилятор solidity, а затем ваш скомпилированный код должен появиться на левой панели. Скопируйте код в поле с надписью Web3 deploy как для контракта greeter, так и для контракта mortal в один текстовый файл. Теперь в этом файле измените первую строку на ваше приветствие:

Теперь вы можете вставить полученный текст в окно geth или импортировать файл с помощью loadScript. Подождите до тридцати секунд, и вы увидите следующее сообщение:

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

По оценкам, для этого контракта требуется 180 тысяч единиц газа. Обратите внимание, что стоимость не выплачивается разработчикам Ethereum, вместо этого она переходит к майнерам, тем пользователям, компьютеры которых работают над поиском новых блоков и обеспечивают безопасность сети. Цена на газ устанавливается рынком текущего спроса и предложения. Если цены на газ слишком высоки, вы можете стать майнером и снизить цену. Менее чем за минуту у вас должен быть журнал с адресом контракта, это означает, что вы успешно выпустили свой контракт. Вы можете проверить развернутый код (который будет скомпилирован) с помощью этой команды:

Запуск смарт-контракта

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

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

Как другим пользователям взаимодействовать с вашим смарт-контрактом

Для того, чтобы другие люди могли запускать ваш контракт, им нужны две вещи: адрес, в котором находится контракт, и ABI (Application Binary Interface), который является своего рода руководством пользователя, описывающим имя его функций и как их вызывать с помощью консоли javascript. Для получения каждого из них запустите следующие команды:

Если вы скомпилировали с помощью онлайн-инструмента, вы можете получить ABI из полей Interface для контрактов greeter и mortal. Затем вы можете создать экземпляр объекта javascript, который можно использовать для вызова контракта на любом компьютере, подключенном к сети. Замените «ABI» (массив) и «Адрес» (строка) для создания объекта контракта в javascript:

Этот конкретный пример может быть инстанцирован кем-либо с помощью вызова следующего вида (замените greeterAddress адресом вашего контракта):

Удаляем смарт-контракт

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

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

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

Что такое смарт-контракты (умные контракты) на базе блокчейна?

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

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

Принцип работы блокчейна

В 1994 году Ник Сабо, специалист в области права и криптограф, понял, что с помощью децентрализованного реестра можно заключать «умные контракты», которые также называют самоисполняемыми, цифровыми или смарт-контрактами.

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

Навигация по материалу:

Что такое умные контракты?

Умные контракты позволяют обмениваться деньгами, собственностью, акциями или другими активами, не прибегая к услугам посредников.

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

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

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

Работа смарт контрактов - упрощенная схема

На недавнем блокчейн-саммите в Вашингтоне Виталик Бутерин, 23-летний программист и создатель проекта Ethereum, объяснил, что в умном контракте актив или валюта переводятся в программу, которая следит за соблюдением заложенного набора условий.

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

Рассмотрим конкретный пример смарт контракта

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

Пример умного контракта

Образец умного контракта, написанного на платформе Ethereum. Источник: www.ethereum.org/token

Здесь говорится, что создатель контракта должен получить 10 тыс. биткоинов. Этот контракт позволяет любому, у кого достаточно средств на счете, перевести биткоины другим людям.

Практическое применение умных контрактов

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

Выборы

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

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

Менеджмент

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

Логистика и снабжение

Разработчик протокола Bitcoin Core Джефф Гарзик говорит:

«UPS может исполнять контракты, в которых будет сказано: “Если мы получим оплату за доставку товара, то его производитель, который в цепочке поставок находится на много звеньев выше, немедленно начнет создавать новый такой товар, поскольку этот уже доставлен по назначению”».

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

Так, банк Barclays Corporate Bank использует умные контракты для того, чтобы регистрировать переход права собственности и автоматически перечислять платежи в другие кредитно-финансовые учреждения.

Автомобили

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

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

Другие сферы

Другие индустрии, такие как эквайринг, кредитование и бухгалтерский учет, тоже будут использовать умные контракты — например, для оценки рисков и аудита в режиме реального времени. Юристы смогут перейти от составления традиционных контрактов к созданию типовых образцов умных контрактов. А на сайте Blockchain Technologies умные контракты превратились в электронно-бумажный гибрид: они подтверждаются блокчейном и получают материальное воплощение в виде бумажной копии.

Как работают умные контракты

Патрик Хаббард, главный специалист и старший управляющий маркетингом продуктов в SolarWinds:

«Янгонская фондовая биржа в Мьянме производит платежи с помощью распределенного реестра. Особый интерес вызывают те функции блокчейна, которые выходят за рамки традиционного использования технологии. Так на Янгонской бирже удалось решить проблему производимых в разное время расчетов в торговой системе, которая синхронизирует торги всего лишь дважды в день. Благодаря тому, что умные контракты сами обеспечивают исполнение сделок, блокчейны с их надежной системой проведения транзакций могут использоваться в ситуациях, где требуется выполнение сложных операций, зависящих от разных изменяющихся факторов. Вот почему Amazon, Microsoft Azure и IBM Bluemix уделяют такое внимание разработке облачной технологии “блокчейн как услуга”».

Плюсы смарт контрактов

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

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

Плюсы умных контрактов - инфрграфика

Минусы умных контрактов

Умные контракты далеки от совершенства. Что если в код попадут ошибки? Как должно регулировать эти контракты государство? И как оно будет взимать налоги с таких транзакций?

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

Умные контракты нельзя назвать идеальным инструментом для построения взаимоотношений между людьми. У них тоже есть несколько недостатков. Среди минусов:

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

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

Блокчейны, где можно заключить умные контракты?

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

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

Bitcoin: Отличный блокчейн для транзакций с биткоинами, но возможности для работы с документами там ограничены.

Side Chains: Другое название для блокчейнов, параллельных Bitcoin, которые предоставляют несколько большие возможности для работы с контрактами.

Заключение

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

Если умные контракты и дальше будут распространяться по всему миру, то это положительно скажется на стоимости Эфириума. Поэтому, мы рекомендуем обратить внимание на эту криптовалюту для инвестирования. Ее курс и дальше будет расти.

http://digitrode.ru/articles/1051-kak-sozdat-smart-kontrakt-primer-prostogo-smart-kontrakta-v-sisteme-ethereum.html
https://mining-cryptocurrency.ru/umnye-smart-kontrakty/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *