如何使用區塊探索器驗證智能合約
導言
通常情況下,智能合約的部署者是唯一能接觸到實際部署代碼的一方,在部署者驗證之前,公眾無法讀取合約的源代碼。 然而,這正是合約驗證作為智能合約開發週期中一個重要步驟的作用所在,因為它有助於提高已部署合約的透明度(對用戶而言)、便利性(對開發者而言)和安全性。
儘管如此,一旦智能合約得到驗證,Kaiascope 和 Kaiascan 等區塊探索器還可以讓公眾使用區塊探索器的用戶界面與合約的公共方法進行交互。 除此之外,公眾還可以直接訪問經過驗證的合同源代碼。
在本指南中,我們將瞭解如何使用區塊探索器驗證 Kaia 網絡上部署的智能合約。
先決條件
開始
在本指南中,我們將介紹在 Kaia 生態系統中存在的區塊探索器上驗證單個合約和多部分合約的方法,這些探索器是:
廢話不多說,讓我們開始吧!
部署單一合同
要驗證智能合約,首先需要在目標網絡上部署合約。 因此,在本指南中,我們將把合同部署到 Kaia Kairos Testnet。 此外,在本教程中,我們將在 Remix IDE 上部署一個名為 "Counter.sol "的簡單計數器合約。 代碼如下所示:
// SPDX-License-Identifier: MITpragma solidity ^0.8.0;contract Counter { uint256 public count; constructor(uint256 _initialCount) { count = _initialCount; } function incrementCounter() public { count++; } function decrementCounter() public { count--; } function resetCounter() public { count = 0; }}
單一合同核查參數
在區塊探索器上驗證合約需要一些參數,在部署智能合約時必須考慮這些參數。 以下是與合同編譯器和部署有關的一些細節,以便成功驗證合同:
Remix IDE :
-
在 Remix IDE 上,導航至Solidity 編譯器選項卡。
- 觀察用於編譯和部署合同的 ** 編譯器版本**。
- 注意合同中使用的開源許可類型。 這意味著在 Solidity 源文件開頭使用的 SPDX 許可證標識符。 在
Counter.sol
文件中,我們使用了// SPDX-License-Identifier:MIT
- 注意用於部署合同的 EVM 版本。
- (可選)如果在編譯過程中啟用了優化,請注意優化運行參數的值
-
在 Remix IDE 上,導航至 Kaia 選項卡。
- (可選) 如果合約構造函數方法接受參數,請注意構造函數參數的ABI-編碼形式
- 成功部署後,在已部署合約選項卡上記下智能合約的合約地址。
部署多部分合同
值得注意的是,部署多部分合同的步驟與部署單部分合同的步驟相同。 在本指南中,我們將部署一個名為 airdropToken.sol
的簡單 KIP7 空投合約。 代碼如下所示:
//SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@kaiachain/contracts/KIP/token/KIP7/KIP7.sol";import "@kaiachain/contracts/access/Ownable.sol";// the creator of the project mints certian amount of fungible tokens directly to a certain selection of wallets.contract TokenAirdrop is KIP7, Ownable { constructor() KIP7("Token Aidrop Demo", "TAD") { } // Airdrop Token function airdropTokens(address[] calldata wAddresses, uint[] calldata tAmount) public onlyOwner { require(wAddresses.length == tAmount.length, "Must be same lenght"); for (uint256 i = 0; i < wAddresses.length; i++) { _mintSingleTokens(wAddresses[i], tAmount[i]); } } function _mintSingleTokens(address wAddress, uint amount) private { _mint(wAddress, amount); } function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return super.supportsInterface(interfaceId); }}
多部分合同核查參數
驗證多部分合同的參數與驗證單部分合同的參數相同。 但是,由於它們是由多個從屬合同組成的,我們需要將合同的所有從屬關係預處理成一個單一的 solidity 文件。 這種預處理通常被稱為智能合約扁平化。
因此,我們必須將合約扁平化,以便在區塊資源管理器上使用新的扁平化 Solidity 文件進行驗證。
Remix IDE:
-
在 Remix IDE 上,導航至文件資源管理器選項卡。
- 在合同文件夾下選擇新創建的合同
- 點擊或用雙指輕點,即可查看合同上的所有可用命令。
- 選擇 ** 壓平**
- 一旦代碼被扁平化,你將看到一個名為
airdropTokens_flattened.sol
的新合約。
有不同的工具可以將多部分智能合約扁平化為一個單一的 Solidity 文件,如 Hardhat Flattener。 請參閱相關智能合約扁平化工具的文檔,瞭解更詳細的使用說明。
核實合同
在獲得所有驗證參數後,我們將在本節中詳細介紹在區塊資源管理器上驗證單一智能合約(Counter.sol)和多部分智能合約(airdropTokens.sol)的步驟。
1. Kaiascope
要在 Kaiascope 上驗證單份合同和多份合同,請按以下步驟操作:
1.1 驗證單一合同
- 進入 Kaiascope的搜索欄,粘貼已部署的合同地址。
- 導航至該頁面上的合同選項卡。
- 單擊匹配合同源代碼鏈接,提交合同代碼以供驗證。
- 在合同驗證頁面,確保您的賬戶已連接到 Kaia 錢包或 Metamask。 在本指南中,我們將使用 Kaia 錢包。
- 在合同地址欄中填寫合同地址。 注:該字段通常會自動填寫合同地址。
- 選擇 "Counter.sol "示例使用的編譯器版本。
- 選擇用於 "Counter.sol "示例的開源許可類型。 在 "Counter.sol "示例中,選擇 "MIT License (MIT)" 選項。 如果沒有使用許可證,請選擇 無許可證(無)。
- 在源代碼字段中,選擇源文本,然後在文本字段中粘貼 "Counter.sol "的源代碼。
- 如果在編譯過程中啟用了優化,則為優化選擇真,並在優化運行下填寫運行次數為200。
- 為合同選擇 EVM 版本。 以 "Counter.sol "為例,選擇 "伊斯坦布爾"選項。
- 點擊底部的驗證碼和簽名並提交按鈕,確認並開始驗證。
- 簽署驗證請求後,您將收到驗證狀態通知
- 驗證完成後,瀏覽器將顯示驗證結果,並顯示包含合同地址的成功結果頁面。 點擊合同地址,查看合同源代碼、合同 ABI和字節碼。
1.2 驗證多部分合同
在 Kaiascope 上驗證多部分合同與驗證單部分合同一樣簡單,只是需要一些額外的步驟。 在本節中,我們將通過以下額外步驟驗證 airdropToken.sol
合約:
- 您可以在源代碼下選擇源文本(Counter.sol 示例的第 3 步),或在源代碼字段下選擇合併文件。 在源文本的情況下,複製 "airdropToken_flattened.sol "中的代碼並將其粘貼到文本字段中。 如果固化文件,可在 Remix IDE 上下載
airdropToken_flattened.sol
文件並上傳到字段。
a. 來源文本
b. 固體文件
在此之後,其他所有步驟都與驗證單個合同相同。 填寫驗證參數後,點擊簽署並提交按鈕進行確認並開始驗證。
驗證完成後,瀏覽器將顯示驗證結果,並顯示包含合同地址的成功結果頁面。 點擊合同地址,查看合同源代碼、合同 ABI和字節碼。
2. Kaiascan
要在 Kaiascan 上驗證單個合同和多部分合同,請瀏覽合同提交申請頁面。
目前,Kaiascan 上的合同驗證還處於測試階段。
2.1 核查單一合同
- 填寫已部署合同的合同地址 (Counter.sol)
- 選擇 "Counter.sol "示例使用的編譯器版本
- 選擇用於 "Counter.sol "示例的開源 許可類型。 在 "Counter.sol "示例中,選擇 "MIT License (MIT)" 選項。 如果沒有使用,請選擇 無許可證(無)
- 確保從 Remix IDE 下載 "Counter.sol",並將其上載到**源代碼(Solidity 文件)**字段中。
- 為合同選擇 EVM 版本。 以 "Counter.sol "為例,選擇 "伊斯坦布爾"選項。
- 如果在編譯過程中啟用了優化,則為優化選擇真,並在優化運行下填寫運行次數為200。
- (可選)要獲取該字段的 ABI 編碼構造函數參數,請訪問 abi.hashex.org,獲取下圖所示的編碼數據:
- 點擊驗證和發佈按鈕開始驗證。
- 驗證完成後,您將收到提交成功信息。 現在,您可以在資源管理器搜索欄中粘貼合同地址,查看合同源代碼、合同 ABI、創建代碼和ABI 編碼值。
2.2 驗證多部分合同
在 Kaiascan 驗證多部分合同的步驟與驗證單個合同相同。 不過,需要注意的是,由於 Kaiascan 目前不支持上傳文件進行驗證,我們將在下面輸入 Solidity 合同代碼字段中複製並粘貼 "airdropToken_flattened.sol "文件。
填寫驗證參數後,點擊驗證和發佈按鈕開始驗證。 驗證完成後,驗證頁面將刷新。 現在,您可以在資源管理器搜索欄中粘貼合同地址,查看合同源代碼、合同 ABI和創建代碼。
結論
恭喜您遵循本指南! 在本教程中,您將學習如何使用 Kaiascope 和 Kaiascan 來驗證合同(單部分和多部分),以提高部署合同的透明度(對用戶)、便利性(對開發人員)和安全性。 如需瞭解更多信息,請訪問 Kaia 文檔;如有任何問題,請訪問 Kaia 論壇。