Разбираемся со смарт-контрактами: действительно ли они могут помочь вашему бизнесу?

Оглавление

Введение

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

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

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

Забегая вперед, должен сказать, что наиболее часто встречающиеся critical баги, которые мы встречали в аудитах — это всё таки логические проблемы имплементации, а не типовые уязвимости, такие как access rights, integer overflow, reentrancy. Большой, полный аудит решений невозможен без опытных разработчиков, которые способны проаудировать высокоуровневую логику контрактов, их lifecycle, аспекты реальной эксплуатации и соответствие заданию, а не только типовые паттерны атак. Именно высокоуровневая логика часто становится источником critical багов.

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

4.9. Регулирующее законодательство и территориальная подсудность

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

5. Лучшие практики

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

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

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

Сегодня смарт-контракты представляют собой прототипный пример Amara’s Law — концепции, которую сформулировал Рой Амара, специалист по информатике из Стэнфордского университета. Эта концепция гласит, что мы склонны переоценивать новые технологии в краткосрочной перспективе и недооценивать в долгосрочной. Хотя смарт-контрактам ещё нужно развиваться, прежде чем они станут широко использоваться в сложных коммерческих взаимоотношениях, всё же они влияют на революцию в структуре вознаграждения и стимулирования, которая определит форму контрактов в будущем

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

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

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

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

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

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

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

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

Почему мониторинги хайпов берут листинг

Очень часто на хайп мониторингах встречается такое понятие как «листинг на мониторингах хайп проектов»

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

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

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

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

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

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

Подпишись на новости блога в TELEGRAMM

будь всегда вкурсе последних событий мира инвестиций

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

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

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

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

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

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

Если говорить о программном коде, то пример смарт-контракта будет выглядеть так:

Но о кодах мы поговорим позже, а сейчас давайте рассмотрим, как можно использовать умные контракты в реальной жизни:

  • Тотализатор. Многие бывали или хотя бы видели рекламу сайтов-тотализаторов. Схема простая: делаете ставку, если она выигрывает – получаете деньги. Проблема в том, что эта сфера никем не контролируется и удачливого посетителя могут просто «кинуть». Смарт-контракты же делают исполнение сделки обязательным для обеих сторон, и мошенник не сможет изменить код и отменить транзакцию.
  • Регулярные платежи. У многих банков есть такая услуга – снятие определенной суммы для оплаты счетов, но приходится платить комиссию и зависеть от посредника. Умные контракты позволяют упростить эту схему. С помощью программы можно заключать договоры об аренде, платить ипотечные взносы, совершать покупки без риска.
  • Аутентификация личности. Если система smart-контактов будет внедрена в работу госструктур, то после подтверждения личности можно будет легко заключать договора и контракты онлайн. Дистанционно брать выписки и справки, экономить деньги, время и нервы.

Принцип работы смарт контракта и для он вообще нужен?

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

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

Историческая справка

Впервые принцип смарт-контрактов был прописан еще в 1996 году. Сделал его программист и криптограф Нико Сабо. На тот момент еще даже не думали о появлении технологии blockhain. Однако Сабо удалось прописать принцип, опередив технологии на десятилетия, в 90-е годы еще не было возможности реализовать это на практике.

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

Только в 2008 году появляется первая криптовалюта под названием bitcoin. Она была создана на базе blockhain, но в ней не был реализован принцип децентрализованной книги. Спустя примерно 5 лет появляется платформа Ethereum, которая полностью воплощает принцип смарт-контрактов на практике. На сегодняшний день существует множество платформ, работающих по этому принципу.

Принцип работы

Смарт-контракты, которые еще называют интеллектуальными, являются компьютерным протоколом (кодом). В коде прописаны все условия сделки, которая заключается между сторонами на blockhain. Выглядит это примерно так: «если Сторона 1 передает деньги, то Сторона 2 – получает машину». В обмене могут участвовать любые активы, от денег до недвижимости.

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

Проверьте свои знания, выбрав один из вариантов ответов

На каком алгоритме работает Эфириум?

DaggerHashimoto

Scrypt

Ethash

Эфириум(Ethereum) использует алгоритм хеширования Ethash, который отличается от хэша биткоина.

Подробнее об этом, можно узнать в статье:Алгоритм майнинга эфириума

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

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

Основные преимущества

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

Помимо этого выделяют следующие преимущества:

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

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

Немного о минусах

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

Заключение

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

Проверьте свои знания, выбрав один из вариантов ответов

В какой стране % людей, которые владели когда-нибудь криптовалютой выше всего?

США

Турция

Китай

Россия

Больше всего респондентов (людей), которые хоть когда-нибудь использовали криптовалюту является Турция! Этот показатель равен 20%

Подробнее об этом, можно узнать в статье:За счет чего криптовалюта стала такой популярной

Что такое смарт-контракт на Блокчейне?

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

Одной из целей разработки Blockchain было избавление от третьей стороны при заключении сделок. Реализация проекта напрямую ведёт к увеличению скорости и снижению комиссии за транзакции. Пионерами в этой области были члены криптосообщества и трейдеры. Но теперь правительственные учреждения и банки также начали использовать Блокчейн, чтобы не отставать в скорости и качестве услуг. Также особую ценность представляет безопасность протокола. Сам Блокчейн отлично защищён членами сообщества, поскольку каждая транзакция должна быть подтверждена одним или несколькими пользователями. Сильная децентрализация обеспечивает безопасность и справедливость распределительной книги. Еще один плюс – устранение фактора человеческой ошибки при проведении транзакции или вводе данных. Вся информация проверяется электронным протоколом.

