Day 12 :
在Day 10的文章中,使用了SimpleStorage程式碼,說明了一些語法的功能,當撰寫好程式碼之後,在副檔名加上 .sol 透過編譯,輸出ABI與Binary組成的js檔,再透過客戶端發布至以太坊網路,透過EVM執行。
- 安裝 solc (系統 : Ubuntu )
- 編譯
輸入 :
使用echo指令將編譯內容寫進SimpleStorage.js檔 :
echo `solc --optimize --combined-json abi,bin,interface SimpleStorage.sol` > SimpleStorage.js
使用cat指令觀看 SimpleStorage.js 內容 :
cat SimpleStorage.js
= > 顯示 :
{"contracts":{"SimpleStorage.sol:SimpleStorage":{"abi":"[{\"constant\":false,\"inputs\":[{\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]","bin":"608060405234801561001057600080fd5b5060bf8061001f6000396000f30060806040526004361060485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166360fe47b18114604d5780636d4ce63c146064575b600080fd5b348015605857600080fd5b5060626004356088565b005b348015606f57600080fd5b506076608d565b60408051918252519081900360200190f35b600055565b600054905600a165627a7a72305820de38e7fb1c9054802b9261cbdc522574f536564824ab5627c23f8be841d3e28e0029"}},"version":"0.4.25+commit.59dbf8f1.Linux.g++"}
-SimpleStorage.js 內容(以JSON檔的格式顯示)
abi (Application Binary Interface) :
可以看到每個Method的資訊 :
constant : Bool值,是否可以修改函數中的變數內容。
inputs : 輸入參數說明 :
name : 參數名稱。
type : 參數類型。
name : 函數名稱。
outputs : 輸出參數說明,組成方式與input相同。
payable : bool值,函數是否可以接受ether。
stateMutability : 有四種類型,分別為pure , view , payable , nonpayable。
type : Method的類型,分別為function , constructor , fallback, Default為function。
bin(binary) :
編譯後的二進位表示。