Проект: ORM для блокчейнов  Публичный пост
4 мая 2020     221   
ORM для блокчейнов

TL;DR

  • Асинхронная python библиотека адаптеров для работы с блокчейнами разных криптовалют
  • ORM подобный API
  • Открытый исходный код
  • Планируются интеграции с популярными ORM для пайтона
  • Уже есть поддержка универсального API для Bitcoin и Ethereum
  • В будущем монетизация через продажу инфраструктуры для работы с криптой и/или PRO версия либы
  • Нужны контрибьюторы, возможна оплата работы и/или найм в стартап, разрабатывающий библиотеку
  • Нужна критика идеи и выбранной стратегии монетизации

Идея

Всем привет! Запилив N-ое количество проектов принимающих крипту, которое мне уже сложно посчитать по памяти, и настрадавшись в отсутствии удобных (а точнее вообще любых) инструментов для взаимодействия с нодами - я решил запилить свой для языка Python!

Но давайте по порядку. Нода - это программа, которая умеет синхронизировать блокчейн (читай получать данные из блокчейна), майнить, генерировать кошельки и адреса, отправлять транзакции. Грубо говоря, нода - это реализация или бизнес-логика блокчейна, которая будучи установленной на милионы компьютеров объединенных в одноранговую сеть и создает тот самый блокчейн. У каждой криптовалюты есть такая, а у некоторых даже несколько.

Каждая нода имеет интерфейс, абсолютно не похожий на интерфейсы других нод. Криптовалюты сейчас находятся на этапе своего зарождения и там полный ззпарк. Думаю многим уже очевидна проблема, которая из этого вытекает: сложна и долго пилить софт работающий со многими нодами. Например биржи, криптовалютные кошельки, обменники, черные рынки в даркнете и т.д. И даже больше: поддерживаемых и прямо написанных адаптеров к конкретным нодам сейчас тоже почти нет.

Все это сильно увеличивает стоимость запила любой фигни, которая хочет принимать оплату в крипте. Идея запилить либу адаптеров для нод - следствие фактов выше. Позже она стала OBM.

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

Почему такой дизайн?

Блокчейн - это база данных. Какой у нас там наиболее удобный и популярный инструмент для баз данных на сегодня? Это ORM для реляционных баз данных и ODM для документо-ориентированных. Сущность в базе данных превращается в объект языка. Подобный подход прекрасно ложится и на блокчейны, есть предопределенный набор сущностей и небольше количество связей между ними.

Подобный дизайн также дает интерересные бенефиты, в основном ради которых он и был выбран: встраиваемость. Транзакции в блокчейне бесполезны для бизнеса до тех пор, пока они не попадут в базу данных сервиса и не будут привязанны к конкретным юзерам. Следовательно большенству проектов пришлось бы иметь под капотом и инструмент для взамодействия с блокчейнами и инструмент для баз данных. В своем проекте я попытался решить и это, задизайнив его таким образом чтобы методы моих моделей могли спокойно быть использованны в других ORM/ODM (слава наследованию и миксинам). И идея на первый взягляд работает вот пример для Django ORM.

Что уже запилено?

Да, value уже есть. На данный момент поддерживается 2 ноды (читай криптовалюты):

  • bitcoin-core
  • geth (go реалзация Ethereum)

Сделать универсальный интерфейс было той еще задачкой учитывая что валюты схожи ни в чем.

Для каждой на данный момент доступны универсальные методы для получения и отправки транзакций, создания адресов и оценки комиссий. Те кто уже работал с Etereum знают что эти славные ребята решили не пилить RPC эндпоинт для поступающих на кошелек транзакций в платежной, блин, системе. Ишью 2015 года, кстати, где их просят его сдалать закончилось фразой что "команда думает как это реализовать". Дак вот я придумал быстрее и восстановил отсутствующий метод за пределами geth.

Также уже существует интеграция с Django ORM, которая еще и маппаит модели на REST API.

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

Планы

Идея очень меня драйвит и я уже успел напридумывать целый вагон фичей:

  • Работа с пулами нод, для масштабирования нагрузки
  • Интеграции со всеми популярными ORM/ODM для пайтона: sqlalchemy, django orm, tortoise, mongo-engine и т.д.
  • Сапорт для целой кучи валют, включая TON (как только он релизнется)
  • Поддержка смарт-контрактов

Монетизация

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

Да, такие сервисы уже есть, отличаться планирую:

  • опенсурсностью продукта (монетизация по принципу GitLab, Sentry, MongoDB)
  • скоростью добавления нод, опять же за счет опенсурсности

Так же надеюсь что открытые исходники дадут моему сервису больше доверия чем конкурентам, что в финансах очень важно.

Вторым путем монетизации может быть проприетарная PRO версия OBM. Посмотрим как будет продуктивнее, когда проект достигнет мажерной версии.

Нужна ли помощь?

Еще как! Очень нужны:

Контрибюторы - я готов обучать, возможно в последствии оплачивать таски и даже нанять в команду, если ты достаточно толковый.

Инвестиции - сейчас пока рано говорить об этом, но все же, если вас заинтересовал раздел "Монетизация" или вам нужен приоритетный саппорт для вашего проекта - вы можете связаться со мной и мы поищем точки соприкосновения.

Так же я буду благодарен за:

  • Критику идеи
  • Критику стратегий монетизации, которые я сейчас вижу
  • Код ревью
  • Ваши предложения по улучшению идеи
  • Советы по монетизации и дизайну
  • Референсы на подобные проекты, о которых я могу не знать
  • Звездочки на гитхабе чтобы подняться в поисковой выдаче и мое ЧСВ потешить

Спасибо за внимание!

6 комментариев 👇
Petr Korolev, R&D ETHusiast of open-source & privacy 4 мая 2020

Респект. Есть проекты, где уже испльзуется уже библиотека по назначению?

  Развернуть 1 комментарий

Спасибо! Да, это стартап в котором я работаю сейчас. В планах подключение сотен нод, так что думаю будет хорошая поддержка в ближайшее время.

  Развернуть 1 комментарий
Andrey Balashov, Дизайнер 1 июня 2020

Доверие в финансах очень важно — мне тоже нравится так думать :)

Я немного глупый и не понимаю как до конца это все работает. Но посмотри вот эти проекты, возможно там будет что-то интересное. В любом случае удачи с реализацией!
https://soramitsu.co.jp/
https://www.hyperledger.org/

  Развернуть 1 комментарий

Офигенный проект. Понимаю боль, потому что прямо сейчас я подключаю криптоплатежи к одному интернет-магазину (на CS-Cart, сиречь PHP) и как раз столкнулся с описанными проблемами кастомной интеграции.

Эх, была бы такая же либа для PHP, мой клиент точно бы заплатил (ну вернее я просто бы добавил её в BOM, т.к. работаю по T&M). Концепция "работать с блокчейном как с БД" звучит очень хорошо. Даже если всё что мне нужно на первом этапе - это простейший селект.

Удачи проекту!

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@AleksandrPolishchuk, cctx я видел - монструозный проект, да и у них фокус на поддержке максимального числа бирж всё-таки, а не на упрощении доступа к собственно блокчейну и операциям с ним, потому я не стал такую зависимость в отдельно взятый магазин тащить.

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

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб