Что такое Witness в инфраструктуре платформы CrowdWiz
Сервера-заверители платформы Crowdwiz называются witness (Витнесы). Основная задача витнесов - проверять целостность блокчейна и увеличивать надёжность сети блокчейн. Некоторые витнесы, которые избираются с помощью голосования, становятся блок-продюсерами, то есть они не только проверяют блоки с транзакциями, но и создают новые блоки и получают за это вознаграждение. Дальше по тексту термины witness, витнес, заверитель, узел и нода равнозначны и обозначают сервер-заверитель. Блокчейн-платформа Crowdwiz для обеспечения базового функционала работы с транзакциями использует open source технологию Graphene, которую также использует платформа Bitshares, и прямым наследником данной технологии стала платформа EOS (которая кстати уже более 2-х лет уверенно держится в ТОП10 мировых криптовалют по данным coinmarketcap) Таким образом, если вы хотите подробнее изучить алгоритмы консенсуса и прочие тонкости, связанные с производством блоков и базовой организацией процессов обмена транзакциями, то можете смело изучать огромное количество материалов Bitshares. Однако необходимо заметить, что во всем, кроме кроме заверения блоков и организации сети витнесов, Crowdwiz сильно отличается от Graphene. Если коротко, то блокчейны на Graphene работают следующим образом: У клиента (простого пользователя системы) в самом простом случае есть два ключа - открытый и закрытый. Закрытый ключ хранится у пользователя в секрете, открытый ключ хранится в блокчейне и привязан к аккаунту пользователя. Идея данного метода шифрования с открытым и закрытым ключом состоит в следующем: когда пользователь отправляет в блокчейн какую-то транзакцию он “подписывает” её своим закрытым ключом. Подписание это механизм вычисления специальной контрольной суммы от всего сообщения. Дальше любой участник блокчейн-сети может проверить достоверность транзакции, зная открытый ключ клиента. И этот крипто-механизм надёжен настолько, что подбор пары ключей при сегодняшних мощностях компьютеров занял бы миллиарды лет. Например, клиент хочет перевести 100 CWD, он формирует транзакцию (по сути прямым текстом пишет - с какого аккаунта на какой нужно сделать перевод), подписывает её своим закрытым ключом, и отправляет любому витнесу. Витнес получает из блокчейна открытый ключ, связанный с аккаунтом, с помощью него проверяет достоверность транзакции, затем выполняется код, связанный с операцией перевода - витнес проверяет, что баланс у пользователя достаточен и аккаунт, на который производится перевод также существует в блокчейне. Если всё нормально, то он рассылает эту транзакцию на все доступные ему витнесы, а те на все доступные им, это происходит до тех пор пока транзакция не попадёт на тот витнес, который в данный момент производит блок. Он ещё раз проверяет транзакцию и включает её в блок, а затем подписывает этот блок своим закрытым ключом и отправляет всем другим витнесам. После этого витнесы, которые избраны сообществом на роль производителей блоков (а таких в данный момент может быть только 21), включают этот блок и ссылку на предыдущий блок в свои цепочки. В данной инструкции мы постараемся разобраться со всеми тонкостями настройки серверов заверителей, а также произведём обзор функций, которые они выполняют. У заверителей есть несколько основных функций, и в каждый сервер может выполнять как одну так и несколько из них одновременно:
Seed-node - узел, который сообщает другим узлам о других узлах. Все витнесы по умолчанию seed-ноды. Каждый витнес связан с другим витнесом в сети, и они передают друг другу информацию о блоках и транзакциях. Как только новый витнес подключается к одному из действующих узлов, то тот ему сообщаем информацию о других активных узлах в сети, и витнес соединяется и с ними.
API-node - витнес может быть сервером API и выдавать информацию клиентам. Он хранит в себе историю об операциях по разным клиентам, и также подготавливает данные для клиентов. Кроме того, через узлы API клиенты передают свои транзакции в сеть crowdwiz. API-сервера довольно гибко настраиваются под разные нужды и могут быть основой для написания различных роботов или сервисов. Они бывают публичные и частные.
Block-production node - витнес, который производит блоки. Мы в данной инструкции остановимся на настройке Block-production node.
Last updated
Was this helpful?