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. Посмотрим как будет продуктивнее, когда проект достигнет мажерной версии.
Нужна ли помощь?
Еще как! Очень нужны:
Контрибюторы - я готов обучать, возможно в последствии оплачивать таски и даже нанять в команду, если ты достаточно толковый.
Инвестиции - сейчас пока рано говорить об этом, но все же, если вас заинтересовал раздел "Монетизация" или вам нужен приоритетный саппорт для вашего проекта - вы можете связаться со мной и мы поищем точки соприкосновения.
Так же я буду благодарен за:
- Критику идеи
- Критику стратегий монетизации, которые я сейчас вижу
- Код ревью
- Ваши предложения по улучшению идеи
- Советы по монетизации и дизайну
- Референсы на подобные проекты, о которых я могу не знать
- Звездочки на гитхабе чтобы подняться в поисковой выдаче и мое ЧСВ потешить
Спасибо за внимание!
Респект. Есть проекты, где уже испльзуется уже библиотека по назначению?
Доверие в финансах очень важно — мне тоже нравится так думать :)
Я немного глупый и не понимаю как до конца это все работает. Но посмотри вот эти проекты, возможно там будет что-то интересное. В любом случае удачи с реализацией!
https://soramitsu.co.jp/
https://www.hyperledger.org/
Офигенный проект. Понимаю боль, потому что прямо сейчас я подключаю криптоплатежи к одному интернет-магазину (на CS-Cart, сиречь PHP) и как раз столкнулся с описанными проблемами кастомной интеграции.
Эх, была бы такая же либа для PHP, мой клиент точно бы заплатил (ну вернее я просто бы добавил её в BOM, т.к. работаю по T&M). Концепция "работать с блокчейном как с БД" звучит очень хорошо. Даже если всё что мне нужно на первом этапе - это простейший селект.
Удачи проекту!