想知道更多區塊鍊技術問題,請百度【鍊客區塊鍊技術技術問答社群】
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;
}
}