Интеграция консенсуса PoC в Substrate.
Мы рады сообщить, что Subspace Labs получила открытый грант от Web3 Foundation (W3F) для реализации консенсуса Proof-of-Capacity (PoC) с использованием Substrate Framework. Мы объявляем об этом сегодня в связи с доставкой и утверждением нашей первой вехи, которая демонстрирует возможность запуска локальной цепочки блоков разработки с помощью Substrate Client и PoC Farmer. Это первый важный шаг на долгом пути к нашей цели — развертыванию Subspace Network в качестве парачейна в сети Polkadot.
Что такое консенсус Proof-of-Capacity (PoC)? Proof-of-Capacity (PoC) — это ведущая альтернатива консенсусу, основанному на Proof-of-Work (PoW) и Proof-of-Stake (PoS). В блокчейне PoC майнинг с интенсивными вычислениями заменяется фармингом с интенсивным хранением. Ключевым преимуществом является то, что фарминг является энергоэффективным (и экологически устойчивым), а его свойства безопасности больше похожи на PoW, чем на PoS. Фарминг также может быть устойчивым к ASIC, позволяя обычным пользователям участвовать в консенсусе с обычным оборудованием, хотя это сильно зависит от реализации лежащего в основе доказательства емкости.
Существующие блокчейны PoC включают Burst, Filecoin, Chia Network и Spacemesh. На высоком уровне каждая из этих цепочек стремится выбрать следующего производителя блоков в соответствии с их индивидуальной долей общего дискового пространства, выделенного их сети. Каждая сеть достигает этой цели по-своему. Вообще говоря, есть три основных дизайнерских решения:
1. Является ли PoC доказательством бесполезного пространства (случайные биты) или доказательством полезного хранения (реальные данные)
2. Является ли участие в консенсусе не разрешенным (аналогично PoW) или разрешенным (аналогично PoS).
3. Применяется ли интервал производства блоков через задержку, связанную с процессором (аналогично PoW), или с помощью общих часов (аналогично PoS).
Например, Chia Network использует безразрешенное доказательство бесполезного пространства вместе с привязкой к ЦП для обеспечения интервала блокировки; тогда как Filecoin использует разрешенное доказательство полезного хранения и обеспечивает задержку блока через общие часы.
PoC на Substrte
Substrate — это фреймворк для создания блокчейнов, разработанный замечательными людьми из Parity. Вспомните Django или Rails, но для блокчейнов. Substrate поддерживает подключаемый консенсус и поставляется с несколькими существующими алгоритмами, включая: доказательство доли (BABE), доказательство полномочий (Aura) и доказательство работы (Kulupu). Ключевая цель нашего гранта W3F — расширить этот набор алгоритмов консенсуса, чтобы он также поддерживал PoC.
Для достижения этой цели мы разработали набор модулей Substrate, которые поддерживают абстрактное понятие PoC-консенсуса. Эти модули в настоящее время поддерживают PoC без разрешения (либо доказательство бесполезного пространства, либо доказательство полезного хранилища), в котором интервал между блоками применяется через общие часы. Эти модули предназначены для работы в качестве промежуточного слоя программного обеспечения между базовым PoC и всеохватывающим Substrate Pallet, который определяет конкретную логику в цепочке.
Для этого гранта мы внедряем Spartan, простое доказательство бесполезного пространства, которое послужит основой для дальнейшей работы. Чтобы построить блокчейн, мы начнем с sp_consensus_spartan, адаптера для spartan-codec, конкретного PoS в нашем случае. Затем эти примитивы используются sp_consensus_poc и sc_consensus_poc, которые определяют общую среду выполнения и клиентскую логику для протокола консенсуса PoC без разрешений, основанного на циклах. Клиент также предполагает разъединенного spartan-farmer, который создает и запрашивает участок на основе диска. Связь между клиентом и фермером осуществляется через WebSocket RPC. В заключении, pallet_spartan организует консенсус через модули PoC, используя модули Spartan. Мы также сконструировали node-template-spartan, который реализует pallet_spartan в качестве клиента-Substrate. Более подробное описание Spartan смотрите в документации.
Запуск спартанского узла
Локальная цепочка разработки состоит из одного Spartan Substrate Client и одного Spartan Farmer. Самый простой способ запустить цепочку разработки — использовать Docker. Контейнер фермера сначала создаст участок размером 1 ГБ (это должно занять несколько минут), после чего он подключится к клиентскому контейнеру и попытается решить задачу блока для каждого временного интервала. Когда фермер находит правильное решение, он передает его обратно клиенту, который затем создает новый блок и расширяет цепочку. Для запуска с помощью Docker:
Сначала установите Docker
Затем выполните следующие команды :
# Initialize the farmer (terminal 1) # Create volume for plot and initialize 1 GiB plot # Should take thirty seconds to a few minutes docker volume create spartan-farmer docker run --rm -it \ --name spartan-farmer \ --mount source=spartan-farmer,target=/var/spartan \ subspacelabs/spartan-farmer plot 256000 spartan # Run the client (terminal 2) # Starts a single node development chain docker run --rm --init -it \ --name node-template-spartan \ subspacelabs/node-template-spartan --dev --tmp # Run the farmer (terminal 1) # Once client node is running, you can connect farmer to it docker run --rm --init -it \ --name spartan-farmer \ --mount source=spartan-farmer,target=/var/spartan \ --net container:node-template-spartan \ subspacelabs/spartan-farmer farm # Now you should see block production on the client (terminal 2) # Stopping the client # The client container must be stopped from terminal 1 # Farmer can be stopped with ctrl c as normal docker kill node-template-spartan
Также возможно запустить клиент локально. Фермер может быть установлен непосредственно с crates.io или собран локально. Подробные инструкции по сборке или установке вручную см. в файлах client readme и farmer readme.
Следующие шаги для Spartan
Локальная цепочка развития — отличное начало, но предстоит еще много работы. На следующем этапе мы расширим Spartan-Substrate, включив в него:
1. Возможность синхронизации цепочки с другим полным узлом или легким клиентом.
2. Возможность управлять несколькими фермерами с участками разного размера с самонастраивающимся диапазоном решений (аналогично сбросу сложности в работе в PoW).
3. Возможность контролировать цепочку из браузера с помощью Polkadot-JS, отображая при этом оценку общего места, заложенного в сеть.
4. Запуск открытой и общедоступной тестовой сети без разрешений.
Следующие шаги для Subspace
Spartan — это только ступенька на пути к более крупной цели — развертыванию Subspace в качестве парачейна в сети Polkadot. Subspace — это первый PoC-блокчейн, который решает дилемму фермера, набор тонких проблем проектирования механизмов, которые предполагают, что существующие PoC-блокчейны на самом деле несовместимы со стимулом. Subspace расширяет доказательство бесполезности пространства Spartan до доказательства полезности хранения истории самого блокчейна. Это позволяет пользователям Subspace Network хранить данные непосредственно в цепочке, не беспокоясь о "раздувании" блокчейна, поскольку фермеры коллективно хранят историю, образуя распределенную сеть хранения. Для получения дополнительной информации о Subspace Network и дилемме фермера, пожалуйста, обратитесь к нашему техническому документу (whitepaper).