Что такое смарт-контракты в мире цифровой экономики

Что такое Смарт-Контракты простыми словами и как они работают. Сферы применения и использования смарт контрактов в реальной жизни. Примеры и особенности.

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

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

Краткая история возникновения

Технология умных контрактов появилась ещё в начале 1990-х годов, когда учёный из Америки Ник Сабо предложил новый способ обеспечения безопасности сделок. Представленный способ позволял заключать безопасные сделки, поскольку обе стороны были обязаны выполнить условия, которые прописывались в smart-контракте.

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

 

Читайте также:  Лучшие Биткоин кошельки в 2020 году. Рейтинг Bitcoin кошельков на русском языке

 

Условия, которые необходимы для работы умных контрактов

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

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

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

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

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

Заказ продуктов пример смарт контракта

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

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

Выбор IDE и версии Solidity

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

После запуска Remix вы увидите редактор кода в центре, файловый менеджер слева и компилятор справа.

Initial Remix window

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

Creating a new project in Remix

Поскольку у нас есть пустой документ. sol, мы должны указать версию Solidity, которую будет запускать компилятор. На момент написания данного руководства последняя версия была 0.5.7. Если вы не уверены, какую версию использовать, вы можете указать диапазон версий.

 

Читайте также:  Эта девушка открыла кошелек, чтобы подать нищему. А через секунду ее лицо превратилось…

 

2 типа указания версии Solidity

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

Именование контракта

История развития смарт-контрактов

Первым концепцию смарт-контракта предложил в 1994 году Ник Сабо — американский ученый в сфере информатики, криптографии и права. Он определил смарт-контракт как «цифровое представление набора обязательств между сторонами, включающее в себя протокол исполнения этих обязательств». В 1998 году Сабо разработал алгоритм децентрализованной цифровой валюты, которую он назвал цифровым золотом (bitgold). Также он является одним из самых первых разработчиков биткоина.

Первые применения смарт-контрактов начались вместе с развитием информационных технологий и компьютеров. Например, при покупке газировки через автоматический аппарат любой покупатель может приобрести товар по заранее определенной цене. В этом процессе продавца заменяет автомат. Такая автоматизация тоже является примером смарт-контракта, но без использования блокчейна. Если мы говорим о смарт-контрактах на блокчейне, то здесь их впервые применили для ICO — первичных предложений монет, выпускаемые в реестре Ethereum. Проекты выпускали свои монеты и продавали их с целью финансирования деятельности компании. Спонсоры обменивали криптовалюту ETH на вновь созданные токены проекта. Иногда эти токены являлись акциями компании.

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

Tron Qtum EOS Waves блокчейны со смарт контрактом

Существует несколько блокчейнов для создания смарт-контрактов, кроме Ethereum: Tron, Qtum, EOS, Waves, также Bitcoin. В основном они отличаются:

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

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

В 2020 году смарт-контракты доступны для оптимизации многих финансовых и бизнес-процессов. Это происходит благодаря вкладу блокчейн-консорциумов, так как Hyperledger, который объединяет крупнейших индустриальных гигантов: в том числе IBM, Microsoft, Сбербанк и Норникель. Или например, компания Kroger использует технологию IBM Blockchain в логистике для повышения прозрачности цепочки поставок продуктов питания — от поля до тарелки.

Если говорить про языки программирования, то Ethereum имеет свой — Solidity, но смарт-контракты могут быть легко перенесены на другие языки. EOS поддерживает любой язык программирования для создания смарт-контрактов, но рекомендуется C++. Hyperledger использует в своей сети язык Golang, разработанный компанией Google.

Reentrancy

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

contract Vuln { mapping (address => uint) private balances; function depositFunds() public payable { balances[msg.sender] += msg.value; } function withdrawSomeMoney(uint _someMoney) public { require (_someMoney <= balances[msg.sender]); require(msg.sender.call.value(_someMoney)()); balances[msg.sender] -= _someMoney; } }

С первого взгляда найти уязвимость сложно, выглядит все логичным: функция withdrawSomeMoney() проверяет, что на счету аккаунта достаточно средств, затем отправляет их с помощью функции msg.sender.call.value() и, наконец, списывает отправленный ether со счета пользователя. Теперь рассмотрим атакующий контракт:

 

Читайте также:  Разогнать блокчейн до 710 000 транзакций в секунду: обзор алгоритма Proof of History 

 

