Lighter Python SDK:zkSync上の分散型デリバティブ取引所をPythonで操る

タグ Lighter Python SDKzkSync分散型デリバティブ取引所DeFiアルゴリズムトレードWebSocketオーダーブック自動売買columnコラムlinuxLinuxwindowsWindowsGitHubオープンソースelliottechlighter-python
🚀 今すぐ試せます! デモスクリプトをダウンロードして、解凍後にターミナルで bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。 (macOS / Linux 環境が必要)

Lighter Python SDK:zkSync上の分散型デリバティブ取引所をPythonで操る

ひとことでいうと

Lighter Python SDK は、Ethereum(イーサリアム)の拡張ネットワーク上で動く分散型デリバティブ取引所「Lighter(ライター)」を Python から操作するための公式ライブラリです。注文の作成・キャンセルから、オーダーブック(売買注文の一覧表)のリアルタイム取得、アカウントの残高・損益確認まで、取引所のほぼすべての機能を Python コードから呼び出せます。Python 3.8 以上の環境があれば、コマンド 1 つで導入できます。市場データの取得は API キー不要で今すぐ試せるのも特徴です。アルゴリズムトレーダーから DeFi 開発者まで、幅広い方に活用できるライブラリです。

こんな人におすすめ

  1. アルゴリズムトレーダーの方: 独自の売買戦略を Python で書いて、Lighter 上で自動売買したい方に向いています。注文の作成・キャンセルを行う API が整っており、マーケットメイキング(売買注文を常に出し続ける戦略)や裁定取引のボットを組み込みやすい設計です。

  2. データ分析・研究をしたい方: 価格の動き(ローソク足データ)、オーダーブックの深さ、ファンディングレートなどの市場データを Python で収集・分析したい方にぴったりです。CandlestickApiOrderApi を使えば、過去データの取得も手軽に行えます。

  3. DeFi のツールや画面を作りたい開発者: Lighter のデータをリアルタイムに表示するダッシュボードや、取引補助ツールを構築したいエンジニアにも役立ちます。WebSocket(ウェブソケット:常時接続でデータをやりとりする仕組み)に対応しているため、画面のリアルタイム更新も Python バックエンドから実現できます。

インストール・使い方

ターミナル(文字を入力してパソコンに命令を送る画面)を開き、以下の手順を順番に進めてください。コマンドはすべてコピー&ペーストで構いません。

Step 1: パッケージをインストールする

Python 3.8 以上が必要です。ターミナルに次のコマンドを貼り付けて実行してください。

pip install git+https://github.com/elliottech/lighter-python.git

pip は Python の部品(パッケージ)をインターネットからダウンロードして使えるようにするツールです。GitHub(ギットハブ:ソースコードの保管・公開サービス)から直接インストールします。

Step 2: API クライアントを作って動作確認する

インストール後、Python ファイルに以下を書いて実行してみましょう。asyncio(エイシンクアイオー)は Python で非同期処理(複数の処理を効率よく並行して動かす仕組み)を行うための標準ライブラリです。

import lighter
import asyncio

async def main():
    client = lighter.ApiClient()
    try:
        account_api = lighter.AccountApi(client)
        account = await account_api.account(by="index", value="1")
        print(account)
    finally:
        await client.close()

asyncio.run(main())

ApiClient が取引所への接続口になります。使い終わったら close() を呼ぶことで、接続をきれいに閉じられます。

Step 3: オーダーブックと取引統計を取得する

次のコードでは、現在の注文一覧(オーダーブック)と取引所全体の統計情報を取得できます。API キーは不要です。

import lighter
import asyncio

async def get_market_data():
    client = lighter.ApiClient()
    try:
        order_api = lighter.OrderApi(client)
        books = await order_api.order_books()
        print("Order Books:", books)
        stats = await order_api.exchange_stats()
        print("Exchange Stats:", stats)
    finally:
        await client.close()

asyncio.run(get_market_data())

order_books() で全マーケットの現在の注文状況を、exchange_stats() で取引量などの統計をまとめて取得できます。

Step 4: 付属サンプルコードを動かしてみる

リポジトリ(ソースコードの置き場)内の examples/ フォルダには、すぐに試せるサンプルが入っています。

python examples/ws.py                  # WebSocket でリアルタイム更新を受信する
python examples/get_info.py            # 各種情報を取得する
python examples/create_cancel_order.py # 注文の作成とキャンセルを試す

サンプルを動かすだけで、各 API の使い方を体感しながら学べます。

動かしてみた

Python 3.12.13 の環境に pip install git+https://... 形式でインストールし、import lighter が問題なく通ることを確認しました。ベース URL である https://mainnet.zklighter.elliot.ai に対して REST API の呼び出しが行える状態になります。

認証不要のパブリックエンドポイントとして、以下のものが提供されています。

  • 取引所の稼働状態を確認する GET /
  • システム情報を取得する GET /info
  • 全マーケットのオーダーブック一覧 GET /api/v1/orderBooks
  • 取引統計情報 GET /api/v1/exchangeStats

外部ネットワークへの接続さえあれば、API キーなしでこれらをすぐ確認できます。注文の送信には秘密鍵による署名(zkLighter 独自の ZK 署名方式)が必要ですが、まず読み取り系 API だけで全体の動作を把握できます。

ブラウザで試す(デモ)

このページでは Gradio(グラジオ:Python 製の簡易 UI ライブラリ)を使ったインタラクティブなデモを提供しています。ドロップダウンからエンドポイントを選ぶだけで、Lighter 取引所のオーダーブックや取引統計をリアルタイムに確認できます。インストール不要でブラウザから直接試せるため、ライブラリを導入する前の「お試し」に最適です。

