Orakl Network
はじめに
Orakl Networkは、スマートコントラクトがオフチェーンのデータやその他のリソースに安全にアクセスできるようにする分散型オラクルネットワークである。 データフィード](https://docs.orakl.network/developers-guide/data-feed)、[VRF](https://docs.orakl.network/developers-guide/vrf)、[リクエスト・レスポンス](https://docs.orakl.network/developers-guide/request-response)、[プルーフ・オブ・リザーブ](https://docs.orakl.network/developers-guide/proof-of-reserve)のソリューションを提供するネイティブ・トークン・オラクルであることを誇りとしている。
Orakl Networkを使えば、ユーザーはスマートコントラクトに予測不可能で偏りのないランダム性を供給することができる。 Orakl Networkを使えば、ユーザーはスマートコントラクトに予測不可能で偏りのないランダム性を供給することができる。 Orakl Network Verifiable Random Function (VRF)は、スマートコントラクトが検証可能なランダム値を生成することを可能にし、ランダム性を必要とする様々なdAppsで使用することができる。 オラクルネットワークは、2つの異なるアカウントタイプを通じて、開発者にVRFサービスへのアクセスを提供します:恒久アカウントまたは一時アカウントです。 Orakl Networkは、2つの異なるアカウントタイプを通じて、開発者にVRFサービスへのアクセスを提供します:恒久アカウントまたは一時アカウントです。
このチュートリアルでは、Orakl NetworkのVRF機能を利用して、スマート・コントラクトの内部からランダムな単語をリクエストします。
前提条件
- カイア・ウォレット
- Remix IDE
- KaiaプラグインをRemixで
- FaucetからKAIAをテストする。
はじめに
以下のステップでは、Orakl Networkを使ってスマート・コントラクトにランダムな単語を要求する。 始めよう! 始めよう!
ステップ1:契約状態変数の初期化
このステップでは、Cosumerコントラクトを定義し、コントラクト機能に必要なステート変数を初期化する。 私たちのコンシューマ契約は VRFConsumerBase
契約に依存しており、この契約は VRFCoordinator
契約への呼び出しに使用される IVRFCoordinator
インターフェースに継承されています。 次に、ランダムワードの結果を格納する変数 sRandomWord
と、修飾子 onlyOwner
の内部で使用する変数 sOwner
を定義する。
pragma solidity ^0.8.16;import { VRFConsumerBase } from "@bisonai/orakl-contracts/src/v0.1/VRFConsumerBase.sol";import { IVRFCoordinator } from "@bisonai/orakl-contracts/src/v0.1/interfaces/IVRFCoordinator.sol";contract VRFConsumer is VRFConsumerBase { uint256 public sRandomWord; address private sOwner; error OnlyOwner(address notOwner); modifier onlyOwner() { if (msg.sender != sOwner) { revert OnlyOwner(msg.sender); } _; }
ステップ 2:VRF コーディネーターの初期化
スマートコントラクトでランダムな単語を要求するには、VRFCoordinator
スマートコントラクトを初期化する必要がある。 VRFCoordinator
インターフェースは、コンストラクタのパラメータで VRFCoordinator
のアドレスを指定して結合し、ランダムワードのリクエスト (requestRandomWords
) に使用することを推奨する。 VRFCoordinator
コントラクトはKaia Kairos 0xDA8c0A00A372503aa6EC80f9b29Cc97C454bE499とKaia Mainnet 0x3F247f70DC083A2907B8E76635986fd09AA80EFbの両方に配備されている。 VRFCoordinator
インターフェースは、コンストラクタのパラメータで VRFCoordinator
のアドレスを指定して結合し、ランダムワードのリクエスト (requestRandomWords
) に使用することを推奨する。 VRFCoordinator
コントラクトはKaia Kairos 0xDA8c0A00A372503aa6EC80f9b29Cc97C454bE499とKaia Mainnet 0x3F247f70DC083A2907B8E76635986fd09AA80EFbの両方に配備されている。
IVRFCoordinator COORDINATOR; constructor(address coordinator) VRFConsumerBase(coordinator) { COORDINATOR = IVRFCoordinator(coordinator); sOwner = msg.sender; }
ステップ 3: 一時的なアカウントでランダムワードをリクエストする
一時的なアカウントでランダムな単語をリクエストするには、ユーザーはvalueプロパティを使用したコールとともに $KAIA。
function requestRandomWordsDirect( bytes32 keyHash, uint32 callbackGasLimit, uint32 numWords, address refundRecipient ) public payable onlyOwner returns (uint256 requestId) { requestId = COORDINATOR.requestRandomWords{value: msg.value}( keyHash, callbackGasLimit, numWords, refundRecipient ); }
この関数は COORDINATOR
で定義された関数 requestRandomWords()
を呼び出し、引数として keyHash
、callbackGasLimit
、numWords
および refundRecipient
を渡す。 サービスに対する支払いは msg.value
を通して COORDINATOR
契約の requestRandomWords()
に送られる。 もし支払いが予定より多かった場合、超過分の支払いは refundRecipient
アドレスに返される。 最終的には、ランダムな単語のリクエストを生成する。 requestRandomWords
関数のmsg.value
を正確に指定するには、サービス料金の見積もり方法の説明を参照してください。 サービスに対する支払いは msg.value
を通して COORDINATOR
契約の requestRandomWords()
に送られる。 もし支払いが予定より多かった場合、超過分の支払いは refundRecipient
アドレスに返される。 最終的には、ランダムな単語のリクエストを生成する。 requestRandomWords
関数のmsg.value
を正確に指定するには、サービス料金の見積もり方法の説明を参照してください。
ステップ4:ランダムな言葉を満たす
fulfillRandomWords
関数は、VRFCoordinator
コントラクトがランダムワードの要求を満たすときに呼び出される。
function fulfillRandomWords( uint256 /* requestId */, uint256[] memory randomWords) internal override{ // requestId should be checked if it matches the expected request // Generate random value between 1 and 50. sRandomWord = (randomWords[0] % 50) + 1;}
それでは、Orakl VRFソリューションのコードを手に入れたので、実際に使ってみましょう。
実践的な実施
下の例では、ランダムな単語を要求し、その成就を受け取ることができる契約になっている。