В чем разница между IPFS и Ethereum Swarm?

В чем разница между IPFS и Ethereum Swarm?

26 декабря 2022 г.

Хранение данных в блокчейне стоит дорого, поэтому, если вам нужно хранить в нем большой объем данных в «блокчейн-стиле» (неизменяемым, не требующим разрешений и распределенным способом), вам придется использовать внешнее хранилище. Чаще всего используется IPFS, но на рынке есть и другие игроки. Одним из них является Ethereum Swarm. В этой статье я познакомлю вас со сходствами и различиями между Swarm и IPFS, чтобы помочь вам выбрать правильное решение для хранения данных для вашего следующего проекта.

IPFS (аббревиатура от InterPlanetary File System) была основана в 2014 году компанией Protocol Labs. Это протокол распределенной файловой системы, который использует адресацию содержимого для уникальной идентификации каждого файла в глобальном пространстве имен. В IPFS нет реальной системы поощрений, поэтому в 2017 году Protocol Labs выпустила FileCoin, собственный блокчейн, ориентированный на хранение.

n Идея Ethereum Swarm принадлежит Гэвину Вуду, одному из основателей Ethereum. В 2015 году Виктор Трон и Даниэль Надь взяли на себя проект в рамках команды Фонда Geth. После успешного ICO они отправляются в собственное путешествие в качестве автономного проекта, поддерживаемого Ethereum Foundation. В настоящее время (в 2022 г.) Swarm более или менее полнофункционален и активно развивается.

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

Логика хранения

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

У Ethereum Swarm другая логика, поскольку он хранит сам контент в DHT. Они называют эту систему DISC (Distributed Immutable Store for Chunks), и вся система предназначена для того, чтобы сделать этот DHT эффективным. Например, когда узел выбирает другие узлы для подключения, он выбирает одноранговые узлы для каждого порядка близости (т. е. расстояния порядка величины от своего собственного адреса). Благодаря связности с Kademlia поиск чанка в этой системе происходит очень быстро. Когда узел хочет получить кусок, он спрашивает своих пиров. Если у однорангового узла есть контент, он возвращает его, если нет, он запрашивает своих одноранговых узлов и т. д. Контент всегда хранится на узлах, которые находятся на небольшом расстоянии от Kademlia, и из-за связности Kademlia всегда можно найти путь логарифмической длины. Когда узел хранилища получает запрос на поиск, он возвращает содержимое запрашивающему узлу, который, в свою очередь, ретранслирует его обратно узлу, который его запросил, и т. д., пока он не достигнет источника запроса. Swarm называет этот метод переадресацией Kademlia и обеспечивает анонимность. Узлы знают только пиров, запрашивающих контент, но никто не знает, кто является источником запроса или контента. Это похоже на то, что делает сеть Tor для анонимизации запросов. Но анонимность — это только одно из преимуществ пересылки Kademlia. Это также помогает распространять контент, но об этом я напишу позже.

Изменяемый контент

Если вы хотите сохранить изменяемый контент (например, часто меняющуюся веб-страницу) в IPFS, вы можете использовать ИПНС. В IPNS адрес изменяемого содержимого является открытым ключом, а адрес базового неизменяемого содержимого подписывается частью закрытого ключа. Открытый ключ -> подписанные назначения контента публикуются в DHT. Если контент изменяется, владелец контента подписывает новый хэш контента и публикует его для открытого ключа, чтобы средства извлечения могли обновить назначение контента из него.

В Ethereum Swarm есть два типа чанков. Один из них — «обычный» блок с адресацией содержимого, а другой — блок с одним владельцем. Адрес чанка с одним владельцем — это хэш владельца и уникальный идентификатор. Эти фрагменты с одним владельцем также неизменяемы, но вы можете создать идентификатор из имени темы и серийного номера. Когда вы меняете контент, вам нужно просто увеличить серийный номер и опубликовать новый фрагмент. Извлекатели могут опрашивать систему, и если доступен новый фрагмент с более высоким серийным номером, они могут обновить его содержимое. Swarm называет эти потоки структур с серийными номерами.

Система поощрений

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

Другой способ — использовать FileCoin, который является «официальной» цепочкой блоков IPFS (также разработанной Protocol Labs, которая сама разработала IPFS). FileCoin — это, по сути, рынок для поставщиков хранилищ, где вы можете заключать контракты на хранение своего контента. Механизмы сети FileCoin обеспечивают безопасность вашего контента и наказывают контрактных поставщиков, которые не хранят ваш контент или не делают его доступным. Если вы извлекаете контент и достигается пороговое значение передачи данных, вы должны заплатить комиссию.

Ethereum Swarm использует собственную платежную систему вместо блокчейна, который чем-то похож на платежные каналы, такие как Llightning Network. , но немного по-другому. Когда узел платит другому, он делает это чеком. Эти чеки похожи на реальные чеки, подписанные документы, которые можно использовать для получения денег из контракта чековой книжки узла.

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

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

В сети Swarm нет отдельных провайдеров. Контент всегда хранится на узлах, которые имеют наименьшее расстояние Kademlia от своего хэша (Swarm называет эти узлы соседями). Неотъемлемым свойством Swarm является обеспечение эффективного поиска DHT. Вы можете опубликовать контент на любом узле, который передаст его ближайшему узлу, который переместит его в лучшее место для хранения. Метод очень похож на поиск контента, но в противоположном направлении. Если вы хотите хранить свой контент в сети, вы должны прикрепить к нему почтовую марку. Почтовая марка — это что-то вроде чека, который можно обналичить только в том случае, если вы сможете доказать, что храните его содержимое.

Совместимость Эфириума

Совместимость Ethereum — это область, в которой Ethereum Swarm действительно силен. Поскольку это «официальное» хранилище Ethereum, все «совместимо с Ethereum».

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

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

Фрагменты роя — это деревья Меркла. Это означает, что адрес чанка является корнем Merkle содержимого. Это полезно, если вы проверяете их в смарт-контрактах, потому что вы можете легко создавать доказательства включения контента. Например, если вы хотите хранить длинный (>1000 элементов) белый список, вы можете хранить его в Swarm вместо блокчейна и проверять членство с помощью смарт-контракта, используя доказательства Меркла. Или вы можете создавать полные сводки в Swarm, где корень состояния также является адресом контента для всего состояния.

Заключение

Как видите, оба решения для хранения данных имеют свои сильные и слабые стороны.

IPFS — более старая система (в хорошем смысле). У него много вариантов использования, он хорошо документирован и широко используется. Существует множество централизованных поставщиков IPFS, и вы также можете использовать FileCoin для хранения своего контента.

Ethereum Swarm относительно новый и находится в стадии разработки, но у него есть несколько очень интересных свойств. Анонимное хранение и извлечение контента, сверхэффективное управление DHT и надежная совместимость с Ethereum — уникальные особенности этого решения.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE