7*24快訊如何在Et...

如何在Etherscan 上驗證智能合約

被稱為Web3 的互聯網新去中心化願景的美妙之處在於,任何人都能夠與部署在通用區塊鏈上的智能合約進行交互。您可能已經知道,智能合約是在區塊鏈上運行的計算機程序,其源代碼可公開供任何人驗證,並且如前所述,任何人都可以與它們進行交互,而無需基於Web 的界面。這可以通過運行區塊鏈客戶端並使用命令行界面(CLI) 創建交易來完成。

Web 或移動應用程序與用於與智能合約交互的CLI 之間的中間地帶將是Etherscan——用於各種區塊鍊網絡的區塊瀏覽器,例如Ethereum、Polygon、Arbitrum、Optimism 等等。如果您對如何在Etherscan 上與智能合約交互感到好奇,請查看最近的博客文章 在Etherscan 上閱讀智能合約。

話雖如此,我們只能在Etherscan 上與“已驗證”的智能合約進行交互。在本技術教程中,您將學習如何在Etherscan 上驗證智能合約。

單個Solidity 文件的驗證

要開始驗證過程,我們需要首先部署智能合約。導航 混音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.9.0 之間的任何Solidity 編譯器版本進行編譯,其中包含多個版本,例如0.8.0、0.8.1、0.8.2 等。

轉到“Solidity Compiler”選項卡,選擇Solidity 編譯器版本(記住,它可以是任何0.8 版本),然後單擊“Compile Counter.sol”。對於此示例,我們將使用0.8.7 編譯器版本。

為Counter 合約使用Remix Solidity 編譯器

成功編譯後,導航到當前選項下方的“部署和運行事務”選項卡。從“Environment”下拉菜單中,選擇“Injected Provider – Metamask”,它會自動顯示MetaMask 彈出窗口,將您的錢包連接到Remix IDE 網站。之後,選擇要在錢包內部署合約的區塊鍊網絡。

我們將把這個合約部署到Rinkeby,因此我們需要在MetaMask 錢包中選擇“Rinkeby 測試網絡”。為了部署合約,我們還需要一定數量的Test Rinkeby ether。您可以從 鏈環水龍頭 只需將錢包連接到水龍頭即可。確保右上角下拉列表中選擇的網絡是Ethereum Rinkeby。

在Remix 上切換到注入的提供程序

最後,單擊橙色的“部署”按鈕並在MetaMask 錢包內簽署交易。等待大約15 秒,直到您的交易得到確認。您現在可以通過Remix IDE UI 與您的智能合約進行交互,但這不是重點,因為我們希望允許任何人使用它。

如果我們在Etherscan 上跟踪我們的合約,只需通過跟踪最後一筆交易哈希或將合約的地址粘貼到Etherscan 的搜索欄中,我們將在單擊合約選項卡時只看到合約的字節碼。這意味著我們需要在Etherscan 上“驗證”我們的智能合約,以便通過這個區塊瀏覽器使用它。

Etherscan 上的驗證和發布按鈕

要開始驗證過程,請單擊“驗證並發布”藍色超鏈接文本。將顯示以下頁面。

驗證和發布源代碼

如果默認情況下尚未填充合同地址,請在第一個輸入字段中輸入您的合同地址。然後從“編譯器類型”下拉列表中,選擇“Solidity(單個文件)”。之後,將顯示“編譯器版本”下拉菜單。在這裡,我們需要選擇在部署之前用於編譯此智能合約的相同Solidity 編譯器版本——在我們的例子中,它是0.8.7 版本。最後,從“開源許可證類型”下拉列表中,選擇在Solidity 文件開頭指定的許可證為“SPDX-License-Identifier”。在我們的例子中,這就是麻省理工學院。單擊繼續轉到下一頁。

向Etherscan 輸入Solidity 合約代碼

將合約的源代碼粘貼到“在下面輸入Solidity Contract Code”輸入框,解開Captcha,點擊藍色的“Verify and Publish”按鈕。 您現在應該能夠在“合同”選項卡上看到綠色複選標記。這意味著合約已經過驗證,我們現在可以與之交互。

查看已驗證的合約源代碼

如果單擊“讀取合約”按鈕,您應該能夠調用“getCurrent”函數並查看我們的計數器變量的當前值,默認為零。

在Etherscan 上讀取getCurrent 函數

如果您點擊“Write Contract”按鈕,您應該可以將您的錢包連接到Etherscan 網站並調用我們的“increment”功能。點擊按鈕後,會彈出MetaMask 對交易進行簽名(記住你需要在Rinkeby 網絡上)。在您的交易成功包含在區塊中後,您可以返回“讀取合約”部分並再次調用“getCurrent”函數以驗證“計數器”值現在是否為1。

寫入Etherscan 上的增量函數

使用Flattener 插件驗證多個Solidity 文件

我們剛剛看到了智能合約的驗證過程如何在Etherscan 上運行。該示例向我們展示瞭如何為單個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;
    }
}

行“導入”@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol“;” 表示我們正在從另一個文件導入Solidity 接口。接口本身不是智能合約,而是用於列出相關方法而沒有實現函數體。接口由“interface”關鍵字聲明。接口可以被用於實現所有列出的方法的智能合約繼承,或者用於調用已經實現這些列出的功能的其他合約的方法。在這個例子中,我們使用後一個例子來調用Chainlink Aggregator 合約上的“latestRoundData”函數。

讓我們再次使用0.8.7 Solidity Compiler 版本部署此合約。許可證又是MIT,我們可以從智能合約的第一行看到。

成功部署後,導航回Remix IDE 文件資源管理器。找到“PriceFeedConsumer.sol”,右鍵單擊它,然後單擊“Flatten”。

在Remix 上哪裡可以找到flatten

此命令將生成名為“PriceFeedConsumer_flat.sol”的新文件,並將所有導入替換為實際導入的合約、接口或庫的源代碼。

將flattener 擴展添加到Remix

注意Remix IDE “Flatener” 擴展,它會自動激活。第二種扁平化合約的方法是激活這個擴展,點擊左下角的“Extensions”按鈕(在“Settings”按鈕上方,看起來像一個電插頭),然後點擊“壓平機”擴展。

在Remix 中查找插件管理器

然後,轉到Flattener 擴展選項卡並單擊“Flatten PriceFeedConsumer.sol”按鈕。請注意,此操作不會創建新文件,而是會將展平的源代碼複製到剪貼板,這樣我們就可以將其粘貼到Etherscan 驗證頁面。

您將選擇這兩種扁平化方法中的哪一種取決於您。

現在,當您進入Etherscan 驗證頁面時,如前一章所述,選擇:

  • 對於編譯器類型——Solidity(單個文件)
  • 對於編譯器版本——v0.8.7+commit.e28d00a7
  • 對於開源許可證類型- MIT 許可證(MIT)

然後單擊“繼續”按鈕。

在下一頁的“在下面輸入Solidity 合約代碼”文本框中,粘貼“PriceFeedConsumer_flat.sol”文件或剪貼板的內容,具體取決於您用於展平合約的方法。

再次,解決驗證碼並單擊“驗證和發布”按鈕。

使用Etherscan 插件驗證多個Solidity 文件

驗證由多個Solidity 文件組成的合約的另一種方法是使用“Etherscan – Contract Verification” Remix IDE 插件。

我們將使用已經編寫好的“PriceFeedConsumer.sol”合約。再次部署它。之後,從“擴展”選項卡中激活“Etherscan – 合同驗證”插件。

在Remix 上找到Etherscan 合約驗證插件

現在去 以太掃描 並註冊一個帳戶。在您的帳戶設置下,找到“API 密鑰”部分。使用免費計劃生成一個API 密鑰。

然後,導航回Remix IDE,單擊“Etherscan – Contract Verification”選項卡並將您的API 密鑰粘貼到那裡。單擊“保存API 密鑰”按鈕。

如何在Remix 上保存Etherscan API 密鑰

然後,選擇您要驗證的合約並提供其合約地址。點擊“驗證合同”。就是這樣,你的合約現在應該在Etherscan 上得到驗證。

使用Etherscan 插件在Remix 上完成合約驗證

