Умные контракты для людей

This page is machine-translated.
Alex Chepurnoy

19 октября 2018 г.

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

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

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

В качестве примера рассмотрим кооперативную федерацию (например, Radical Routes), желающую предоставить финансовую помощь предпринимателю, находящемуся за тысячи километров (скажем, в Рожаве).

Теперь нам нужно предположить некоторые детали. В первую очередь, предположим, что в сети есть четыре кооператива. Они совместно блокируют 10,000 Ergs (в равных частях, по 2,500 Ergs каждый) в контракте, который гласит следующее:

  1. Кооперативы связаны с публичными ключами pubkeyA, pubkeyB, pubkeyC, pubkeyD. Предприниматель связан с публичным ключом businessKey.
  2. Кооперативы блокируют деньги в монете, защищенной контрактом финансирования, затем проводят должную проверку и голосуют за то, чтобы финансировать предпринимателя или нет. Все средства контракта (10,000 Ergs) пойдут предпринимателю, если 3 голоса из 4 будут за это. Технически голосование осуществляется через подпись с порогом 3 из 4. Если голосование не успешно (3 из 4 подписей не собраны) до номера блока 1,000, любой кооператив (на самом деле, любой) может подать транзакцию на вывод, которая возвращает 2,500 Ergs (по крайней мере) каждому кооперативу. Кроме того, контракт финансирования также будет называться контрактом голосования.
  3. Инвестиции могут быть потрачены на три цели с некоторыми строгими ограничениями. А именно, предприниматель должен потратить как минимум 5,000 Ergs на оборудование, как минимум 2,000 Ergs на строительство необходимого здания, остальные средства предприниматель может тратить произвольно.
  4. Чтобы быть уверенным, что деньги на оборудование будут потрачены на оборудование, кооперативная федерация использует публичные ключи известных продавцов оборудования в районе предпринимателя. Например, предположим, что в этом районе есть продавцы оборудования с публичными ключами pubkeyTool1, pubkeyTool2, pubkeyTool3, pubkeyTool4. Технически, перевод организован как коллективная подпись одного из продавцов оборудования (таким образом, кольцевая подпись от кольца продавцов оборудования И подпись предпринимателя)
  5. Аналогично, предположим, что в кооперативной федерации есть 3 строителя, которых она признает, связанные с публичными ключами pubkeyConstr1, pubkeyConstr2 и pubkeyConstr3.
  6. Аналогично контракту голосования, если контракты на оборудование и строительство не будут подписаны до номера блока 5000, кооперативы федерации смогут вывести средства.

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

Давайте начнем с основного контракта, определенного в (1-3) выше:

{
 val votingSuccess  = atLeast(3, Array(pubkeyA, pubkeyB, pubkeyC, pubkeyD))
 val properSpending = OUTPUTS(0).value >= 5000L &&
                      blake2b256(OUTPUTS(0).propositionBytes) == spendingContract1Hash &&
                      OUTPUTS(1).value >= 2000L &&
                      blake2b256(OUTPUTS(1).propositionBytes) == spendingContract2Hash

 val withdrawCondition = HEIGHT >= 1000L &&
                         OUTPUTS(0).value >= 2500L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 2500L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 2500L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 2500L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 (votingSuccess && properSpending) || withdrawCondition
}

Этот скрипт на ErgoScript будет скомпилирован в синтаксическое дерево (которое будет записано в блокчейн в сериализованной форме) путем связывания его с конкретными значениями для переменных (pubkeyA, pubkeyB, pubkeyC, pubkeyD, spendingContract1Hash, spendingContract2Hash). spendingContract1Hash — это хэш (сериализованного) скрипта расходования оборудования, который будет предоставлен ниже, spendingContract2Hash — это хэш скрипта расходования на строительство.

Скрипт расходования оборудования приведен ниже:

{
 val spendingSuccess = (pubkeyTool1 || pubkeyTool2 || pubkeyTool3 || pubkeyTool4) && businessKey

 val withdrawCondition = HEIGHT > 5000L &&
                         OUTPUTS(0).value >= 1250L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 1250L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 1250L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 1250L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 spendingSuccess || withdrawCondition
}

А скрипт на строительство выглядит так:

{
 val spendingSuccess = (pubkeyConstr1 || pubkeyConstr2 || pubkeyConstr3) && businessKey

 val withdrawCondition = HEIGHT > 5000L &&
                         OUTPUTS(0).value >= 500L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 500L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 500L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 500L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 spendingSuccess || withdrawCondition
}

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

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

Предприниматель может легко сбежать, не ведя никакого бизнеса, но не более чем с 3,000 Ergs. Это можно исправить, например, эти деньги могут быть сделаны доступными для расходования только после номера блока 5,000, а до этого времени деньги могут быть выведены кооперативами. Для расходов на оборудование и строительство предприниматель работает вместе с некоторым, предположительно, уже уважаемым бизнесом. Таким образом, инвестор снижает свои риски.

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

Share post

Ergo Infrastructure DAO: Децентрализация основного каркаса экосистемы Ergo

Ergo Infrastructure DAO: Децентрализация основного каркаса экосистемы Ergo

Миссия Ergo всегда была основана на децентрализации, не только на уровне консенсуса, но и на всем стеке.

Ergo Platform

13 августа 2025 г.

Mew Finance: Игровой DeFi инструмент для экосистемы Ergo

Mew Finance: Игровой DeFi инструмент для экосистемы Ergo

Mew Finance — это децентрализованный набор приложений на блокчейне Ergo.

Ergo Platform

12 августа 2025 г.

Lithos: Децентрализация майнинга с помощью ончейн пулов

Lithos: Децентрализация майнинга с помощью ончейн пулов

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

Ergo Platform

24 июля 2025 г.

Sigma 6.0: Более умный и гибкий Ergo

Sigma 6.0: Более умный и гибкий Ergo

Sigma 6.0 — это значительное предложенное обновление для блокчейна Ergo.

Ergo Platform

23 июля 2025 г.

Формирование будущего Rosen: Общественный призыв к пяти ключевым предложениям казначейства

Формирование будущего Rosen: Общественный призыв к пяти ключевым предложениям казначейства

Соучредитель Rosen, Armeanio, представил пять новых предложений в казначейство Rosen.

Ergo Platform

9 июля 2025 г.

Расширенный UTXO Ergo и восход искусственного экономического интеллекта

Расширенный UTXO Ergo и восход искусственного экономического интеллекта

Практическое видение автономных экономических агентов Автономные экономические агенты на блокчейне Ergo выполняют полезную работу.

Ergo Platform

12 мая 2025 г.

ErgoHACK X: Искусственный Интеллект на Блокчейне Ergo

ErgoHACK X: Искусственный Интеллект на Блокчейне Ergo

Празднование Десятилетия Децентрализованных Инноваций Присоединяйтесь к 10-летнему юбилею ErgoHACK и будьте на переднем крае револ.

Ergo Platform

10 апреля 2025 г.