Smart contract

Содержание:

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

Первым прототипом смарт-контракта на блокчейне правильно считать Bitcoin Script — неполный по Тюрингу, stack-based язык в сети Bitcoin. В Bitcoin не существует понятия аккаунтов, вместо этого существуют входы (inputs) и выходы (outputs). В биткоине при совершении транзакции (создании выхода) необходимо сослаться на транзакцию получения (вход). Кому интересны технические подробности устройства Bitcoin, рекомендую ознакомиться с этой серией статей. Так как в Bitcoin отсутствуют аккаунты, Bitcoin Script определяет, в каком случае тот или иной выход может быть потрачен.

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

Смарт-контракты Waves

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

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

  1. Простые и понятные задачи вроде multisig, atomic swaps или escrow.
  2. dApps, полноценные децентрализованные приложения с пользовательской логикой. Если быть точнее, то это — backend для децентрализованных приложений. Самым ярким примером могут служить Cryptokitties или Bancor.

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

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

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

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

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

Особенности TON смарт-контракта «Hello World»

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

Как видно из примера нашего «Hello World», первой инструкцией мы выставляем ; это и есть обращение к API виртуальной машины TON. Таким образом мы сообщаем смарт контракту, что необходимо выполнить данную функцию даже в том случае если аккаунт не профинансировал требуемый вызов функции, а функция будет вызвана за счет средств на балансе аккаунта смарт-контракта (как и пользовательские аккаунты, у смарт-контрактов имеется похожий счет).

Так как «газ» для смарт-контрактов служит средством защиты от спам-атак, он требует финансовых затрат, выраженных в криптовалюте blockchain-сети. Cледовательно, вызов tvm.accept(); расходующий средства со счета смарт-контракта не очень-то и выгоден с точки зрения предоставления услуг (в большинстве случаев). Чтобы сбалансировать расходы и определить есть ли необходимость выполнять смарт контракт за счет баланса аккаунта самого смарт-контракта или же возложить расходы на вызывающий аккаунт, можно воспользоваться инструкцией require().

Инструкция (требование) позволяет задать условия, только при выполнении которого начнется выполнение функции смарт-контракта. Например, мы можем перед вызовом tvm.accept(); добавить требование require( == ); которое не допустит вызов функции смарт-контракта, если публичный ключ отправителя смарт-контракта не соответствует ключу аккаунта самого смарт-контракта.

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

Создание (разработка) Смарт контрактов

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

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

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

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

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

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

      NEO, в отличие от Ethereum, поддерживает множество популярных языков программирования, таких как C#, VB.Net, F#, Java, Kotlin и Python, и работает над обеспечением поддержки многих других. Это позволяет работать на этой платформе разработчикам более низкой квалификации, чем на Ethereum.

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

  1. EOS — платформа, которая пока находится на этапе разработки. Ее приоритетом является повышение функциональности умных контрактов. Предполагается, что основным языком разработки смарт-контрактов на данной платформе будет С++.

      Опции контрактов функционируют примерно также, как в Ethereum, однако существует ряд отличий. В частности, EOS применяет для управления транзакциями консенсусный механизм Proof-of-Stake (PoS), тогда как Ethereum — механизм Proof-of-Work (PoW).

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

      Одним из основных достоинств Proof-of-Stake является то, что данный протокол исключает сборы за проведение транзакций. Кроме того, доступный объем хранения и пропускная способность сети для конкретного пользователя напрямую зависят от количества криптовалюты, которой он располагает.

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

      Принимая во внимание многие преимущества, EOS в будущем может составить серьезную конкуренцию Ethereum

Отличия умных контрактов от обычных контрактов

«Обычные» контракты полагаются на действия других людей. Именно поэтому необходима доверенная третья (юридическая) сторона. Таким контрактом людей легко ввести в заблуждение или обмануть. Таблица сравнения умных и “обычных” контрактов:

