Смарт контракты ethereum: Создание смарт-контрактов Ethereum с помощью Solidity — Learn

Содержание

Смарт-контракты и DeFi. На какие токены обратить внимание на этой неделе :: РБК.Крипто

За прошедшую неделю крупнейший по капитализации альткоин подорожал на 26,5%. Эксперты объяснили, с чем связан интерес инвесторов к цифровой монете и основанных на ней протоколах

Мнения экспертов могут не совпадать с позицией редакции.

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

На прошлой неделе Ethereum обновил исторический максимум стоимости на отметке $2,13 тыс. За последние семь дней криптовалюта подорожала на 26,5%. Сегодня, 5 апреля, по данным CoinGecko, цифровая монета торгуется на уровне $2,06 тыс, а ее капитализация составляет $237 млрд.

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

Один из последних примеров — канадский певец The Weeknd. Он выставил на продажу неизданную ранее песню в виде невзаимозаменямого токена. В конце марта собственные NFT-токены презентовал российский боец смешанных единоборств и экс-чемпион UFC Хабиб Нурмагомедов. Он привязал токены к собственным карточкам, которые выпущены в честь завершения его карьеры бойца.

Март 2021 года стал рекордным для рынка NFT. За месяц объем продаж токенов достиг $200 млн. Это больше, чем за весь 2020 год. Однако в первые дни апреля было зафиксировано снижение рынка. NFT-токены, в среднем, подешевели на 67% к февральскому уровню.

Движение всего сектора

Сейчас на рынке вокруг Ethereum складывается классическая ситуация, когда один проект двигает весь сектор, считает СЕО криптоплатежной системы Coinspaid Максим Крупышев. Он рекомендует обратить внимание на основных конкурентов Ethereum.

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

 д.

По словам Максима Крупышева, NEO, TRX и EOS традиционно рассматривались как конкуренты Ethereum, поэтому его рост толкает верх и цену на эти монеты. Инвесторы ожидают повышения спроса на блокчейны, ориентированные на создание смарт-контрактов, добавил он. На рынке сложилась хорошая ситуация для покупки токена ATOM, стоимость которого в последнее время просела, добавил эксперт.

СЕО криптоплатежной системы Coinspaid рассказал об интересе инвесторов к токенам DeFi-проектов. По его словам, инвесторы следят за самыми популярными и успешными из них, например, Uniswap и Compound.

Uniswap — это протокол и некастодиальная криптовалютная биржа, которая позволяет обменивать Ethereum и токены стандарта ERC-20. Uniswap объединяет токены в смарт-контракты, создавая пулы ликвидности. Участники платформы могут обменивать активы, создавать новые торговые пары и добавлять токены в пулы для получения комиссионного вознаграждения.

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

Вслед за Uniswap Максим Крупышев ожидает рост 1inch, поскольку его разработчики представили в конце марта обновление, делающее использование токена более выгодным, чем Uniswap, за счет снижения комиссионных сборов за транзакции.

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

— «Обвала не будет». Что ждет криптоинвесторов в апреле

— «Рынок ждет новых сигналов». Когда биткоин установит новый рекорд

— Цена токена DeFi-проекта Force DAO рухнула на 93% после хакерской атаки

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

Автор

Алексей Корнеев

Смарт-контракт на Ethereum для дейтинг-сервиса |

BabyFind – telegram бот для новых знакомств. Он помогает найти парней и девушек, с которыми можно пообщаться. Наша команда разработала смарт-контракт на Ethereum для внутренней валюты сервиса. 


Что сделано: 
  • Написан смарт-контракт на Solidity для блокчейн Ethereum.

  • Реализован выпуск внутренней валюты (токенов).

  • Реализован ораклайзер для взаимодействия блокчейна с ботом.

  • Разработан веб-интерфейс для покупки внутренней валюты.


В этом кейсе мы описали процесс разработки.

 

BFT – внутренняя валюта дейтинг-бота


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

Валюта – это токены, которые выпущены на блокчейне Ethereum. За выпуск, покупку и администрирование токенов отвечает смарт-контракт. 

Наглядно схема покупки токена выглядит так:



 

Блокчейн Ethereum и стандарт ERC-20


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

Контракт написан на языке Solidity, более подробно об этом языке здесь. 

Важно было сделать токены по стандарту ERC-20. Стандарт позволяет токену быть поддерживаемым различными кошельками и котироваться на бирже. Любой ethereum-кошелек сможет работать с BFT. 

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



 

Процесс покупки


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

Пользователь в боте выбирает «Купить Pro-account». Бот присылает ссылку на веб-интерфейс для покупки валюты и ID.


Для удобства написали веб-интерфейс – html-страницу, на которой можно купить токены. Использовали библиотеку Web3.js.

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

Выполняется смарт-контракт в сети Ethereum. 

Токены пользователь может видеть в Ethereum-кошельке.

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

Для уведомления пользователя, что транзакция прошла и Pro-account активирован,  использовали так называемый ораклайзер. Это специальные контракты, которые обеспечивают взаимодействие с офчейн-сервисами.

Бот высылает уведомление, что Pro-account активирован и токены куплены. 

Процесс покупки токенов тестируется в сети RinkeBy Test Net. 

 

Смарт-контракты на Ethereum — MCS — Учёба.ру

Высшее образование онлайн

Федеральный проект дистанционного образования.

Я б в нефтяники пошел!

Пройди тест, узнай свою будущую профессию и как её получить.

Химия и биотехнологии в РТУ МИРЭА

120 лет опыта подготовки

Международный колледж искусств и коммуникаций

МКИК — современный колледж

Английский язык

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

15 правил безопасного поведения в интернете

Простые, но важные правила безопасного поведения в Сети.

Олимпиады для школьников

Перечень, календарь, уровни, льготы.

Первый экономический

Рассказываем о том, чем живёт и как устроен РЭУ имени Г. В. Плеханова.

Билет в Голландию

Участвуй в конкурсе и выиграй поездку в Голландию на обучение в одной из летних школ Университета Радбауд.

Цифровые герои

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

Работа будущего

Как новые технологии, научные открытия и инновации изменят ландшафт на рынке труда в ближайшие 20-30 лет

Профессии мечты

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

Экономическое образование

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

Гуманитарная сфера

Разговариваем с экспертами о важности гуманитарного образования и областях его применения на практике.

Молодые инженеры

Инженерные специальности становятся всё более востребованными и перспективными.

Табель о рангах

Что такое гражданская служба, кто такие госслужащие и какое образование является хорошим стартом для будущих чиновников.

Карьера в нефтехимии

Нефтехимия — это инновации, реальное производство продукции, которая есть в каждом доме.

Контракты должны быть умными | Банковское обозрение

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

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

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

Надо признать, Виталик Бутерин, сооснователь Ethereum, через три-четыре года после запуска сети несколько раз признавался, что сожалеет об использовании термина «смарт-контракт» для Ethereum. В Ethereum и других блокчейнах термин «смарт-контракты» скорее понимается как программный код для осуществления операций, а не как механизм для исполнения обязательств между сторонами. В частности, блокчейн Ethereum имеет функционал, который автоматизирует исполнение определенных задач: это могут быть управление взаимоотношением сторон в рамках какой-то сделки, проверка электронно-цифровой подписи (ЭЦП), подключение новых участников и т. д. 

— Как обстоят дела с регулированием этой сферы в России?

— Какого-то отдельного законодательного акта, закрепляющего регулирование смарт-контрактов, ни в России, ни в других странах нет. Недавно принятый Закон № ФЗ-259 «О цифровых финансовых активах», хоть и дает определения многим терминам в рамках блокчейна, само понятие «смарт-контракт» обходит.

Мое мнение — отдельного регулирования здесь не нужно. Гражданский кодекс четко устанавливает, что договорные отношения между сторонами фиксируются в документе, который может существовать в бумажном или электронном виде. А далее ФЗ-149 «Об информации…» закрепляет положение, что электронные документы могут обрабатываться в информационных системах. Обеспечению защиты этих файлов-договоров, посвящен ФЗ-63 «Об электронно-цифровой подписи». Он гласит, что у участников сделки есть возможность подтвердить свои намерения исполнять обязательства с помощью ЭЦП, сформированной согласно ГОСТ.

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

— Кто и как гарантирует, что информационная система будет корректно исполнять смарт-контракт?

— Это хороший вопрос, объясняющий, почему до появления технологии распределенного реестра (блокчейна) идея смарт-контрактов не «взлетела». Дело в том, что в централизованных системах всегда есть участник, который является держателем ИС, ее базы данных и т.д. Обе стороны сделки при использовании централизованной системы должны доверять этому третьему лицу, которое обязано гарантировать неизменность данных и возможность доступа в любой момент к ним, договору и т.д. При этом третья сторона должна быть независимой, равноудаленной, у нее не должно быть возможности использовать в своих интересах знания о коммерческих условиях. 

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

Именно этими принципами мы руководствовались, когда разрабатывали блокчейн-платформу для участников финансового рынка Мастерчейн. Для создания этой доверенной среды нам нужно было провести сертификацию Мастерчейн в ФСБ для соответствия требованиям к защите информации. Мы получили сертификат — подтверждение, что данные в сети не могут быть изменены, а ЭЦП соответствует ФЗ и ГОСТ. Кроме того, сертификация подтверждает, что конфиденциальные данные, записываемые в сеть, шифруются таким образом, что доступ к ним есть только у сторон сделки.  

— Если дело доходит до спора, предусмотрена ли процедура арбитража?

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

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

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

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

— А что происходит в сети при исполнении смарт-контракта? 

— В терминологии блокчейна есть такое понятие, как «состояние сети». По сути, это набор транзакций, объединенных в блоки. Когда мы говорим, что смарт-контракт был выполнен, это означает, что смарт-контракт как программный код записал новые данные в эту цепочку блоков. 

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

— В Мастерчейн и Ethereum все происходит схожим образом?

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

— Известно, что в Ethereum стоимость исполнения смарт-контракта может превышать 10 долларов. А как в Мастерчейн?

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

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

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

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

 

 

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

— Где сейчас можно применять смарт-контракты, каковы самые релевантные сферы для этого?

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

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

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

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

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

Что касается проекта «Цифровая банковская гарантия», то здесь распределенный реестр повышает защищенность системы: такие гарантии сложно подделать. Также бенефициарам не нужно будет тратить время и ресурсы на запросы в банки для подтверждения подлинности документов.

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

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

Топ токенов Smart Contracts по рыночной капитализации

2

2.11%0.84%

₽39.58T₽39,576,547,113,337

3

2. 35%6.75%

₽7.57T₽7,573,630,492,621

6

8.54%0.35%

₽4.16T₽4,158,958,825,296

12

8.51%8.86%

₽1.79T₽1,794,166,512,747

20

6.62%2.62%

₽873.30B₽873,299,367,241

21

2.67%7.74%

₽852.00B₽852,001,953,533

24

1.90%3.27%

₽603. 45B₽603,449,208,595

28

3.63%11.44%

₽545.22B₽545,220,386,771

36

1.87%7.50%

₽456.28B₽456,279,547,743

40

2.52%19.52%

₽391.12B₽391,115,953,751

