イベントインデックス
スマートコントラクトイベント(トランザクションログとも呼ばれます)は、スマートコントラクト内で特定のアクションが発生したことをオフチェーンアプリケーションに通知するために使用されます。
Ethereumブロックチェーンは最終的に一貫性があり、ブロックチェーンに送信されたトランザクションは、ブロックに含まれた後にのみ処理されたと見なされます。スマートコントラクトの状態は非常に大きくなる可能性があります。スマートコントラクトとやり取りする際の課題の1つは、スマートコントラクトの現在の状態を追跡することです。
たとえば、ERC20トークン規格は、指定された入力アドレスに対してbalanceOf(address owner) returns (uint256)メソッドを定義していますが、それらの残高をどのように保存または計算するかは規定していません。数十万または数百万の残高保有者を持つトークンスマートコントラクトでは、すべてのブロックですべてのアカウントに対してgetBalance()を呼び出すことは非実用的です。
MultiBaaSは、イベントクエリと呼ばれる一般的なソリューションを実装しています。これにより、ユーザーは一連のイベントと、残高のリストやアドレスごとの最新ステータスなど、それらをどのように列挙または集約するかを定義できます。
イベントクエリ
Blockchain、次にEvent Queriesをクリックします。イベントクエリは、1つ以上のイベント、それらのイベントから選択されたフィールド、およびイベントクエリに使用されるイベントを決定するフィルターで構成されます。特定のイベント内のフィールドは、オプションで1つ以上のアグリゲーターで集約できます。アグリゲーターが定義されたイベントクエリは、集約されていないフィールドでグループ化できます。たとえば、tokenIDフィールドがアグリゲーターで構成されていない場合、イベントクエリから返されたデータをグループ化するために使用できます。
イベントクエリは、保存して実行することも、MultiBaas APIまたはSDKを使用してアドホックに生成して実行することもできます。
イベントクエリの作成
新しいイベントクエリを作成するには、左上のサイドバーのプラスボタンをクリックします。
新しいイベントの追加
イベントクエリにイベントを追加するには、Eventsの右側にあるプラスアイコンをクリックします。名前付きイベントを選択または入力してフィルタリングします。
イベントフィールドの追加
Add Event Fieldボタンをクリックし、ドロップダウンメニューからイベントとフィールドを選択します。これには、実際のイベントパラメーターであるフィールドと、スマートコントラクトアドレス、トランザクションハッシュ、タイムスタンプなどの関連メタフィールドが含まれます。フィールドには別名を付けることができ、さまざまな方法で集約できます。イベントクエリ内の任意のフィールドにアグリゲーターが設定されている場合、1つを除くすべてのフィールドにアグリゲーターを設定する必要があります。
グループ化(オプション)
- Group by:結果を集約するフィールド。これは、アグリゲーターが設定されていない1つのフィールドである必要があります。
- Order by:結果を順序付けるフィールド。デフォルトでは昇順です。
- Order:このフィールドはOrder Byと共に使用され、結果を特定の順序で並べるために使用されます。DESCまたはASCのいずれかで、それぞれ降順と昇順を表します。
イベントフィルターの追加
Add Event Fieldをクリックし、イベントクエリの一部として評価されるイベントデータを制御するために、各イベントに1つ以上の多層フィルターを指定します。