Умный контракт Обычный контракт
Это программа или транзакционный протокол, который использует в своей работе блокчейн. Бумажная версия документов.
Основывается на коде. Основывается на праве и законодательных актах.
Пишется на компьютерном языке. Пишется юридическим языком.
Условия контракта невозможно изменить. Условия контракта можно изменить, переписать или интерпретировать по-другому.
Условия контракта выполняются автоматически всеми участниками процесса. Условия контракта могут быть не выполнены или выполнены некачественно.
При нарушении условий контракта автоматически происходит наказание, штраф или санкция, прописанные в контракте. При нарушении условий контракта необходимо обращаться в суд.
Все сделки осуществляются без третьих лиц и посредников. Сделки осуществляются с множеством посредников. Необходимы помощь нотариуса, юриста и обращение в государственные службы.
Транзакции проводятся с помощью криптовалют. Транзакции проводятся валютой через банки.
При выполнении условий контракта обмен ценностями происходит мгновенно. Обмен ценностями происходит с задержками.
Все данные о контрагентах хранятся в блокчейне и человек сам устанавливает, какая информация будет общедоступной. Информацию о контрагентах можно узнать лишь при условии, что они предоставят выписки и справки из государственных органов.
Контракт можно заключить с человеком из любой точки мира без личного присутствия. Контракт подписывается лишь при личной встрече двух сторон или их доверенных лиц.
Гарантируется безопасность сделки. Нет никаких гарантий. Любой закон можно обойти.
При заключении контракта все условия соблюдаются безоговорочно, в противном случае накладывается штраф или производится возврат денег. Условия можно изменить, договориться.
Жульничество и мошенничество исключены. Вероятность обмана, подкупа, взяточничества очень высока.
Умный контракт достаточно сложно составить самому, чтобы учесть все возможности и условия сделки. Для составления обычного контракта необходима помощь юристов.

История Смарт контракта

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

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

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

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

В тестировании применения блокчейн-технологии и смарт-контрактов в посттрейдинговых операциях принимали участие ряд крупнейших банков, среди которых JP Morgan, Credit Suisse и Citibank.

Тестирование началось в июне 2016 года и уже к началу сентября было проведено более ста операций.

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

В 2018 году помощник президента РФ, председатель наблюдательного совета АНО «Цифровая экономика» Андрей Белоусов заявил, что до конца 2018 или в начале 2019 года Госдума Российской Федерации рассмотрит Законопроект о краудфандинге. По мнению экспертов, данный закон позволит внедрить и развивать в РФ новый механизм по привлечению инвестиций — посредством краудфандинговых площадок. Краудфандинговые площадки представляют собой интернет-платформы для сбора финансовых средств на осуществление определенных проектов посредством привлечения инвестиций от внешних, нередко непрофессиональных вкладчиков. Законодательное регулирование обеспечит безопасность таких сделок и поспособствует их прозрачности.

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

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

В мае 2018 года российский оператор сотовой связи «МТС», корпоративно-инвестиционный проект Сбербанка России «Sberbank CIB» и небанковская кредитная организация АО «Национальный расчетный депозитарий» совместно разместили первые в России рублевые облигации, основанные на блокчейн-технологии. Осуществление функционирования ценной бумаги происходит в виде совокупности умных контрактов — от размещения до окончательного выполнения эмитентом обязательств перед вкладчиком. В роли организатора эмиссии и основного приобретателя облигаций МТС выступил Sberbank CIB.

Идея Ethereum

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

  1. Если с адреса кошелька A пришла сумма X, запомнить это в табличке долгов.
  2. Если после этого с адреса B пришла сумма Y > 2*X, отправить 2*Х денег на адрес А, запомнить долг участнику B.
  3. И так далее для каждого участника.
  4. Опционально: отправлять 5% всех поступающих денег автору смарт-контракта.
  1. Если аукцион еще не окончен, запоминаем адреса отправителей и суммы ставок каждого участника.
  2. Когда аукцион окончен, выбираем максимальную ставку, объявляем победителя, высылаем обратно все остальные ставки.
  3. Опционально: высылаем выигранный лот, если Ethereum имеет представление, что это такое.

Ограничения смарт-контрактов

  1. В программе очень сложно получить случайные числа и другую неопределенность. В некоторых лотереях умным участникам удается «подгадать» джекпот.
  2. Не так просто «спрятать» какую-то информацию. Например, список участников аукциона или их ставки.
  3. Если для работы контракта требуется информация, которой в блокчейне нет (например, текущий курс какой-нибудь валюты), то кто-то доверенный должен добавлять эту информацию в блокчейн.
  4. Для взаимодействия с контрактами пользователям нужен эфир — это внутренняя валюта Ethereum. Нельзя устроить голосование среди тех, у кого еще нет кошельков с деньгами.
  5. Смарт-контракты работают довольно медленно. На весь мир можно выполнять 3-5 транзакций в секунду.
  6. Сами смарт-контракты обычно выполняют немного действий, ведь в блокчейне каждый майнер должен будет эти действия повторить и сверить результат. Вдруг у него будет медленный компьютер.
  7. Если в смарт-контракте есть ошибки, то это навсегда. Единственный выход исправить ошибку — перейти на другой смарт-контракт, но только если возможность вывода денег и такого перехода была предусмотрена в программе изначально. Как правило, очень мало кто это предусматривает.
  8. Смарт-контракты могут зависнуть или вообще работать не так, как все ожидали, потому что не разобрались в программном коде.

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

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