TezosXTZ$5.06
EOSEOS$3.96
HarmonyONE$0.26
KadenaKDA$16.60
NeoNEO$36.73
WavesWAVES$21. 14
CeloCELO$5.01
NEMXEM$0.17
QtumQTUM$14.67
Oasis NetworkROSE$0.35
ICONICX$1.71
ZilliqaZIL$0.09
RevainREV$0.01
SKALE NetworkSKL$0.32
MoonriverMOVR$311.28
SerumSRM$5.54
RequestREQ$0.62
OriginTrailTRAC$1.57
Injective ProtocolINJ$12.44
LiskLSK$3.57
ConfluxCFX$0. 30
KardiaChainKAI$0.11
TelosTLOS$1.01
StratisSTRAX$2.01
ConstellationDAG$0.19
AIOZ NetworkAIOZ$0.90
KinKIN$0.00
UtrustUTK$0.36
Shiden NetworkSDN$2.65
CertiKCTK$2.25
Hifi FinanceMFT$0.01
bZx ProtocolBZRX$0.35
AergoAERGO$0.44
PropyPRO$1.59
Dusk NetworkDUSK$0.28
DIADIA$1. 90
BluzelleBLZ$0.34
Ambire AdExADX$0.75
PARSIQPRQ$0.74
BytomBTM$0.06
MithrilMITH$0.09
GasGAS$8.06
RChainREV$0.13
Hacken TokenHAI$0.17
EdgewareEDG$0.01
DockDOCK$0.10
AirSwapAST$0.40
AeternityAE$0.17
Reflexer Ungovernance TokenFLX$374.72
CortexCTXC$0.30
v. systemsVSYS$0.02
QuantstampQSP$0.06
VIDT DatalinkVIDT$0.88
Drep [new]DREP$1.04
LamdenTAU$0.24
BankeraBNK$0.00
AuroraAOA$0.00
Smart MFGMFG$0.08
Metaverse ETPETP$0.24
PolySwarmNCT$0.01
GatherGTH$0.18
MonethaMTH$0.04
CrypteriumCRPT$0.20
CWV ChainCWV$0.00
TrueChainTRUE$0. 19
EverexEVX$0.65
EnecuumENQ$0.07
SALTSALT$0.16
Bridge OracleBRG$0.00
PlianPI$0.01
High Performance BlockchainHPB$0.14
Metrix CoinMRX$0.00
IdenaIDNA$0.15
AchainACT$0.01
LiquidAppsDAPP$0.01
VestChainVEST$0.00
Time New BankTNB$0.00
Xend FinanceXEND$0.28
IoT ChainITC$0. 06
NaPoleonXNPX$0.18
VexaniumVEX$0.01
ThreeFoldTFT$0.05
Ares ProtocolARES$0.02
EXRNchainEXRN$0.00
DFSocial GamingDFSG$0.27
ODIN PROTOCOLODIN$0.19
RealTractRET$0.00
OrigoOGO$0.01
ChainswapASAP$0.15
Tadpole FinanceTAD$10.45

что делает Ethereum королем смарт-контрактов

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

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

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

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

В своем известном примере он назвал смарт-контракты «торговыми автоматами». Он объяснил, как пользователи могут вводить данные или значения и получать конечный элемент от машины. .

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

Подвести итог:

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

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

Например, если вы снимаете квартиру и хотите заплатить за нее криптовалютой, вы можете полностью это сделать с помощью смарт-контракта. И арендодатель, и арендатор будут уведомлены о наступлении даты аренды, указанной сторонами..

Где умные контракты работают лучше всего?

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

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

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

Как это работает?

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

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

Период, термин «Умный контракт» часто используется в качестве замены скриптов Ethereum, поскольку в основном связан с этой платформой..

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

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

Большинство людей знают о проекте Ethereum из-за токена Ether..

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

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

В чем секрет платформы смарт-контрактов Ethereum и почему все называют ее королем смарт-контрактов?

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

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

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

  • Газ: Код контракта транзакции может выполнять несколько функций: совершать вызовы или отправлять сообщения другим контрактам, выполнять дорогостоящие вычисления, запускать чтение и запись данных и т. Д. Каждая из этих операций должна оплачиваться в эфире на основе цены газа / эфира, которая действительно меняется довольно часто. Цена обычно вычитается из учетной записи Ethereum, которая отправляет транзакцию. У транзакций также есть лимит газа, который демонстрирует, сколько газа может потребить транзакция. Он служит для защиты от ошибок. Вы можете узнать больше о газ здесь.

Давайте поговорим подробнее о платформе Ethereum и преимуществах их смарт-контрактов..

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

Что касается поддержки, Ethereum постоянно обновляет и улучшает способ создания и управления их смарт-контрактами..

Кроме того, Ethereum разработал собственный язык программирования смарт-контрактов, известный как Твердость. Это в десять раз упрощает настройку смарт-контракта и помогает в стандартизации. Solidity – это контрактно-ориентированный язык высокого уровня, очень похожий на JavaScript. Он разработан для виртуальной машины Ethereum (EVM). Для написания контрактов Ehtereum используется еще один высокоуровневый язык, называемый Serpent. Он очень похож на Python, но Solidity остается предпочтительным языком разработки для разработчиков Ethereum..

Обозначим некоторые из лучших Смарт-контракт Ethereum особенности платформы, благодаря которым она так популярна среди программистов:

  • Собственный язык программирования смарт-контрактов под названием Solidity.
  • Бесплатная настройка смарт-контракта. Плата за транзакции смарт-контрактов взимается в газ, это начальная цена за выполнение транзакции или контракта на платформе Ethereum..
  • Есть четкие инструкции и правила для разработчиков.
  • Доступен длинный список литературы и поддержки.
  • Технический стандарт ERC-20, используемый в блокчейне Ethereum для реализации токенов..
  • Передовые технологии, включающие основные преимущества блокчейна, такие как безопасность, децентрализация, быстрые транзакции и неизменность.

Что делает смарт-контракты Ethereum такими ценными?

В конечном счете, сила блокчейна Ethereum заключается в его программируемости..

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

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

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

Недостатки

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

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

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

В традиционных договорах будет задействован суд. Однако со смарт-контрактами «Код есть закон», что означает, что контракт будет выполняться независимо от того, что.

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

Некоторые другие недостатки платформы Ethereum включают:

  • Это дороже, чем на других платформах;
  • Сеть Ethereum довольно часто перегружается: большую часть времени сеть работает на 100%. Разработчики приложений опасаются, что их контракты не всегда будут обрабатываться так быстро, как они того пожелают..
  • Безопасность: некачественные коды смарт-контрактов уязвимы для хакеров. Недавнее исследование показало, что более 30 000 смарт-контрактов на основе Ethereum уязвимы для ошибок и, как следствие, взлома..

Obyte

Можно ли разрабатывать смарт-контракты без Ethereum?

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

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

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

Последние мысли:

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

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

Есть ли будущее у смарт-контрактов Ethereum?

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

Sorry! The Author has not filled his profile.

Уязвимости в смарт-контрактах Ethereum могут привести к потере миллионов долларов

Уязвимости в смарт-контрактах Ethereum могут привести к потере миллионов долларов

Alexander Antipov

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

Специалисты портала CyberNews.com проанализировали смарт-контракты Ethereum (по сути код, помогающий online-сервисам отправлять и получать платежи) и обнаружили, что почти 3,8 тыс. смарт-контрактов подвержены серьезным уязвимостям, позволяющим хакерам быстро украсть $1 млн.

В ходе исследования специалисты просканировали блоки в блокчейне Ethereum за 6 месяцев и выявили в 3779 из них 13 уязвимостей различных типов, в том числе четыре уязвимости высокой опасности. Общая стоимость уязвимых смарт-контрактов составила 2088 ETH (около $964,2 тыс.).

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

Третья уязвимость – незащищенное снятие «эфиров». Из-за ненадлежащего механизма контроля доступа, кто угодно может снять средства с контракта.

Четвертая уязвимость – незащищенное самоуничтожение, позволяющее постороннему атакующему «убить» контракт и отправить средства на любой адрес. Если не вдаваться в технические подробности, вышеописанные уязвимости позволяют манипулировать кодом и похитить максимально возможные суммы за короткий период времени.

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

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


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

: Распределенная машина Тьюринга с защитой блокчейна :: vas3k.com

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

Оригинальная статья написана в моем блоге.Большое спасибо bytescout.com за этот перевод.

Ethereum — второй по популярности блокчейн-проект в мире и выглядит как наиболее интересный с технической точки зрения.

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

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

В повседневной жизни мы всегда заключаем договоренности по принципу «если… то» по всему, а не только по финансам. «Если я помогу тебе написать статью, ты позволишь мне поиграть на твоей Play Station», «Если я поправлюсь к лету, я получу отпуск на Гавайях» и т. Д.

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

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

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

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

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

Есть два традиционных способа разобрать вещи:

1 Алекс и Кейт подписывают долгий договор, в котором указаны данные, удостоверяющие личность, Условия использования, сборы, штрафы и другие страшные вещи.Наконец, Алекс соглашается заплатить 100 долларов вперед и надеется, что Кейт настоящая девушка.

2 Они находят агента, который соглашается взять на себя всю ответственность, но хочет получить комиссию в размере 50%. Алекс и Кейт чувствуют себя в безопасности, но их карманы намного легче.

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

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

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

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

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

С такой системой Кейт просто не нужно генерировать новый контракт для каждого Алекса. И никто не знает, как можно описать логику типичного договора аренды для всех — положить деньги в кошелек, генерируется комбинация дверей и, если квартира свободна на выбранные даты — вуаля! Этот контракт будет храниться в системе навсегда, и вы можете применять некоторые скидки, изменять ставки в зависимости от сезона и изменения условий по прямому запросу Кейт.

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

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

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

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

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

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

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

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

Я прочитал несколько статей, авторы которых ненавидели термин «простой код». Как говорится, это некий «умный код, который дает гарантии и бла-бла-бла». Не прислушиваться к ним. Это вам в уши вливают маркетологи, которые хотят выглядеть умно и подписать вас на свой ICO-сервис. Для технарей это простой код, выполняемый внутри виртуальной машины. Никакой магии.

Однако смарт-контракт нельзя написать на вашем любимом языке программирования. И вот почему:

1 Каждая операция в контракте должна иметь возможность отклонять / откатывать все изменения в любое время, как если бы они не существовали.Когда кто-то вызывает функцию смарт-контракта, все майнеры в сети одновременно пытаются выполнить код этой функции, чтобы включить ее результат в новый блок. Но только один майнер добавит этот блок, а всем остальным придется забыть все изменения. Подробнее об этом пойдет речь в разделе «Майнинг».

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

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

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

Для этого Ethereum использует так называемый Gas — это небольшой кусок эфира (ETH) — внутренней валюты. Газ оплачивается за использование CPU майнеров, но реальную копейку получает только тот, кто найдет блок — он включает их в свою комиссию.

Каждая операция внутри виртуальной машины имеет свою «цену», которая очень проста: выполнение 1 строки стоит 1 цент. Чтобы выполнить 15 строк, вам нужно положить в вызов транзакции 15 центов. При создании смарт-контракта не обязательно запоминать цены.Автор все автоматически считает.

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

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

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

Смарт-контракты в биткойнах


— Информацию для самых любопытных читателей можно пропустить

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

Таким образом, этот расчет хэшей в биткойне осуществляется путем вызова набора инструкций, которые возвращают 0 или 1 в зависимости от результата.Теоретически в этот набор можно добавить свою логику — есть операторы ветвления, переменные и тому подобное. Неудивительно, что он называется Script и похож на древний язык Forth.

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

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

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

Смарт-контракты создаются раз и навсегда. Blockchain все запоминает и ничего нельзя изменить.

Традиционный кошелек пользователя здесь называется «внешняя учетная запись» и создается «контрактная учетная запись» в сети смарт-контрактов.В нижеследующем тексте для краткости они называются «кошелек» и «контракт».

Связь с обоими типами счетов возможна только через транзакции

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

Транзакция для контракта — это вызов его метода. Поэтому его обычно называют «сообщением». Помимо количества и адреса контракта, он включает дополнительные параметры вызова и газа для исполнения кода.

Транзакция без получателя — это создание смарт-контракта.> В такой транзакции необходимо передать скомпилированный байт-код контракта и Gas для выполнения кода для создания контракта (конструктор в условиях ООП).

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

Похоже, наш пример возврата аванса показывает, что Алекс должен сам запросить его из контракта.

