artyomLisovskij / chainboy-serverless

сеть из пользовательских суперлегких нод, позволяющих проводить доказуемые децентрализованные offchain-вычисления, а также децентрализовано осуществлять обмен данными между разными сетями и сетью интернет

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ChainBoy

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).

About

сеть из пользовательских суперлегких нод, позволяющих проводить доказуемые децентрализованные offchain-вычисления, а также децентрализовано осуществлять обмен данными между разными сетями и сетью интернет


Languages

Language:Python 70.1%Language:JavaScript 16.2%Language:Solidity 12.0%Language:CSS 0.7%Language:HTML 0.7%Language:Dockerfile 0.4%