ICO — Initial Coin Offering

График стоимости Ethereum. Источник

  1. У вас есть идея. Обычно она как-то связана с криптовалютой или блокчейном.
  2. На ее реализацию и запуск вам нужны деньги.
  3. Вы объявляете всем, что принимаете эфир, а взамен выдаете акции/токены/фантики при помощи смарт-контракта.
  4. Вы рекламируете свой проект и собираете требуемую сумму.

фанаты проекта платили до $6600

Начнем анализ.

На примере все того-же старичка https://github.com/smartzplatform/constructor-eth-booking продолжим анализ. У контракта указана старая версия компилятора “0.4.20”, и я намеренно взял старый контракт, чтобы порешать проблем с компилятором. Хуже ситуацию делает то, что от этой версии solc может зависеть и автоанализатор, например изучающий байт-код, и здесь расхождения в версиях могут сильно повлиять на результаты или вообще все сломать. так что, если даже если вы все делаете кошерно, с использованием последних версий, то все равно можете налететь на анализатор, заточенный под прошлую версию компилятора.
Компиляция и запуск тестов

Для начала просто вытащим проект с гитхаба и попробуем скомпилировать.:

Наверняка, у вас проблемы с версией компилятора. А еще эти проблемы есть и у автоанализаторов, поэтому используйте любые средства, чтобы заполучить компилятор 0.4.20 и собрать проект. Я просто прописал нужную версию компилятора в truffle.js и все собралось, как указано выше.

Также запустите

как было указано в пункте про flattening, именно мы будем отдавать на анализ разным анализаторам
Заключение к вводной части

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

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

Часть 1. Введение. Компиляция, flattening, версии Solidity (эта статья)
Часть 2. Slither
Часть 3. Mythril
Часть 4. Manticore
Часть 5. Echidna
Часть 6. Unknown tool 1
Часть 7. Unknown tool 2

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

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

Пассивный — это же от слова «ничего не делать»?

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

Как правильно работает сетевой маркетинг

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

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

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

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

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

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

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

Недостатки (уязвимость) умных Смарт контрактов

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

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

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

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

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

  1. Ошибки в языке программирования:
  • Умные контракты в Ethereum разрабатываются на языке Solidity и являются совокупностью функций. При этом байт-код виртуальной машины Ethereum не может обрабатывать функции, по этой причине все контракты перед их отправкой в блокчейн компилируются. Это означает, что одной ошибки в коде контракта достаточно для некорректной работы всего контракта.
  • Некорректный порядок исключений. Для осуществления умного контракта может быть необходимо исключение — прерывание функционирования его метода. В том случае, если это происходит во время выполнения команды call, то осуществление контрактов не прекратится до тех пор, пока не закончится газ (единица исчисления, применяемая для расчета и оплаты комиссии за определенную операцию или транзакцию).
  • Может произойти повторное введение одних и тех же инструкций, что повлечет возникновение цикла в вызове метода call, по причине чего будет потрачен весь газ.
  1. Ошибки в функционировании виртуальной машины:
  • Умный контракт, записанный в блок, изменить невозможно. Это значит, что невозможно также исправить ошибку, если таковая была допущена в контракте.
  • Для того, чтобы отправить эфир (стоимостный токен Ethereum), нужно указать адрес получателя. Данный адрес является последовательностью из 160 бит. В том случае, если указанный адрес некорректен и не относится к конкретному контракту или пользователю, произойдет потеря эфира, которую невозможно восстановить.
  1. Ошибки в цепочке блоков
  • Транзакции, которые попадают в короткую цепь ответвления не выполняются. Это приводит к тому, что на какое-то время смарт-контракт имеет неопределенный статус, вследствие чего один из контрагентов может подумать, что контракт выполнен, даже если это не так.
  • В связи с предыдущим пунктом выяснение статуса контракта может потребовать определенного времени, что негативно сказывается на его безопасности по отношению к атакам.

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

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

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

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

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

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

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

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

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

Заключение

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

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

Подписывайтесь на новости AltCoinLog в Vkontakte

Похожие материалы:

  • Видеокарты после майнинга: портятся ли они, стоит ли брать и как проверить
  • Что такое мастерноды простым языком: список монет 2021
  • Что такое IEO простыми словами: инвестиции и биржи
Добавить комментарий

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