В своем предыдущем посте я простыми словами сказал, что блокчейн состоит из длинной цепочки всех изменений — его истории. Для расчета текущего баланса кошелька нужно его пройти и все положить. Я получил 5 BTC, заплатил 3 BTC, затем получил еще 4 BTC, общий баланс 5 — 3 + 4 = 6 BTC — это было текущее состояние кошелька.

Ethereum в своем техническом документе много посвящает объяснению, почему цепочка изменений и цепочка состояний по сути одно и то же.

Состояние — это слепок всех изменений на определенный момент.

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

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

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

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

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

Каждая транзакция записывает изменения в этот репозиторий (очень похоже на коммит git). Когда Алекс вызывает контракт Кейт, транзакция «Алекс позвонил в контракт Кейт» добавляется в блокчейн. «На балансе контракта теперь 100 от Алекса / на балансе Алекса N-100 ″ — это « зафиксировано » на складе.Это новое состояние после изменений.

Внутри хранилища реализовано дерево Меркла, о котором мы говорили ранее. Здесь он немного изменен для оптимизации размера и называется Patricia Tree. Но идея все та же — хэшировать соседей, пока не получим один основной хеш. Этот основной хеш — это хеш корня дерева, всегда включаемый в каждый новый блок.

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

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

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

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

Технически это все те же объекты.

Для обычного человека транзакция в Биткойн состоит из пяти основных элементов:

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

Вот список основных компонентов транзакции в Ethereum:

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

Gas Limit — это количество единиц, которые оплачиваются за выполнение каждой строки кода в смарт-контрактах. Цена каждой операции в этих единицах фиксирована и одинакова для всех машин. Проще говоря: сравнение двух переменных стоит 10 единиц газа, а создание новой транзакции — 100 единиц. Кроме того, запись новых данных в хранилище системы также оплачивается с помощью газа. Сам вызов смарт-контракта также стоит некоторого фиксированного количества газа, потому что загрузка его байт-кода в виртуальную машину также является операцией.Но есть операции, которые намеренно делают бесплатными. Он включает, например, очистку временных данных, грубо говоря, деструктор, который делается для того, чтобы побудить создателей контрактов очистить глобальное хранилище от мусора.

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

Цена газа — цена одной единицы газа. Он регулирует более высокую или более низкую цену для каждой операции. Повышая цену на газ относительно ее рыночной стоимости, вы можете мотивировать майнеров обрабатывать вашу транзакцию быстрее. Кажется, вы говорите: «Я плачу за каждую строчку кода на 10% больше, чем есть на рынке».

Иногда действительно нужно повышение цены на газ. Помните ICO от Brave, который собрал 36 миллионов долларов за 24 секунды? Это меньше двух кварталов, поэтому покупатели с рыночной ценой на газ просто не успевают успеть на поезд за два квартала.Майнеры оставили бы свои транзакции «на потом» по дешевке, пока контракт уже был закрыт. Если лимит газа измеряется просто в «штуках», цена на газ указывается в реальной валюте. Цена на газ всегда незначительна по сравнению с основной валютой. Поэтому для таких ничтожных «копеек» есть свои названия:

  • 1 Wei — минимальная единица расчета в системе
  • 10 12 Wei = 1 Szabo
  • 10 15 Wei = 1 Finney
  • 10 18 Wei = 1 эфир (знаменитый эфир или ETH)

Как и любая финансовая система, Ethereum работает только с целыми числами (проблемы с float и double известны всем нормальным студентам, изучающим ИТ). Другими словами, Ethereum обрабатывает ETH с точностью до 18 знаков после запятой. Гораздо точнее, чем 8-значный BTC.

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

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

В Ethereum блоки немного отличаются от классического Биткойна.

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

Хеш хранилища становится одним из важнейших компонентов блока. Он всегда включается в каждый найденный блок и проверяется всеми участниками сети, чтобы никто не пытался «подделать» состояние системы. Просто дерево Меркла позволяет сделать это быстро: вам нужно только проверить измененные части дерева, хеши остальных остаются прежними.

Представьте, что вы отправили запрос на выполнение кода смарт-контракта, и он вернул ошибку (например, ICO завершено). Или вы не прикрепили к нему достаточно газа, и выполнение было прервано.

В обоих этих случаях транзакция будет считаться успешной с точки зрения блока — потому что код был выполнен, газ был передан, а состояние было изменено. Однако для отправителя эта транзакция должна быть помечена как неудачная.Но где? Для этого Ethereum вводит еще одну сущность:

.

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

Теперь, если я прикрепил 1000 газа, но выполнение кода заняло только 800 — в квитанции указано, что я фактически потратил 800. 200 будет возвращено обратно, а транзакция будет иметь 1000 в момент отправки.

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

Пора кричать «Нееет!»

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

Его назначение будет рассмотрено позже в разделе о майнинге и алгоритме GHOST.

В итоге блок в Ethereum выглядит так:

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

Если майнеры одновременно начинают анонсировать свои блоки в сети, получается гонка с непредсказуемым результатом, когда невозможно определить победителя. Следовательно, каждый майнер должен решить сложную задачу с легко проверяемым ответом, который записывается в найденный блок. Первый, кто нашел ответ и объявил блок, получает вознаграждение в размере 3 ETH.

Сложность задачи устанавливается сетью автоматически.В Биткойне сложность намеренно установлена ​​огромной, так что в среднем блок обнаруживается один раз в 10 минут. В Ethereum новые блоки вставляются в систему блоков каждые 15 секунд.

Помните, я говорил, что в биткойне нужно решить задачу по нахождению такого хеша, который начинается с N нулей, например 000000000000000000523 … Даже был интерактивный поиск таких хешей.

Ну, это сильно упростили. Человеку легче понять фразу «начинается с 10 нулей», чем «имеет сложность ниже предела».Фактически, эти нули появляются в хэшах блоков именно потому, что в биткойне установлена ​​такая высокая сложность, что ее можно достичь только с помощью хеширования с кучей нулей в начале.

Хэш блока, который представляет собой просто число, должен быть меньше определенного предустановленного числа. Таким образом, гарантированы те 10 минут, в течение которых вся сеть находит новый блок. 15 секунд в Ethereum — это ничто, поэтому в Ethereum сложность устроена таким образом, что вы не найдете нулей в начале блоков.

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

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

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

Мотивация к объединению приводит к возможности «атаки 51%» — когда более 50% мощности сосредоточено в руках одного менеджера пула. С помощью этой способности он может изменить историю блокчейна и откатить транзакции, о которых обычные майнеры узнают только из сообщений Reddit.

Поэтому в 2013 году был предложен модифицированный алгоритм GHOST — Greedy Heaviest Observed Subtree. В дополнение к концепции предыдущего блока («родительский») он вводит понятие «дядя» (или оммер) блока.

У

GHOST простое сообщение: дать небольшое вознаграждение, включая тех майнеров, которые нашли «дядю» — логически правильный блок, которому просто не повезло попасть в цепочку соседей. Дядя получает 12,5% от стоимости полноценного блока. Это мотивирует майнеров продолжать добывать самостоятельно, потому что вы также можете хорошо зарабатывать, ища дядей.

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

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

Многие считают ASIC обманом, но это реальность.

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

А накануне перехода на Proof-of-Stake идея построить ASIC под Ethereum вообще не имеет финансового смысла.

В прошлый раз я рассказывал, что классический майнинг с поиском ответа на сложную проблему называется Proof-of-Work. Его главный недостаток в том, что человечество тратит огромные ресурсы на его функционирование. Точнее, на самом деле это не обязательно, но каждый хочет получить свою награду.Это приводит к постоянной гонке вооружений и майнинговым фермам размером с половину Индии.

Теперь Ethereum также использует Proof-of-Work-Mining. Алгоритм называется Ethash, но он считает свои последние дни. Ethereum давно собирается перейти на новый алгоритм майнинга, где никому не нужно будет скупать видеокарты и строить фермы — Proof-of-Stake.

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

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

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

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

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

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

При каждом обращении к контракту регистрируется Gas Limit — количество вычислений, необходимых для его выполнения.Если в биткойнах майнеры собирают транзакции, пока они не достигнут желаемого размера блока, они решают, сколько включить в блок, исходя из их общей сложности. Вы можете быстро выполнить сотни базовых смарт-контрактов или взять вместо них один «толстый».

В результате вычислений майнеры помимо создания дерева транзакций перестраивают дерево состояний. Они генерируют квитанции для каждой завершенной транзакции и включают все в новый блок. Только после этого они пытаются найти хэш необходимой сложности для включения своего блока в основной блокчейн.Кстати, вместо стандартного SHA-256 в Ethereum используется хеш KECCAK-256.

В конце концов, блокчейн Ethereum — это тот же классический блокчейн с добавлением хранилища и EVM, который позволяет выполнять произвольный код смарт-контрактов на каждом компьютере майнера. Полезно поправить в памяти.

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

Новая технология в руках программиста похожа на новую бензопилу для калифорнийского маньяка. Вам просто не терпится попробовать все сразу.

Здесь я расскажу вам две истории о смарт-контрактах, которые позволят вам лучше понять практические возможности смарт-контрактов и возможные проблемы после ошибок.

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

ICO — прекрасный пример использования смарт-контрактов, и теперь вы, скорее всего, догадались, что это такое.

Теперь Алексей мастер по изготовлению милых плюшевых акул вроде этой (оригинал: KATYUSHKA ART DOLLS):

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

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

Алекс загружает его в блокчейн через кошелек Ethereum и уже может заходить на форумы «ребята, покупайте мои токены». Из-за шумихи кто-то даже купит пару, как это случилось с Useless ICO, когда чувак решил собрать деньги на новый компьютер, но собрал десятки тысяч долларов. Это похоже на выпуск акций, но это еще не полноценное ICO, больше похоже на пожертвования для виртуального вознаграждения.

Так называемые «ICO-профессионалы» сейчас возмущены, гадая, где же Whitepaper, где модный лендинг со списком советников, контракт с биржей и ветка от Bitcoin Talk на украденный аккаунт. Да, все это полезно, но не имеет ничего общего с технической стороной.

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

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

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

После этого акулы-монеты ICO существуют в основном как записи в контракте. Технически, как и основной словарь {Джон: 20 монет, Питер: 100 монет}, который теперь постоянно записывается в глобальном хранилище. Цифры в словаре не имеют плавающей цены, потому что их нельзя купить или продать. Их можно только кому-то передать или подарить.

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

Вот так в двух словах устроено ICO. Когда-то в 2016 году это могло даже быть реализовано таким образом, но очень скоро Big Shots (TM) пришли на этот рынок, и правила игры стали намного сложнее. В любом случае, как пример использования смарт-контракта, ICO — это круто.

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

Это было в 2016 году, ICO еще не было массовым явлением, но сообщество Ethereum уже было вдохновлено идеей тотального краудфандинга с использованием смарт-контрактов. Тогда родился проект Децентрализованной Автономной Организации. DAO, по сути, был большим смарт-контрактом, в котором были заложены механизмы классического инвестиционного фонда: участники вносят свои деньги, получают свою долю, голосуют своими голосами, в какие проекты вложить собранные средства, чтобы сократить прибыль. в конце.

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

Запуск DAO ожидался практически всеми, поэтому сразу после запуска в фонд было отправлено около 165 миллионов долларов (а по текущему курсу ETH это более 4 долларов. 3 миллиарда). Это было большое событие для общества.

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

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

Это краткий пересказ истории из DAO.

Было два решения: сдаться и отдать украденные деньги хакерам или «остановить» блокчейн, обновляя всех клиентов, вернуться к ранним блокам и перезапустить все — по сути, разделить блок и сделать хард-форк. Был выбран второй вариант. Так появилось два блокчейна — Ethereum и Ethereum Classic.

