スマート コントラクトへの発行 (Chainlink ダイレクト リクエスト) Chainlink Direct Requests を使用して SxT クエリ結果をオンチェーンで公開します。
🚧 Space and Time を初めて使用する場合は、まず「スタート ガイド」に従って基本概念を理解することをお勧めします。
Chainlink ダイレクトリクエストとは何ですか? Chainlink Direct Request (DR) を使用すると、スマート コントラクトが安全かつ分散型の方法で外部データや API にアクセスできるようになります。 スマート コントラクトは、特定の Chainlink ノードに、指定されたソースから特定のデータを取得するように要求します。 次に、ノードはデータをフェッチしてコントラクトに返し、コントラクトはそのデータを使用してプログラムされたロジックを実行できます。
📘 セキュリティに関するご注意
DR を使用すると、さまざまなデータ ソースにアクセスできます。 データ ソースのセキュリティは DR の全体的なセキュリティに影響します。つまり、データ ソースが安全で信頼できる場合、Chainlink ノードから返されるデータも安全になります。 データ ソースが改ざんやその他のセキュリティ リスクに対して脆弱な場合、DR のセキュリティが侵害される可能性があります。
Space and Time は、SxT データ ウェアハウスで実行されるクエリの結果を暗号的に保証することにより、安全で信頼性の高いデータ ソースを提供します。 これにより、完全に安全で改ざん防止された方法でオンチェーンとオフチェーンの両方のデータに対する分析を統合することで、スマート コントラクト開発者が複雑なビジネス ロジックをプログラムできる新たな機会が数多く開かれます。
ダイレクト リクエストを使用した SxT クエリの発行の概要
ユーザーは、アクセスする必要があるデータと使用条件を定義するコード (SQL) を含むスマート コントラクトをブロックチェーン上にデプロイします。 ユーザーは、requestId とクエリ パラメーターを使用して SxTRelay コントラクトに対して API リクエストを作成し、リクエストを送信するために最低金額を支払います。 SxTRelay コントラクトは、ユーザーのアドレスを一意の識別子として受け取ります。 これは既存の Chainlink Client Request コントラクトを使用し、リクエストを Chainlink オペレーターに送信する requestQuery や、クエリ結果をユーザーのスマート コントラクトに書き戻すための saveQuery などのメソッドを備えています。 SxTRelay コントラクトは、ユーザー コントラクト アドレス、requestId、および URL を使用して、このリクエストのイベントを発行します。 SxTRelay コントラクトは、データ ソースとリクエスト パラメーターを指定して、Chainlink Operator Contract を通じて特定の Chainlink ノードにデータをリクエストします。 Chainlink ノードは、発行されたイベントをリッスンすることでリクエストを受信し、指定されたソースからデータをフェッチします。 SxT によって書き込まれた外部アダプターからのデータを要求します。 このアダプターは、SxT Validator レイヤーに直接 API 呼び出しを実行して、SxT Data Warehouse クラスターからクエリ結果を取得します。 SxT Validator レイヤーは、ブロックチェーン履歴全体が保存される SxT Data Warehouse クラスターにクエリ リクエストを送信します。 外部アダプターは情報を取得し、Chainlink ジョブ タスクの 1 つが JSON クエリ結果を解析し、データを 2D 配列にエンコードします。 Chainlink ノードは、トランザクションでデータを Chainlink Operator スマート コントラクトに返します。 Chainlink Operator は、コールバック関数とコントラクト アドレスを使用して、SxTRelay コントラクトを介してユーザー スマート コントラクトにデータを送信します。 SxTRelay コントラクトはリクエストを User コントラクトに保存し、それを使用してプログラムされたロジックを実行できます。 基本的に、Chainlink オペレーター ノードはレポートを生成し、Web3 呼び出しを行ってこのレポートをスマート コントラクトに送信します。 スマート コントラクトはデータを処理し、内部状態の更新や他のスマート コントラクトのトリガーなどの追加のアクションを実行する場合があります。
