Demo: https://chainboy.alfaline.dev/
Описание проекта: сеть из пользовательских суперлегких нод, которая следит за событиями в поддерживаемых blockhain-сетях(где есть контракты сети) и исполняет задания других пользователей из смарт-контрактов, позволяя вынести тяжелые вычисления доказуемо децентрализованно из offchain в onchain и доказуемо децентрализованно осуществлять перенос информации из offchain в onchain(получать курсы валют, информацию из API, случайные числа, тяжелые вычисления, ...).
Флоу пользователя:
- загружает нужный для исполнения код в ipfs
- создает в поддерживаемой блокчейн-сети заявку на исполнение кода из ipfs с заданным input-параметром(в перспективе с несколькими - массивом) и задавая стоимость выполнения самостоятельно(transfer native)
- получает результат исполнения кода onchain
Консенсус:
- консенсус происходит на базе смарт-контракта в сети siberium. у каждой ноды есть свой адрес, чтобы стать нодой нужно иметь токены проекта.
- консенсус 50+% по итогам исполнения кода эквивалентно весу(количеству токенов) адресов нод (PoS)
- финализирует консенсус любая из нод
- экономика:
- финализирующая нода получает 50% от цены, заданной пользователем
- остальные получают 50% цены юзера умноженное на процент токенов от общего supply
- все ноды, давшие неконсенсусный результат не получают наград, средства за них остаются на контракте
Флоу ноды:
- нода имеет свой адрес и токены проекта
- на сервере(или в рамках serverless-функции в перспективе) поднимается скрипт ноды
- сервис информации об event'ах со смарт-контракта в поддерживаемой сети предоставляет данные, согласно которым нода получает новые задания от пользователя
- нода скачивает код из ipfs, выполняет задание(функция, переменные) в docker sandbox, публикует результат, подписанный своим ключом, в смарт-контракт консенсуса в основной сети(siberium)
- в смарт-контракте собираются результаты всех нод, находится консенсус согласно большинству токенов, которыми владеют ноды
- нодам начисляются награды эквивалентно правильности решения(соответствия консенсусу) и награда финализатору
Cross-chain feature:
- Пользователь может доказуемо перенести результаты исполнения в другой чейн(с возможно более дорогой стоимостью транзакций). Для этого необходимо иметь задеплоенный контракт токена сети и контракт консенсуса с регулярными обновлениями стейков == команда проекта должна осуществить поддержку чейна пользователя.
- пользователь вносит самостоятельно в нужный ему чейн(или это делает отдельный сервис за дополнительную награду) на контракт проекта батч подтверждений решений нод, владеющих токенами, а также консенсус-результат, что позволяет доказуемо использовать результат выполнения задачи пользователя в другом чейне. В этом случае распределение наград повторно не происходит.
function crosschainConsensusBatch(bytes32 _hash, bytes[] calldata _signs, string memory _solution, bytes memory _sign)
Для загрузки необходимо иметь созданную задачу в соответствующем чейне.
Структура:
- смарт-контракт
- нода(две версии - ws и api. api работает более стабильно для демо)
- api-сервер для публикации пользовательского кода на ipfs, а также хранилище ивентов контракта
- получает новые ивенты через сервис нотификации об уведомлениях https://ipn.tools, хранит, чтобы ноды смогли получить ивенты
Нода может быть запущена в виде serverless-функции, может не иметь внешнего ip-адреса(pooling-based).