Это был сильный удар по сообществу. Многие люди до сих пор не могут принять это внешнее вмешательство в свой независимый децентрализованный мир. «Если создатели могут сделать это в любое время с нашими деньгами — как мы можем доверять такой цепочке блоков», — кричали они на форумах и Reddit, и были в значительной степени правы. Представьте, каково было обычным пользователям, которые в это время купили ETH где-нибудь в киоске обмена валюты.

Существует популярная аналогия: «Биткойны — это золото, Ethereum — это нефть».

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

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

Мне нравится эта аналогия. Это показывает, что между биткойном и эфиром нет конкуренции. Никто не может сказать, что завтра нефть может заменить золото или наоборот.Это два независимых ресурса, которые могут продвинуть всех нас вперед. А завтра они могут рухнуть, как Римская империя. Кто знает.

Защищенных смарт-контрактов Ethereum с помощью обнаружения уязвимых шаблонов

Смарт-контракты Ethereum набирают популярность в связи с автоматизацией многих доменов, таких как FinTech, IoT и цепочки поставок, которые основаны на технологии блокчейн. Самый важный домен, например FinTech, стал объектом стольких успешных атак из-за его финансовой стоимости в миллиарды долларов. Во всех атаках используется уязвимость в исходном коде смарт-контрактов, что приводит к хищению миллионов долларов. Чтобы найти уязвимость в исходном коде смарт-контрактов, написанных на языке Solidity, современная работа предлагает множество решений, основанных на динамическом или статическом анализе. Однако эти инструменты показали множество ложных срабатываний / отрицаний в отношении смарт-контрактов со сложной логикой. Кроме того, выходные данные этих инструментов не сообщаются стандартным образом с их фактическими названиями уязвимостей в соответствии со стандартами, определенными сообществом Ethereum.Для решения этих проблем мы ввели инструмент статического анализа SESCon (безопасный смарт-контракт Ethereum), применяющий методы анализа заражения с помощью запросов XPath. Наш инструмент превосходит другие анализаторы и обнаруживает до 90% известных шаблонов уязвимостей. SESCon также сообщает об обнаруженных уязвимостях с их названиями, описаниями и исправлениями в соответствии с определенными стандартами сообщества Ethereum. SESCon послужит основой для стандартизации обнаружения уязвимостей.

1. Введение

В настоящее время в Интернете преобладает электронная коммерция, позволяющая покупать все за электронные деньги, где доверенная третья сторона может обрабатывать и проверять транзакции, совершаемые в Интернете по всему миру. Однако проблемы безопасности при онлайн-транзакциях преобладают повсюду из-за их централизованного характера. Например, пользователи могут тратить одни и те же цифровые деньги несколько раз, что вызывает атаку двойного расходования. Точно так же фальсификация цифровых записей посредством взлома или даже инсайдерами пока не имеет 100% безопасного решения.Поэтому для преодоления этой проблемы в приложении для биткойнов [1] был введен блокчейн, который обеспечивает надежное решение проблемы двойной траты и неизменности без какой-либо доверенной стороны.

Основным сильным аспектом блокчейна является обеспечение необратимой прозрачной истории транзакций в распределенном реестре. Любой желающий может увидеть полную историю пользовательских транзакций. Никто не может изменять или изменять содержимое этого распределенного реестра (блокчейна). Спустя несколько лет после создания блокчейна биткойнов исследователи осознали сильный потенциал технологии распределенной книги (DLT), которая может применяться к другим доменам параллельно с приложениями для криптовалюты.Виталик Бутерин представил концепцию смарт-контракта (SC) для расширения применимости блокчейна к другим доменам и представил блокчейн Ethereum [2], а также представил свою собственную криптовалюту, то есть эфир. Смарт-контракт имеет полный язык Тьюринга, то есть Solidity, на котором может быть определена и запрограммирована любая бизнес-логика. Смарт-контракт — это, по сути, фрагмент кода, который развертывается и постоянно хранится в блокчейне с уникальным адресом и выполняется автоматически при получении некоторых транзакций.

В блокчейне Ethereum есть два типа учетных записей, а именно: внешняя собственная учетная запись (EOA) и учетная запись смарт-контракта (SCA). EOA обычно контролируется с помощью закрытого ключа, который пользователи Ethereum хранят в защищенном месте (кошелек). Любой может создать эту учетную запись без каких-либо затрат. Эта учетная запись может инициировать различные типы транзакций в сети цепочки блоков Ethereum, то есть передавать / получать эфиры (криптовалюта Ethereum) от одной учетной записи к другой и подписывать транзакции своим закрытым ключом для подтверждения своей авторизации.С другой стороны, SCA немного отличается по своей природе. Например, для создания этой учетной записи нам нужны некоторые фракции эфира, и у него есть связанный код (написанный на Solidity / других языках), который будет постоянно разворачиваться и храниться в сети блокчейн. Мы не можем удалить / удалить такую ​​учетную запись из сети блокчейнов, кроме как отключить ее. SCA может инициировать транзакции только тогда, когда он получает транзакции, и выполнять некоторые действия при выполнении предопределенных критериев, тем самым обеспечивая некоторую автоматизацию. Оба типа счетов имеют баланс в виде эфиров.

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

SC хранит миллиарды долларов и в основном используется в финансовом секторе и в смежных сферах, что привлекает злоумышленника для кражи его денег. Следовательно, он требует надежных гарантий безопасности, чтобы предотвратить его нарушение. К сожалению, создать SC без ошибок очень сложно, поскольку разработчики не обучены и не имеют такого большого опыта в среде блокчейна. В результате большое количество критических уязвимостей было обнаружено в самых известных смарт-контрактах, то есть в DAO [3], Frozen Ethers [4] и King of Ether [5], что привело к потере миллионов долларов.

Чтобы защитить SC и обнаружить его уязвимости перед развертыванием в блокчейне, многие исследователи внесли свой вклад в статический и динамический анализ SC. Некоторые из них предлагают решение фаззинга (ContractFuzzer [6]), символьное исполнение (Oyente [7], ZUES [8] и Securify [9]), фаззинг + символьное исполнение (ILF [10]), анализ заражения (Slither [11]) , NPChecker [12]), XPath паттернов уязвимостей (SmartCheck [13]) и др.Основные проблемы с этими решениями для статического анализа — высокий процент (до 70%) ложных срабатываний и ложноотрицательных результатов. Кроме того, сообщение об их обнаружении основывается на их собственной определенной таксономии шаблонов, которая может быть несовместима с шаблонами стандартов, определенными Ethereum. Поэтому очень сложно оценить такие инструменты и измерить их истинные положительные / отрицательные стороны по стандартным определенным шаблонам.

Хорошо известные шаблоны уязвимостей в смарт-контрактах были определены экспертами сообщества Ethereum [14].Они [14] дают каждой уязвимости ее название, описание, связь с CWE (Common Weakness Enumeration), исправления, образцы уязвимых контрактов и их фиксированные версии. Если мы рассмотрим эти шаблоны и соблюдаем их рекомендации, мы сможем с уверенностью разрабатывать и развертывать смарт-контракты и предоставлять смарт-контракты без ошибок. Наша исследовательская работа основана на этих стандартах, и мы следовали их рекомендациям при обнаружении уязвимостей. Однако большинство современных инструментов, упомянутых выше, не могут обнаружить такие хорошо известные критические уязвимости в смарт-контрактах, и / и их результаты не сообщаются стандартным способом [14].Они просто обнаруживают наличие некоторых ключевых слов со значениями параметров и выдают сигналы тревоги (ложные срабатывания / отрицательные результаты), не проверяя их разумно. Например, самая известная атака DAO на смарт-контракт даже в ее простой форме [14] не может быть обнаружена SmartCheck [13] и / или другими инструментами.

В этой статье мы собираемся предоставить интеллектуальное решение для статического анализа смарт-контрактов. Наше решение основано на taint-анализе [15] и методе XPath паттернов уязвимостей [13].Сначала мы берем исходный код смарт-контракта и преобразуем его в дерево синтаксического анализа XML в форме абстрактного синтаксического дерева (AST), где каждый узел представляет различные конструкции (операторы, выражения, циклы, условия, переменные и т. Д.). Из AST мы получаем возможность обнаруживать все его переменные, операторы и уязвимые ключевые слова / шаблоны с помощью запросов XPath. Затем мы передаем его в наш модуль анализа заражения, где обнаруживаются его зависимые и независимые переменные, локальные переменные и переменные состояния, а также их потоки.Затем мы создаем уязвимые шаблоны, как определено в стандартных шаблонах уязвимостей [14]. Таким образом, поскольку мы следуем рекомендациям экспертов Ethereum [14], наш инструмент SESCon знает все шаблоны уязвимостей и, таким образом, обеспечивает очень точное обнаружение уязвимостей. Наш основной вклад в эту исследовательскую работу заключается в следующем: (i) Мы уменьшили количество ложных срабатываний при обнаружении уязвимостей, предоставив интеллектуальный инструмент, то есть SESCon, основанный на анализе заражения, который статистически анализирует исходный код смарт-контракта, написанный на языке Solidity.(ii) Поскольку современные инструменты определили собственную таксономию уязвимостей и обнаружили исходный код для них, который нельзя было сравнивать со стандартами, определенными сообществом Ethereum, стало трудно оценить их эффективность, Мы первые, насколько нам известно, обнаруживаем уязвимости в отношении этих стандартов [14], тем самым обеспечивая основу для стандартизации для обнаружения уязвимостей и сообщения о них. (iii) Мы также применили наш инструмент для обнаружения уязвимостей в реальных контрактах.Наши результаты показывают, что большое количество уязвимостей все еще существует почти во всех контрактах (то есть 99%).

Остальная часть статьи организована следующим образом: соответствующие работы представлены в Разделе 2; Раздел 3 дает некоторую основу для понимания области нашей исследовательской работы. Подробное решение нашей архитектуры описано в Разделе 4; в разделе 5 проиллюстрированы экспериментальные результаты, оценка, ограничения и реализация; и мы наконец завершили нашу исследовательскую работу с будущим расширением в Разделе 6.

2. Сопутствующие работы

В этом разделе мы рассмотрели некоторые современные работы, которые прямо или косвенно связаны со статическим анализом.

ContractFuzzer [6] обнаружил некоторые уязвимости с помощью инструментария EVM и определил несколько тестовых оракулов против таких уязвимостей. Он сгенерировал множество входных данных фаззинга из спецификаций контрактов ABI, вызвал контракты и проанализировал их журнал выполнения. Oynte [7], с другой стороны, используя методы символического выполнения с решателем ограничений Z3 в байт-коде контракта, обнаружил три типа ошибок: TOD, Timestamp, исключение неправильной обработки и некоторый уровень повторного входа, тогда как ZUES [8] использовал абстрактный методы интерпретации и символического исполнения, чтобы предоставить формальное решение для корректности и беспристрастности SC в стиле XACML. Он выполнил статический анализ IR, чтобы определить точки предиката проверки для проверки утверждений. Точно так же Securify [9] использует символьное выполнение, а также его алгоритм изучил семантику кода, а затем обнаружил шаблоны уязвимостей против шаблонов нарушения / соответствия. В первой попытке ILF [10] фаззинг контракта после символического исполнения он использовал структуру имитационного обучения, используя нейронную сеть для моделирования своей политики фаззинга для генерации эффективных входных данных для последовательности транзакций.Однако для развертывания ILF требуются допустимые параметры конструктора, что затрудняет автоматическое фаззинг тестируемого контракта. Slither [11] преобразует контракт Solidity в промежуточное представление (SlithIR), используя форму SSA (Static Single Assignment) и применяет методы отслеживания потока данных и заражения для обнаружения уязвимостей. Однако мы не можем использовать Slither для большого набора данных контрактов, если у них есть другая версия компилятора Solidity.