はじめの一歩:実践のコツ

セットアップが終わったら、次のポイントを意識すると理解がスムーズに深まります。

  • まず読み取り系 API から始める: 認証不要のエンドポイントで動作を確認してから、注文送信へと進むのがスムーズです。
  • try / finally で接続を必ず閉じる: client.close()finally ブロックに書く習慣をつけると、接続がぶら下がり続けるトラブルを防げます。
  • サンプルコードを少しずつ改変する: examples/ フォルダのコードを小さく変えて実行すると、各 API の挙動を体感で学べます。
  • WebSocket で「生のデータ流」を体験する: examples/ws.py を動かすと、オーダーブックの更新がターミナルに流れてくる様子を確認できます。リアルタイム性の理解に直結します。
  • 非同期コードに不慣れでも心配しない: asyncio.run(main()) の形で書けば、通常の Python スクリプトとほぼ同じ感覚で動かせます。難しく考えなくて大丈夫です。

活用アイデア

  • 損益管理ダッシュボード: AccountApi.pnl で PnL(損益)データを取得し、pandas や matplotlib で折れ線グラフ化する収支モニターを作る
  • マーケットメイキングボット: OrderApi でスプレッド(売値と買値の差)を監視しながら、両側に指値注文を自動更新し続けるシステムを構築する
  • 価格アラートシステム: WebSocket でオーダーブックの変動を監視し、設定したしきい値を超えたら LINE や Slack に通知するスクリプトを書く
  • ファンディングレート分析ツール: CandlestickApi.fundings からデータを定期収集し、ポジション(保有中の取引)を持つのに有利なタイミングを分析するレポーターを作る
  • 流動性モニター: OrderApi.order_book_details で複数マーケットの流動性を定期取得し、スプレッドの広がりを CSV に記録するスクリプトを組む
  • ペーパートレードシミュレーター: 実際の注文は出さずに、オーダーブックのデータを使って売買ロジックをテストする学習用ツールを開発する

用語とポイント解説

zkSync(ゼーケーシンク) Ethereum のトランザクション処理を高速・低コストにする Layer 2 技術の一つです。ゼロ知識証明という数学的な仕組みを使って、多数の取引をまとめて検証します。かんたんに言うと「Ethereum の高速・格安レーン」のようなものです。Lighter はこの zkSync 上で動作しています。

ZK Rollup(ゼットケー・ロールアップ) 多くのトランザクションを 1 つにまとめ、証明データだけを Ethereum メインネットに送る仕組みです。セキュリティを保ちながらガス代(手数料)を大幅に下げられます。かんたんに言うと「荷物をまとめて宅急便で送る」イメージです。zkSync はこの方式を採用しています。

DEX(ディーイーエックス)/ 分散型取引所 中央の管理者を持たず、ブロックチェーン上のスマートコントラクト(自動実行されるプログラム)で売買を仲介する取引所です。かんたんに言うと「仲介業者なしで直接売買できる市場」です。Lighter はオーダーブック型の DEX として設計されています。

オーダーブック(Order Book) 売り注文・買い注文の価格と数量を一覧にしたものです。価格帯ごとに注文がどれだけ積まれているかが分かります。かんたんに言うと「市場の注文状況を可視化した板」です。OrderApi で取得できます。

永久先物(Perpetual Futures / パーペチュアル) 満期日のない先物取引のことです。レバレッジ(少ない資金で大きな取引をする仕組み)をかけて価格変動を取引できます。かんたんに言うと「いつまでも保有できる先物」で、Lighter が扱うデリバティブ商品の中心的な存在です。

ファンディングレート(Funding Rate) 永久先物において、一定間隔でポジション保有者の間でやりとりされる調整コストです。買い手と売り手のバランスを保つ役割を持ちます。かんたんに言うと「ポジションを持ち続けるための維持コスト(または受け取れる報酬)」です。CandlestickApi.fundings で取得できます。

REST API(レスト・エーピーアイ) HTTP(ウェブの通信ルール)を使ってデータをやりとりする仕組みです。URL にアクセスすると、データが返ってくる形式で動作します。かんたんに言うと「ウェブサービスへの”質問と回答”の仕組み」です。Lighter SDK の主要なデータ取得はこの方式で行われます。

WebSocket(ウェブソケット) 一度接続を確立すると、サーバーからリアルタイムにデータを受け取り続けられる通信方式です。通常の HTTP と違い、こちらから毎回問い合わせる必要がありません。かんたんに言うと「常時つながったままの電話回線」のようなイメージです。オーダーブックのリアルタイム更新に活用できます。

非同期処理 / async・await(エイシンク・アウェイト) 複数の処理を効率よく並行して進める Python の書き方です。API の返答を待つ間に別の処理を進められるため、通信待ちで止まらないプログラムを書けます。かんたんに言うと「料理しながら洗い物もこなす」効率的な処理スタイルです。

PnL(ピーエヌエル) 「Profit and Loss」の略で、トレードによる利益と損失の合計を指します。運用成績の確認に欠かせない指標です。かんたんに言うと「トータルでいくら儲かった(または損した)か」を示す数字で、AccountApi.pnl で取得できます。

Lighter Python SDK は、REST・WebSocket の両方に対応し、非同期処理で効率的に動作する完成度の高いライブラリです。認証不要で使えるパブリックエンドポイントが豊富なので、まずは市場データの取得から気軽に始められます。ぜひ自動売買ボットの開発やオーダーブック分析ツールの構築などに活用してみてはいかがでしょうか。