GraphQLClient クラスは、OCAP を利用したブロックチェーンと対話するための主要なインターフェースです。チェーンの状態のクエリ、トランザクションの送信、リアルタイムイベントのサブスクライブのための一連の包括的なメソッドを提供します。Node.js とブラウザ環境の両方でシームレスに動作するように設計されています。
クライアントの初期化
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 の場合、クライアントは初期化時に不可欠なチェーン情報(「コンテキスト」)を自動的に取得してキャッシュします。これはほとんどのユースケースで推奨されます。
例
クライアントインスタンスの作成
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)。
- address
- txConfig
object— トランザクション手数料とガスの設定。
- chainId
例
チェーンコンテキストの取得
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) — 削除する特定のコールバック関数。
例
新規ブロックのサブスクライブ
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 インスタンス。
例
トークン量の変換
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 メソッド名の配列を返します。
例
利用可能なトランザクションメソッドの一覧表示
const sendMethods = client.getTxSendMethods();
console.log('Available send methods:', sendMethods);
// 出力例: [ 'sendPokeTx', 'sendTransferTx', ... ]