NPChecker [12] предоставляет решение для некоторых ошибок платежных вызовов, используя недетерминированное поведение Ethereum (с использованием байт-кода для LLVM IR), без каких-либо уже известных уязвимостей, основанных на шаблонах, но имеет больше ложных срабатываний, требующих вмешательства человека для проверки .Для изучения информационного потока в нем применен анализ заражения для локальных и глобальных переменных SC. Однако он не дал решения общих арифметических проблем (например, целочисленного переполнения). Между тем, в других работах [16–22] также рассматривались уязвимости DoS, повторного входа и происхождения транзакции в шаблонах байт-кода EVM с использованием методов символического выполнения и машинного обучения без учета стандартных шаблонов уязвимостей. EtherTrust [23] предоставил статическое решение посредством формального определения свойств безопасности (достижимости) семантики SC (байт-кода) в предложениях Horn, а запросы решались решателем Z3 SMT.Они сосредоточились на уязвимостях, связанных с ошибками однократного повторного входа (SE) и независимыми транзакциями майнеров (MI). VerX [24] представил новый механизм символьного исполнения, в котором отложенная абстракция применяется для проверки свойств функциональной безопасности SC. Сначала они формализовали временные свойства безопасности SC, расширив язык Solidity (т.е. всегда и один раз). Затем SC оснащается инструментарием для достижения свойства достижимости, и, в конце концов, механизм символьного выполнения выполняет свою функцию.Вандал [25] работал над байт-кодом EVM для абстрактной интерпретации, используя декларативный язык, то есть суфле, а затем создавал логические отношения. Они использовали логический подход для определения уязвимостей безопасности. Однако для определения новых уязвимостей требуется опыт, который не очень удобен для пользователя. Были также некоторые другие работы [26, 27], которые представлены для обеспечения семантической и формальной корректности смарт-контракта на байт-коде и функциональном уровне смарт-контракта.

Для подведения итогов и заключения сопутствующих работ большинство инструментов (ContractFuzzer, Oynte, ZUES, ILF, Securify, Vandal и др. ), которые использовали символическое выполнение или фаззинг или формально подтвердили безопасность смарт-контрактов, работают с байт-кодом и / или исходным кодом. Однако их решения имеют много накладных расходов во время преобразования исходного кода в некоторые промежуточные представления (IR), создания тестовых примеров для фаззинга или динамического запуска для символьного выполнения для обнаружения уязвимостей. Эти решения не достигли 100% покрытия кода и, следовательно, оставили незамеченными некоторые хорошо известные уязвимости. Хотя Slither [11] использовал методы искажения для создания своих конструкций промежуточных представлений (SlitherIR), их решение не применяется напрямую к исходному коду смарт-контракта.Кроме того, их решение требует много времени из-за создания форм IR и SSA (Static Single Assignment). NPChecker [12] также использует методы заражения, но он связан только с платежными операциями и ошибками с платежами, тогда как наш инструмент SESCon используется для поиска всех уязвимостей безопасности, как это определено сообществом Ethereum [14]. Наиболее близким к нашей работе является SmartCheck [13], который использует статический анализ с помощью AST исходного кода Solidity, переводя его грамматику в ANTLR и выявляя шаблоны уязвимостей с помощью технологии XPath.Однако он просто обнаруживает какое-то ключевое слово или какой-то простой шаблон; однако частота ложных срабатываний очень высока, то есть 69%. Кроме того, для сложных шаблонов SmartCheck не работает. Мы расширили SmartCheck анализом заражения, чтобы мы могли разумно обнаруживать шаблоны уязвимостей. Другая наиболее связанная работа [28] также использует методы XPath для обнаружения уязвимостей в смарт-контрактах, но их работа ограничена целочисленным переполнением.

3. Предпосылки

Блокчейн можно описать как распределенную базу данных только с добавлением (называемую реестром), где данные (транзакции) хранятся в хронологическом порядке.Группа транзакций в этом реестре упаковывается в блок, и каждый блок криптографически связан с предыдущим блоком, таким образом образуя цепочку блоков (называемую цепочкой блоков). Наиболее важным аспектом этой технологии является то, что ее архитектура децентрализована, что означает, что нет единого сервера, который отвечал бы за обработку и управление / хранение всех транзакций [1]. Таким образом, технология блокчейн изначально защищена от DoS / DDoS-атак, поскольку не существует центральной точки отказа. Любой может присоединиться к этой одноранговой сети, просто установив ее программное обеспечение с открытым исходным кодом, и участвовать без какого-либо разрешения, что называется блокчейном без разрешения, т.е.е., биткойн [1] и Ethereum [2]. Существуют также некоторые разрешенные блокчейны, в которых были введены уровни контроля доступа для обеспечения дополнительной безопасности в системе [29–33], так что определенные действия должны выполняться только авторизованными участниками.

Как правило, когда пользователь хочет взаимодействовать с цепочкой блоков, он / она просто отправляет транзакцию (т.е. Алиса отправляет 1 биткойн / эфир Бобу), и эта транзакция передается в пул транзакций (пул майнинга), где специальные узлы (майнеры) выбирают транзакции случайным образом в соответствии с их приоритетом (в основном, имеют высокие комиссии) и помещают их в логический блок и создают хэш всего блока с некоторым ограничением его содержимого (начальное число нулей) с помощью запутанного алгоритма .Когда майнер решает такую ​​головоломку с начальным нулем для получения хэша блока, он транслирует этот вновь созданный блок в сеть цепочки блоков P2P (биткойн, Ethereum и т. Д.). Все остальные узлы обновляют свою локально хранимую книгу цепочки блоков после проверки и проверки этого нового блока. Эту загадку часто называют алгоритмом консенсуса, который обычно описывается как Proof of Work (PoW, в случае цепочки блоков биткойнов) или Proof of Stack (PoS, в случае цепочки блоков Ethereum 2.0) [2].Все транзакции в любом блоке хранятся в форме дерева Меркла [34], что позволяет сократить время обработки и уменьшить объем памяти. Простая логическая иллюстрация блокчейна изображена на рисунке 1.


Однако для расширения функциональности блокчейна в сторону автоматизации был предоставлен смарт-контракт [2]. По сути, смарт-контракт — это часть программного кода, написанного на любом языке программирования (например, Solidity [35], Vyper [36]). Этот код постоянно развертывается в блокчейне после компиляции в байт-код и запускается в виртуальной машине Ethereum (EVM) при соблюдении определенных условий (записанных в смарт-контракте).Таким образом, нет третьей стороны, которая могла бы контролировать его выполнение и, следовательно, обеспечивать своего рода автоматизацию (см. Подробности на рисунке 2).


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

4. Архитектура SESCon

В этом разделе мы представили нашу архитектуру решения SESCon (Secure Ethereum Contracts). Сначала мы описали его обзор, затем объяснили его модули, а именно модуль Vulnerable Patterns, модуль XPath и модуль Taint, и, в конце, мы представляем наше решение в форме алгоритма.

4.1. Обзор

Прежде всего, в модуле Vulnerable Patterns мы сгенерировали уязвимые шаблоны из набора данных образцов смарт-контрактов [14].Подробная информация об этом модуле приведена в этом разделе. В модуле XPath мы загружаем исходный код смарт-контракта, чтобы получить его промежуточное представление (IR), а затем находим некоторые уязвимые шаблоны, используя запросы XPath. Однако мы не полностью зависим от XPath, поскольку он приводит к ложным срабатываниям в случае сложных правил [13]. Поэтому мы ввели модуль Taint на выходе модуля XPath. В этом модуле мы сначала определяем его локальные и глобальные переменные, наиболее важными из которых являются переменные состояния, которые могут изменять статус SC.Затем мы захватили поток переменных и его график зависимостей [38] в соответствии с нашим определенным алгоритмом. Когда мы собрали всю информацию об исходном коде, потоке переменных и графике зависимостей, мы затем сравниваем тестируемый SC с шаблонами уязвимостей, определенными сообществом Ethereum [14]. Наконец, SESCon также генерирует отчет о шаблонах уязвимостей, обнаруженных в исходном коде файла Solidity, с указанием его местоположения, номера строки и возможных решений (см. Рисунок 3).


4.2. Модуль «Уязвимые шаблоны»

Целью этого модуля является создание уязвимых шаблонов смарт-контрактов в свете образцов уязвимых смарт-контрактов, предоставленных сообществом Ethereum [14]. Поскольку мы заранее знали уязвимые шаблоны смарт-контрактов, мы просто используем их для построения уязвимых шаблонов. Этот модуль состоит из пяти задач, показанных на рисунке 4.


4.2.1. Образцы контрактов

Образцы уязвимых смарт-контрактов собираются вместе с их фиксированными решениями [14].Эти фиксированные решения помогают разработчику исправить исходный код и устранить уязвимость смарт-контракта.

4.2.2. Предварительная обработка

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

4.2.3. Обучение представлению

IR состоит из абстрактного синтаксического дерева (AST), в котором мы определили уязвимые ключевые слова и пометили их.После анализа AST мы получаем графы зависимостей и их токены для изучения потенциальных уязвимостей [39].

4.2.4. Классификация

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

4.2.5. Уязвимые шаблоны

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

4.3. XPath Module

В этом модуле мы сначала берем исходный код SC, написанный на языке Solidity (файл .sol), и преобразуем его в его дерево синтаксического анализа XML в форме абстрактного синтаксического дерева (AST). После получения AST исходного кода теперь у нас есть все его ключевые слова, то есть операторы, выражения и переменные. Используя запросы XPath, мы обнаружили уязвимости, как в [13]. Этот модуль принимает в качестве входных данных файл исходного кода Solidity (.sol). Сначала мы достигли его AST, как показано на рисунке 5.


Затем, используя грамматику Solidity и ANTLR [40], мы построили дерево синтаксического анализа XML. Затем это дерево было проанализировано с помощью XPath [41] для обнаружения некоторых уязвимых ключевых слов и шаблонов. Анализируя исходный код в виде XML-дерева, мы достигли 100% покрытия кода, и все элементы сопоставляются с помощью запросов XPath. Он также предоставляет местоположения уязвимостей и номера строк в виде атрибутов XML. Таким образом, мы можем легко указать на уязвимости в исходном коде тестируемого смарт-контракта.Модуль XPath и следующий модуль taint показаны на рисунке 6.


4.4. Модуль анализа искажений

Этот модуль принимает выходные данные модуля XPath в качестве входных и извлекает график потока управления, защищенные функции, локальные переменные и переменные состояния, а также график зависимостей данных. Здесь мы видим, какие переменные могут / не могут читать / писать и, в частности, вызывают изменение статуса смарт-контракта, изменяя переменные состояния. Этот модуль предоставил нам весь внутренний и внешний поток контрактов, т.е.е., какая функция может изменять переменные состояния, а какие функции являются зависимыми. Мы предоставили здесь образец контракта со всей информацией, которую можно визуализировать, как показано на Рисунке 7.


Рисунок 7 показывает, что смарт-контракт состоит из основного контракта (apexSolid.sol), особенно его функции покупки, которая взаимодействует с функциями и другими контрактами, например SafeMath и ERC721. Поток данных от одной функции к другой показан стрелкой.Зеленая стрелка указывает на внутренний поток данных, а оранжевая стрелка указывает на внешний поток данных. Мы также извлекли защищенные, частные и общедоступные методы и переменные, которые могут изменять значение переменной состояния смарт-контракта и то, какой метод подлежит оплате. В конце мы делаем шаблоны и маркируем их как SmartContractPatterns, и эти шаблоны проходят тестирование. Та же процедура применяется к образцам стандартных уязвимых контрактов для извлечения их шаблонов. Наконец, мы сравниваем эти два паттерна и показываем уязвимости, если сравнение было верным.Большинство инструментов не могли обнаружить даже известные критические уязвимости в смарт-контракте. Они просто обнаруживают наличие ключевых слов с некоторыми значениями параметров и выдают свои сигналы тревоги (ложные срабатывания / отрицательные результаты) без разумной проверки. Например, наиболее известная атака DAO на смарт-контракт [14], даже в ее простой форме (приведенной на рисунке 8), не может быть обнаружена [13].


