October 2, 2022

CERAMIC – Врата в web3 программирование

Наряду с полезными протоколами, я бы хотел освещать проекты направленные на создание web3 интернета.

Буду краток и постараюсь не усложнять. Сначала обрисую проект в общих чертах. Затем расскажу о структуре и принципе работы в деталях, трансформируя сложные технические аспекты в простые понятные кусочки.

ЧАСТЬ 1 – Что и зачем?

Ceramic – это децентрализованная сеть для совместимых данных. Сеть включает различные модели данных, которые используются для создания приложений. Команда проекта отлично описывает эту идею:

«Ceramic делает создание веб3 приложений таким же простым, как поиск нужной модели данных в маркетплейсе, ее подключении, хранении, обновлении и получении данных с этой модели в вашем приложении».

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

ЧАСТЬ 2 – Как устроено?

Возможно уже слышали о децентрализованных данных прежде. Такие протоколы, как IPFS, Arweave или Filecoin существует не один год. Если же не знакомы с этими названиями – не беда. Все они связаны с хранением данных в децентрализованной манере. Однако, существует одна большая разница, которая выделяет Ceramic – она предоставляет доступ к динамическим структурам данных, в то время как остальные к статическим. Чтобы лучше в этом разобраться, взглянем на принцип работы IPFS системы. Стоит упоминания, так как Ceramic строится поверх и расширяет возможности этой файловой системы.

2.1 – IPFS

Визуализация устройста IPFS

«IPFS – это распределенная система для хранения и доступа к файлам, вебсайтам, приложениям и данным».

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

Учтите, для использования IPFS требуется специальный клиент или терминал на вашем пк.

2.2 – Структура

«В Ceramic, каждый клочок информации представляется как журнал изменений с функцией "добавить", называющийся Stream (поток). Каждый stream может расцениваться как личный блокчейный или журнал событий».

Структура потоков позволяет сети Ceramic расширятся горизонтально благодаря тому, что потоки обновляются параллельно. Это не что иное, как разновидность технологии sharding. Каждый stream имеет собственный тип, поэтому когда нода Ceramic получает новый commit (обновление/изменение), она применяет его к определенному потоку.

При этом, все ноды подключены к одной и той же сети Ceramic. Их основная обязанность – поддерживать доступность данных. А в частности, Stream commits и Stream state (актуальное состояние потока). Выполняется это 3-я способами – cashing, pinning и archiving.

Под cashing (кэширование) понимается механизм для кратковременного хранения данных. Каждая нода имеет лимит в 500 потоков, которые может иметь в кэше (в будущем число может меняться). Если лимит превышен, наиболее старый поток заменяется более новым. Если нода остановится или перезапустится, кэш будет очищен.

Pinning (закрепление) представляет более долговременный механизм хранений данных. Крайне похоже на то, как вы закрепляете твиты в Твиттере или посты в Телеграме в самом вверху ленты. Однако учтите, если только одна нода закрепляет определенный stream, а затем с ним что-либо негативное случается, stream будет утерян. Чтобы избежать этого, разработчики советуют закреплять нужные потоки с нескольких нод.

PS: Нода Ceramic содержит готовую IPFS ноду в комплекте, благодаря которой pinning и возможен.

Archiving (архивирование) представляет механизм длительного хранения. Разработчики могут выбирать внешнего провайдера для архивирования данных. Им могут быть как веб2 компании, Amazon например, так и веб3 протоколы, как Filecoin или Arweave.

2.3 – Consensus

Нодам в Ceramic нет необходимости поддерживать всю сеть целиком, как в привычных блокчейнах. Вместо этого, они вольны поддерживать только потоки, в которых заинтересованы. Это сказывается в отличном масштабировании. Более того, каждый stream может иметь собственную модель consensus (согласования), что делает их более гибкими для разработчиков.

Также, в механизме согласования существует термин Proof-of-publication:

«Proof-of-publication – это доказательство, что некий материал был опубликован в определенный период времени. Обновления потоков Ceramic периодически anchored (сохраняются) в блокчейне (на данный момент в Ethereum)».

ЧАСТЬ 3 – Заключение

Личные «за» в пользу Ceramic:

  • Веб3 ориентированный проект;
  • Совместим с Ethereum; Solana на подходе;
  • Основная сеть запущена, а некоторые проекты уже внедряют Ceramic.

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

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

Лучшей благодарностью будет подписочка на основные соц сети ;)

Twitter – only English folks.

Telegram – статьи, посты на русском языке.