Главная » Правописание слов » Как пишется смарт контракт

Слово Как пишется смарт контракт - однокоренные слова и морфемный разбор слова (приставка, корень, суффикс, окончание):


Морфемный разбор слова:

Однокоренные слова к слову:

Создаем первый смарт-контракт на Ethereum менее чем за 60 минут

Расскажем, как создать смарт-контракт на блокчейне Ethereum при помощи сервера Ganache и программы на ЯП смарт-контрактов Solidity.

Смарт-контракт: общие сведения

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

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

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

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

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

Предварительные настройки: локальный блокчейн Ganache и MyEtherWallet

Первым делом необходимо установить Ganache — инструмент для создания приватного блокчейна, работающего на вашем компьютере. Советуем загрузить версию 1.0.2, так как последняя версия по нашему опыту пока некорректно обрабатывает запросы смарт-контрактов. Также вам понадобится локальная копия MyEtherWallet (url-сайт на в рассматриваемом случае не подойдет). По последней ссылке вам нужно загрузить пакет с названием вида etherwallet-v3.xx.x.x.zip.

Смарт-контракт: написание и компиляция кода в Remix

После того как у вас имеется все необходимое, переходим на сайт https://remix.ethereum.org/ и видим следующий экран онлайн-IDE Remix.

Онлайн-редактор Remix содержит компилятор для языка Solidity. При первом посещении страницы редактор для наглядности загружается с некоторым кодом. Этот код можно безболезненно стереть и заменить программой контракта Counter:

При переносе кода в Remix он будет автоматически скомпилирован (по умолчанию на сайте стоит галочка Auto compile).

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

Запуск сервера блокчейна

Запустите предварительно установленное приложение Ganache. Обратите внимание на ссылку на RPC SERVER. Она также нам вскоре понадобится.

Разархивируйте сохраненную ранее zip-папку MyEtherWallet и откройте index.html в веб-браузере. В правом верхнем углу находится кнопка с надписью Network ETH. По умолчанию в качестве сети выбирается основная сеть Ethereum (mainnet). Для изменения этого параметра, в выпадающем списке выбираем Add Custom Network / Node.

При этом откроется окно, в котором вы можете вставить информацию о RPC Server, предоставленную Ganache. Имя узла (Node Name) можно выбрать произвольное.

С этого момента локальная копия MyEtherWallet подключится к вашему блокчейн серверу на Ganache.

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

Воспользуемся MyEtherWallet, чтобы загрузить смарт-контракт Counter. Для этого в верхней навигационной панели нажимаем на Contracts и на открывшейся странице контрактов выбираем Deploy Contract.

Видим, что MyEtherWallet запрашивает байт-код контракта. Возвращаемся в Remix IDE и нажимаем кнопку “Details”.

При этом появится окно со множеством деталей о контракте Counter. Для того, чтобы скомпилировать байт-код, скопируйте его из параметра object раздела BYTECODE (удобнее всего скопировать весь блок при помощи соответствующей иконки, а потом удалить все лишнее).

Переносим байт-код в MyEtherWallet. Параметр Gas Limit определится автоматически.

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

Копируем ключ, выбираем Private Key и вставляем значение

Теперь, если нажать Unlock, MyEtherWallet попросит нас подтвердить транзакцию.

При нажатии Sign Transaction под кнопкой добавятся Raw Transaction и Signed Transaction. Нажимаем на Deploy Contract.

Соглашаемся с предупреждением.

В результате транзакции в Ganache в разделе текущих обрабатываемых блоков (Current Blocks) число изменится с 0 на 1. Также на 1 возрастет счетчик для выбранного ключа.

Теперь смарт-контракт загружен в локальный блокчейн.

Настройка взаимодействий с контрактом

Для того, чтобы провзаимодействовать со счетчиком контракта, возвращаемся в MyEtherWallet и выбираем раздел Interact With Contract.


Как видим, MyEtherWallet запрашивает адрес контракта и бинарный интерфейс приложения (Application Binary Interface, ABI). Адрес контракта хранится в Ganache, в разделе Transactions.

При выборе соответствующего раздела откроется лог всех проведенных транзакций.

При нажатии на запись о транзакции будет выведена вся информация о ней, среди которой необходимый адрес контракта – Created Contact Address.

Копируем адрес и вставляем в соответствующее поле MyEhtherWallet.

Все, что осталось – это найти ABI – то, что сообщает MyEtherWallet как взаимодействовать с нашим контрактом. Для этого возвращаемя к тому месту, где мы остановились в Remix (Details), в разделе ABI копируем информацию в буфер обмена, переносим в MyEtherWallet и нажимаем Access. При этом появится раздел Read / Write Contract, у которого при помощи выпадающего списка станет доступен выбор функций из тех, что мы записали в нашей программе.

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

То есть функция работает корректно. Функция инкремента предполагает активное действие с нашей стороны – осуществление транзакции. При выборе функции нажимаем Write и соглашаемся с запросом транзакции.

В результате при новом запросе функции getCount видим 1 вместо 0 (и выросшее число транзакций в Ganache).

Заключение

Итак, мы запустили блокчейн на нашем компьютере, развернули на нем смарт-контракт и провзаимодействовали с ним. Это очень близко к тому, как на начальном этапе происходит процесс профессиональной разработки смарт-контрактов на Ethereum. Когда вы становитесь готовы к тому, чтобы другие пользователи могли взаимодействовать с вашим смарт-контрактом без использования реальных денег (как в сети mainnet), вы можете загрузить смарт-контракт в Ethereum test network, (testnet).

Источник

Автономность и безопасность. Как работают смарт-контракты

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

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

Термин «умные контракты» был придуман ученым-программистом Ником Сабо, вероятно, в 1993 году, чтобы объяснить цель внедрения в разработку протоколов того, что он назвал «высокоразвитой» ступенью договорного права и связанных с ними бизнес-практик в электронной коммерции. Сабо, вдохновленный такими исследователями, как Дэвид Чаум, также полагал, что разработка умных-контрактов с помощью выполнения криптографических протоколов и других механизмов цифровой безопасности могут стать значительным улучшением по сравнению с традиционными юридическими контрактами.

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

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

Как работают смарт-контракты?

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

Платформа Ethereum заменяет более ограниченный язык BTC (язык сценариев, насчитывающий около ста) языком, который позволяет разработчикам задавать собственные сценарии. Ethereum позволяет разработчикам программировать свои собственные смарт-контракты. Язык является «полным по Тьюрингу», что означает, что он поддерживает более широкий инструментарий вычислительных инструкций.

Платформа Ethereum использовалась для распространения децентрализованных приложений (DApps). Вместо множества приложений, управляемых многими протоколами, Ethereum позволяет управлять всеми приложениями по одному протоколу.

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

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

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

Автономность

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

Снижение затрат

Поскольку контракты не зависят от третьей стороны, затраты снижаются. Меньшее вмешательство человека приводит к снижению затрат.

Скорость

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

Безопасность

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

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

Недостатки смарт-контрактов

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

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

Как создать смарт-контракт?

Контракт разработан на определенном языке (Solidity, Serpent или Mutan), скомпилирован в EVM и, за некоторыми исключениями, соответствует стандартному интерфейсу ERC-20. Solidity является языком, который основан на JS, Python и C++.

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

В документе «Введение юриста в смарт-контракты» для смарт-контрактов описываются два «уровня»: платформа смарт-контрактов (SCP), которая представляет собой инфраструктуру, позволяющую создавать их и управлять ими на блокчейне, и система управления смарт-контрактами (SCMS). Этот протокол добавляется к этой инфраструктуре, чтобы пользователю было проще взаимодействовать с контрактами. То есть, он является графическим интерфейсом.

Контракт выполняется в сети, внутри виртуальной машины Ethereum (EVM). Это исполнение не является бесплатным, но оплачивается в форме «газа», небольшого количества эфирной валюты, внесенного одним или несколькими участниками контракта. Важной деталью является то, что исполнение децентрализовано и производится во всех узлах сети. Это одна из причин, по которой EVM работает так медленно и может обрабатывать только около 15 транзакций в секунду.

Как происходит процесс оформления смарт-контрактов

