ETH智慧合約測試
阿新 • • 發佈:2018-12-14
ETH的智慧合約一般用Solidity語言編寫,懂點基本solidity語法會更好地測試
測試中需要用到的工具:
一份智慧合約
Remix(一個線上IDE,用來編譯、編輯、部署智慧合約,需要FQ才能使用)點我跳轉到Remix
ETH測試幣-領取地址
ETH測試網路的區塊瀏覽器
ETH錢包MetaMask(Chrome外掛)
下圖為remix線上IDE的頁面:
測試合約的三個步驟:
1.編譯合約程式碼 (需要FQ)
開發智慧合約,一般使用Truffle框架,合約寫好後的目錄結構如下。其中,contracts目錄放的就是合約檔案!
下圖是contracts目錄下的檔案。
如果不在本地測試,而是想在remix上測試。除了“Migrations.sol”,其他檔案內容,全部複製貼上到Remix上。
然後就可以選擇編譯器版本,開始編譯了。編譯後,沒有紅色的異常提示!說明編譯成功,可以開始測試了!
2.合約初始化
- 先登入metamask錢包,因為初始化合約,需要一個有ETH餘額的地址!用來消耗gas!
- 看個例子:
/*關鍵字:contract表明這是個合約*/ contract JtakToken is StandardToken { string public constant name = "Just Test And Known"; string public constant symbol = "JTAK"; uint8 public constant decimals = 18; uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(decimals)); /** * contract裡面的關鍵字:constructor,表明這是合約的初始化方法!"_master"是一個地址型別的初始化引數! */ constructor(address _master) public { require(_master != address(0)); totalSupply_ = INITIAL_SUPPLY; master = _master; paused = false; coinbase = msg.sender; balances[coinbase] = INITIAL_SUPPLY; } }
開始部署合約,點選deploy!
此時metamask,就讓你支付手續費了,直接確認!
- 幾秒之後,部署成功,然後就可以愉快地呼叫合約方法了!
3.呼叫合約方法。
所謂的智慧合約測試,說白了!就是合約方法的測試!
- 展開合約,可以看到該合約的所有方法!
- 紅色表示是寫入鏈上的方法,需要消耗手續費!藍色表示是查詢的方法,不需要消耗手續費!
- 讓我們通過呼叫合約方法,轉一筆賬,就清楚了!
若手動呼叫方法測試覺得太麻煩,ETH框架Truffle可以用來做做單元測試!
一般的測試要點:
合約初始化後,Token總量、名稱、小數位、分發比例、分發前後的餘額等等。
合約方法是否呼叫SafeMath做運算。(防止上溢、下溢等運算問題)
合約方法的呼叫許可權控制。
高階點的合約,可能還有鎖倉、定時分發功能。這些具體業務,具體分析。不展開了~