import «vuln.sol» contract Xakep { Vuln public vuln; function withdrawFromVuln() { vuln.withdrawSomeMoney(100); } function () payable { vuln.withdrawSomeMoney(100); } }

Контракт Xakep внутри функции withdrawFromVuln() вызывает функцию withdrawSomeMoney() контракта Vuln. Но при отправке токенов функцией msg.sender.call.value() вызывается fallback-функция контракта Xakep. Это функция без названия, которая в данном случае используется для получения контрактом ether, поэтому она отмечена модификатором payable. Внутри нее контракт Xakep снова вызывает функцию withdrawSomeMoney(), причем важно заметить, что с баланса аккаунта в кошельке ether еще не списался, значит, проверка достаточности баланса успешна, и мы снова попадаем в fallback-функцию. Так происходит, пока на контракте Vuln совсем не останется средств. Эксплуатация данной уязвимости привела DAO к потере около 50 миллионов долларов.

Безопасно перевести токены можно при помощи функции transfer(), но если все же необходимо использовать вызов аккаунта, то нужно сначала обновить баланс аккаунта, затем совершать вызов.

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

На 2020-ый год актуальны разработки в направлениях:

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

токенизация активов

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

Аккредитив — банковская операция с третьей стороной, которая является гарантом сделки.

Испанский банк Banco Bilbao Vizcaya Argentaria (BBVA) использует смарт-контракты для предоставления кредитования. BBVA выдал корпоративному клиенту кредит на сумму 75 млн евро. Сделка была зарегистрирована с использованием смарт-контракта в сети Ethereum. Использование технологии распределенных реестров и смарт-контрактов для осуществления сделки уменьшает риск мошенничества и существенно снижает временные издержки. Данная операция заняла всего несколько часов. Обычно при использовании существующих механизмов на ее выполнение требуется несколько дней.

Альфа-Банк совместно с S7 Airlines первым в России провел сделку-аккредитив через блокчейн с использованием смарт-контрактов. Основные этапы сделки — открытие и исполнение аккредитива — оформлены также в виде транзакции на основании смарт-контрактов в системе Ethereum и фиксировались в блокчейне. Запись в блокчейне содержит хеш (результат криптографического преобразования) следующих данных: ИНН заказчика и исполнителя, вид работ, сумма аккредитива, дата открытия и закрытия сделки. Обладая этой информацией, любой участник бизнес-процесса может самостоятельно проверить статус аккредитива.

Актуальным применением смарт-контрактов является создание цифровой копии реального актива — токенизация. Информация о токене содержит уникальные данные оцифрованного актива, а также принадлежность к владельцу. Далее эти токены реальных активов можно использовать в смарт-контрактах для торговли и передачи прав собственности. Такими токенами могут быть акции компании. Например, инвестиционная онлайн-платформа BnkToTheFuture позволяет выпускать токенизированные акции.

Простой и сложный смарт-контракты

Если делить смарт-контракты на простые и сложные, то пример простого — это отправка криптовалюты любому участнику сети без посредников или создание новых токенов в блокчейне Ethereum. Пример сложного — блокировка предоплаты до наступления обстоятельств, оговоренных заранее. Еще сложнее — это протоколы кредитования или логистики с применением технологий геолокации GPS и IoT (Интернета-вещей).

Как использовать умные контракты?

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

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

Палата цифровой коммерции выпустила так называемую «белую книгу», в которой описано 12 сфер, в которых можно реализовать смарт-контракты.

  1. Цифровая идентичность. Умные контракты дают возможность контролировать свои данные, цифровые активы и репутацию. Решать, какие данные можно разглашать контрагентам, а какие нет.
  2. Смарт-контракты способны преобразовать в цифровой вид и систематизировать Единый торговый кодекс, а также автоматизировать его обновление и соблюдение правил по уничтожению записей в будущем.
  3. Умные контракты позволяют обойти посредников в цепочке поставок ценных бумаг. При этом происходит автоматическая выплата дивидендов и управление обязательствами.
  4. Смарт-контракты удобно использовать при международных расчетах. Они обеспечивают более быстрый аккредитив, то есть оплату торговой сделки с гарантией. Повышается ликвидность финансового актива — это возможность быстрого превращения его в денежные средства без значительных финансовых потерь.
  5. Смарт-контракты упрощают торговые процессы после сделки. В контракте прописаны условия и верификация сделки. То есть соответствие продукта правилам, стандартам и сертификации, которые прописаны в контракте. В случае некачественного товара, продавец не получает деньги, и с него взимается штраф за доставку некачественной продукции.
  6. Финансовые организации могут с помощью умных контрактов вести записи финансовых данных. Это поможет объединить все данные в один реестр и упростит обмен информацией между организациями. Это снизит расходы на аудит, и улучшит предоставление финансовой отчетности.
  7. С помощью умных контрактов можно автоматизировать обработку платежей по ипотечному залогу.
  8. Технология смарт-контрактов обеспечивает передачу собственности без жульничества.
  9. Благодаря умным контрактам можно отследить всю цепочку поставок товара в реальном времени. Через Интернет можно записать перемещение товара от цеха до полки супермаркета.
  10. В сфере страхования автомобилей, умный контракт может хранить в себе страховой полис, а также запись по истории вождения. Можно отправлять запросы в Интернет Вещей, который можно установить в авто, после происшествия, и таким образом быстро установить причину ДТП.
  11. С помощью умных контрактов можно улучшить клинические исследования пациентов, так как они автоматизируют данные о пациенте и передают информацию между клиниками.
  12. С помощью смарт-контрактов можно облегчить распространение данных о раковых заболеваниях, при этом конфиденциальность пациента будет защищена.

Преимущества использования смарт-контрактов

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

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

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

Тестирование и деплой

Йес, контракты готовы, миграции написаны, осталось только задеплоить и проверить. Как geth (тестовый и реальный), так и testrpc управляются одинаково через truffle console — так что опишу способ проверки для testrpc и просто расскажу, как включить geth после. И так, запускаем тестовый локальный блокчейн кефира: testrpc Эм… вот и все. У вас локально работает симуляция блокчейна кефира.

А чтобы задеплоить в тестовый блокчейн эфира, вы вместо этой команды сделаете geth —testnet —rpc. А чтобы задеплоить в реальный блокчейн эфира, вы пропишите просто geth —rpc. Флаг —rpc нужен, чтобы трюфель смог подключиться. Следующие шаги деплоя и теста более-менее одинаковы для всех трех типов блокчейна. Единственное что — после того, как вы запустите тестовый или реальный блокчейн через geth, он начнет синхронизировать блоки — а это может занять до 4-5 часов на хорошем Интернет-соединении. Ремарка про эта была в самом начале статьи. Перед деплоем смарт-контрактов рекомендую дождаться полной синхронизации. Алсо, блокчейн весит в районе 60-100 гигабайт, так что подготовьте для этого место на диске.

Алсо-алсо, убедитесь, что web3.eth.accounts[0] разлочен. Обычно можно прописать в консоли testrpc, которая открывается сразу, либо в отдельном окошке Терминала в консоли, которая открывается через geth console: eth.unlockAccount(eth.accounts[0], «Пароль, полученный при создании учетки», 24*3600) — это разлочит ваш аккаунт, который должен создать смарт-контракт