Инфраструктура интеллектуальных контрактов может быть реализована с помощью реплицированных записей, а выполнение контрактов может осуществляться с использованием древа Меркле, который работает через криптографические хеш-функции и репликацию задачи византийских генералов (BFT), которая является обобщенной задачей двух генералов. Каждый узел в одноранговой сети действует как реестр доверия или гарантии, выполняя изменения держателей контракта и автоматически проверяя правила, наложенные транзакцией, а также проверяя ту же работу других узлов. Криптовалюты типа BTC реализовали особые случаи для тех записей или узлов, где собственностью и ядром транзакции являются деньги. BTC и многие его производные содержат более обобщенные механизмы для прав собственности и исполнения контрактов. Ведение кода — очень важная и часть протокола BTC, основанная на репликации конечного автомата.

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

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

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

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

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

Интеллектуальная собственность: можно встроить смарт-контракт в любой объект, который контролируется цифровыми средствами. Именно здесь рождается «умная собственность», которая может быть ассимилирована с объектами IoT, подключенными к сети. Они могут варьироваться от дома до автомобилей. Таким образом, например, аренда этих свойств может быть автоматизирована.

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

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

Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.

Источник

Разработка на блокчейне: от стека-зоопарка — к SDK на одном языке и с поддержкой low-code

По мотивам выступления Дениса Васина, руководителя прикладной разработки платформы Waves Enterprise, на Blockchain Life 2021

Зачем нужны смарт-контракты? Сфер применения у них много. Cмарт-контракт, исполняемый внутри блокчейна, гарантирует нам то, что у некоторого NFT-токена в настоящий момент только один владелец. DeFi — сегмент децентрализованных финансов — основан на смарт-контрактах целиком. Любое DeFi-приложение — это фактически набор смарт-контрактов, правил, по которым функционирует экономическая система.

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

Внутри смарт-контрактов: уязвимости Solidity

Давайте заглянем внутрь смарт-контрактов. Для них по крайней мере в популярнейшем Ethereum используется язык Solidity. Пример функции из одного реального контракта в сети:

Что у нас здесь? Видим метод withdraw balance() — этот кусок кода отвечает за то, чтобы забирать какое-то количество эфира из контракта. Вроде бы всё просто и понятно. Но даже эти несколько строк уже содержат критическую уязвимость, которую, скорее всего, не знакомый с Solidity человек не заметит.

Уязвимость эта связана с re-entrancy. Смотрим на третью строчку кода: здесь мы используем метод msg.sender.call.value и добавляем то количество денег, которое хотим забрать. Что же не так?

В Ethereum широко поддерживается композиция^. Пользователями смарт-контракта могут быть не только владельцы закрытого ключа, но и другие контракты. В sender’е может оказаться контракт, который после передачи ему управления методом call снова вызовет метод withdraw balance() и заберёт деньги. За счёт того, что вызов userBalances[msg.sender] = 0 находится после вызова другого контракта, данный метод оказывается уязвим.

Одна из самых знаменитых атак DAO — на Ethereum в 2016 году — была сделана через схожую уязвимость. С контракта вывели несколько миллионов долларов, Ethereum форкнулся, сеть развалилась на две.

Прошло пять лет, но в контрактах до сих пор попадаются уязвимости, связанные с re-entrancy. Да, контракты, оперирующие протоколами с большими суммами денег, подвергаются аудиту. Как говорится, рано или поздно любой контракт проходит аудит: вы заплатите за него либо аудиторам, либо хакерам.

Но контракты, которые разрабатываются на скорую руку — часто это форки известных проектов, сделанные, например, для новых токенов — сохраняют возможность для таких re-entrancy или более сложных атак, которые могут привести ко взлому протокола. Поэтому Solidity — не самый надежный язык для написания смарт-контрактов. Вот ещё один пример:

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

Другие минусы экосистемы

Разберёмся теперь, что в принципе происходит в процессе выполнения смарт-контракта. У нас есть майнер блока, и он выполняет смарт-контракты, которые находятся в блоке. После выполнения смарт-контрактов начинается процесс PoW (proof of work) — подбор хеша определенной сложности. Процесс PoW-майнинга гораздо более ресурсоёмок, чем процесс обработки самого контракта. На исполнение контракта тратится очень малая часть машинного времени по сравнению с подбором PoW-хеша. Это довольно обидно, потому что разработчикам приходится тратить уйму времени на написание оптимального по газу кода: раскладывать переменные, оптимизировать записи и так далее. Хотя по сути это избыточная работа, которая на сам смарт-контракт не влияет.

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

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

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

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

