如何驗證以太坊智能合約的源代碼

爲何要驗證代碼

以太坊平臺默認是公開透明的。以太坊區塊鏈的全部數據都是公開的,任何人均可以訪問。問題是以太坊上的全部合約代碼都是二進制代碼,很容易被以太坊虛擬機執行,但幾乎不可讀。雖然大多數開發人員使用Solidity語言編寫智能合約,但部署的不是Solidity,而是二進制代碼。html

值得思考得問題是:若是沒有人可以證實它正在作它所作的事情,那麼部署智能合約的重點是什麼?你會把錢委託給未經驗證的代碼嗎?不可能。npm

在哪裏驗證

合約驗證有助於在使用智能合約的客戶和部署合同的項目方之間創建信任。Etherscan區塊鏈已經實現了一個在線工具來幫助開發人員驗證他們的代碼。驗證是將Solidity源代碼鏈接到智能合約的已部署二進制代碼的過程。該工具檢查Solidity代碼的編譯版本是否與二進制代碼匹配。合約驗證後,任何人均可以查看源代碼,審覈並審計。c#

Etherscan區塊鏈瀏覽器的驗證和發佈工具

如何驗證你的代碼

在咱們解釋如何驗證你的代碼以前,若是你使用咱們的發幣工具部署了一些ERC-20代幣,你不須要作任何事情; 合約是自動驗證的。這是使用咱們的工具部署的在Etherscan區塊鏈瀏覽器上的示例代幣Solidity代碼瀏覽器

本指南適用於使用Truffle和Solidity進行合約開發的開發人員。併發

1.準備一個flat Solidity文件

truffle-flattener concats在Truffle下開發的具備全部依賴關係的文件。使用如下命令安裝它::
npm install truffle-flattener -g
使用truffle-flattener鏈接已部署契約的全部依賴項。示例代碼以下:
truffle-flattener contracts/ERC20/yjfbERC20Token.sol > FlatyjfbERC20Token.sol
應建立一個名爲FlatyjfbERC20Token.sol的新文件,其中包含層次結構中使用的全部可靠性合約的內容。app

2.驗證和發佈工具

本節將指導您完成Etherscan區塊鏈瀏覽器的驗證和發佈工具,並幫助你填寫其頁面上的全部選項。咱們將一步一步走。函數

2.1 合約地址和構造函數參數ABI編碼

在Etherscan區塊鏈瀏覽器上找到你的合同,而後導航到代碼選項卡,單擊「驗證併發布」連接。Etherscan區塊鏈瀏覽器將自動填充一些表單選項,所以你沒必要填下(合同地址和構造函數參數ABI編碼)。工具

2.2 合約名稱

接下來,你將使用solidity文件中的合約名稱填寫合約名稱(例如,來自yjfbERC20Token.sol,名稱爲yjfbERC20Token)。區塊鏈

2.3 編譯器

你使用的Solidity編譯器版本可使用如下命令查看:
truffle version
你會獲得這樣的東西:
Truffle v4.1.14 (core: 4.1.14)
Solidity v0.4.24 (solc-js)

從下拉列表中找到您的編譯器版本,使用最短的提交版本,而不是nightly(例如v0.4.24 + commite57f0147)。優化

2.4 優化

要檢查是否啓用了優化,請在項目的根文件夾中打開truffle.js配置文件,而後查找名爲solc的對象,以下所示:
solc: {
  optimizer: {
    enabled: true,
    runs: 200
  }
}

若是有這樣的對象,你能夠看到啓用優化,運行200次。若是solc對象不存在,則禁用優化。

2.5 合約代碼

在選項中複製/粘貼flattened文件(FlatyjfbERC20Token.sol)的內容。

2.6 完成

點擊「驗證併發布」按鈕,等待幾秒鐘以驗證合同!

相關文章
相關標籤/搜索