最終更新日: 2025-10-31
Kora の基本
Kora は、Solana トランザクションの手数料支払いサービスを提供する JSON-RPC サーバーです。ユーザーは SOL の代わりに SPL トークンでトランザクション手数料を支払うことができ、ユーザーが SOL を保有していない可能性があるアプリケーションでより良い UX を実現します。
Kora
RPC は、許可されたプログラム、ウォレット、トークンなどを定義する設定(kora.toml)に基づいてクライアントリクエストを検証します。検証が完了すると、Kora サーバーはトランザクションに署名してネットワークに送信します(または、シリアライズされた署名済みトランザクションをクライアントに返します)。
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ Client App │───▶│ Kora RPC │───▶│ Solana RPC ││ │ │ Server │ │ │└─────────────────┘ └─────────────────┘ └─────────────────┘│▼┌──────────────────────┐│ Kora Private Key ││ ( or Turnkey/Privy ) │└──────────────────────┘
このクイックスタートでは、ローカル Kora RPC サーバーを起動し、手数料支払いワークフローのテスト用にクライアント統合を実演します。
要件
- Solana CLI v2.2.x 以上
- Rust/Cargo (Kora RPC のインストール用)
- Node.js v22+ およびパッケージマネージャー(例: pnpm、npm)
Kora RPC のインストール
Kora RPC サーバーをグローバルにインストールします:
cargo install kora-cli
重要: Kora の
mainブランチは統合ブランチであり、未リリースまたはベータ版の変更が含まれている可能性があります。本番環境およびチュートリアルでの使用には、必ず最新の安定版リリースタグを使用してください。最新の安定版リリースは Kora リリースページで確認できます。
プロジェクトの作成
リポジトリをクローンし、最新の安定版タグをチェックアウトして、入門デモディレクトリに移動します:
git clone https://github.com/solana-foundation/koracd koragit checkout v2.0.5cd examples/getting-started/demo
プロジェクト構造
デモには3つの主要コンポーネントが含まれています:
クライアントディレクトリ(client/src/)
setup.ts- ローカル環境のセットアップ(keypair を作成して .env に書き込み、SOL をエアドロップし、テストトークンを初期化)quick-start.ts- Kora 接続の確立と Kora RPC サーバーへのシンプルな呼び出しを示すクイックスタートデモスクリプトfull-demo.ts- 複数の Kora RPC メソッドを実演する完全なデモスクリプト
サーバーディレクトリ(server/)
kora.toml- 検証ルール、許可されたトークン、および手数料パラメータを定義するKora RPC設定signers.toml- Koraサーバーの署名者を定義する署名者設定
共有設定
.env- keypairとアドレスの環境変数(ルートに.envを作成 -demo/.env)。環境変数はセットアップスクリプトによって作成されます。
環境のセットアップ
まず、環境用の.envを作成します:
# Create .env file (will be populated by setup script)touch .env
クライアントのセットアップ
クライアントの依存関係をインストールします:
# From project root (kora/)cd examples/getting-started/demo/clientpnpm install --ignore-workspace # use --ignore-workspace to avoid pnpm workspace conflicts
Kora RPCサーバーのセットアップ
Koraサーバーは、手数料の支払いに使用できるトークンを指定するための設定が必要です。server/kora.tomlを開き、検証セクションを確認してください。ここでは、トランザクションに署名する前に検証される複数のパラメータを指定できます:
max_allowed_lamports:ユーザーに代わって支払う意思のある最大トランザクション手数料max_signatures:トランザクションが持つことのできる最大署名数price_source:トークン価格を決定するためのオラクル(「Mock」または「Jupiter」)allowed_programs:実行可能なプログラムIDのホワイトリスト(例:System Program、Token Program)allowed_tokens:転送が許可されているトークンのホワイトリストallowed_spl_paid_tokens:プログラムが支払いとして受け入れるミントアドレスの配列disallowed_accounts:Kora RPCとのやり取りが許可されていないアカウントのブラックリスト
今のところ、デフォルト値をそのまま使用しましょう。後でここに戻って変更することができます(設定オプションの詳細については、Kora設定ドキュメントを参照してください)。
署名者のセットアップ
server/signers.tomlを開き、署名者セクションを確認してください。ここでは、トランザクションに署名するために使用される署名者と、(複数の署名者を使用する場合)どの署名者を使用するかを選択するための戦略を指定できます。今のところ、デフォルト値を使用して単一の署名者を使用しましょう。後でここに戻って変更することができます(署名者設定の詳細については、署名者ガイドドキュメントを参照してください)。
テストサーバー
3つのターミナルを開いて、以下のコマンドを実行してください:
ターミナル1:ローカルテストバリデーターの起動
# From project root or anywheresolana-test-validator -r
ターミナル2:環境の初期化
# From ./client directorypnpm init-env
このスクリプトは以下を実行します:
- キーペアを生成して
.envに保存 - テストアカウントにSOLをエアドロップ
- ローカルUSDCトークンを作成して初期化
- テストアカウントにトークンを供給
重要
必ず.envから新しいUSDCテストトークンの公開鍵をコピーして、./server/kora.toml内のallowed_tokensとallowed_spl_paid_tokensを更新してください。
allowed_tokens = ["YOUR_USDC_LOCAL_PUBLICK_KEY" # Update this based on the USDC_LOCAL_KEY public key comment in your .env]allowed_spl_paid_tokens = ["YOUR_USDC_LOCAL_PUBLICK_KEY" # Update this based on the USDC_LOCAL_KEY public key comment in your .env]
ターミナル3:支払いATAの初期化(オプション)
支払いを受け取るには、支払いトークン用のAssociated Token Account(ATA)を初期化する必要があります。以下のコマンドを実行することで初期化できます:
# From ./server directorykora rpc initialize-atas --signers-config signers.toml
このコマンドは以下を実行します:
kora.tomlから支払いアドレスを読み取り(支払いアドレスを指定していない場合は、signers.tomlに記載されているすべての署名者)allowed_spl_paid_tokensに記載されているすべてのトークンのATAを作成- すでに存在するATAはスキップ
fee_payer_keyフラグを使用して、ATA生成用のカスタム手数料支払者をオプションで指定可能
ターミナル4:Kora RPCサーバーの起動
# From ./server directorykora rpc start --signers-config signers.toml
注意:
price_source = "Jupiter"を使用した本番環境のデプロイメントでは、JUPITER_API_KEY環境変数を設定する必要があります。この設定がないとサーバーは起動に失敗します:JUPITER_API_KEY=your_api_key kora rpc start --signers-config signers.toml
サーバーはkora.tomlとsigners.tomlから設定を読み取り、共有.envファイルの環境変数を使用します。ここで指定されているものと異なるフォルダ構造を使用している場合は、--configを使用してkora.tomlの場所を指定し、--signers-configを使用して署名者設定のディレクトリを指定する必要がある場合があります:
kora rpc --config path/to/kora.toml start --signers-config path/to/signers.toml
RPCサーバーオプションのヘルプについては、kora rpc -hにアクセスしてください。
ターミナル5:クライアントデモの実行
# From ./client directorypnpm start
次のような出力が表示されるはずです:
Kora Config: {fee_payer: 'Df2UmGQH86TBDsub7XZoSAo7KZa1ZJZr2w1PL1APUjjU',validation_config: {max_allowed_lamports: 1000000,max_signatures: 10,allowed_programs: ['11111111111111111111111111111111','TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA','ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL','AddressLookupTab1e1111111111111111111111111','ComputeBudget11111111111111111111111111111111'],allowed_tokens: ['usdCAEFbouFGxdkbHCRtMTcN7DJHd3aCmP9vqjLgmAp'],allowed_spl_paid_tokens: ['usdCAEFbouFGxdkbHCRtMTcN7DJHd3aCmP9vqjLgmAp'],disallowed_accounts: [],price_source: 'Mock',fee_payer_policy: {...},price: { type: 'margin', margin: 0 }},enabled_methods: { ... }}}Blockhash: C8W8d5w2H4jKXyFg5CEBoiaPvEpJ1am7xLxZ3fym4a2g
これでKoraサーバーが正常に動作し、適切に構成されていることが確認できました!
次のステップ
基本的なセットアップが正常に動作したら、Koraの完全なフローデモをご覧ください:
追加のKora RPCメソッドを探索する:
estimateTransactionFee- トランザクションの手数料を計算getPayerSigner- 支払者の署名者と支払先を取得getSupportedTokens- サポートされている支払いトークンの配列を返すsignTransaction- 手数料がカバーされている場合に条件付きでトランザクションに署名transferTransaction- SOLまたはSPLトークンの転送トランザクションを作成(Koraの手数料支払者によって署名)signAndSendTransaction- Koraの手数料支払者でトランザクションに条件付きで署名し、設定されたSolana RPCに送信getPaymentInstruction- トランザクションの支払いinstructionsを取得
ご質問はありますか?
Solana Stack ExchangeでKoraタグを使って質問してください。
Is this page helpful?