Сначала мы даем образец стандартного кода DAO (рисунок 8) различным инструментам и проверяем, обнаруживают ли они уязвимость DAO или нет.Если смарт-контракты имеют такую ​​уязвимость, большинство современных инструментов обнаруживают эту уязвимость. Однако, когда мы скармливаем исправленную фиксированную версию контракта DAO (рис. 9), предложенную сообществом Ethereum [14], инструментам, они почти потерпели неудачу и дали нам ложные срабатывания об атаке повторного входа. Чтобы обеспечить решение таких проблем, необходимы некоторые интеллектуальные алгоритмы, которые должны учитывать поток данных до и после выполнения каждого оператора.Например, если мы скармливаем инструменту уязвимый стандартный образец шаблона контракта, он должен сообщить о нем как об уязвимом. Однако, когда мы загружаем фиксированную версию (рисунок 9) уязвимого контракта (после удаления уязвимого кода из контракта), тогда инструмент должен показать этот новый фиксированный контракт (рисунок 9) как безопасный контракт. Для этого мы представили интеллектуальный алгоритм и реализовали его в виде инструмента SESCon.


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

В алгоритме 1 сначала мы передаем файл .sol (смарт-контракт) инструменту SESCon, который извлекает свое абстрактное синтаксическое дерево (AST), а затем преобразует его в дерево синтаксического анализа XML. Из строк с 5 по 10 извлекаются необходимые параметры / переменные и функции, которые могут или не могут повлиять на состояние смарт-контракта. В строке 11 из локального репозитория собраны стандартные образцы шаблонов уязвимых контрактов.Затем (в строке 12) каждый паттерн сравнивается с тестируемым целевым контрактом. Если шаблон найден (строка 13), он добавляется в detectVulList (строка 14), и его появление сохраняется в исходном коде контракта (строка 15). В конце (строка 18) создается стандартный отчет, в котором отображается название уязвимости, ее описание и способ устранения.

(1) Прочитать смарт-контракт
(2) Извлечь дерево абстрактного синтаксиса
(3) Преобразовать AST в путь XML с помощью запросов XPath (4) Расположение каждого оператора, который L 1 , L 2 ,… L n
(5) графы потока управления Getf1 , cf2)
(6) Получить график зависимостей, dg1, dg2
(7) Получить локальную переменную (lv1, lv2)
(8) Получить переменную состояния , sv2, \ enleadertwodots svn)
(9) Получение оплачиваемой функции (pf1, pf2)
(10) Получить бесплатную функцию (npf1, npf2,… (11) Загрузить стандартные шаблоны уязвимостей,,…,
(12) по каждый (pi) сравнить dgi в данном смарт-контракте сделать
(13) если найдено Образец то
(14) detectVulList.добавить (pi)
(15) местоположенийList.add (Li)
(16) конец, если
(17) конец для 18) Сгенерировать отчет

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

5. Экспериментальные результаты

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

5.1. Статистика набора данных смарт-контрактов

Набор данных наших контрактов при статическом анализе можно отнести к категории стандартных образцов, определенных сообществом Ethereum [14], и реальных контрактов. Однако здесь мы сосредоточились только на реальных контрактах, чтобы описать их статистику. Итак, эти реальные контракты можно рассматривать как баланс контракта и строки исходного кода. Что касается баланса, мы заметили, что большинство контрактов имеют нулевой баланс.Остальные ненулевые контракты и распределение их балансов (эфиров) можно увидеть на рисунке 10. Только один контракт имеет более одного миллиона эфиров. В случае строк исходного кода смарт-контракты составляют от 20 строк до 3500 строк. Мы также видели, что большинство (70%) контрактов имеют версию компилятора 4.x, 25% контрактов скомпилированы с версией 5.x, и очень небольшое количество контрактов (5%) было с версией компилятора 6.x (см. рисунок 11). Для некоторых инструментов (Slither, Securify и т. Д.), Если у контракта есть версия 0.4.x и мы установили компилятор 0.5x, тогда их инструмент дает сбой на начальном этапе. Следовательно, они зависят от версии компилятора. Однако наш инструмент не зависит от версии компилятора; он просто берет исходный код смарт-контракта и затем начинает анализировать уязвимости.



5.2. Тестирование на стандартных образцах уязвимостей

Шаблоны уязвимостей в смарт-контрактах были определены [14] экспертами сообщества Ethereum.Мы протестировали современные инструменты (SmartCheck, Solhint, Securify, Slither) на этих стандартных образцах и сравнили наши результаты с этими современными инструментами. Сводная информация представлена ​​в таблице 1, где «да» означает, что уязвимости обнаружены точно, «нет» означает, что они не обнаружены, а «частично» означает, что они обнаружены с некоторым ложным срабатыванием. В целом SESCon показал выдающуюся производительность среди современных инструментов, и почти 90% определенных шаблонов уязвимостей обнаружены, в то время как другие инструменты не смогли достичь более 55% (см. Рисунок 12).

905 905 905 905 29 Да 905 905 SWC-105 SWC-109 905 29 Частично 905 113 905 Да 905 Частично 905 905 Частично Частично

Vul. ID [14] Solhint [42] Securify [9] Slither [11] SmartCheck [13] SESCon

SWC-100 Да Да Да Да Да Да
SWC-101 Нет Да Да Нет Да
SWC-102 Да Да
SWC-103 Частично Да Да Да Да
SWC-104 Да Да Да Да Да Да Нет Да
SWC-106 Да Да Да Нет Да
SWC-107 Частично Да Да Частично Да
SWC-108 Да Да Частично
Нет Да Нет Нет Да
SWC-110 Нет Нет Да SW Да Нет Да Да Да
SWC-112 Частично Да Да Частично Да
Да Да
SWC-114 Частично Да Да Частично Да
SWC-115 Нет Да Нет Да Да
SWC-116 Да 905 905 905 905 частично 905 SWC-117 Нет Нет Нет Нет Да
SWC-118 Нет Нет Да SW Да
Частично Да Нет Да
SWC-120 Да Нет Нет Нет Да
SWC-120 Нет Да
SWC-122 Нет Нет Да Нет Да
SWC-1 23 Нет Нет Да Нет Да
SWC-124 Нет Да Нет Да Да Нет Нет Да
SWC-126 Нет Частично Да Нет Да
SWC-127 Да
SWC-128 Нет Нет Частично Частично Да
SWC-129 Частично 905
SWC-130 Нет Да Частично Нет Да
SWC-131 Частично Нет Да Нет Да
SWC-132 Частично Да Да Нет Да Частично Нет Частично
SWC-134 Частично Нет Частично Нет Частично
SWC-135
SWC-135 905 Частично
SWC-136 Нет Нет Нет Нет Частично


уязвимостей в типовых стандартных контрактах, мы использовали три метрики оценки, а именно, точность on, напомним, и F 1-score, которые обычно используются при распознавании образов [43].Итак, в нашем случае они определяются следующим образом: точность — это доля стандартных смарт-контрактов, которые правильно определены как уязвимые, среди всех образцов уязвимых смарт-контрактов.

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

Существует еще один метод, с помощью которого мы можем проверить точность результатов, а именно оценку F 1 (оценка F или оценка F ).Это гармоничное средство наших результатов точности и отзыва результатов и мер по следующей формуле:

Здесь мы суммировали нашу оценку точности результатов по стандартным уязвимостям (таблица 2).


Модели Precision Отзыв F 1-балльная

63 0,5263
Securify [9] 0,6956 0,6956 0,6956
SmartCheck [13] 0,6153 0,6153 0,6153 905 0,7777 0,7777
SESCon 0,8918 0,8918 0,8918

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

905 905 905 905880880 905 905 905 905880 905 905 905880880 905880

Vul. ID Precision Отзыв F 1 балл

SWC-100 0.880 0,961 0,919
SWC-101 0,880 0,961 0,919
SWC-102 0,880 0,961 0,961 0,919
SWC-104 0,880 0,961 0,919
SWC-105 0,880 0,961 0,919 0,961 0,919 0,961 0,919
SWC-107 0,880 0,961 0,919
SWC-108 0,880 0,961

533 905
0,961 0,919
SWC-110 0,880 0,961 0,919
SWC-111 0,880 0,961 0,919 0,919 0,961 0,919
SWC-113 0,880 0,961 0,919
SWC-114 0,880 0,961 0,961 0,919
SWC-116 0,880 0,961 0,919
SWC-117 0,880 0,961 0,919 0,919 0,961 0,919
SWC-119 0,880 0,961 0,919
SWC-120 0,880 0,961 0,961 0,919
SWC-122 0,880 0,961 0,919
SWC-123 0,880 0,961 0,919 0,919 0,919 0,961 0,919
SWC-125 0,880 0,961 0,919
SWC-126 0,880 0,961 9019 905 905 905 905 905 0,961 0,919
SWC-128 0,880 0,961 0,919
SWC-129 0,880 0,961 0,919 0,919 0,961 0,919
SWC-131 0,880 0,961 0,919
SWC-132 0,880 0,961 0,961 0,919
SWC-134 0,880 0,961 0,919
SWC-135 0,880 0,961 0,919 0,919 0,961 0,919

5.3. Тестирование с использованием реальных контрактов

Мы также протестировали наш инструмент с более чем 8000 реальных контрактов, которые мы загрузили с Etherscan [44] с помощью JSoup API [45]. Большинство загруженных контрактов (85%) имеют нулевой баланс, а остальные контракты имеют баланс более 1 эфира и до 1 миллиона эфиров. SESCon проанализировал 8125 контрактов, и в большинстве контрактов обнаружены уязвимости, которые показаны на Рисунке 13.


Основная причина выдающихся результатов заключается в том, что мы разработали наше решение с учетом стандартных шаблонов уязвимостей [14] и следовали их предлагаемым решениям для создания стандартных уязвимых шаблонов. Это поможет нам с большой точностью обнаруживать шаблоны уязвимостей в реальных смарт-контрактах, в то время как в других решениях они разработали свои собственные шаблоны, и их инструменты обнаруживают их соответствующим образом, не учитывая стандартные уязвимые шаблоны.Другая причина заключается в том, что для некоторых уязвимостей требуется глубокий анализ кода смарт-контракта и его контекста. Это означает, что только обнаружение уязвимых шаблонов или ключевых слов недостаточно, чтобы сообщить об уязвимостях, но мы должны учитывать, где присутствует уязвимый код. Это связано с тем, что иногда уязвимый шаблон не вызывает уязвимости, если указанный шаблон существовал в исходном коде вместе с некоторыми мерами безопасности; следовательно, об этом не следует сообщать.

5.4. Оценка и ограничение

Чтобы проверить наш инструмент, мы даем образец уязвимого смарт-контракта из стандартных шаблонов [14] и проверяем, может ли SESCon обнаружить его или нет, и наш инструмент дал 100% -ное точное истинно положительное обнаружение.Затем мы передаем фиксированную версию уязвимого смарт-контракта в SESCon, которая показывает 100% точность обнаружения истинного негатива. После этого мы протестировали наш инструмент на реальных смарт-контрактах. Во время тестирования нашего инструмента на реальных контрактах было обнаружено, что все еще многие контракты имеют хорошо известные уязвимости, а именно DAO, Transaction Order Dependency (TOD), trx.origin и block.timestamp, а также использует некоторый ассемблерный код. Среди них уязвимости типа DAO были на первом месте, а tx.original была второй наиболее обнаруживаемой уязвимостью.

