本文首發於深刻淺出區塊鏈社區 原文連接:智能合約語言 Solidity 教程系列7 - 以太單位及時間單位原文已更新,請讀者前往原文閱讀html
這是Solidity教程系列文章第7篇介紹以太單位及時間單位,系列帶你全面深刻理解Solidity語言。 Solidity 系列完整的文章列表請查看分類-Solidity。編程
Solidity 是以太坊智能合約編程語言,閱讀本文前,你應該對以太坊、智能合約有所瞭解, 若是你還不瞭解,建議你先看以太坊是什麼oracle
歡迎訂閱區塊鏈技術專欄閱讀更全面的分析文章。編程語言
一個數字常量(字面量)後面跟隨一個後綴wei, finney,szabo或ether,這個後綴就是貨幣單位。不一樣的單位能夠轉換。不含任何後綴的默認單位是wei。 不一樣的以太幣單位轉換關係以下:學習
插曲:以太幣單位實際上是密碼學家的名字,是以太坊創始人爲了記念他們在數字貨幣的領域的貢獻。他們分別是: wei: Wei Dai 戴偉 密碼學家 ,發表 B-money finney: Hal Finney 芬尼 密碼學家、工做量證實機制(POW)提出 szabo: Nick Szabo 尼克薩博 密碼學家、智能合約的提出者區塊鏈
咱們可使用一下代碼驗證一個轉換關係:ui
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; } }
時間單位: seconds, minutes, hours, days, weeks, years都可作爲後綴,並進行相互轉換,規則以下:code
使用這些單位進行日期計算須要特別當心,由於不是每一年都是365天,且並非天天都有24小時,由於還有閏秒。因爲沒法預測閏秒,必須由外部的預言(oracle)來更新從而獲得一個精確的日曆庫。視頻
這些後綴不能用於變量。若是想對輸入的變量說明其不一樣的單位,可使用下面的方式:htm
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) { // ... } } }
##參考視頻
咱們也推出了目前市面上最全的視頻教程:深刻詳解以太坊智能合約語言Solidity 目前咱們也在招募課程體驗師,能夠點擊連接瞭解。
☛ 深刻淺出區塊鏈 - 系統學習區塊鏈,打造最好的區塊鏈技術博客。
☛ 個人知識星球爲各位解答區塊鏈技術問題,歡迎加入討論。
☛ 關注公衆號「深刻淺出區塊鏈技術」第一時間獲取區塊鏈技術信息。