智慧合約基礎語言(七)——Solidity單位和特殊變數
一、目錄
☛ 貨幣單位
☛ 時間單位
☛ 特殊的變數及函式
二、貨幣單位
一個常量的數字,可以使用字尾wei,finney,szabo或ether來在不同面額中轉換。如2 ether == 2000 finney的結果是true。
▪ 1 ether==10^3 finney
▪ 1 ether==10^6 szabo
▪ 1 ether==10^18 wei
注意:不含任何字尾的預設單位是wei。
三、時間單位
seconds,minutes,hours,days,weeks,years均可做為字尾,並進行相互轉換。
▪ 1 == 1 seconds
▪ 1 minutes == 60 seconds
▪ 1 hours == 60 minutes
▪ 1 days == 24 hours
▪ 1 weeks = 7 days
▪ 1 years = 365 days
注意:
▪ 不含任何字尾的預設單位是seconds
▪ 如果你需要進行使用這些單位進行日期計算,需要特別小心,因為不是每年都是365天,且並不是每天都有24小時,因為還有閏秒。
範例:字尾不能用於變數。如果你想對輸入的變數說明其不同的單位,可以使用下面的方式。
四、特殊的變數及函式
有一些變數和函式存在於全域性上下文中。主要用來提供一些區塊鏈當前的資訊區塊和交易的屬性。
▪ block.blockhash(uint blockNumber) returns (bytes32),給定區塊號的雜湊值,只支援最近256個區塊,且不包含當前區塊;
▪ block.coinbase (address) 當前塊礦工的地址;
▪ block.difficulty (uint)當前塊的難度;
▪ block.gaslimit (uint)當前塊的gaslimit;
▪ block.number (uint)當前區塊的塊號;
▪ block.timestamp (uint)當前塊的時間戳;
▪ msg.data (bytes)完整的呼叫資料(calldata)
▪ msg.gas (uint)當前還剩的gas;
▪ msg.sender (address)當前呼叫發起人的地址;
▪ msg.sig (bytes4)呼叫資料的前四個位元組(函式識別符號);
▪ msg.value (uint)這個訊息所附帶的貨幣量,單位為wei;
▪ now (uint)當前塊的時間戳,等同於block.timestamp;
▪ tx.gasprice (uint) 交易的gas價格;
▪ tx.origin (address)交易的傳送者(完整的呼叫鏈)。
4.1 區塊鏈交易熟悉說明
▪ 對於同一個鏈上連續的區塊來說,當前區塊時間戳總是大於上一個區塊的時間戳。
▪ 只能查最近256個塊,所有其它的將返回0。
五、合約相關
▪ selfdestruct(addressrecipt):銷燬當前合約,並把它所有資金髮送到給定的地址。
▪ suicide(address recipient):同selfdestruct。
-END-