Чуть более двух лет назад Blockstream разработала Greenlight: инновационную инфраструктуру хостинга Lightning, которая масштабирует ваши развертывания Lightning без компрометации или кастоди. Последний год тестирования с партнерами доказал, что Greenlight стабилен и прост в использовании. Сегодня мы предоставляем открытый доступ к клиентскому репозиторию и открываем регистрацию для заинтересованных лиц для участия в предварительной версии для разработчиков!
Что такое Greenlight?
Greenlight – это некастодиальная услуга Lightning-as-a-Service (LaaS) для предприятий, торговцев и приложений Lightning. Ваши пользователи держат ключи, а мы заботимся обо всем остальном. Как разработчик, создающий приложения с помощью Greenlight, вы можете просто обратиться к нашему простому API и легко интегрировать платежи Lightning в свое приложение, не имея опыта работы с протоколом Lightning и не занимаясь длительной настройкой узла.
В Greenlight существует два домена управления: пользовательский и принадлежащий Blockstream. Любое количество клиентов из пользовательского домена может подключиться к одному узлу в домене Blockstream. Узел, работающий в инфраструктуре Blockstream, получает команды, вычисляет изменения состояния, а затем обращается к подписывающему устройству, которое находится исключительно под контролем пользователя, чтобы проверить и подписать изменения. В результате вы получаете доступный по требованию, некастодиальный узел Lightning, с которым ваши ключи хранятся на вашем устройстве и никогда не затрагивают нашу инфраструктуру.
Что доступно сегодня?
Пока мы продолжаем активно развивать Greenlight, общедоступные интерфейсы стабильны и готовы к изучению.
Репозиторий клиента содержит несколько компонентов:
- gl-client и его языковые привязки предоставляют простой API для взаимодействия с Greenlight и пользовательскими узлами. Встроенный подписант (signer) позаботится об управлении вашей seed-фразой и сохранит ее в тайне от узла и, соответственно, от нас, операторов сервиса. Сквозная верификация (все еще находится в стадии активной разработки и не завершена в этой предварительной версии) в программе signer гарантирует, что любое изменение состояния было санкционировано аутентифицированным клиентом, так что потенциальная компрометация хоста узла не приведет к потере средств.
- gl-testing предоставляет полную среду для тестирования вашего кода на макете, а не в реальном сервисе Greenlight. Чтобы узнать больше, смотрите наше руководство по использованию gl-testing в проекте на Python с использованием привязок Python в gl-client-py. Дополнительные руководства находятся в разработке.
- gl-plugin и gl-signerproxy позволяют любому воспроизвести интерфейс, предоставляемый узлами Greenlight, включая возможность удаленного подписания, вместо хранения seed на открытом сервере.
Последние два являются основой для наших планов по переходу на новую инфраструктуру: если вы перерастете Greenlight или захотите большего контроля, мы дадим вам возможность перейти на собственную инфраструктуру, и все ваши приложения будут продолжать работать. Это означает, что если вы разрабатываете свое приложение на основе API Greenlight, вы автоматически получаете поддержку Core Lightning. Более подробно о том, как отключиться от инфраструктуры, вы можете прочитать в официальной документации Greenlight и на обучающем сайте.
Начать работу
Перейдите к руководству по началу работы и следуйте инструкциям. Сначала вам понадобится код приглашения, чтобы зарегистрировать новый узел на сервисе. Система приглашений позволяет нам постепенно и контролируемо наращивать масштабы на начальном этапе работы сервиса. Мы создали форму, в которой вы можете запросить приглашение, и мы вышлем вам его как можно скорее.
Минимальный клиент, который регистрирует узел, планирует его, а затем выполняет getinfo на узле, на языке Python будет выглядеть следующим образом:
from glclient import TlsConfig, Signer, Scheduler
import secrets # Make sure to use cryptographically sound randomness
invite_code = "..."seed = secrets.randbits(256) # 32 bytes of randomnessnetwork = "bitcoin"
tls = TlsConfig()
signer = Signer(seed, network, tls)
scheduler = Scheduler(node_id=signer.node_id(), network=network, tls=tls)
# Now actually register the node, `r` will contain the credentials to use # when talking to the node
r = scheduler.register(signer, invite_code=invite_code)
# Use the credentials when talking to Greenlight from now on.
Requires a refresh
# of the `TlsConfig` and the `Scheduler`
tls = tls.with_identity(r.device_cert, r.device_key)
scheduler = Scheduler(
node_id=signer.node_id,
network=network,
tls=tls
)
node = scheduler.node() # Schedules the node on the service
# And finally we can use `node` to call `getinfo`
print(node.getinfo())
И это все. Никакой настройки bitcoind, баз данных, резервного копирования, сторожевых башен, сплетен, конфигурации узлов и т.д. Все это делается с нашей стороны, чтобы вы могли сосредоточиться на том, что для вас важнее всего – на ваших пользователях и их потребностях!
Что дальше?
Мы уже получили много отзывов от наших коллег:
- Breez построил свой Breez SDK на Greenlight, расширив наше предложение за счет LSP и своп-сервисов, а также перенес свой известный кошелек Breez на Greenlight.
- Validating Lightning Signer для нашей инфраструктуры безопасной подписи, помогая нам приблизиться к полной сквозной проверке.
- Кошелек Blockstream Green для внутренней обратной связи и тестирования.
- Core Lightning для лучшей реализации Lightning для такого масштаба.
Мы с нетерпением ждем полного релиза, но для этого нам по-прежнему требуется дополнительная обратная связь от разработчиков. Мы приглашаем вас присоединиться к нам на Discord в канале #greenlight или на странице разработчиков сообщества Build On L2, чтобы поделиться своими мыслями и опытом, где вы также можете следить за предстоящими воркшопами, посвященными Greenlight.
Если вы находитесь в процессе создания чего-то интересного с помощью Greenlight, мы тоже будем рады услышать об этом! И, возможно, мы сможем рассказать об этом в официальном блоге Blockstream.