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

image

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


Принцип интеллектуальных контрактов был описан американским криптографом и программистом Ником Сабо еще в 1996 году задолго до появления технологии blockchain. Согласно концепции Сабо, интеллектуальные контракты — это цифровые протоколы для передачи информации, которые используют математические алгоритмы для автоматического выполнения транзакции после выполнения установленных условий и полного контроля процесса. Это определение, которое опережало свое время более чем на десять лет, остается точным и по сей день. Однако в 1996 году эта концепция не могла быть реализована: в то время необходимые технологии не существовали, в частности, распределенная книга.
image
В 2008 году появился bitcoin, появилась первая криптовалюта, созданная на основе революционной технологии blockchain, которой ранее не хватало децентрализованной книги. Blockchain биткоина не позволяет устанавливать условия для совершения транзакции в новом блоке, поскольку он содержит только информацию о самой транзакции. Тем не менее появление технологии послужило толчком для разработки смарт-контрактов. Спустя пять лет блочная платформа Ethereum позволила использовать смарт-контракты на практике. Сегодня рынок предлагает множество платформ, которые позволяют использовать смарт-контракты, но Ethereum остается одним из самых распространенных.

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


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

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

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


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

Недостатки Smart Contracrs


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

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

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


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

  • Финансы
  • Страхование
  • Электронная коммерция
  • Аудит и налогообложение
  • Выборы
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 10

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

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


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


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


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


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

      В рамках смарт-контрактов это, как мне кажется, приведёт к следующему:


      • адекватно и безошибочно формализовать хотя бы гражданские правоотношения невероятно сложно. Во многом люди опираются на жизненный опыт и здравый смысл. Например, при описании наследования ГК РФ не даёт определения родственных и семейных связей, а их формализация автоматически тянет за собой формализацию семейного кодекса и дополнительного реестра «гражданского состояния» со своими оракулами — «сотрудниками загсов», отсюда кстати — формализацию процессов идентификации личности. (Кстати, если этого не сделать, то экономика блокчейна рискует лишиться всех денег, которые рано или поздно осядут на счетах умерших людей, но если реализовать как в существующих государствах, то все счета будут деанонимизированы). В целях наказания за нарушения — формализацию УК.
      • поскольку в реальных программах неизбежны ошибки, то на арбитражный институт экосистемы нагрузка будет ещё больше, чем на судебную систему государств.
      • вкупе со сложностью формализации и не ориентированностью формального языка на понимание неспециалистами, нельзя полноценно распределить создание и принятие «законов» общим голосованием участников — всё равно как если бы за законы государства мог голосовать любой гражданин, но законы были бы написаны на неизвестном ему языке. Получится, что это будет голосование за экспертов, которые составят элиту общества.
      • оракулы будут выполнять свою работу практически бездумно, поскольку любое их действие может вызвать ту или иную цепочку действий, не очевидную для самих оракулов. В целях минимизации ошибок, во-первых, их работа будет чрезвычайно бюрократизирована, а во-вторых, многократно продублирована. Кроме того, работа самой системы будет напоминать чёрный ящик: система вынесет приказ человеку-исполнителю на основании алгоритмов, заложенных в смарт-контракт, а человек должен будет отчитаться об исполнении.

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

        0
        > застрахованный подкупит дежурного пожарного, и тот зафиксирует ложный страховой случай

        Если вы об этом догадались подумать, страховая компания (или более релевантно — вкладчики в ICO / держатели токенов) тоже догадается.

        > со службой такси

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

        > законы должны разрабатываться относительно независимыми экспертами в предметной области и юриспруденции;

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

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

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

        1. Мы не знаем как будут использоваться технологии в будующем. На данный момент львиная доля смарт-контрактов это ERC20 — кто мог такое предугадать пять лет тому назад? Следующая волна это децентрализированные обменники, всякие DeFi и MakerDao, плюс плазма и ей подобные решения.

        2. Не хотите — не пользуйтесь. Это главное. Плохой инструмент? Не пользуйтесь. Критиковать кстати это нужно и важно, так что я не против критики разумеется — но и сравнивать добровольное с насильственным нужно учитывать эффекты насилия, то есть чего стоит и к чему приводит всё это простигоспади «государство».

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

        В одном из обновлений разработчики кошелька Parity,
        в основе которого лежал смарт-контракт именуемый contract multiowned,
        поменяли название его внутренней функции multiowned на initMultiowned.
        Казалось бы, небольшое улучшение названия на более красивое…

        Но до обновления эта функция совпадала с именем самого контракта,
        что означало, что она была конструктором, и могла быть вызвана только один раз, сразу после деплоя.
        После обновления, initMultiowned, разумеется, перестала считаться конструктором:
        теперь эту функцию мог вызвать любой желающий.
        Этот факт и выпал из внимания разработчиков.
        А функция важная, так как она назначает всех администраторов кошелька, которые и управляют деньгами.
        Исходный код функции до и после
        До:
        // constructor is given number of sigs required to do protected "onlymanyowners" transactions
        // as well as the selection of addresses capable of confirming them.
        function multiowned(address[] _owners, uint _required) {
        m_numOwners = _owners.length + 1;
        m_owners[1] = uint(msg.sender);
        m_ownerIndex[uint(msg.sender)] = 1;
        for (uint i = 0; i < _owners.length; ++i) {
        m_owners[2 + i] = uint(_owners[i]);
        m_ownerIndex[uint(_owners[i])] = 2 + i;
        }
        m_required = _required;
        }

        После:
        // constructor is given number of sigs required to do protected "onlymanyowners" transactions
        // as well as the selection of addresses capable of confirming them.
        function initMultiowned(address[] _owners, uint _required) {
        m_numOwners = _owners.length + 1;
        m_owners[1] = uint(msg.sender);
        m_ownerIndex[uint(msg.sender)] = 1;
        for (uint i = 0; i < _owners.length; ++i) {
        m_owners[2 + i] = uint(_owners[i]);
        m_ownerIndex[uint(_owners[i])] = 2 + i;
        }
        m_required = _required;
        }


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

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

          А разработка исходная стоила конечно же 20 миллионов, поэтому они не могли себе позволить десятикратное удорожание, так оказалось дешевле

          0
          Честно говоря, пока не вижу примеров смарт-контракта, которые будут выполняться исключительно в пределах блокчейна. То есть, на входе и выходе будут сторонние данные, которые можно скомпрометировать, что снижает ценность смарт-контракта.
            +1
            А что по поводу Теории игр?

            Товар может продаваться через интернет по следующей схеме:
            1. При продаже товара у продавца и клиента замораживается депозит. У продавца 0,5 от суммы товара, а у покупателя 1,5 от суммы товара (т.е. всего 2-х кратная сумма).
            2. При получении товара, покупатель отправляет транзакцию — товар получен. Ему возвращается 0.5 суммы, а продавцу 1,5 части суммы (оплата за товар + возврат 0,5 депозита)
            3. Если покупатель не сообщает в блокчейн такую информацию, то оба лишаются средств: продавец 0,5 суммы + стоимость товара (если он его отправлял), покупатель 1,5 суммы денег (или за минусом стоимости товара — если товар все же получил). Таким образом покупателю и продавцу выгодно быть честным — отправить товар и подтвердить получение товара.


            Вот тут таблица выигрышей продавца и покупателя для определения равновесия Нэша

              +1

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


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

                0
                Слишком сложно, можно эффективнее это делать через «доверенную третью сторону».
                Вообще, блокчейн можно натянуть на что угодно, на какой угодно процесс. Весь вопрос в том, надо ли?
              +1
              Ответ по поводу Теории игр в смарт контрактах...

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

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

              Если подумать конструктивно — т.е. с точки зрения внедрения технологии блокчейн в экономику, то можно посоветовать:
              1) Интернет-магазинам взять на себя риск нечестного поведения (например, мотивируя покупателя скидкой если он подтвердит получения товара).
              2) Сумму депозита покупателя заложить в цену товара и возвращать ее покупателю при честном поведении
              3) Ввести гибридную схему с эскроу, т.е. если покупатель не делает подтверждение — в игру вступает третья сторона. Причем систему эскроу сделать многоуровневую, возможность эскалации вплоть до создателя блокчейна (которому точно есть что терять).

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

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

              Самое читаемое