請注意,鍊鍊接將從此入門套件中刪除任何API,因為ChainLink目前將鏈接鏈接功能替換。請在此處找到用於鍊鍊鏈接功能的入門套件
使用HardHat開發環境實施以下3個鍊鍊接功能:
對於鍊鍊接功能,請轉到這些TARTER套件:HardHat |鑄造廠(即將推出)
對於Chainlink CCIP(跨鏈互操作性原則),請轉到這些入門套件:HARDHAT |鑄造廠
建議您在此處繼續前進之前要經過Hardhat入門文檔。
git --version
並查看像git version xxx
這樣的響應,你會知道自己做的正確node --version
and獲取輸出,例如: vx.xx
npm
yarn --version
並獲得一個輸出,例如: xxx
如果您熟悉
npx
和npm
而不是yarn
,則可以使用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
要使用打字稿,請運行:
git checkout typescript
npm install
如果您運行npx hardhat --help
您將獲得所有可以運行的任務的輸出。
npm run deploy
這將使您的合同部署到本地網絡。此外,如果在本地網絡上,它將部署模擬鍊鍊接合同供您互動。如果您想與已部署的合同進行互動,請跳過與已部署的合同互動。
測試和與智能合約互動的最佳方法之一是使用本地網絡。要運行帶有所有合同的本地網絡,請執行以下命令:
npx hardhat node
您將獲得當地的區塊鏈,私鑰,已部署的合同(來自deployment
文件夾腳本),並有可能添加到EVM錢包中的端點。
在您的hardhat.config.js
中,您會看到類似的部分:
module.exports = {
defaultNetwork: "hardhat",
networks: {
該文件的這一部分是您定義要與哪些網絡進行交互的地方。您可以在HardHat文檔中閱讀有關整個文件的更多信息。
要與實時或測試網絡互動,您需要:
讓我們看一個使用Sepolia Testnet設置這些設置的示例。
首先,我們需要設置環境變量。我們可以通過在.env
文件中設置它們來做到這一點(如果不存在的話,請創建它)。您還可以從鏈接的Twilio博客中閱讀有關環境變量的更多信息。您會在.env.example
中找到此文件的樣子
重要的是:確保您不會公開此
.env
文件中放置的鍵。這樣,我的意思是不要將它們推到公共倉庫中,請嘗試將它們保持在開發中,而與任何實際資金相關。
SEPOLIA_RPC_URL
環境變量。您可以從煉金術,信息或道德利斯中免費獲得一個。這是您與區塊鏈的聯繫。
PRIVATE_KEY
環境變量。這是您錢包中的私鑰,即metamask。這是將合同部署到公共網絡所需的。您可以選擇將MNEMONIC
環境變量設置為hardhat.config.js
的一些更改。
警告
在開發時,最好使用與任何真實資金相關的元掩體。做到這一點的好方法是製作新的瀏覽器配置文件(在Chrome,Brave,Firefox等上),並在該瀏覽器上安裝MetAmask,而從不發送此錢包。
不要提交並向可能包含敏感信息(例如私鑰)的.ENV文件推動任何更改!如果此信息到達公共GitHub存儲庫,則可以使用它來檢查您在錢包地址中是否有任何Mainnet資金,然後竊取它們!
.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
Line來使用MNEMONIC
而不是PRIVATE_KEY
環境變量。但是不建議這樣做。
對於Mainnet和Polygon等其他網絡,您可以為RPC URL和私鑰使用不同的環境變量。請參閱hardhat.config.js
了解更多信息。
前往鍊鍊鏈接水龍頭,獲得一些ETH和LINK。如果不熟悉,請遵循鍊鍊鏈接文檔。
轉到VRF訂閱頁面並創建新訂閱。保存您的訂閱ID,然後將其放入subscriptionId
helper-hardhat-config.js
文件中
您現在應該全部設置!您可以運行任何命令,然後通過--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
在Sepolia網絡上運行分期測試:
npx hardhat test --network sepolia
或者
npm run test-staging
由於所有測試都是以一種彼此獨立的方式編寫的,因此您可以通過並行運行時間來節省時間。確保AUTO_FUND=false
Inside .env
文件。並行測試有一些局限性,在此處閱讀有關它們的更多信息
並行運行測試:
npx hardhat test --parallel
或者
npm run test --parallel
部署合同後,部署輸出將為您提供部署的合同地址。然後,您可以將這些合同地址與HardHat任務結合使用來對每個合同執行操作。
價格提要消費者合同有一項任務,以閱讀指定價格供稿合同的最新價格
npx hardhat read-price-feed --contract insert-contract-address-here --network network
VRFConsumer合同有兩個任務,一個是請求隨機號碼,另一個用於讀取隨機號碼請求的結果。如開發人員文檔中所述,有兩種方法:
首先閱讀文檔,以了解哪種方法最適合您的用例。
首先,轉到VRF訂閱頁面並創建新訂閱。保存您的訂閱ID並將其放入helper-hardhat-config.js
文件中作為subscriptionId
:
5 : {
// rest of the config
subscriptionId : "777"
}
然後,使用訂閱ID作為構造函數參數,將VRF V2合同消費者部署到最近訂閱的網絡。
npm run deploy --network network
最後,您需要再去一次訂閱頁面,並添加已部署合同的地址作為新消費者。完成此操作後,您可以使用Request-random-number任務執行VRF請求:
npx hardhat request-random-number --contract insert-contract-address-here --network network
一旦您成功提出了一個隨機號碼的請求,您就可以通過讀取隨機數字來查看結果:
npx hardhat read-random-number --contract insert-contract-address-here --network network
將您的VRF V2合同消費者部署到網絡。
npm run deploy --network network
或(如果您使用的紗線)
yarn deploy --network network
現在,您必須通過鏈接令牌為您的消費者合同提供資金:
npx hardhat transfer-link --recipient insert-contract-address-here --amount insert-amount-in-juels-here --network network
完成此操作後,您可以使用Request-random-number任務執行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
一旦您成功提出了一個隨機號碼的請求,您就可以通過讀取隨機數字來查看結果:
npx hardhat read-random-number-direct-funding --contract insert-contract-address-here --network network
AutomationCounter合同是一個簡單的鏈接自動化合同,它只是維護一個計數器變量,該變量每次通過鍊鍊接自動化執行performupeque任務時會增加。合同部署後,您應該前往https://automation.chain.link/進行維護註冊,然後您可以使用以下任務查看由ChainLink Automation遞增的計數器變量
npx hardhat read-automation-counter --contract insert-contract-address-here --network network
您需要一個ETHERSCAN_API_KEY
環境變量。您可以從Etherscan API站點獲得一個。
npx hardhat verify --network <NETWORK> <CONTRACT_ADDRESS> <CONSTRUCTOR_PARAMETERS>
例子:
npx hardhat verify --network sepolia 0x9279791897f112a41FfDa267ff7DbBC46b96c296 "0x694AA1769357215DE4FAC081bf1f309aDC325306"
這將使您的智能合約提交。
npm run lint:fix
這將格式化您的JavaScript和堅固性看起來更好。
npm run format
要估計氣體,只需將REPORT_GAS
環境變量設置為true,然後運行:
npx hardhat test
如果您想查看以美元或其他貨幣的汽油價格,請從CoinMarketCap中添加COINMARKETCAP_API_KEY
。
要查看在運行特定測試套件時執行智能合約源代碼的程度百分比的度量,請輸入
npm run coverage
我們將使用echidna作為模糊測試工具。您需要將Docker安裝到至少分配的8GB虛擬內存中(要更新此參數,請轉到設置 - > Resources-> Advance--> Memory )。
啟動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
總是歡迎捐款!打開公關或問題!