Что такое ZooBC
ZooBC — публичный блокчейн с собственной монетой ZBC. Любой может открыть аккаунт, отправлять транзакции и запустить узел, который проверяет каждый блок. В его консенсусе, Proof of Participation, нет майнинга: блоки по очереди создают зарегистрированные узлы, выбранные жеребьёвкой, а новые монеты достаются узлам, которые выполняют работу по ретрансляции данных для сети.
Публичная цепочка с собственной монетой
ZooBC — не токен в чужой сети. У него своя цепочка, свои узлы и своя нативная монета ZBC, которой оплачиваются комиссии за транзакции, стейки узлов и аренда. Никому не нужно разрешение, чтобы следить за цепочкой или проверять её: каждый блок, баланс и транзакция публичны, а API любого узла отвечает всем (аккаунты и адреса).
Существуют три отдельные сети ZooBC: devnet, testnet и mainnet (devnet, testnet и mainnet). Каждая начинается со своего генезис-блока, хеш которого служит идентичностью цепочки.
Как создаются блоки
Новый блок появляется примерно каждые 15 секунд (блоки и время). Блоки не выигрывают решением головоломок. Реестр узлов — это хранящийся в цепочке набор узлов, которым разрешено создавать блоки, и после каждого блока случайная жеребьёвка по сиду этого блока называет, кто может создать следующий (жеребьёвка). Каждый узел может повторить жеребьёвку и получить тот же ответ, поэтому блок от узла, который не был выбран, отклоняется. У каждого активного места в жеребьёвке одинаковый шанс: оборудование, баланс и стейк на него не влияют.
Proof of Participation измеряет и ту работу, которая поддерживает сеть живой: передачу блоков и транзакций другим узлам. Когда зарегистрированный узел получает данные от другого зарегистрированного узла, он подписывает за них квитанцию, и квитанции, которые узел может предъявить, двигают его оценку участия. Оценка взвешивает лотерею coinbase, которая распределяет новые монеты и комиссии каждого блока. Безопасность держится на подписях Ed25519 и хеше SHA3-256, а не на затраченной энергии.
Что такое узел
Узел — это программа ZooBC, работающая на компьютере. Он загружает цепочку, проверяет каждый блок и каждую транзакцию по тем же правилам, что и любой другой узел, и хранит получившееся состояние: балансы, токены, реестр узлов и всё остальное. Он предоставляет публичный HTTP API (API узла) и официальную страницу кошелька по адресу /wallet (как завести кошелёк и хранить его в безопасности).
Узел может участвовать на двух уровнях:
- Наблюдатель. Любой может запустить узел, который только следит за цепочкой и проверяет её. Он позволяет владельцу проверять всё, никому не доверяя, но блоков не создаёт.
- Производитель. Узел, вошедший в реестр узлов, может создавать блоки. Его владелец регистрирует ключ узла с обычного аккаунта, блокирует стейк и ждёт в очереди, пока узел не будет допущен (регистрация узла). С этого момента узел участвует в жеребьёвке на создание блоков, ретранслирует данные назначенным ему протоколом пирам, подписывает квитанции за то, что получает, и получает долю новых монет в соответствии со своей оценкой.
Кошелёк — не узел: это клиент, который обращается к API узла. И ни один узел ZooBC не майнит.
Возможности, встроенные в протокол
В ZooBC нет виртуальной машины для пользовательского кода, нет EVM и нет газа. Каждая возможность — это встроенный тип транзакции с фиксированной раскладкой байтов и фиксированными правилами: отправка ZBC, выпуск токена, размещение ордера на рынке, создание эскроу, хранение файла, объединение аккаунтов в группу, планирование платежей и многое другое. Начиная с версии 0.5.8 протокол определяет 73 номера типов транзакций (транзакции, что можно делать в ZooBC).
Это сознательный компромисс. Каждый узел заранее знает всё, что может сделать транзакция, и применяет её одинаково, поэтому результат транзакции никогда не зависит от того, кто её обрабатывает, а кошелёк может вычислить минимальную комиссию до подписания. Взамен новый вид возможностей появляется вместе с релизом протокола (релизы и обновления), а не развёртыванием контракта.
Правила, которые не может изменить ни один ключ
Правила цепочки задаются её генезисом и программой узла. Начиная с версии 0.5.8 у цепочки 121 правило консенсуса, и все они действуют с высоты 0. Ни один ключ не может изменить правило, параметр или баланс, подписав сообщение: балансы меняются только через транзакции, которые проверяет каждый узел, а места реестра могут лишь сдвигать несколько цен в фиксированных пределах (голосования по ценам). ZooBC Foundation владеет первыми местами каждой цепочки и публикует инструменты командной строки, но мастер-ключа у неё нет.