Теперь открываем новое окошко Терминала (testrpc не закрываем — он должен работать) и прописываем в папке проекта: truffle migrate —reset Эта магическая команда скомпилирует смарт-контракт (то есть не нужно каждый раз писать truffle compile) и задеплоит его на микро-сервер блокчейна, найденный открытым локально. Стоит отметить, что если testrpc сделает это мгновенно, то тестовый и реальный блокчейны будут гораздо дольше включать транзакцию в следующие блоки. После этого у вас должно выплюнуться нечто подобное в консольку: Using network ‘development’. Running migration: 1_initial_migration.js Running step… Replacing MyToken… … 0x86a7090b0a279f8befc95b38fa8bee6918df30928dda0a3c48416454e2082b65 MyToken: 0x2dc35f255e56f06bd2935f5a49a0033548d85477 Replacing MyCrowdsale… … 0xf0aab5d550f363478ac426dc2aff570302a576282c6c2c4e91205a7a3dea5d72 MyCrowdsale: 0xaac611907f12d5ebe89648d6459c1c81eca78151 … 0x459303aa0b79be2dc2c8041dd48493f2d0e109fac19588f50c0ac664f34c7e30 Saving artifacts… Думаю, вы уже поняли, что консолька вам выдала адреса смарт-контрактов MyToken и MyCrowdsale. Все! Смарт-контракт задеплоен в тот блокчейн, микро-сервер которого у вас открыт. Осталось лишь проверить, что токены и вправду раздаются юзерам, которые присылают кефир на смарт-контракт MyCrowdsale. Прописываем в Терминале следующее, чтобы зайти в консоль трюфеля: truffle console Прописываем следующее в теперь уже трюфеле (без комментариев только): // Сохраняем адреса смарт-контрактов t=»0x2dc35f255e56f06bd2935f5a49a0033548d85477″ // Замените на адрес своего MyToken с=»0xaac611907f12d5ebe89648d6459c1c81eca78151″ // Замените на адрес своего MyCrowdsale // Получаем инстансы смарт-контрактов token=MyToken.at(t) crowdsale=MyCrowdsale.at(c) // Сохраним аккаунт в более короткое имя account=web3.eth.accounts[0] // Проверяем, сколько токенов у нашего аккаунта token.balanceOf(account) // должно быть 0 // Отправляем кефира на смарт-контракт web3.eth.sendTransaction({from: account, to:c, value: web3.toWei(0.1, ‘ether’), gas: 900000}) В случае с testrpc можно сразу же проверять снова баланс нашего кошелька, но в случае с тестовым и реальным блокчейном нужно подождать, пока транзакция наша будет включена в блок — обычно, когда это происходит, трюфель выдает вам номер транзакции. Подождали? Проверяем снова наш баланс в MyToken: // Проверяем, сколько токенов у нашего аккаунта token.balanceOf(account) // должно быть больше нуля Вот и все! Сначала тестите свой контракт на testrpc, потом на geth —testnet, потом деплойте на geth. Вот и запустили вы свое собственное ICO! И не пришлось вам тратить десятки килобаксов на аудит и запуск. Накосячить с тем, что нам предоставили ребята из OpenZeppelin, на самом деле, очень сложно. А когда вы используете truffle — так разработка на солидити вообще в сказку превращается. Ну, кроме случаев, когда транзакции ревертятся еще во время выполнения на смарт-контракте — дебажить их сущий ад. Но дебаггинг смарт-контрактов, воистину, достоин отдельной статьи.

Что не могут решать смарт-контракты

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

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

Стандарт ERC20

Функция totalSupply позволяет нам увидеть, сколько у нас всего токенов. Функция balanceOf используется для получения количества токенов по определенным адресам. Функция transfer позволяет пользователям выполнять транзакции между собой. Функции «TransferFrom», «allowance» и «Approve» позволяют пользователям разрешать другим пользователям инициировать транзакции от их имени. События являются инструментами регистрации для главной книги.

 

Читайте также:  Что такое и как получить ключ электронной подписи?

 

В дополнение к самому интерфейсу нам понадобится отдельный файл. sol для нашего нового токена. Здесь мы импортируем интерфейс ERC20 и указываем символ, имя и десятичные числа нашего токена.

uToday token

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

  • Давайте начнем с общего предложения — это постоянная целочисленная переменная, которую мы сделаем приватной. Общий запас наших токенов составит 1 миллион, мы также напишем функцию для возврата этого значения.
  • Во-вторых, нам нужно где-то хранить наш токен. Для этого нам нужно будет указать сопоставление, которое будет возвращать баланс для любого указанного адреса.
  • В-третьих, должна быть функция для передачи токенов, которая по существу будет иметь адрес получателя и количество переданных токенов. Эта функция также должна быть в состоянии проверить, достаточно ли у отправителя количества токенов на его балансе, что можно реализовать с помощью простого оператора if / then. Кроме того, мы установим условия для ‘_value’ таким образом, чтобы пользователи не могли отправлять транзакции с «0» токенами, так как это приведет к засоренью сети разным мусором.
  • В-четвертых, мы должны создать отображение для остальных функций, которое представляет собой отображение целого числа.

Затем мы укажем несколько проверок в функциях «утверждение» (approve) и «допуск» (allowance) и установим условия для ‘transferFrom’. Наконец, не все токены будут доступны на рынке. Некоторые из токенов обычно оставляются для команд, фондов, консультантов и других целей. Следовательно важно, чтобы мы ясно дали понять, сколько токенов будет циркулировать в системе. Когда мы создали токены, оборотное предложение равняется нашему балансу.

uToday token constraints

