1. 程式人生 > >ETH智慧合約測試

ETH智慧合約測試

ETH的智慧合約一般用Solidity語言編寫,懂點基本solidity語法會更好地測試

測試中需要用到的工具:

下圖為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做運算。(防止上溢、下溢等運算問題)

  • 合約方法的呼叫許可權控制。

  • 高階點的合約,可能還有鎖倉、定時分發功能。這些具體業務,具體分析。不展開了~