Ergo и краудфандинг

This page is machine-translated.
Robert Wolf

6 сентября 2019 г.

Что такое краудфандинг?

Краудфандинг — это способ привлечения капитала через коллективные усилия отдельных лиц. Кампании в основном начинаются через всемирную паутину и позволяют проектам и бизнесу получать финансирование, собирая небольшие суммы денег от большого числа людей.
Одним из самых известных примеров успешных стартапов на краудфандинге является Oculus Rift, гарнитура виртуальной реальности. Компания Oculus VR начала свою кампанию в 2012 году и всего через два года была приобретена Facebook за 2 миллиарда долларов. Кроме обычных стартапов, существует также множество блокчейн-проектов, которые пошли по пути краудфандинга, например, Ethereum, Tron и EOS. Сегодня существует множество платформ, которые позволяют вам публиковать вашу кампанию. Некоторые из более крупных — это Indiegogo, Kickstarter и Gofundme, чтобы назвать лишь несколько.
Краудфандинг имеет много преимуществ: широкий охват, эффективность и маркетинговые аспекты являются наиболее убедительными... Но сейчас давайте перейдем к тому, что действительно важно!

Введение в краудфандинг на Ergo

Несколько дней назад, 28 августа, основной разработчик Kushti заявил на (форуме Ergo)[www.ergoforum.org], что ему удалось успешно написать и реализовать код, который позволяет пользователям запускать краудфандинговую кампанию на основе блокчейна Ergo (как упомянуто на странице 6 белой книги. Этот код даже работает с текущим API кошелька. Здесь есть краткое руководство о том, как настроить кошелек.
В этой статье вы узнаете, как сделать именно это: краудфандинг на основе Ergo! Она также проведет вас через предложение первой в истории кампании, целью которой является финансирование разработки скрипта краудфандинга post-EIP1.
Если вы хотите узнать все детали, пожалуйста, прочитайте следующий раздел "Скрипт". В противном случае вы можете просто пропустить чтение разделов "Как пожертвовать", "Как собирать пожертвования" и "Предложение проекта краудфандинга" ниже.

Скрипт

Самый простой скрипт краудфандинга, согласно белой книге ErgoScript (страница 6), это "скрипт для следующей ситуации краудфандинга: спонсор проекта (с ключом backerPubKey) желает дать деньги проекту (с ключом projectPubKey), но только если проект соберет достаточно денег (по крайней мере minToRaise) из других источников до установленного срока (выраженного в терминах HEIGHT).
Чтобы дать деньги проекту, спонсор создаст выходной бокс, защищенный следующим скриптом. Скрипт содержит два условия: одно для случая, когда срок истек (позволяющее спонсору вернуть деньги) и одно для случая, когда он успешен (позволяющее проекту потратить деньги, если сумма составляет хотя бы minToRaise до срока).

Чтобы убедиться, что достаточно денег было собрано, скрипт будет искать в коллекции выходов бокс с достаточной стоимостью, идущей к projectPubKey. Чтобы проверить, куда идет стоимость выходного бокса, скрипт будет читать скрипт, защищающий выходной бокс, и сравнивать его со скриптом, соответствующим proveDlog(projectPubKey); этот скрипт можно получить с помощью projectPubKey.propBytes.

Поскольку в настоящее время API не поддерживает встраивание пользовательских переменных окружения (только предопределенные, такие как HEIGHT), единственный способ скомпилировать скрипт — это заменить такие переменные в скрипте из белой книги конкретными значениями. Например, предположим, что краудфандинговая кампания успешна, если она собирает 500 Erg до номера блока 50,000. Для backerPubKey и projectPubKey мы можем использовать функцию PK(), которая в данный момент принимает только сериализованные ключи P2PK. Тогда модифицированный скрипт из белой книги становится следующим:

{
   val backerPubKey = PK("9h7DHKSDgE4uvP8313GVGdsEg3AvdAWSSTG7XZsLwBfeth4aePG")
   val projectPubKey = PK("9gBSqNT9LH9WjvWbyqEvFirMbYp4nfGHnoWdceKGu45AKiya3Fq") 
    
   val deadline = 50000
   val minToRaise = 500L * 1000000000 
   
   val fundraisingFailure = HEIGHT >= deadline && backerPubKey
   val enoughRaised = {(outBox: Box) =>outBox.value >= minToRaise 
                              && outBox.propositionBytes == projectPubKey.propBytes
                      }
        
   val fundraisingSuccess = HEIGHT < deadline && projectPubKey && OUTPUTS.exists(enoughRaised)
   fundraisingFailure || fundraisingSuccess                     
 }                              

Как пожертвовать

Прежде всего, JSON не поддерживает многострочные строки, поэтому вам нужно заменить переносы строк на \n.
Также кавычки должны быть экранированы, поэтому используйте " вместо ". Получившийся JSON будет отправлен на /script/p2sAddress.
Чтобы пожертвовать проекту, сначала получите свой адрес из /wallet/addresses, возьмите, например, первый из них. Вставьте адрес в backerPubKey, так что запрос к /script/p2sAddress будет выглядеть следующим образом после этого шага:

{
  "source": "{ 
    val backerPubKey = PK(\"9...\")
    val projectPubKey = PK(\"9gBSqNT9LH9WjvWbyqEvFirMbYp4nfGHnoWdceKGu45AKiya3Fq\")
    val deadline = 50000
    val minToRaise = 500L * 1000000000
    val fundraisingFailure = HEIGHT >= deadline && backerPubKey
    val enoughRaised = {
      (outBox: Box) => 
        outBox.value >= minToRaise && outBox.propositionBytes == projectPubKey.propBytes
    } 
    val fundraisingSuccess = HEIGHT < deadline && projectPubKey && OUTPUTS.exists(enoughRaised) 
    fundraisingFailure || fundraisingSuccess 
  }"
}    

с вашим адресом вместо "9…".

Отправьте строку на /script/p2sAddress, чтобы получить ответ, подобный:

{
  "address": "GB3kh2izpWKvyZfMboQwsEscjPaZcz9WrzGqZB4ZrkzRreiFMV6HZYWXGMK3rqCjDCoPgWGNzfnYSUhivW4a1VRYPE7uZXwKnBcqWcRkiuTx6QW55EcPcWeELUsumwdtKoFtWY583nWnKZff"
}     

Скопируйте строку адреса (GB3… в нашем примере) и отправьте деньги на него через /wallet/payment/send. Запрос к API-методу для отправки 10 Erg (10 миллиардов наноErg) будет выглядеть следующим образом:

[
 {
   "address": "GB3kh2izpWKvyZfMboQwsEscjPaZcz9WrzGqZB4ZrkzRreiFMV6HZYWXGMK3rqCjDCoPgWGNzfnYSUhivW4a1VRYPE7uZXwKnBcqWcRkiuTx6QW55EcPcWeELUsumwdtKoFtWY583nWnKZff",
   "value": 10000000000
 }
]

Вот и все!

Теперь кошелек автоматически найдет бокс в блокчейне, так как он содержит открытый ключ, который принадлежит кошельку в условии возврата. Кошелек затем периодически проверяет, можно ли потратить бокс, создавая самую простую транзакцию с боком в качестве входа и всего одним выходом (на тот же адрес). После высоты возврата (50,000 в нашем примере) кошелек сможет потратить бокс, и стоимость бокса будет добавлена к /wallet/balances.
Пожалуйста, обратите внимание, что это не будет так после реализации EIP-1, так как кошелек будет использовать узкие шаблоны распознавания к тому времени.

Как собирать пожертвования

Кошелек, связанный с открытым ключом проекта, найдет входящие боксы в блокчейне. Однако он не сможет убедиться, что боксы можно потратить, так как кошелек в настоящее время использует самую простую транзакцию для этого, и скрипт не проходит для такой транзакции на расход.
Перед реализацией метода /wallet/boxes/uncertain единственный способ для проекта найти входящие боксы. Затем /wallet/transaction/send с вручную предоставленными (в "inputsRaw") сериализованными боксами (используйте /utxo/byIdBinary, чтобы получить сериализованный бокс по его идентификатору).

Kushti сделал это сам и получил следующую транзакцию.

Пожалуйста, обратите внимание, что EIP-1 также нарушит этот рабочий процесс.

Kushti предлагает собрать 500 Erg до блока 50,000 для разработки скриптов командной строки (на Python) для организации и участия в краудфандинговых кампаниях после реализации EIP-1. Скрипты командной строки более подходят, чем ручные запросы, и также могут быть использованы для создания графических интерфейсов на их основе.

Казначейство предоставило половину средств, поэтому другим нужно коллективно внести недостающие 250 Erg. В случае неудачи кампании возвраты будут производиться автоматически. Поскольку сбор обещаний в данный момент не тривиален, Kushti возглавит проект, поэтому, пожалуйста, используйте следующий ключ, который контролируется им:

9gBSqNT9LH9WjvWbyqEvFirMbYp4nfGHnoWdceKGu45AKiya3Fq

Чтобы пожертвовать любую сумму денег, пожалуйста, следуйте разделу "Как пожертвовать" выше, заменив backerPubKey на ваш открытый ключ, а сумму пожертвования на соответствующее значение (пожалуйста, обратите внимание, что это в наноErg, 1 Erg = 1.000.000.000 наноErg).

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

t.me/ergoplatform | t.me/ergo_mining | www.ergoforum.org

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 г.