為什么要驗(yàn)證代碼
以太坊平臺(tái)默認(rèn)是公開透明的戏蔑。以太坊區(qū)塊鏈的所有數(shù)據(jù)都是公開的,任何人都可以訪問年鸳。問題是以太坊上的所有合約代碼都是二進(jìn)制代碼省撑,很容易被以太坊虛擬機(jī)執(zhí)行赌蔑,但幾乎不可讀。雖然大多數(shù)開發(fā)人員使用Solidity語言編寫智能合約竟秫,但部署的不是Solidity娃惯,而是二進(jìn)制代碼。
值得思考得問題是:如果沒有人能夠證明它正在做它所做的事情肥败,那么部署智能合約的重點(diǎn)是什么趾浅?你會(huì)把錢委托給未經(jīng)驗(yàn)證的代碼嗎?不可能馒稍。
在哪里驗(yàn)證
合約驗(yàn)證有助于在使用智能合約的客戶和部署合同的項(xiàng)目方之間建立信任皿哨。Etherscan區(qū)塊鏈已經(jīng)實(shí)現(xiàn)了一個(gè)在線工具來幫助開發(fā)人員驗(yàn)證他們的代碼。驗(yàn)證是將Solidity源代碼連接到智能合約的已部署二進(jìn)制代碼的過程筷黔。該工具檢查Solidity代碼的編譯版本是否與二進(jìn)制代碼匹配往史。合約驗(yàn)證后,任何人都可以查看源代碼佛舱,審核并審計(jì)。
Etherscan區(qū)塊鏈瀏覽器的驗(yàn)證和發(fā)布工具
如何驗(yàn)證你的代碼
在我們解釋如何驗(yàn)證你的代碼之前挨决,如果你使用我們的發(fā)幣工具部署了一些ERC-20代幣,你不需要做任何事情; 合約是自動(dòng)驗(yàn)證的请祖。這是使用我們的工具部署的在Etherscan區(qū)塊鏈瀏覽器上的示例代幣Solidity代碼。
本指南適用于使用Truffle和Solidity進(jìn)行合約開發(fā)的開發(fā)人員脖祈。
1.準(zhǔn)備一個(gè)flat Solidity文件
truffle-flattener?concats在Truffle下開發(fā)的具有所有依賴關(guān)系的文件肆捕。使用以下命令安裝它::?
npm install truffle-flattener -g?
使用truffle-flattener連接已部署契約的所有依賴項(xiàng)。示例代碼如下:?
truffle-flattener contracts/ERC20/YidaibiERC20Token.sol > FlatYidaibiERC20Token.sol?
應(yīng)創(chuàng)建一個(gè)名為FlatYidaibiERC20Token.sol的新文件盖高,其中包含層次結(jié)構(gòu)中使用的所有可靠性合約的內(nèi)容慎陵。
2.驗(yàn)證和發(fā)布工具
本節(jié)將指導(dǎo)您完成Etherscan區(qū)塊鏈瀏覽器的驗(yàn)證和發(fā)布工具眼虱,并幫助你填寫其頁面上的所有選項(xiàng)。我們將一步一步走席纽。
2.1 合約地址和構(gòu)造函數(shù)參數(shù)ABI編碼
在Etherscan區(qū)塊鏈瀏覽器上找到你的合同捏悬,然后導(dǎo)航到代碼選項(xiàng)卡,單擊“驗(yàn)證并發(fā)布”鏈接润梯。Etherscan區(qū)塊鏈瀏覽器將自動(dòng)填充一些表單選項(xiàng)过牙,因此你不必填下(合同地址和構(gòu)造函數(shù)參數(shù)ABI編碼)。
2.2 合約名稱
接下來纺铭,你將使用solidity文件中的合約名稱填寫合約名稱(例如寇钉,來自YidaibiERC20Token.sol,名稱為YidaibiERC20Token)舶赔。
2.3 編譯器
你使用的Solidity編譯器版本可以使用以下命令查看:?
truffle version?
你會(huì)得到這樣的東西:?
Truffle v4.1.14 (core: 4.1.14)?
Solidity v0.4.24 (solc-js)
從下拉列表中找到您的編譯器版本扫倡,使用最短的提交版本,而不是nightly(例如v0.4.24 + commite57f0147)竟纳。
2.4 優(yōu)化
要檢查是否啟用了優(yōu)化镊辕,請?jiān)陧?xiàng)目的根文件夾中打開truffle.js配置文件,然后查找名為solc的對象蚁袭,如下所示:?
solc: {?
optimizer: {?
enabled: true,?
runs: 200?
}?
}
如果有這樣的對象征懈,你可以看到啟用優(yōu)化,運(yùn)行200次揩悄。如果solc對象不存在卖哎,則禁用優(yōu)化。
2.5 合約代碼
在選項(xiàng)中復(fù)制/粘貼flattened文件(FlatYidaibiERC20Token.sol)的內(nèi)容删性。
2.6 完成
點(diǎn)擊“驗(yàn)證并發(fā)布”按鈕亏娜,等待幾秒鐘以驗(yàn)證合同!