網絡被稱為去中心化的3個英特智能程序網,它可以在鏈上的任何一個智能鏈上部署一個人的智能鏈與智能鏈,就是你在上面運行的任何一個智能鏈上的聯繫人。如果希望和合同是任何人都可以購買的,任何人都可以創建一個區塊源鏈,然後通過網絡驗證工具,而不是通過UI 驗證來進行交易。進行。
Etherscan 是一個永遠區塊鏈的區塊鏈瀏覽器,這些區塊鏈的區塊瀏覽器,包括以太坊,包括Arbitrum,Optimism 和其他很多類似的東西。最近這個通過Etherscan 讀取智能合約。
在上篇文章中,你可以通過掃描上篇的智能合約和我們在其他文章中進行驗證。
驗證實體Solidity 文件
我們首先需要部署智能合約,然後進入Remix IDE。然後進入“Counter.sol”的新文件。複製粘貼下面的代碼:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Counter { uint256 internal counter; function increment() external { unchecked { ++counter; } } function getCurrent() external view returns(uint256) { return counter; } }
在部署時,我們使用的Solidity 編譯器是哪個版本,並且在合同代碼中最重要的“SPDX-License-Identifier”中必須先聲明的許可證類型。
因為在合約文件中標註了“^0.8.0”,所以這個合約可以被稱為我們的任何版本號為0.8.0和0.9.0之間的solidity編譯器,這樣就包含多個版本的0.8.0 ,0.8.1,0.8.2 等。
在“Solidity Compiler”下,選擇Solidity的編譯器版本(可以是任何0.8的版本),點擊“Compile Counter.sol”。在這個例子中,我們會使用0.8.7的版本。
在成功編譯之後,“Deploy & Runactions”下面,在“Transvironment”的鏈接菜單中,選擇“Injected Provider – Metamask”,它會自動將你的Metamask 到Remix IDE。在這之後,你就可以在錢包中選擇你要部署的區塊鍊網絡。
我們合約部署到Rinkeby 中,因此我們需要在Metamask 中選擇“Rinkeby 測試網絡”。在部署的時候需要使用Rinkeby 的ETH,你可以在 鍊鍊表在獲取的時候,注意獲取一些在中。選擇在Ethereum Rinkeby 網絡。
最後,“部署”按鈕,然後我們可能需要等待15 次元的交易界面。點擊就可以通過UI。我們為更多人和我們的智能合約,提供了一種方式。
現在,可以通過交易哈希或者合約地址在Etherscan 上看到我們剛部署的合約。在Etherscan 上使用它。
點擊“驗證並發布”這個藍色的鏈接,下面這個頁面會出現。
在第一個輸入菜單中輸入你的契約,並沒有自動跳出的話。在Compiler Type 的下拉菜單中,選擇“Solidity (Single File)”。下一個,“Compiler Version”的菜單會直接出現,這裡需要選擇使用編譯器選擇編譯這個合約實例編譯,在中是0.8.7。 ,在Open Source License Type”最後的下拉菜單中,在Solidity文件中的“SPDX-License-Identifier”中在我們的打標示例中是MIT。點擊繼續,進入到下一個頁面。
將合約的這個源代碼複製到“Enter the Solidity Contract Code below”輸入框下,過人機測試,點擊“Verify and Publish”的藍色按鈕。你應該在“Contract”上會看到有一個綠色的對勾,驗證成功的合同,然後現在就可以代替你。
“Read Contract”按鈕,你應該可以調用“getCurrent”函數,然後counter這個變量的值,現在點擊是默認值0。
點擊“Write Contract”按鈕,你應該可以把你的錢包連接到Etherscan 網站上,調用“increment”函數。在點擊按鈕以後,MetaMask 會彈出網絡,對交易簽名(注意你需要使用Rinkeby 網絡)。在你之後的交易被成功寫入區塊,你就可以再次回到“Read Contact”區域,然後再次調用“getCurrent”函數,會發現現在的計數器變量變成了1。
多個使用Flatener插件完成Solidity文件的驗證
剛才是在Etherscan 上的合同過程中,剛才的例子是在驗證單一的Solidity 文件,通常情況下我們要處理的不是因為單一的Solidity 文件,你在智能合同中經常會引入其他的合同、接口和庫。
讓我們使用Chainlink 的Price Feed Consumer 合約作為例子,創建一個新的Solidity 文件,名字叫“PriceFeedConsumer.sol”,下面的代碼是從 Chainlink 官方文檔中貼紙的:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; contract PriceConsumerV3 { AggregatorV3Interface internal priceFeed; /** * Network: Rinkeby * Aggregator: ETH/USD * Address: 0x8A753747A1Fa494EC906cE90E9f37563A8AF630e */ constructor() { priceFeed = AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e); } /** * Returns the latest price */ function getLatestPrice() public view returns (int) { ( /*uint80 roundID*/, int price, /*uint startedAt*/, /*uint timeStamp*/, /*uint80 answeredInRound*/ ) = priceFeed.latestRoundData(); return price; } }
“import “@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interfacesol”;”這一行意味著我們需要引入其他接口,一個智能合約,它會不是相關的函數,但是沒有實現的函數體。這些有兩個作用,第一個接口是被某個接口調用實現的函數,第二個函數是一個智能合約。在這個例子中,我們會使用調用函數到它的第二個作用,即調用Chainlink Aggregator 契約中的“latestRoundData”函數。
我們還是通過0.8.7 的Solidity 編譯器版本,License 還是使用MIT,我們可以從第一行中看到。
在成功部署之後,回到Remix IDE,找到“PriceFeedConsumer.sol”,點擊,然後點擊“Flatten”。
這個命令會生成一個新的文件“重命名PriceFeedConsumer_flat.sol”,這個文件把所有的導入都換成接口或者庫的代碼契約。
可以注意一下Remix IDE 的一個頁面,會被自動查找方法。有一個將契約扁平化的點擊左下角的“擴展”(在“設置”按鈕之外,是一個電源插頭)然後點擊“Flattener”的綠色按鈕“Activate”。
然後,到Flattener 擴展頁面,點擊“Flatten PriceFeedConsumer.sol”按鈕。這個不會創建新的文件,而是將已經展平的源代碼複製到剪切板,以便我們注意到它可以粘貼到Etherscan 的驗證頁。
用任何方法來平息你的契約取決與你。
現在,當Etherscan 到的驗證頁面後,像操作我們一樣,選擇:
- 對於編譯器類型——Solidity(單個文件)
- 對於編譯器版本——v0.8.7+commit.e28d00a7
- 對於開源許可證類型- MIT 許可證(MIT)
然後點擊“繼續”按鈕。
在下面的頁面,在文本框“輸入下面的Solidity Contract Code”中,粘貼“PriceFeedConsumer_flat.sol”文件。
完成人機驗證,然後點擊“驗證並發布”按鈕。
多個使用Etherscan 插件完成Solidity 文件的驗證
另外一種驗證包含多個Solidity 文件契約的方法是使用“Etherscan – Contract Verification”這個Remix IDE 插件。
我們已經在使用“PriceFeedConsumer.sol”合約,再次部署它。在此之後,在擴展中激活“Etherscan – Contract Verification”插件。
現在到Etherscan 然後註冊一個賬戶,在你的賬戶設置中,找到“API Keys”部分,生成一個免費的API key。
然後點擊返回Remix IDE,“Etherscan – Contract Verification”,將你的API Key 粘貼在這裡,點擊“Save API key”按鈕。
然後選擇你想要驗證的合同,提供合同地址,點擊“驗證合同”。好的,你的合同現在就已經在Etherscan 中被驗證了。
總結
在這篇文章中,我們學會瞭如何通過Remix 和Etherscan 以多種方法驗證智能合約。
您可以關注鏈家禽機資料和私信加入者社區,有大量關於智能合約開發的學習以及關於區塊鏈的話題!