
ChainLink Any APIが現在ChainLink関数に置き換えられているため、ChainLink Any APIがこのスターターキットから削除されていることに注意してください。 ChainLink関数のスターターキットをここで見つけてください
HardHat開発環境を使用した次の3つのチェーンリンク機能の実装:
ChainLink関数については、これらのTarterキットにアクセスしてください:Hardhat |ファウンドリー(近日公開)
ChainLink CCIP(クロスチェーンの相互運用性プロトトコル)については、これらのスターターキットにアクセスしてください:Hardhat |ファウンドリー
ここで進む前に、Hardhat Getsing Getsing Documentationを通過することをお勧めします。
git --versionを実行できれば正しくやったことがわかりますgit version xxxnode --version and vx.xxのような出力を取得しますnpmの代わりに糸yarn --versionとxxxのような出力を取得します
yarnの代わりにnpxとnpmに精通している場合は、npxを使用して実行するには、依存関係をインストールするためにnpmを使用できます。
すべての要件をインストールした後、以下を実行してください。
git clone https://github.com/smartcontractkit/hardhat-starter-kit/
cd hardhat-starter-kitそれから:
npm install
推奨事項は、NPM 7以降を使用することです。 NPMの古いバージョンを使用している場合は、ツールボックスで使用されるすべてのパッケージをインストールする必要があります。
npm install --save-dev @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers
糸を使用している場合にもそうです。
yarn add --dev @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers
npx hardhat test
または
npm run test
または
yarn test
TypeScriptを使用するには、実行してください。
git checkout typescript
npm install
npx hardhat --help実行すると、実行できるすべてのタスクの出力が得られます。
npm run deploy
これにより、契約がローカルネットワークに展開されます。さらに、ローカルネットワークでは、操作するためにMock ChainLink契約を展開します。展開された契約と対話したい場合は、展開された契約とのやり取りにスキップします。
スマートコントラクトをテストおよび対話する最良の方法の1つは、ローカルネットワークを使用することです。すべての契約を含むローカルネットワークを実行するには、次のコマンドを実行します。
npx hardhat node
ローカルブロックチェーン、プライベートキー、展開された契約( deploymentフォルダースクリプトから)、および潜在的にEVMウォレットに追加するエンドポイントを取得します。
hardhat.config.jsでは、次のようなセクションが表示されます。
module.exports = {
defaultNetwork: "hardhat",
networks: {
ファイルのこのセクションは、対話するネットワークを定義する場所です。そのファイル全体の詳細については、HardHatドキュメントで読むことができます。
ライブまたはテストネットワークと対話するには、次のことが必要です。
Sepolia TestNetを使用してこれらをセットアップする例を見てみましょう。
まず、環境変数を設定する必要があります。 .envファイルにそれらを設定することで、そうすることができます(そこにない場合は作成します)。 Linked Twilioブログの環境変数の詳細についても読むこともできます。このファイルが.env.exampleでどのように見えるかのサンプルが見つかります
重要:この
.envファイルに入れたキーを公開しないようにしてください。それによって、私はそれらをパブリックリポジトリにプッシュしないでください。そして、実際の資金に関連付けられていない開発で使用するキーをそれらに保つようにしてください。
SEPOLIA_RPC_URL環境変数を設定します。錬金術、インフラ、またはモラリスから無料で入手できます。これがブロックチェーンへの接続です。
PRIVATE_KEY環境変数を設定します。これはあなたの財布、すなわちメタマスクからのあなたの秘密の鍵です。これは、パブリックネットワークに契約を展開するために必要です。 hardhat.config.jsにいくつかの変更を加えて、オプションでMNEMONIC環境変数を設定できます。
警告
開発するときは、実際のお金に関連付けられていないメタマスクを使用することがベストプラクティスです。これを行う良い方法は、新しいブラウザプロファイル(Chrome、Brave、Firefoxなど)を作成し、そのブラウザにメタマスクをインストールし、このウォレットマネーを送信しないことです。
秘密鍵などの機密情報を含む可能性のある.ENVファイルに変更を犯してプッシュしないでください!この情報が公開GitHubリポジトリに到達した場合、誰かがそれを使用して、そのウォレットアドレスにメインネットの資金があるかどうかを確認し、それらを盗むことができます!
.env例:
SEPOLIA_RPC_URL='https://sepolia.infura.io/v3/asdfadsfafdadf'
PRIVATE_KEY='abcdef'
bash例:
export SEPOLIA_RPC_URL='https://sepolia.infura.io/v3/asdfadsfafdadf'
export PRIVATE_KEY='abcdef'
また、
hardhat.config.jsのセクションを解除し、PRIVATE_KEY行にコメントすることにより、PRIVATE_KEY環境変数の代わりにMNEMONIC使用することもできます。ただし、これは推奨されません。
MainNetやPolygonなどの他のネットワークの場合、RPC URLと秘密鍵に異なる環境変数を使用できます。詳細については、 hardhat.config.jsを参照してください。
チェーンリンクの蛇口に向かい、ETHとリンクを取得します。なじみがない場合は、ChainLinkドキュメントに従ってください。
VRFサブスクリプションページにアクセスして、新しいサブスクリプションを作成します。サブスクリプションIDを保存して、 helper-hardhat-config.jsファイルにsubscriptionIdとして配置します
これですべてセットアップされるべきです!任意のコマンドを実行して、今すぐ--network sepoliaを渡すことができます!
契約を展開するには:
npm run deploy --network sepolia
ステージングテストネットテストを実行します
npm run test-staging
フォークされたネットワークでテストを実行したい場合は、次の手順に従ってください。
MAINNET_RPC_URL環境変数を設定します。FORKING_BLOCK_NUMBER環境変数として設定します。無視された場合、それは毎回最新のブロックを使用し、テストの矛盾につながる可能性があります。enabledフラグをtrue / falseに設定して、フォーキング機能を有効 /無効にします forking: {
url: MAINNET_RPC_URL,
blockNumber: FORKING_BLOCK_NUMBER,
enabled: false,
}
テストはテストディレクトリに配置されており、単体テストとステージング/テストネットテストに分割されます。ユニットテストはローカル環境でのみ実行する必要があり、ステージングテストはライブ環境でのみ実行する必要があります。
ユニットテストを実行するには:
npx hardhat test
または
npm run test
または
yarn test
セポリアネットワークでステージングテストを実行するには:
npx hardhat test --network sepolia
または
npm run test-stagingすべてのテストは互いに独立するように書かれているため、それらを並行して実行することで時間を節約できます。 AUTO_FUND=false inside .envファイルを確認してください。並行テストにはいくつかの制限があります。詳細についてはこちらをご覧ください
並行してテストを実行するには:
npx hardhat test --parallel
または
npm run test --parallel
契約を展開した後、展開出力により、展開された契約アドレスが提供されます。その後、これらの契約アドレスをHardHatタスクと組み合わせて使用して、各契約で操作を実行できます。
指定された価格供給契約の最新価格を読むために、消費者契約には1つのタスクがあります
npx hardhat read-price-feed --contract insert-contract-address-here --network networkVRFCOSUMER契約には2つのタスクがあります。1つは乱数を要求し、もう1つは乱数リクエストの結果を読み取ります。開発者のドキュメントで説明されているように、2つの方法があります。
最初にドキュメントを読んで、どの方法がユースケースに最も適しているかを理解してください。
開始するには、VRFサブスクリプションページに移動して、新しいサブスクリプションを作成します。サブスクリプションIDを保存して、 helper-hardhat-config.jsファイルにsubscriptionIdとして配置します。
5 : {
// rest of the config
subscriptionId : "777"
}次に、サブスクリプションIDをコンストラクター引数として使用して、VRF V2契約消費者を最近のサブスクリプションのネットワークに展開します。
npm run deploy --network network 最後に、サブスクリプションページにもう一度移動し、展開された契約のアドレスを新しい消費者として追加する必要があります。それが完了したら、リクエストランダム番号タスクでVRFリクエストを実行できます。
npx hardhat request-random-number --contract insert-contract-address-here --network network乱数のリクエストを正常に行ったら、Read-Random-Numberタスクを介して結果を確認できます。
npx hardhat read-random-number --contract insert-contract-address-here --network networkVRF V2契約消費者をネットワークに展開します。
npm run deploy --network network または(糸を使用している場合)
yarn deploy --network network これで、Link Tokensとの消費者契約に資金を提供する必要があります。
npx hardhat transfer-link --recipient insert-contract-address-here --amount insert-amount-in-juels-here --network networkそれが完了したら、リクエストランダム番号タスクでVRFリクエストを実行できます。
npx hardhat request-random-number-direct-funding --callbackgaslimit insert-callback-gas-limit-here --requestconfirmations insert-request-confirmations-here --numwords insert-number-words-here --contract insert-contract-address-here --network network乱数のリクエストを正常に行ったら、Read-Random-Numberタスクを介して結果を確認できます。
npx hardhat read-random-number-direct-funding --contract insert-contract-address-here --network networkAutomationCounter契約は、ChainLinkオートメーションによって実行されるたびに増分するカウンター変数を単純に維持する単純なチェーンリンクオートメーション対応契約です。契約が展開されたら、https://automation.chain.link/にアクセスしてupkeepsに登録する必要があります。以下のタスクを使用して、ChainLink Automationによって増加するカウンター変数を表示できます。
npx hardhat read-automation-counter --contract insert-contract-address-here --network networkETHERSCAN_API_KEY環境変数が必要です。 Etherscan APIサイトから1つを入手できます。設定している場合は、展開スクリプトがデフォルトで確認しようとしますが、手動で確認する場合は、実行できます。
npx hardhat verify --network <NETWORK> <CONTRACT_ADDRESS> <CONSTRUCTOR_PARAMETERS>
例:
npx hardhat verify --network sepolia 0x9279791897f112a41FfDa267ff7DbBC46b96c296 "0x694AA1769357215DE4FAC081bf1f309aDC325306"
これにより、スマートコントラクトが覆されます。
npm run lint:fix
これにより、JavaScriptとSolidityの両方をフォーマットして、見栄えが良くなります。
npm run format
ガスを推定するには、 REPORT_GAS環境変数をtrueに設定してから実行します。
npx hardhat test
USDまたはその他の通貨でガス価格をご覧になりたい場合は、CoinMarketCapからCOINMARKETCAP_API_KEYを追加してください。
特定のテストスイートが実行されているときにスマートコントラクトソースコードが実行される程度の割合の割合で測定値を確認するには、タイプ
npm run coverage
Echidnaをファズテストツールとして使用します。少なくとも8GBの仮想メモリが割り当てられたDockerをインストールする必要があります(このパラメーターを更新するには、設定 - > resources-> Advanced->メモリに移動します)。
Echidnaインスタンスを開始するには、実行します
npm run fuzzing
初めて使用する場合は、DockerがEth-Security-Toolboxイメージをダウンロードするのを待つ必要があります。
ファジングランを開始します
echidna-test /src/contracts/test/fuzzing/AutomationCounterEchidnaTest.sol --contract AutomationCounterEchidnaTest --config /src/contracts/test/fuzzing/config.yaml
Echidnaタイプを終了します
exit貢献はいつでも大歓迎です! PRまたは問題を開きます!