Solidity
斷言聲明的問題
我可能遺漏了一些非常明顯的東西,但我無法讓最簡單的斷言語句起作用!我究竟做錯了什麼?
我的目標是使用“現在”簡單地確認我在開始日期和結束日期範圍內。
我什至無法斷言 (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 信號並在您的客戶端程式碼中引發異常。