Основным ограничением нашего инструмента является то, что он выполняет статический анализ стандартных шаблонов уязвимостей, определенных сообществом Ethereum; следовательно, мы не можем обнаружить эксплойты нулевого дня. Из-за отсутствия образцов контрактов для определенных стандартных шаблонов уязвимостей у нас также есть несколько ложных срабатываний, которые мы пытаемся преодолеть в нашей дальнейшей работе. Поскольку наш инструмент зависит от исходного кода смарт-контракта, он не может быть действительным и применяться к байт-коду смарт-контракта.Есть также некоторые работы [46, 47], в которых утверждается, что их инструменты могут быть использованы для оценки существующих инструментов статического анализатора для смарт-контрактов Ethereum. Мы пытались включить наш инструмент в их работу и оценить наш инструмент, но из-за некоторых технических ошибок при построении их работы нам не удалось их интегрировать. Кроме того, их критерии оценки отличаются от наших: мы создали шаблоны для обнаружения уязвимостей, в то время как они просто вводили ошибки, а затем обнаруживали их. Мы рассмотрим их [46, 47], чтобы исследовать и оценить наш инструмент в будущем.

5.5. Реализация

Мы реализовали SESCon на Java 8, а для лексического и синтаксического анализа мы использовали ANTLR 4.8 и грамматику Solidity 5.6 на 64-битной платформе Windows 10 на ядре i7 с ОЗУ 4 ГБ. Чтобы найти простые шаблоны уязвимостей и ключевые слова, мы использовали запросы XPath 2.0.

6. Заключение и дальнейшая работа

В этой статье мы представили решение для обнаружения уязвимости смарт-контрактов с помощью статического анализа. Наше решение основано на XPath и анализе помеченных данных.Большинство инструментов статического анализа смарт-контрактов дают большое количество ложных срабатываний. Мы уменьшили количество таких тревог с помощью гибридного подхода, сочетающего XPath и анализ помеченных данных. Сначала мы конвертируем файл .sol в эквивалентное ему дерево синтаксического анализа AST XML и применяем запрос XPath, чтобы найти несколько простых шаблонов уязвимостей. После этого мы проходим глубокий анализ с помощью методов анализа заражения, где мы извлекаем переменную состояния, локальную переменную, их поток управления, графическую зависимость функции, а также платные и неплатные функции, чтобы создать некоторые уязвимые шаблоны.Затем мы сравниваем тестируемый смарт-контракт со стандартными шаблонами уязвимостей, определенными сообществом Ethereum. Наш инструмент превосходит другие анализаторы и может точно обнаруживать до 90% известных шаблонов уязвимостей. Мы также проанализировали более 8000 реальных контрактов с помощью нашего инструмента SESCon и обнаружили, что все еще существует большое количество уязвимых смарт-контрактов, которые можно исправить с помощью нашего инструмента. Наше решение обеспечит основу для стандартизации в сравнении и оценке инструментов со стандартными шаблонами уязвимостей.

Наша работа может быть расширена во многих направлениях. Естественным продолжением нашей работы является уменьшение количества ложных срабатываний по последним четырем паттернам уязвимостей (SWC-133–136). Поскольку мы выполнили статический анализ исходного файла Solidity, нашей следующей работой будет анализ уязвимостей из байт-кода смарт-контракта. Мы также планируем, как мы сможем обнаружить некоторые эксплойты нулевого дня с помощью некоторых подходов к машинному обучению. В конце концов, после консолидации инструмента мы предоставим наше решение с открытым исходным кодом после некоторых улучшений, чтобы облегчить работу исследователям на ранних стадиях.

Доступность данных

Данные, использованные для подтверждения результатов этого исследования, включены в статью.

Конфликт интересов

Авторы заявляют об отсутствии конфликта интересов.

Что такое смарт-контракты? | Пестрый дурак

Развитие технологии блокчейн, особенно той, которая используется в Ethereum (ETH -1,54%), привело к резкому росту популярности смарт-контрактов. Для непосвященных смарт-контракты — это программируемые соглашения или протоколы, которые самостоятельно исполняются и применяются без помощи каких-либо посредников.За исключением того факта, что им не нужен посредник (например, юрист), они не так уж сильно отличаются от обычных контрактов.

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

Источник изображения: Getty Images.

Смарт-контракты в действии

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

Допустим, кредитор, Эллен, хочет зарабатывать 4% годовых на свои биткойнов (BTC -1,10%) стоимостью 10 000 долларов, отдав их в долг заемщику по имени Джон. Чтобы установить доверительные отношения, обоим участникам сначала необходимо лучше узнать друг друга и подписать соглашение. После этого Эллен отправляет 0,25 биткойна на адрес кошелька Джона в ожидании, что Джон отправит ей залог по ссуде.Но допустим, что он никогда этого не делает, просто берет биткойны Эллен и сбегает. Вот почему долгое время у нас не могло быть одноранговых транзакций с финансовыми услугами.

Но что, если Эллен и Джон использовали смарт-контракт? Для этого Эллен конвертировала свои биткойны в токен, основанный на блокчейне Ethereum (ER-20), который называется Wrapped Bitcoin (WBTC -1,18%). Она может сделать это либо через свой кошелек, либо на большинстве крупных бирж. Смарт-контракт гарантирует, что она будет получать WBTC от BTC в соотношении 1: 1 до вычета комиссий.

После этого все, что ей нужно сделать, это войти на платформу DeFi, такую ​​как Aave, подключить свой кошелек и внести WBTC в один из своих кредитных сервисов. И интерес начнется.

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

Не бойтесь тем, кто не любит давать деньги взаймы. Можно также внести свою криптовалюту на выделенные адреса, используя смарт-контракты для проверки транзакций в цепочке блоков (это называется стейкингом). Например, можно зарабатывать более 6% годовых брутто, размещая монеты Cardano ADA (ADA 9,24%), третью по величине криптовалюту в мире.

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

Следующий шаг

Я бы порекомендовал инвесторам либо попробовать децентрализованные финансовые услуги для получения фиксированного дохода, либо инвестировать в монеты или токены смарт-контрактов. Развитие смарт-контрактов еще далеко от завершения. Прямо сейчас существуют инновационные сети, такие как Chainlink (LINK -2,63%), которые могут связывать выполнение смарт-контрактов с реальными данными, такими как потоки цен, погодные условия, результаты выборов и экономические показатели. Настала поистине золотая эра развития смарт-контрактов.

Эта статья представляет собой мнение автора, который может не согласиться с «официальной» позицией рекомендаций премиальной консультационной службы Motley Fool. Мы пестрые! Ставка под сомнение по поводу инвестиционного тезиса — даже нашего собственного — помогает нам всем критически относиться к инвестированию и принимать решения, которые помогают нам стать умнее, счастливее и богаче.

Что такое смарт-контракты и как они работают? (2021)

Вкратце
  • Смарт-контракты — это контракты, выраженные в виде фрагмента кода, который предназначен для выполнения набора инструкций.
  • Термин «смарт-контракт» был придуман в 1990-х годах в академической статье, созданной Ником Сабо.
  • Dapps, или децентрализованные приложения, по сути, представляют собой серию связанных смарт-контрактов.

Мы все знакомы с приложениями и магазинами приложений. Вы просматриваете, загружаете нужное приложение и готово.

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

Смарт-контракты выполняют очень похожую функцию.

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

Единственная разница в том, что со смарт-контрактами нет посредников. Ни одно лицо или компания не владеют вашей информацией или не проверяют ее. Блокчейн проверяет и сохраняет за вас запись.

Виталик Бутерин и сообщество Ethereum считают, что это будущее блокчейна.Если Биткойн — это золото делового мира, то смарт-контракты — это нефть, на которой работает деловой мир.

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

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

  • 📇 Сайт с информацией обо всех автомобилях, которые вы хотели бы увидеть
  • 📯 Способ общения с продавцами
  • 💰 Платежная система, позволяющая обменять деньги после того, как вы нашли свой автомобиль
  • 💳 Возможность получить возмещение, если машина окажется неисправной
  • 👨‍⚖️ Также необходимо зарегистрировать обмен права собственности на автомобиль в органах власти

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

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

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

Почему? Смарт-контракты:

  • 🔒 Безопасность: Они используют криптографию, чтобы не дать людям изменить записи.
  • 🔍 Прозрачный: Каждый может увидеть в блокчейне, что такое смарт-контракт и для чего он используется.
  • 🙏 Сторонние бесплатно: Смарт-контракты не нуждаются в посредниках для проверки. Блокчейн сделает это за вас.
  • 🤖 Автономный: Они работают автоматически, поэтому вам не нужно ждать, пока кто-то нажмет кнопку.
  • Точно: Поскольку смарт-контракты написаны в коде, они не полагаются на серые области языка и значения слов.

Если это произойдет, сделайте это

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

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

  • 💸Если сумма на банковском счете превышает запрошенную сумму, разблокируйте средства.
  • 🙅‍♀️ 💵Если сумма на банковском счете меньше запрошенной суммы, не возвращайте средства.

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

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

  • 💸Если сумма в цифровом кошельке больше и еще не потрачена, высвободите средства.
  • 🙅‍♀️ 💵Если сумма в цифровом кошельке меньше или уже потрачена, не выпускайте средства.

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

Внутри смарт-контракта

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

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

  • 🤝 Взаимосвязь: Каждый смарт-контракт обычно имеет ограниченный набор функций.Несколько смарт-контрактов могут быть настроены для связи друг с другом и могут образовывать более сложные механизмы, известные как децентрализованные приложения (dapps).
  • 💡 Объекты: Это подписавшие стороны, которые взаимодействуют со смарт-контрактом, и субъекты, которые изменяются / изменяются смарт-контрактом на основе заранее определенных или вновь представленных условий.
  • 🌍 Среда: Смарт-контракты зависят от базовой криптографической среды. Это гарантирует, что они могут работать безопасно, а данные, с которыми они действуют, неизменны и в целом прозрачны.

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

Кто создавал смарт-контракты?

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

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

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

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

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

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

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

Некоторые известные децентрализованные приложения

  • 📉 Augur — инструмент, который позволяет любому спекулировать деривативами
  • 🏦 MakerDAO — децентрализованное финансовое приложение (DeFi), которое позволяет пользователям ссужать и брать взаймы криптовалюты без посредников.
  • 🦄 Uniswap — Обмен на основе Ethereum, который позволяет любому обменивать токены ERC20.
  • 🐱 CryptoKitties — Уникальные крипто-коллекционные предметы на основе NFT, которые можно «разводить» с помощью смарт-контрактов.
  • 👛 Argent — кошелек Ethereum, который использует смарт-контракты для абстрагирования таких понятий, как адреса и закрытые ключи.

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

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

Смарт-контракты лежат в основе всей революции децентрализованного финансирования (DeFi) и используются для поддержки популярных протоколов DeFi, таких как Compound, Aave, Uniswap и сотен других.

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

  • 🎮 Ubisoft: Гигант видеоигр Ubisoft широко использует блокчейн; Среди множества инициатив по блокчейну, компания разработала специально разработанные смарт-контракты, позволяющие пользователям владеть, передавать и требовать редкие невзаимозаменяемые токены (NFT) на основе популярной игровой франшизы Rabbids.
  • 🏦 ING: Голландский банк ING является соавтором Fnality, системы торговых расчетов на основе блокчейна с использованием смарт-контрактов.Он также участвует в ряде других инициатив по блокчейну.
  • 🇸🇪 Правительство Швеции: Правительство Швеции протестировало земельный кадастр на основе блокчейна для подтверждения права собственности на землю, основанный на смарт-контрактах.

Смарт-контракты не всегда идеальны

Хотя смарт-контракты обычно считаются «ненадежным» способом обеспечения соблюдения соглашений и логики, они не обходятся без изрядной доли проблем.

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

