スケーラブルかつノンカストディアルなライトニングインフラを提供するGreenlight by Blockstreamの開発者向けプレビュー版リリース
Lightning Network

スケーラブルかつノンカストディアルなライトニングインフラを提供するGreenlight by Blockstreamの開発者向けプレビュー版リリース

Christian Decker
Christian Decker

弊社がスケーラブルかつノンカストディアルという革新的なライトニングノードのホスティングインフラ、Greenlightを発表してから約2年が経ちました。パートナー企業との約1年にわたるテスト稼働を通して、安定性と使い勝手が大幅に向上したことを受け、クライアントリポジトリのオープンソース公開および開発者向けプレビュー版へのアクセス申請を本日開始します。

Greenlightとは

Greenlightは事業者、店舗、ライトニングアプリケーション向けのLightning-as-a-Service (LaaS)です。ユーザーは鍵管理以外のライトニングノード運用に関する一切を弊社に委託できます。開発者は簡単なAPI連携で、アプリケーションにライトニング決済を導入できます。ライトニングプロトコルに関する知識も、ライトニングノードの立ち上げも不要です。

Greenlightでは、ユーザーとBlockstreamサーバーという2つの制御領域があります。ユーザー領域にある複数のクライアントが、Blockstream領域で稼働する単一ノードに同時接続できます。ノードがコマンドを受信すると、状態の遷移を計算して、ユーザー領域にある署名機能に確認と署名を求めます。このような仕組みにより、鍵管理はユーザーが行い、その鍵を弊社サーバーに送信しないノンカストディアル型のライトニングノードを、オンデマンドで提供することが可能になりました。

Greenlightの開発背景およびGreenlightが革新するライトニングノードの鍵管理。

現時点で利用可能な機能

現在も開発が進む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公式ブログでプロダクトを紹介できるかもしれません。

If you have specific preferences, please, mark the topic(s) you would like to read: