區(qū)塊和交易屬性
block.blockhash(uint blockNumber) returns (bytes32):指定區(qū)塊的區(qū)塊哈辖埽——僅可用于最新的 256 個(gè)區(qū)塊且不包括當(dāng)前區(qū)塊周瞎;而 blocks 從 0.4.22 版本開(kāi)始已經(jīng)不推薦使用率寡,由 blockhash(uint blockNumber) 代替
block.coinbase (address): 挖出當(dāng)前區(qū)塊的礦工地址
block.difficulty (uint): 當(dāng)前區(qū)塊難度
block.gaslimit (uint): 當(dāng)前區(qū)塊 gas 限額
block.number (uint): 當(dāng)前區(qū)塊號(hào)
block.timestamp (uint): 自 unix epoch 起始當(dāng)前區(qū)塊以秒計(jì)的時(shí)間戳
gasleft() returns (uint256):剩余的 gas
msg.data (bytes): 完整的 calldata
msg.gas (uint): 剩余 gas - 自 0.4.21 版本開(kāi)始已經(jīng)不推薦使用,由 gesleft() 代替
msg.sender (address): 消息發(fā)送者(當(dāng)前調(diào)用)
msg.sig (bytes4): calldata 的前 4 字節(jié)(也就是函數(shù)標(biāo)識(shí)符)
msg.value (uint): 隨消息發(fā)送的 wei 的數(shù)量
now (uint): 目前區(qū)塊時(shí)間戳(block.timestamp)
tx.gasprice (uint): 交易的 gas 價(jià)格
tx.origin (address): 交易發(fā)起者(完全的調(diào)用鏈)
地址相關(guān)
<address>.balance (uint256):
以 Wei 為單位的地址類(lèi)型余額认轨。<address>.transfer(uint256 amount):
向 地址類(lèi)型發(fā)送數(shù)量為 amount 的 Wei嫁佳,失敗時(shí)拋出異常璃诀,發(fā)送 2300 gas 的礦工費(fèi)弧可,不可調(diào)節(jié)。<address>.send(uint256 amount) returns (bool):
向地址類(lèi)型發(fā)送數(shù)量為 amount 的 Wei劣欢,失敗時(shí)返回false
棕诵,發(fā)送 2300 gas 的礦工費(fèi)用,不可調(diào)節(jié)
使用 send 有很多危險(xiǎn):如果調(diào)用棧深度已經(jīng)達(dá)到 1024(這總是可以由調(diào)用者所強(qiáng)制指定)凿将,轉(zhuǎn)賬會(huì)失斝L住;并且如果接收者用光了 gas牧抵,轉(zhuǎn)賬同樣會(huì)失敗笛匙。為了保證以太幣轉(zhuǎn)賬安全侨把,總是檢查 send 的返回值,利用 transfer 或者下面更好的方式: 用這種接收者取回錢(qián)的模式妹孙。