天天看點

智能合約語言 Solidity 以太機關及時間機關

想知道更多區塊鍊技術問題,請百度【鍊客區塊鍊技術技術問答社群】

Solidity是以太坊智能合約程式設計語言,當然你在閱讀這篇文章之前,你應該對以太坊、智能合約有初步或者深入的了解,當然你還是不了解的話,建議你先去看以太坊是什麼。

時間機關

時間機關: seconds, minutes, hours, days, weeks, years均可做為字尾,并進行互相轉換,規則如下:

1 == 1 seconds (預設是seconds為機關)

1 minutes == 60 seconds

1 hours == 60 minutes

1 days == 24 hours

1 weeks = 7 days

1 years = 365 days

使用這些機關進行日期計算需要特别小心,因為不是每年都是365天,閏年是366天,且并不是每天都有24小時,因為還有閏秒。由于無法預測閏秒,必須由外部的預言來更新進而得到一個精确的月曆庫。

這些字尾不能用于變量。如果想對輸入的變量說明其不同的機關,可以使用下面的方式:

pragma solidity ^0.4.16;

contract testTUnit {

function currTimeInSeconds() public pure returns (uint256){

return now;

}

function f(uint start, uint daysAfter) public

{

if (now >= start + daysAfter * 1 days)

{

// …

}

}

}

貨币機關

一個字面量後面跟随一個字尾wei、finney、szabo或者ether,這些字尾就是貨币機關,不同的機關可以轉換。不含任何字尾的預設機關是wei。

不同的以太币機關轉換關系如下:

1 ether == 10^18 wei

1 ether == 10^6 szabo

1 ether == 10^3 finney

1 ether == 1000 finney

我們可以使用一下代碼驗證一個轉換關系:

pragma solidity ^0.4.16;

contract testUnit {

function tf() public pure returns (bool) {

if (1 ether == 1000 finney){

return true;

}

return false;

}

function ts() public pure returns (bool) {

if (1 ether == 1000000 szabo){

return true;

}

return false;

}

function tgw() public pure returns (bool) {

if (1 ether == 1000000000000000000 wei){

return true;

}

return false;

}

}