カスタムイベントの購読
SubscribeEvents
を使うことで、任意のコントラクトからカスタムまたは既存のイベントを監視できます。event
文字列がSolidityのイベントシグネチャと一致していること、また監視したいコントラクトアドレスを指定してください。追加のフィルターを設定することで、特定のウォレットやトークンIDからのイベントのみを受信することも可能です。
OnEventReceived
関数は SubscribeEventsReturn
オブジェクトを提供し、コントラクトタイプやトランザクションハッシュなどの情報が含まれます。発行されたイベント値を取得したい場合は、SubscribeEventsReturn > EventLog > EventDecoded
の EventDecoded
オブジェクトを利用してください。
var indexer = new ChainIndexer(Chain.TestnetArbitrumSepolia);
var streamOptions = new WebRPCStreamOptions<SubscribeEventsReturn>(
OnEventReceived,
OnWebRPCErrorReceived);
var eventFilter = new EventFilter
{
accounts = Array.Empty<string>(),
contractAddresses = new[] {"0x4ab3b16e9d3328f6d8025e71cefc64305ae4fe9c"},
tokenIDs = new[] {"0"},
events = new[] {"Transfer(address indexed from, address indexed to, uint256 value)"}
};
indexer.SubscribeEvents(new SubscribeEventsArgs(eventFilter), streamOptions);
残高更新の購読
指定したコントラクト上のウォレットの残高更新を監視します。OnBalanceUpdateReceived
関数は、指定したウォレットアドレスの現在の残高を含む SubscribeBalanceUpdatesReturn
オブジェクトを提供します。
var indexer = new ChainIndexer(Chain.TestnetArbitrumSepolia);
var streamOptions = new WebRPCStreamOptions<SubscribeBalanceUpdatesReturn>(
OnBalanceUpdateReceived,
OnWebRPCErrorReceived);
var contractAddress = "0x4ab3b16e9d3328f6d8025e71cefc64305ae4fe9c";
indexer.SubscribeBalanceUpdates(new SubscribeBalanceUpdatesArgs(contractAddress), streamOptions);
レシートの購読
指定したコントラクト上のレシート更新を監視します。OnSubscribeReceiptsMessageReceived
関数は、現在のレシート情報を含む SubscribeReceiptsReturn
オブジェクトを提供します。
var indexer = new ChainIndexer(Chain.TestnetArbitrumSepolia);
var streamOptions = new WebRPCStreamOptions<SubscribeReceiptsReturn>(
OnSubscribeReceiptsMessageReceived,
OnWebRPCErrorReceived);
var filter = new TransactionFilter
{
contractAddress = "0x4ab3b16e9d3328f6d8025e71cefc64305ae4fe9c"
};
indexer.SubscribeReceipts(new SubscribeReceiptsArgs(filter), streamOptions);
ストリームの中断
イベントの受信が不要になった場合は、必ずストリームをキャンセルしてください。これにより、ゲーム内で稼働中のすべてのリスナーが中断されます。
new ChainIndexer(Chain.TestnetArbitrumSepolia).AbortStreams();