Проблемы с безопасностью

Смарт-контракт на основе блокчейна виден всем пользователям упомянутого блокчейна. Однако это приводит к ситуации, когда ошибки, включая дыры в безопасности, видны всем, но не могут быть быстро исправлены. Такая атака, трудно исправить быстро, была успешно выполнена на дао в июне 2016 года, осушение примерно US $ 50 миллионов долларов в то время, в то время как разработчики пытались прийти к решению , которое бы получить консенсус. Программа DAO имела временную задержку, прежде чем хакер смог удалить средства; был проведен хард-форк программного обеспечения Ethereum, чтобы отобрать средства у злоумышленника до истечения срока. Другие громкие атаки включают атаки на целочисленного переполнения / переполнения (2018 г.) на общую сумму более 184 миллионов долларов США.

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

Сети Blockchain с использованием смарт-контрактов

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

Bitcoin

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

Ethereum

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

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

Варианты использования (область применения) Smart Contract

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

Банковское дело

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

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

Здравоохранение

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

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

Цепочка поставок

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

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

Правовые вопросы

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

Nottar.io иллюстрирует концепцию нотариального заверения документов с использованием блокчейна Ethereum.

Недвижимость

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

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

Правительство

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

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

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

Интернет вещей

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

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

Проблемы безопасности смарт-контрактов

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

  1. проблемы в коде смарт-контракта;
  2. проблемы в процессе разработки;
  3. проблемы в языке;
  4. проблемы в концепции.

1. Проблемы в коде смарт-контракта

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

  • Известные уязвимые конструкции (например, ).Пример из жизни: re-entrancy, или, шире, нарушение паттерна Checks-Effects-Interactions — даже широко известные (и ранее проэксплуатированные) уязвимости продолжают встречаться в новых контрактах.
  • Авторские уязвимые конструкции (в частности, ошибки в логике кода).Пример из жизни: MultiSig-кошелёк, который на самом деле не MultiSig. Для того чтобы подписать транзакцию и перевести средства, необходимо количество подписей владельцев кошелька, равное . При этом для того чтобы поменять (например, на единицу, чтобы дальше самому подписывать транзакции), достаточно подписи только одного из владельцев:
  • Неудачная архитектура.Пример из жизни: попытка имплементировать в рамках одного контракта и токен, и кошелёк, и хранилище ключей. Контракт получается чрезмерно усложнённым, код сложно поддерживать, аудировать, модифицировать. В итоге страдает и безопасность.
  • Низкое качество кода.Пример из жизни: контракты с разными отступами, произвольными переходами на новую строку и пробелами. Код трудно читать, а значит, снова страдает безопасность. При том, что для Solidity уже есть линтеры (Solium, Solhit).

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

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

2. Проблемы в процессе разработки

Проблемы в коде обусловлены в первую очередь неправильно выстроенным процессом разработки. Казалось бы, разработка ПО — дело давно изученное, с устоявшимися best practices. Тем не менее, молодость области смарт-контрактов, непропорционально большие деньги и хайп приводят к тому, что люди по тем или иным причинам пренебрегают стандартными процедурами, что часто приводит к серьёзным проблемам. Из самого типичного стоит упомянуть:

3. Проблемы в языке

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

  • Множественное наследование, , / — всё это запускает код не из текущего исходника, а значит, снижает читаемость и, как следствие, безопасность кода.
  • Checks-Effects-Interactions pattern — если конструкции, нарушающие CEI, небезопасны, то почему не запретить их (и многие другие) просто на уровне языка?
  • Вызывая другой контракт, можно внезапно попасть в его fallback-функцию с неожиданными последствиями.

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

4. Проблемы в концепции

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

  1. Не смарт:

    • Плохо написан — делает то, что написано, но не то, что задумано.
    • Сильно завязан на backend и/или frontend — а этот код уже не смарт-контракт, он выполняется обычным образом, и его выполнение полностью контролирует администратор сервера.
  2. Не контракт:

    • Не фиксирует обязательства сторон — например, ICO продаёт свои токены за ETH, но токены по сути являются фантиками, т.к. не налагают на того, кто их выпустил, никаких ограничений или обязательств.
    • Допускает односторонние изменения — и получается, что одна из сторон может менять контракт уже после его подписания.Пример из жизни: владелец контракта может произвольно менять капитализацию, курс и продолжительность продажи токена:
  3. Не нужен:

    • Смарт-контракт добавили не потому, что он был технически необходим, а в попытках придумать, что бы сделать на смарт-контрактах, и оседлать волну хайпа;
    • Пытались придумать, как к существующему продукту прикрутить смарт-контракты.

Моя работа имеет смысл

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

Что делать?

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

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

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

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

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

Gas Price – фиксированная сумма оплаты за выполнение условий договора и использование ресурсов платформы.

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

Destination. Вводится номер кошелька получателя.

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

Data. В этом поле прописываются непосредственно условия сделки, для каждой переменной есть свое название и пример кода.

Signature. Публичный ключ для проверки подписи и непосредственно электронная подпись.

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