1. 程式人生 > >智慧合約基礎語言(七)——Solidity單位和特殊變數

智慧合約基礎語言(七)——Solidity單位和特殊變數

智慧合約基礎語言(七):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-