Даже комьюнити Ethereum в некоторой степени разделяет подобные взгляды. Виталик Бутерин, создатель Ethereum, в качестве более простой и безопасной альтернативы Solidity предложил Vyper. Этот язык похож на Python, имеет ряд ограничений, которых нет в Solidity, но благодаря которым разработка контрактов становится проще.

Дело не только в смарт-контрактах

Мы рассмотрели проблему со смарт-контрактами, и она не последняя. Для работы DeFi требуются внешние источники данных и инструменты работы с ними — оракулы. Когда мы закладываем эфир под залог, необходимо, чтобы система знала текущую стоимость эфира — иначе она не будет понимать, когда нужно ликвидировать залог. Вопрос оракулов решается с помощью популярного протокола ChainLink, который фактически поставляет данные из реального мира в блокчейн.

Роль дополнительных инструментов в блокчейне настолько важна, что без них он превращается в дорогую, медленную и в целом ужасную по своим характеристикам key-value базу данных. Всё может быть прекрасно с записью, с поддержанием консенсуса… но ответить на простые вопросы вроде «какие топ-10 аккаунтов имеют больше всего эфира» нода сама по себе не в состоянии: у нее нет таких средств, нет даже языка запросов.

Для полноты картины стоит упомянуть, что кое-какая стандартизированная логика в смарт-контрактах типа ERC-20/ERC-721 или в NFC-токенах всё-таки присутствует, но работает она исключительно для простых запросов в узкой предметной области. Чтобы проследить, например, историю владения NFT на эфире, нужно разматывать весь контракт до основания, искать в транзакциях события. Это очень сложно и неудобно. Поэтому возникают инструменты, которые позволяют индексировать данные блокчейна и предоставлять их в простом, доступном виде. Сегодня наиболее известным из таких инструментов является The Graph.

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

Зачем это надо? Простой пример: Uniswap — известная децентрализованная биржа, которая позволяет нам в любой момент покупать/продавать токены. У Uniswap есть потребность — отрисовать стандартный биржевой график. Делается это сейчас с помощью The Graph. На AssemblyScript — это подвид TypeScript, нацеленный на логику и скорость исполнения — пишут индексатор. Начиная с указанного блока он проходит по блокчейну и для каждого блока запоминает результат: какова была стоимость разных пар токенов в событиях покупок/продаж. Эти данные он складывает в обычную базу с доступом через GraphQL API в виде привычных нам «свечек», которые потом рисует интерфейс Uniswap.

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

The Graph — это обратный оракул с механизмом обеспечения доверия. Он включает индексаторы, которые по итогам процесса индексирования и достижения консенсуса получают токены вознаграждения. Если консенсус не достигнут, токены слешатся. Таким образом реализуется механизм доверия к этим данным.

Причём здесь энтерпрайз?

На протяжении нескольких лет эволюция разработки на публичных блокчейнах пришла к разрозненному набору инструментов, которые создаются разными командами. Выше мы разобрали лишь часть этого набора. При этом без всех инструментов — Vyper, Etherscan, The Graph и так далее — полноценного приложения не построишь.

Такой зоопарк инструментов неудобен для компаний. Очень мало разработчиков знают одновременно Solidity и Vyper, да ещё и AssemblyScript владеют. Поднять сразу все нужные компетенции для корпоративного блокчейна тяжело. Но необходимо, чтобы пройти одну из самых проблемных стадий для блокчейна — adoption, принятие решения как основного. Ведь если на блокчейн возложить лишь вспомогательные функции, его польза сводится к минимуму.

Публичные блокчейны столкнулись с этим во время «криптозимы» — периода активного поиска новых сценариев использования, который длился вплоть до распространения DeFi, начала «оттепели» летом 2020-го. Но это всего лишь оттепель — корпоративный блокчейн по-прежнему развивается медленно. Даже когда находится бизнес-применение технологии, все процессы спотыкаются о требования к разработчикам.

Waves Enterprise SDK

Мы в Waves Enterprise решили собрать в одной коробке набор инструментов, который бы инкапсулировал все лучшие практики разработки публичных блокчейнов. Мы занимаемся именно энтерпрайз-блокчейном и понимаем основные требования заказчиков к инструментам:

Их мы учли при создании Waves Enterprise SDK. Он инкапсулирует лучшие паттерны из мира блокчейн-разработки, использует стандартные корпоративные языки программирования (Java, Kotlin) и единый набор инструментов как для смарт-контрактов, так и для приложений, которые берут из них данные.

Рассмотрим пример смарт-контракта в нашем SDK — это порт ERC-20 токена:

Это код на Kotlin, который использует невысокоуровневые функции, чтобы проверить, кто кому сколько дал прав на перевод токенов, отследить баланс, по которому дали разрешение. В чём преимущество этого кода по сравнению с Solidity?

Но, как мы обсуждали, смарт-контракты — это ещё не всё. Нужно получить данные, информацию по обновлению контракта. У нас в SDK для этого есть библиотека, которая заменяет The Graph, и в этой библиотеке тоже всё пишется на Kotlin. Достаточно создать ротацию BlockListener, уточнить, какие ключи в блокчейне мы слушаем, — и можно писать произвольный код, который разложит данные транзакции в объектную модель для дальнейшей работы.

В классическом Ethereum, чтобы вызвать контракт, нужно использовать библиотеку Web3j на JS. Нужен отдельный код, чтобы вызвать контракт, собрать транзакцию. У нас это уже реализовано в рамках единого языка стандартными инструментами. То есть наш SDK реализует полный жизненный цикл программной разработки на блокчейне в одной коробке.

Делаем ещё проще: lowcode-разработка

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

Есть такой стартап — Furucombo — визуальный конструктор, который даёт возможность складывать DeFi-протоколы как кубики и получать готовую DeFi-стратегию. Раньше для стратегии нужно было писать код смарт-контракта, в котором в рамках одной транзакции вызывались бы разные протоколы. Сейчас мы складываем кубики, нажимаем Run — и всё готово. Так реализуется low-code подход к разработке — с помощью drag’n’drop и графического интерфейса. По большому счету, такой подход требует лишь знаний предметной области: в случае с Furucombo это DeFi, а в корпоративном мире — это бизнес-процессы компании, знание того, что мы хотим оптимизировать и зачем применять блокчейн.

Low-code разработка становится все более и более популярной. Вот выжимка из отчета Gartner по теме:

Почти четверть пользователей, пришедших к low-code, вообще никогда не занимались программированием! И 70% из них освоили low-code менее чем за месяц. Тогда как самый простой курс программирования с нуля на питоне — это минимум полгода. Почти две трети абсолютных новичков разработали своё приложение менее чем за три месяца. Low-code позволяет быстро и просто автоматизировать типовые бизнес-процессы и снижать TTM, быстрее релизить приложение на рынке, что сегодня критически важно.

В экосистеме Waves Enterprise существует партнерский продукт EasyChain, который позволяет собирать приложения на основе нашего блокчейна аналогичным low-code способом.

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

Code и low-code: разрабатываем смарт-контракт

Сравним обычную и low-code разработку лоб в лоб на примере простого смарт-контракта уровня hello world. Вот, собственно, code-версия:

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

Теперь попробуем сделать то же самое через no-code инструмент — вышеупомянутую Easy Chain Studio. Создаём стартовую точку, начальное состояние контракта, добавляем состояние SayHello и финишное состояние. Затем соединяем кубики стрелочками.

На этом всё, идти в API и делать вызовы не надо — можно уже тестировать процесс. Мы выбираем среду, нажимаем Deploy и Run.

После запуска система даёт подсказку, что мы можем сделать на первом шаге. Единственное, что мы можем сделать — это прописать значение параметра, например «Blockchain Low Code Life». Вводим, отправляем и идём в эксплорер блокчейна посмотреть, как всё прошло:

Перед нами информация о вызове смарт-контракта. Видим, что в качестве параметра мы, как и предполагалось, отправили «Blockchain Low Code Life» и в переменной Result получили «Hello Blockchain Low Code Life». Для обычного пользователя второй, low-code способ создания выглядит гораздо дружелюбней.

Подведём итог. От зоопарка разномастных решений в начале статьи мы пришли к единому SDK на одном языке программирования, да ещё и с поддержкой low-code. Таким образом мы снижаем порог входа в блокчейн-разработку и максимально упрощаем самый важный шаг для технологии — adoption. И наш блокчейн оказывается удобоварим не только для программистов широкого профиля, но и для всех, кто способен структурированно описать бизнес-процессы на уровне шаблонов и переменных — например, для аналитиков.

Источник

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

Какие вы еще знаете однокоренные слова к слову Как пишется смарт контракт:



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

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