Solidity

斷言聲明的問題

  • February 18, 2018

我可能遺漏了一些非常明顯的東西,但我無法讓最簡單的斷言語句起作用!我究竟做錯了什麼?

我的目標是使用“現在”簡單地確認我在開始日期和結束日期範圍內。

我什至無法斷言 (1==1); 返回真實!

請協助!

pragma solidity ^0.4.18;

contract TestAssert {

// Unix timestamp converter used = https://www.unixtimestamp.com/
  uint256 public constant startDate = 1517907600; // 02/06/2018 09:00:00 
  uint256 public constant endDate = 1522659600; // 04/02/2018 09:00:00

//This is the Constructor
 function TestAssert() {

 }

 function assertOneEqualsOne () returns (bool) {
   assert(1 == 1);
 }

 function assertStartDate () constant returns(bool){
   assert(now >= startDate); 
 }

 function assertEndDate () constant returns(bool){
   assert(now <= endDate);
 }

 function returnNow() returns (uint256) {
   return now;
 }

 function () payable {
    // this is the fallback function.
 }

}

您需要為您的函式添加一個返回值。

  function assertOneEqualsOne () external pure returns (bool) {
          assert(1 == 1);
          return true;
  }

如果斷言失敗,它將發出 REVERT 信號並在您的客戶端程式碼中引發異常。

引用自:https://ethereum.stackexchange.com/questions/40095