1. 程式人生 > >智慧合約語言 Solidity 以太單位及時間單位

智慧合約語言 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;
}
}