數(shù)詞后面可以有一個(gè)后綴, wei, finney, szabo 或 ether 和 ether 相關(guān)量詞 之間的轉(zhuǎn)換,在以太幣數(shù)量后若沒(méi)有跟后綴,則缺省單位是“wei“,?? 如? 2 ether? == 2000 finney?? (這個(gè)表達(dá)式)計(jì)算結(jié)果為true。?
后綴的秒,分,小時(shí),天,周,年,? 數(shù)量詞的時(shí)間單位之間可以用來(lái)轉(zhuǎn)換,秒是基本單位。下面是常識(shí):
如果你使用這些單位執(zhí)行日歷計(jì)算,要注意以下問(wèn)題。?? 因?yàn)殚c秒,所以每年不總是等于365天,甚至每天也不是都有24小時(shí),。由于無(wú)法預(yù)測(cè)閏秒,一個(gè)精確的日歷庫(kù)必須由外部oracle更新。
這些后綴不能用于變量。如果你想解釋一些輸入變量, 如天,你可以用以下方式:
function?f(uint?start,?uint?daysAfter) {
??if?(now?>=?start?+?daysAfter?*?1 days) { ... }}
Special Variables and Functions
有特殊的變量和函數(shù)總是存在于全局命名空間,主要用于提供關(guān)于blockchain的信息。
msg的所有成員的值,包括msg.sender和msg.value可以在每個(gè) external函數(shù)調(diào)用中改變。這包括調(diào)用庫(kù)函數(shù)。
如果你想在庫(kù)函數(shù)實(shí)現(xiàn)訪問(wèn)限制使用msg.sender, 你必須手動(dòng)設(shè)置msg.sender作為參數(shù)。
由于所有塊可伸縮性的原因,(所有)塊的Hash值就拿不到。你只能訪問(wèn)最近的256塊的Hash值,其他值為零。
addmod(uint x, uint y, uint k) returns (uint):
計(jì)算 (x + y) % k?? (按指定的精度,不能超過(guò)2**256)
mulmod(uint x, uint y, uint k) returns (uint):
compute (x * y) % k where the multiplication is performed with arbitrary precision and does not wrap around at 2256. (按指定的精度,不能超過(guò)2**256)
計(jì)算compute (x * y) % k?
sha3(...) returns (bytes32):
計(jì)算(緊湊排列的)參數(shù)的Ethereum-SHA-3 的Hash值值
sha256(...) returns (bytes32):
計(jì)算(緊湊排列的)參數(shù)的SHA-256 的Hash值
ripemd160(...) returns (bytes20):
計(jì)算(緊湊排列的)參數(shù)的 RIPEMD-160 的Hash值
ecrecover(bytes32, byte, bytes32, bytes32) returns (address):
恢復(fù)橢圓曲線特征的公鑰-參數(shù)為(data, v, r, s)
在上述中,“緊湊排列”,意思是沒(méi)有填充的參數(shù)的連續(xù)排列,也就是下面表達(dá)式是沒(méi)有區(qū)別的
sha3("ab", "c")
sha3("abc")
sha3(0x616263)
sha3(6382179)
sha3(97, 98, 99)
如果需要填充,要用顯示的形式表示: sha3(“x00x12”) 和 sha3(uint16(0x12))是相同的。
在一個(gè)私有的blockchain里,你可能(在使用)sha256, ripemd160 或 ecrecover (的時(shí)候) 碰到"Out-of-Gas"(的問(wèn)題)??。原因在于這個(gè)僅僅是預(yù)編譯的合約,合約要在他們接到的第一個(gè)消息以后才真正的生成(雖然他們的合約代碼是硬編碼的)。對(duì)于沒(méi)有真正生成的合約的消息是非常昂貴的,這時(shí)就會(huì)碰到“Out-of-Gas”的問(wèn)題。 這一問(wèn)題的解決方法是事先把1wei 發(fā)送到各個(gè)你當(dāng)前使用的各個(gè)合約上。這不是官方或測(cè)試網(wǎng)的問(wèn)題。
this (current contract’s type):
當(dāng)前的合約,顯示可轉(zhuǎn)換地址
selfdestruct(address)::
銷毀當(dāng)前合約,其資金發(fā)送給指定的地址
此外,當(dāng)前合同的所有函數(shù)均可以被直接調(diào)用(包括當(dāng)前函數(shù))。
? Copyright 2015, Ethereum. Revision 37381072.
Built with?Sphinx?using a?theme?provided by?Read the Docs.