Код готов, поэтому давайте проверим его. Перейдите на вкладку «Выполнить» (Run) компилятора и разверните наш токен-контракт. Вы увидите, что у нас есть данные токена, а также общее предложение, остатки и надбавки. Поздравляю, вы создали свой первый токен. Чтобы наш токен действительно работал в сети, нам нужно развернуть умный контракт (обратите внимание, что это отличается от развертывания его для тестирования в Remix). Для этого урока мы будем использовать Remix и Metamask, но есть и другие способы сделать это. Metamask — это простая, но эффективная программа-кошелек Ethereum с приятным пользовательским интерфейсом, который интегрируется как расширение в некоторые из самых популярных браузеров. В нашем случае мы будем использовать Opera. Сначала перейдите на metamask.io и загрузите расширение. Как только это будет сделано, вы увидите значок лисы в правом верхнем углу вашего браузера.

Загрузка metamask и расположение иконки

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

Изменение metamask на Ropsten

Последним шагом является создание некоторого Ether (к сожалению, вы не сможете использовать его для каких-либо реальных покупок, но они необходимы для тестирования). Зайдите на faucet.metamask.io и запросите 1 эфир. Теперь у вас все готово. Вернитесь в окно Remix и измените среду на «Injected Web3» в компиляторе. Взгляните также на вкладку учетной записи — ваш адрес должен совпадать с адресом, который вы создали в Metamask. Выберите смарт-контракт, который вы хотите развернуть, который является вашим токен-контрактом, но не интерфейсом ERC20 и нажмите соответствующую кнопку. Появится окно metamask с транзакцией, ее деталями и опциями для взаимодействия с ней. Отправьте транзакцию и наш токен оживет.

Metamask всплывающее окно

Теперь вы можете поиграть со всеми функциями, которые мы указали ранее. Давайте посмотрим на наш контракт с другой стороны, чтобы убедиться, что он работает правильно. Как и любой другой блокчейн, в Ethereum есть несколько block explorers, которые служат основной целью мониторинга того, что происходит в сети. В нашем случае мы будем использовать etherscan , хотя есть несколько других замечательных альтернатив. Обратите внимание, что если вы просто зайдете в etherscan, вы увидите Основную сеть. Поскольку нам нужно увидеть сеть Ropsten, вам нужно будет поставить «ropsten» перед адресом сайта. Найдите свой адрес и вы увидите две транзакции — одна для бесплатного эфира, который вы получили, а другая для развертывания контракта.

Адрес пользователя в Etherscan

Чтобы найти адрес вашего контракта, нажмите на TxHash и перейдите в поле «To». Здесь вы можете проверить транзакции, код и события вашего смарт-контракта. На данный момент нам нужно проверить и опубликовать наш контракт. Перейдите в раздел «Code» и нажмите ссылку «Проверить и опубликовать» ‘Verify and Publish’ . Здесь вам нужно будет снова указать имя вашего токена, версию компилятора (в нашем случае последняя использованная нами версия Solidity была 0.5.7, поэтому мы будем придерживаться соответствующей версии компилятора). Теперь вам нужно скопировать код смарт-контракта токена вместе с кодом интерфейса ERC20 из окна Remix в etherscan и нажать «Подтвердить и опубликовать» ‘Verify and Publish’ в нижней части экрана.

Проверка смарт контракта

Пришло время вернуться к адресу вашего контракта. Код на вкладке «Code» теперь будет подвержен проверке. Кроме того, теперь у вас появятся еще две вкладки: «Читать договор» и «Написать договор» ‘Read contract’ & ‘Write contract’. В разделе чтения мы можем проверить функциональность нашего токена. Введите свой адрес (не адрес контракта) в поле ‘balanceOf’, чтобы увидеть, сколько у вас токенов; должно показать 1 миллион, который мы жестко закодировали как общий запас и передали его в наш кошелек. Это означает, что наш токен теперь корректно работает в тестовой сети.

Получение баланса

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

Понятие «смарт-контракт» в России в законодательстве не закреплено. Их применение вызывает споры о необходимости использования бумажных договоров, так как все права и обязательства участников смарт-контракта закреплены кодом и не подлежат изменению. Способы их применения в России и остальных странах является лишь тестовым вариантом. Хотя некоторые приемы использования могут быть внедрены уже сегодня.

Первым в России свой блокчейн-сервис начал применять «Норникель». Он позволяет токенизировать товары и услуги, в том числе металлы, которые производит сама компания. Сбербанк предлагает применение блокчейна для финансовых рынков, банкинга, производства и поставок сырья, логистики в партнерстве с Альянсом Ethereum и консорциумом Hyperledger.

Создание и развертывание собственного токена ERC20. Выпуск токенов и создание ICO.

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

Сначала нам нужно создать еще один файл в Remix и загрузить интерфейс ERC20, а именно:

Понравилась статья? Поделиться с друзьями: