弊社がスケーラブルかつノンカストディアルという革新的なライトニングノードのホスティングインフラ、Greenlightを発表してから約2年が経ちました。パートナー企業との約1年にわたるテスト稼働を通して、安定性と使い勝手が大幅に向上したことを受け、クライアントリポジトリのオープンソース公開および開発者向けプレビュー版へのアクセス申請を本日開始します。
Greenlightとは
Greenlightは事業者、店舗、ライトニングアプリケーション向けのLightning-as-a-Service (LaaS)です。ユーザーは鍵管理以外のライトニングノード運用に関する一切を弊社に委託できます。開発者は簡単なAPI連携で、アプリケーションにライトニング決済を導入できます。ライトニングプロトコルに関する知識も、ライトニングノードの立ち上げも不要です。
Greenlightでは、ユーザーとBlockstreamサーバーという2つの制御領域があります。ユーザー領域にある複数のクライアントが、Blockstream領域で稼働する単一ノードに同時接続できます。ノードがコマンドを受信すると、状態の遷移を計算して、ユーザー領域にある署名機能に確認と署名を求めます。このような仕組みにより、鍵管理はユーザーが行い、その鍵を弊社サーバーに送信しないノンカストディアル型のライトニングノードを、オンデマンドで提供することが可能になりました。
現時点で利用可能な機能
現在も開発が進むGreenlightですが、公開する機能は安定しているので、安心してお使いいただけます。
クライアントリポジトリには、以下のコンポーネントが含まれています:
- gl-clientおよびその言語バインディングは、Greenlightとユーザーノード間の通信用APIを提供します。ユーザーのシードを管理するSignerがシードをノードおよびサービス提供者である弊社から秘匿し、Signerに搭載されるエンドツーエンド検証 (現在開発中でプレビュー版には未実装)が、認証済みクライアントによる状態遷移の承認を担保するため、万が一、ノードへの不正アクセスが発生しても資金喪失には至りません。
- gl-testingはGreenlightサービスのテスト用モック環境を提供します。詳しくは、チュートリアルのPythonバインディングgl-client-pyを使ってPythonプロジェクトにgl-testingを統合する方法をご覧ください。チュートリアルは随時拡充させてまいります。
- gl-pluginとgl-signerproxyを使用すると、シードをノードではなく、リモートで管理してSignerを利用する機能を含む、Greenlightのインターフェースを再現できます。
後者2つはGreenlightから、より柔軟な自前インフラへの移行を支援するもので、移行後のアプリケーションの正常動作を保証します。つまり、Greenlight API対応のアプリケーションは、Core Lightningにも自動対応します。移行手順の詳細は、Greenlightの公式ドキュメントおよびチュートリアルをご覧ください。
Greenlightを利用するには
Greenlightを使ってみたい方は、Getting Startedチュートリアルをご参照ください。利用には招待コードが必要です。招待制にすることで、予期せぬトラブルを避け、段階的にサービスを拡大することができます。こちらのフォームより、招待コードの交付申請していただければ、順次お送りいたします。
ノードの登録、スケジューラへの追加、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、 データベース、バックアップ、ウォッチタワー、ゴシップノードなどの設定は一切不要です。これらは弊社が行うため、開発者はユーザーへの価値提供に集中できます。
今後の予定
以下パートナー企業が既にGreenlightを利用しています:
- BreezはGreenlightを使ってBreez SDKを構築し、弊社のLSPとスワップサービスを新たに提供したほか、Breezウォレット自体もGreenlightに移行しました。
- Validating Lightning Signerが提供する安全な署名インフラによって、完全なエンドツーエンド検証の実現が近づきました。
- Blockstream Greenウォレットはテスト利用に基づくフィードバックを提供してくれました。
- Core Lightningはインフラのスケールに最適なライトニングノード実装です。
フルリリースに向け、Greenlightをテストしてくれる開発者を引き続き募っています。弊社Discordの#greenlightチャンネル、Build On L2コミュニティの開発者ページから、ぜひご意見やご感想をお寄せください。Greenlightに関する今後のワークショップについても、こちらから告知いたします。
Greenlightを使ってプロダクトを開発している方、ぜひご連絡ください。Blockstream公式ブログでプロダクトを紹介できるかもしれません。