前言 本文參考 Alchemy 的範例 進行實作,Alchemy 是一個區塊鏈開發者平台,能夠讓開發者訪問以太坊區塊鏈上的 API 端點,並且可以讀寫交易。
本文採用的區塊鏈測試網路與範例文章不同,使用的是 rinkeby
測試網路。
前置作業 為了讓所有人都能夠查看智能合約的原始碼並且與智能合約互動,因此需要在 Etherscan 上驗證此智能合約屬於自己,並且把智能合約的 ABI 和原始碼公開。
首先,註冊 Etherscan 服務,並且新增一個 API Key。
驗證 修改 .env
檔。
1 2 3 4 5 API_URL=https://eth-rinkeby.alchemyapi.io/v2/your-api-key API_KEY=your-api-key PRIVATE_KEY=your-private-key CONTRACT_ADDRESS=your-contract-address ETHERSCAN_API_KEY=your-etherscan-key
安裝 @nomiclabs/hardhat-etherscan
套件。
1 npm install --save-dev @nomiclabs/hardhat-etherscan
更新 hardhat.config.js
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 require ('dotenv' ).config ();require ('@nomiclabs/hardhat-ethers' );require ('@nomiclabs/hardhat-etherscan' );const { API_URL , PRIVATE_KEY , ETHERSCAN_API_KEY } = process.env ;module .exports = { solidity : '0.7.3' , defaultNetwork : 'rinkeby' , networks : { hardhat : {}, rinkeby : { url : API_URL , accounts : [PRIVATE_KEY ], }, }, etherscan : { apiKey : ETHERSCAN_API_KEY , }, };
在 Etherscan 上驗證此智能合約,確保網路是 rinkeby
測試網路,以及 CONTRACT_ADDRESS
是此智能合約的地址,且初始訊息與部署腳本的初始訊息一致。
1 npx hardhat verify --network rinkeby CONTRACT_ADDRESS 'Hello World!'
顯示結果如下:
1 2 3 4 5 6 7 Nothing to compile Successfully submitted source code for contract contracts/HelloWorld.sol:HelloWorld at 0x6839691078Ef669589F65Fca9968f6430D509812 for verification on the block explorer. Waiting for verification result...Successfully verified contract HelloWorld on Etherscan. https://rinkeby.etherscan.io/address/0x6839691078Ef669589F65Fca9968f6430D509812
再次查看合約 ,可以看到合約的 ABI 和原始碼皆已被公開,而且顯示已驗證的符號。
程式碼
參考資料