1. 程式人生 > >使用solidity-flattener展開合約到一個檔案中

使用solidity-flattener展開合約到一個檔案中

平常使用truffle做合約的開發,可以通過import將別的合約包含進來,方便程式碼的組織。但是,有幾個特殊場景,需要將import的合約都寫到當前檔案裡:

  • 使用錢包(如Mist)釋出合約,不支援import,只能將所有sol的原始碼放到一起,扔進Mist編譯、釋出。
  • 將合約程式碼提交到區塊瀏覽器,供別人參閱,需要將所有sol的原始碼放到一起。

import的合約數量少,可以手動解決,當合約數量增大之後,這活就太累人了。使用solidity-flattener可以完美解決這個問題。

依賴:

  • python3
  • pip3

安裝過程:

  • 安裝solc:
    sudo add-apt-repository ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install solc
  • 安裝 solidity-flattener
    pip3 install solidity-flattener

使用:
進入到truffle目錄的contracts目錄,執行:

  • solidity_flattener XXX.sol

便可將展開後的程式碼輸出到螢幕控制檯。想要輸出到檔案,可以這樣做:

  • solidity_flattener –output sss.txt XXX.sol

假如有額外的目錄,可以這樣做

  • solidity_flattener –solc-paths=”my_solidity_path=需要新增的資料夾名稱” –output sss.txt XXX.sol

接下來,就可以將展開後的程式碼,公佈到區塊瀏覽器了:
https://ropsten.etherscan.io/verifyContract2?a=已釋出的合約地址