Неизвестные и новые векторы атак также часто могут быть использованы, обычно заканчиваясь потерей денег инвесторами. Это было замечено в сентябре 2020 года, когда рухнула тестовая версия Eminence, проекта Андре Кронье из Yearn Finance.Он был использован неизвестным хакером за 15 миллионов долларов после того, как огромное количество инвесторов вложили в него свои деньги.

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

Аудит смарт-контрактов

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

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

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

Чтобы минимизировать риск этого, ряд сторонних фирм по разработке и безопасности, таких как Mythx и ConsenSys Diligence (ConsenSys финансирует независимую от редакции программу Decrypt ), теперь предлагают услуги аудита смарт-контрактов.Это включает в себя тщательную проверку кода смарт-контракта на предмет выявления уязвимостей, которые затем можно исправить. Обычно это происходит до того, как смарт-контракт станет общедоступным.

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

Топ-10 платформ смарт-контрактов по рыночной капитализации

Платформы смарт-контрактов превратились в один из самых значительных секторов криптоэкономики.Из 10 крупнейших криптоактивов по рыночной капитализации (на основе данных Messari) три являются платформами смарт-контрактов, а одна — Ethereum — уступает только самому Биткойну.

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

  • Ethereum: Ethereum предназначен для работы в качестве децентрализованного «мирового компьютера», который может использоваться как платформа, на которой могут работать децентрализованные приложения.
  • Cardano: Cardano — это общедоступный блокчейн-проект с открытым исходным кодом.Его USP состоит в том, что он утверждает, что является первым в мире рецензируемым блокчейном, в котором сеть академиков и ученых проверяют его протоколы перед их выпуском.
  • Polkadot: Созданная соучредителем Ethereum Гэвином Вудом, Polkadot представляет собой «многоцепочечную сеть», предназначенную для объединения сетей блокчейнов.
  • EOS: Нацеленная на бизнес-пользователей, EOS предназначена для решения распространенных проблем, связанных с блокчейном, таких как скорость и масштабируемость.
  • TRON: «Децентрализованная виртуальная машина», Tron изначально проектировалась как социальная сеть и развлекательная платформа, а теперь ставит перед собой благородную цель — поддержать децентрализованный Интернет.
  • NEM: Сокращенно от New Economy Movement, платформа NEM предназначена для предоставления предприятиям более эффективного способа проверки и перемещения активов блокчейна.
  • Tezos: Tezos, конкурент Ethereum, был разработан с нуля как блокчейн с доказательством доли владения с внутричейн-управлением; Владельцы монет могут голосовать за предложения по внесению изменений в работу блокчейна Tezos.
  • VeChain: VeChain разработан для улучшения и упрощения управления цепочкой поставок, помогая предприятиям исключить мошенничество в процессе производства и доставки.
  • NEO: NEO, часто называемый «китайским Ethereum», отличается от Ethereum тем, что не взимает комиссию за транзакцию; это также быстрее, поддерживая около 10 000 транзакций в секунду.
  • Cosmos: Cosmos — это «Интернет блокчейнов», сеть сетей блокчейнов, предназначенная для беспрепятственного взаимодействия друг с другом с использованием протокола межблочной связи.

Будущее смарт-контрактов

В настоящее время большинство блокчейнов имеют функции смарт-контрактов, при этом активные сообщества разработчиков создают децентрализованные приложения с использованием смарт-контрактов в таких блокчейнах, как Cosmos, NEO и Hyperledger.Возможности смарт-контрактов могут варьироваться от очень простых для чего-то вроде Биткойна или Litecoin до более продвинутых на блокчейнах с поддержкой dapp, таких как Ethereum, Tron и Polkadot.

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

Блокчейн Ethereum: смарт-контракты и dApps

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

Что такое Ethereum?

Ethereum был предложен и разработан компьютерным программистом Виталиком Бутериным в конце 2013 года. Разработка блокчейна Ethereum финансировалась за счет онлайн-краудсейла криптовалюты сети, эфира (ETH), который проходил с июля 2014 года по август 2014 года.В рамках этого первоначального раунда финансирования было собрано более 18 миллионов долларов США, и 30 июля 2015 года Ethereum был официально запущен для широкой публики.

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

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

Ethereum vs. Bitcoin

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

Создатель различий: смарт-контракты Ethereum

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

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

Ethereum породил множество широко используемых стандартов токенов, таких как ERC-20 и ERC-721, которые являются частью семейства стандартов токенов Ethereum Request for Comments (ERC). По сути, эти стандарты представляют собой интерфейсы, которые показывают, что контракт токена отвечает на набор команд, специфичных для конкретного смарт-контракта.В результате стандарты токенов определяют природу токена, а также то, с какими сетями он совместим.

В экосистеме Ethereum наиболее распространенными типами стандартов токенов являются:

  • ERC-20: токены ERC-20 взаимозаменяемы, то есть они идентичны и взаимозаменяемы с другими токенами того же типа. В результате токены ERC-20 обычно используются в контексте валюты или в другом случае использования товаров, где требуется взаимозаменяемость токенов. Наиболее распространенные цифровые активы в экосистеме Ethereum основаны на стандарте токенов ERC-20.На пике своего развития 94 из 100 крупнейших криптовалют по рыночной капитализации основывались на стандарте токенов Ethereum ERC-20.

  • ERC-621: токены ERC-621 аналогичны токенам ERC-20, за исключением того, что стандарт токенов ERC-621 допускает более позднюю модификацию (например, чеканку и сжигание) общего количества токенов. Напротив, стандарт ERC-20 допускает только одно событие выпуска токена.

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

  • ERC-721: этот стандарт позволяет создавать невзаимозаменяемые токены (NFT), которые являются полностью уникальными и не взаимозаменяемы с другими токенами. В результате токены ERC-721 обычно используются для предметов коллекционирования, оригинальных произведений искусства и в других контекстах, где доказуемое владение цифровым активом является приоритетом.

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

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

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

Экосистема приложений Ethereum

Учитывая открытую природу Ethereum с открытым исходным кодом, любой, обладающий необходимыми знаниями, теоретически может создать приложение или веб-сервис в сети. В результате с момента запуска в 2015 году Ethereum стал объединяющей экосистемой для тысяч уникальных организаций. Примерно половина всех работающих децентрализованных приложений на рынке основана на сети Ethereum, при этом более 600000 активных пользователей регулярно взаимодействуют с децентрализованными приложениями. Различные децентрализованные приложения Ethereum варьируются от децентрализованных кредитных сервисов и финансовых обменов до веб-браузеров с поддержкой блокчейна и рынков данных.По состоянию на январь 2021 года оцифрованные активы на сумму более 22 миллиардов долларов были заблокированы в быстро развивающемся секторе децентрализованного финансирования (DeFi) Ethereum.

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

Ethereum’s Future

Платформы dApps, DAO и DeFi, которые работают на Ethereum, требуют хранения огромных объемов данных в блокчейне, и в результате популярность Ethereum вызвала ряд проблем.В то время как Ethereum продолжает испытывать повышенный интерес и спрос, алгоритм консенсуса PoW, лежащий в основе сети Ethereum, все чаще сталкивается с проблемами из-за постоянно растущих объемов транзакций.

Чтобы решить эту проблему масштабируемости, разработчики Ethereum работают над заменой текущей платформы на недавно разработанную сеть Ethereum 2.0. Ethereum 2.0 будет выпущен с помощью многоступенчатого пакета обновлений под названием Serenity. После многих лет разработки, тестирования и спекуляций Ethereum 2.0 началась с Фазы 0 обновлений Serenity и запуска Ethereum 2.0 Beacon Chain в декабре 2020 года. Эти обновления переведут протоколы смарт-контрактов сети на более масштабируемый консенсусный алгоритм Proof-of-Stake (PoS). Хотя этот переход беспрецедентен по масштабу и требует разработки новых технологий для работы, он широко считается необходимым шагом на пути к превращению Ethereum в удобный и общедоступный суперкомпьютер.

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

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

Что такое смарт-контракты и как они работают? — Bitpanda Academy

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

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

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

В процессе покупки автоматизированы как прием платежа, так и выдача товара.

Оцифрованное исполнение

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

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

Неизменяемые контракты, написанные в коде


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

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

Смарт-контракты Ethereum — это неизменяемые контракты с принудительным исполнением, написанные в компьютерном коде.

Ментальные трансакционные издержки и переводчики рынка

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

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

Что такое смарт-контракт: будет ли автоматизация юристов?

Смарт-контракт — это заранее запрограммированный контракт, который автоматически выполняется, если определенные заранее определенные условия выполняются (или не выполняются).

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

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

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

Примечание: в этой статье в качестве концептуального примера используются смарт-контракты Ethereum. Смарт-контракты могут быть построены на любой платформе блокчейнов, включая Cardano и Solano.

Что такое смарт-контракт: гайки и болты

Смарт-контракт — это, по сути, просто программа, работающая на платформе блокчейна, такой как Ethereum.

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

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

Внешняя учетная запись (считайте это своим личным кошельком Ethereum) ничего не стоит создать. Вы можете создать новый кошелек Ethereum на платформе MetaMask или MyEtherWallet менее чем за 30 секунд бесплатно.

Примечание. И MetaMask, и MyEtherWallet не являются кастодиальными кошельками Ethereum, которые часто используются для транзакций с экосистемой Ethereum.

Он может инициировать транзакции, но только между внешними учетными записями. Например, предположим, что Боб хотел отправить Дженни 0,52 ETH. Эта транзакция будет подпадать под этот тип учетной записи — оба кошелька «принадлежат извне».”

Примечание. Это может звучать как «рассыпание волос», но учетная запись не является кошельком. Кошелек — это пара ключей (открытый и закрытый ключи), связанная с — это позволяет пользователю совершать транзакции из учетной записи.

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

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

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

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

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

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

Все смарт-контракты на основе Ethereum

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

Приложения для смарт-контрактов

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

DeFi, или децентрализованные финансы, уже заменяет функции централизованных финансовых посредников, таких как биржи, брокерские конторы и банки. Например, вместо того, чтобы банк принимал депозиты клиентов и ссужал их, децентрализованный кредитный договор (как показано в Aave) будет делать все автоматически — от выплаты вкладчику APY за их активы до определения утверждения и удержания обеспечения заемщик.

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

Допустим, вы арендуете Tesla у Боба. Предположим, в Tesla есть супертехнология. Вы оба решаете сделать это через блокчейн. Боб создает смарт-контракт — вы должны платить 0,25 ETH первого числа каждого месяца, контракт действует в течение двух лет. Ваш цифровой ключ входа активен, пока у вас хорошая репутация в течение месяца.Весь этот процесс будет выполняться автоматически — если ваш ключ от машины исправен, Боб может быть уверен, что вы заплатили в этом месяце. Если вы заплатили в этом месяце, вы можете быть уверены, что ключ от машины исправен.

Любой может написать и запустить смарт-контракт и развернуть его в сети Ethereum — вам просто нужно знать, как кодировать на языке смарт-контрактов (Ethereum использует Solidity или Vyper) и иметь достаточно ETH для развертывания.

Но… Как смарт-контракт узнает , произошло ли событие на самом деле ?

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

Например, допустим, мы заключили смарт-контракт на президентских выборах 2020 года. Боб делает ставку на победу Трампа, Мэри ставит на Байдена — 1 ETH, победитель получает все. Если контракты взяты из реальных событий, им нужно будет определить, какой источник использовать. Допустим, Боб и Мэри указали Фокса, и CNN должны были договориться о победителе.

Давайте представим в гипотетической ситуации, что обе новостные сети не согласны. Что будет делать контракт?

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

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

Итак, как же умные контракты обойти это? Они используют оракулы, такие как ChainLink.Оракул — это мост между реальным миром вне сети и миром криптовалюты.

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

Последние мысли: как смарт-контракты повлияют на юристов?

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

Смарт-контракты повлияют на юристов любым способом, к которому юристы готовы.

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

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

.
Обновлено: 03.12.2021 — 05:15

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

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