結論

在本文中,您學習瞭如何使用各種方法從Remix IDE 驗證Etherscan 上的智能合約。

通過訪問了解有關Chainlink 的更多信息 鏈環 或閱讀文檔 docs.chain.link.

要討論集成, 聯繫專家.

Source Link

最受歡迎

繼續閱讀

長期持有者持有的比特幣(BTC)供應量達到最高水平

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打...

現在讀

$COOKIE, the Cookie3 Mark...

Tallinn, Estonia, March 26th, 2024...

長期持有者持有的比特幣(BTC)供應量達到最高水平...

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持有者和投機者。 儘管BTC 的價格在過去一個月中保持相對平穩,範圍在約29,000 美元至31,000 美元之間,但人們還是開始瘋狂囤積。 ...

Caldera 宣布與Espresso Syste...

Caldera 開發人員可以利用Espresso Sequence...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打開了大門。對於那些尋求利用Web3 遊戲巨大潛力的人來說,確保先發優勢至關重要。 了解Web3 遊戲生態系統在深入研究Web3 遊戲之前,有...

Taapsee Pannu 推出NFT 平台,介紹...

企業家貢獻者表達的意見是他們自己的。 您正在閱讀《企業家印度》,這是企業家媒體的國際特許經營刊物。 女演員Taapsee Pannu 最近推出了“taapseeclub.com”,這是她自己的非同質代...

比特幣(BTC) 地址休眠超過11 年,轉移310...

經過11 年多的閒置之後,一個包含3100 萬美元BTC 的休眠比特幣地址最近突然活躍起來。 2023年7月22日,地址 轉入 將其全部餘額轉移到新地址。 早期BTC 地址復活 比特幣自2009 年以來就已經存在,因此存在多年來不活躍的休眠地址,其中包含大量BTC。這種加密貨幣的一些早期採用者能夠...

加密貨幣死了嗎?當今加密貨幣的現狀

您之前可能聽說過加密貨幣正在消亡(或比特幣已消亡)。在這篇文章中,我們將研究加密貨幣的狀態,並嘗試回答這個問題:加密貨幣現在已經死了嗎? 在我們開始之前,我們想澄清一下,本文指的是最廣泛意義上的“加密貨幣行業”; 在裡面 網絡3 感覺。該定義包括加密資產市場; 但它還包括其他非財務用例。 隨著近來加...

Chancer 可能成為體育和社交博彩領域的下一個...

加密貨幣 隨著企業財報季節的繼續,本週股市表現好壞參半。在Ne...

以太坊(ETH) 創下兩個月來CEX 流入最高紀錄...

過去一周,以太坊(ETH)流入中心化交易所(CEX)的資金量創下了過去兩個月來的最高水平。這些重大的資產變動表明ETH 的價格可能會下跌。 CoinGecko 數據顯示,第二大加密貨幣的價格一直在小幅下跌,過去一周價值下跌了2.5%。截至撰寫本文時,以太幣易手價格為1,892.65 美元,過去24...

新的DeFi 法案有“不可行的義務”

加密貨幣創新委員會表示,新的反洗錢法案沒有為DeFi 中的非法金融...

幣安大幅削減成本,瑞波幣為美國銀行和加密貨幣風險投...

美國證券交易委員會(SEC)對加密貨幣公司的打擊似乎嚴重影響了幣安的業務。據報導,在過去幾週內,該加密貨幣交易所解雇了1,000 多名員工,並削減了一些福利。 幣安表示,“當前的市場環境和監管環境”導致利潤下降,這表明可能正在進行更多削減。一位發言人告訴Cointelegraph,該公司將考慮縮減“...

Automata 雙週更新:第48 期| 通過自動...

迎接新的季度意味著設定我們的意圖並為團隊規劃下一步的行動。幕後醞釀的一切——合作、產品功能和營銷發布——很難抑制我們的興奮。我們一開始就在1RPC(2 個備受期待的第2 層主網)上添加了對Linea 和Base 的支持。科技載體更新頁腳以顯示界面版本平滑的用戶體驗 USDC CCTP 支持 關於仲裁...