メインコンテンツへスキップ

ヘルパーメソッド

GraphQLClient クラスは、OCAP を利用したブロックチェーンと対話するための主要なインターフェースです。チェーンの状態のクエリ、トランザクションの送信、リアルタイムイベントのサブスクライブのための一連の包括的なメソッドを提供します。Node.js とブラウザ環境の両方でシームレスに動作するように設計されています。

クライアントの初期化

javascript
const GraphQLClient = require('@ocap/client');

// Beta チェーンに接続
const client = new GraphQLClient('https://beta.abtnetwork.io/api');

(async () => {
  const res = await client.getChainInfo();
  console.log('Connected to chain:', res.info.network);
})();

このセクションでは、GraphQLClient クラスのコアヘルパーメソッドについて詳しく解説します。

コンストラクタ

new GraphQLClient(endpoint, autoInit)

GraphQLClient の新しいインスタンスを作成します。

パラメータ

  • endpoint string (required) — ブロックチェーンノードの GraphQL エンドポイントの絶対 URL(例:https://beta.abtnetwork.io/api)。
  • autoInit boolean (default: true) — true の場合、クライアントは初期化時に不可欠なチェーン情報(「コンテキスト」)を自動的に取得してキャッシュします。これはほとんどのユースケースで推奨されます。

クライアントインスタンスの作成

javascript
const client = new GraphQLClient('https://beta.abtnetwork.io/api', true);

コアメソッド

これらのメソッドは、クライアントとチェーンと対話するための基本的な機能を提供します。

getContext()

チェーンID、ネイティブトークンの詳細、トランザクション手数料の設定など、不可欠なチェーン情報を取得してキャッシュします。このメソッドは、コンストラクタで autoInit が有効になっている場合に自動的に呼び出されます。それ以降の呼び出しでは、キャッシュされたコンテキストが返されます。

戻り値

  • Promise object — チェーンのメタデータを含むコンテキストオブジェクトに解決される Promise。
    • chainId string — ブロックチェーンネットワークの一意の識別子。
    • consensus string — コンセンサスエンジンのバージョン。
    • token object — ネイティブトークンに関する情報。
      • address string — ネイティブトークンコントラクトのアドレス。
      • decimal number — ネイティブトークンの小数点以下の桁数。
      • symbol string — ネイティブトークンのシンボル(例:TBA)。
    • txConfig object — トランザクション手数料とガスの設定。

チェーンコンテキストの取得

javascript
async function logChainToken() {
  const context = await client.getContext();
  console.log(`Native Token Symbol: ${context.token.symbol}`);
}

logChainToken();

setGasPayer(wallet)

ウォレットを「ガス支払者」として機能するように設定します。設定されると、このウォレットはこのクライアントインスタンスを通じて送信されるトランザクションのトランザクション手数料を負担し、ユーザーにガスレス体験を提供します。詳細については、ガス支払いのコンセプトガイドを参照してください。

パラメータ

  • wallet WalletObject (required) — address、publicKey、secretKeyプロパティを持ち、signメソッドを備えたウォレットオブジェクト。

decodeTx(input)

さまざまな形式のトランザクションを、人間が読める形式の JavaScript オブジェクトにデシリアライズします。

パラメータ

  • input Buffer | string (required) — デコードするトランザクションデータ。Buffer または hex、base58、base64 形式の文字列を指定できます。

戻り値

  • object object — デコードされたトランザクションオブジェクト。

getType(name)

指定された型名の Protobuf メッセージクラスを取得します。これは、Protobuf メッセージを手動で構築または検査する必要がある高度なシナリオで役立ちます。

パラメータ

  • name string (required) — Protobuf メッセージタイプの名前(例:'Transaction'、'TransferTx')。

戻り値

  • class | null object — メッセージクラスのコンストラクタ。見つからない場合は null。

イベントのサブスクリプション

クライアントは WebSocket を介したリアルタイムのイベントサブスクリプションをサポートしており、アプリケーションがオンチェーンイベントに即座に反応できるようにします。

subscribe(topic, callback)

WebSocket 接続を確立し、特定のイベントトピックをサブスクライブします。

パラメータ

  • topic string (required) — サブスクライブするイベントトピック(例:'newBlock'、'tx')。
  • callback function (required) — イベントが受信されたときに実行される関数。イベントのペイロードを唯一の引数として受け取ります。

unsubscribe(topic, callback)

特定のトピックに対して以前に登録されたコールバックを削除します。

パラメータ

  • topic string (required) — サブスクライブを解除するイベントトピック。
  • callback function (required) — 削除する特定のコールバック関数。

新規ブロックのサブスクライブ

javascript
const handleNewBlock = (block) => {
  console.log(`New block received! Height: ${block.height}`);

  // 1つのブロックを受信した後にサブスクライブを解除
  client.unsubscribe('newBlock', handleNewBlock);
  console.log('Unsubscribed from newBlock events.');
};

client.subscribe('newBlock', handleNewBlock);
console.log('Subscribed to newBlock events...');

トークンユーティリティメソッド

これらのヘルパーは、人間が読める形式のトークン量とオンチェーンの基本単位表現との間の変換を簡素化します。

fromUnitToToken(value)

チェーンの基本単位(大きな整数文字列)の値を、ネイティブトークンの小数点以下の桁数に基づいて標準的な10進数文字列に変換します。

パラメータ

  • value string (required) — チェーンの基本単位での量。

戻り値

  • string string — 標準トークン単位での量。

fromTokenToUnit(amount)

標準的な10進数量をチェーンの基本単位表現(BN.js インスタンス)に変換します。

パラメータ

  • amount number | string (required) — 標準的な10進数形式でのトークン量。

戻り値

  • BN object — チェーンの基本単位での値を表す BN.js インスタンス。

トークン量の変換

javascript
async function convertToken() {
  // 100 TBA をその基本単位に変換
  const unitAmount = await client.fromTokenToUnit(100);
  console.log(`100 TBA is ${unitAmount.toString()} in base units.`);

  // 元に戻す
  const tokenAmount = await client.fromUnitToToken(unitAmount.toString());
  console.log(`${unitAmount.toString()} base units is ${tokenAmount} TBA.`);
}

convertToken();

メソッドのディスカバリー

クライアントは、接続されている OCAP ノードでサポートされているすべてのトランザクションタイプに対応するメソッドを動的に生成します。これらのディスカバリーメソッドを使用すると、利用可能なすべてのトランザクション関連の関数をプログラムで一覧表示できます。

getTxSendMethods()

利用可能なすべての send...Tx メソッド名の配列を返します。これらのメソッドは、トランザクションの署名と送信の完全なライフサイクルを処理します。

getTxEncodeMethods()

利用可能なすべての encode...Tx メソッド名の配列を返します。これらのメソッドは、トランザクションを準備してバッファにシリアライズしますが、署名は行いません。

getTxSignMethods()

利用可能なすべての sign...Tx メソッド名の配列を返します。これらのメソッドは、トランザクションをエンコードしてから署名し、署名済みのトランザクションオブジェクトを返します。

getTxMultiSignMethods()

マルチシグネチャワークフローで使用される、利用可能なすべての multiSign...Tx メソッド名の配列を返します。

利用可能なトランザクションメソッドの一覧表示

javascript
const sendMethods = client.getTxSendMethods();
console.log('Available send methods:', sendMethods);
// 出力例: [ 'sendPokeTx', 'sendTransferTx', ... ]