使用solidity-flattener展開合約到一個檔案中
阿新 • • 發佈:2018-11-05
平常使用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=已釋出的合約地址