【開發智能合約 — Solidity系列】實作篇Ep.4 - 貨幣與時間單位
「人」與「人」之間無非時時刻刻都在交易,只是每一種交易的形式與媒介有所不同,而區塊鏈的世界也有特定的交易單位,主要分為兩大類型的單位, 分別是以乙太幣單位以及時間單位。
💰 乙太幣單位
最小單位為「wei」, 而其餘主要會用到的單位分別是「gwei」與「ether」。
// 1 wei是貨幣中的最小單位 uint oneWei = 1 wei; require(oneWei == 1, "1 wei is not equal to 1"); // 1 gwei is equal to 10^9 wei uint oneGWei = 1 gwei; require(oneGWei == 1e9, "1 gwei is not equal to 1e9"); require(oneGWei == pow(10, 9)); // 1 ether is equal to 10^18 wei uint oneEther = 1 ether; require(oneEther == 1e18, "1 ether is not equal to 1e18"); require(oneEther == pow(10, 18)); require(oneEther == 1000000000 * oneGWei, "1 ether is not equal to 1000000000 gwei");
🕑 時間單位
時間單位的部份就比較容易理解了, 非常直觀, 以「秒」為基礎單位進行延伸。
P.S: Solidity的時間表示方式是Unix Time。
// 1秒 assert(1 seconds == 1); // 1分鐘 = 60秒 assert(1 minutes == 60 seconds); // 1小時 = 60分鐘 assert(1 hours == 60 minutes); // 1天=24小時 assert(1 days == 24 hours); // 1周 = 7天 assert(1 weeks == 7 days);
由於block(區塊)中通常帶有時間戳記, 而單位也是秒, 因此我們可以進行一些區塊的驗證如下:
function validate(uint start, uint secondsAfter) public { // 區塊的時間戳記至少在3秒以前, 才算有效 if (block.timestamp >= start + secondsAfter * 3 seconds) { // ... } }
結語
「單位」在區塊鏈的世界中真的非常重要,尤其與金流及驗證有關的演算都是需要進行單位轉換的演算,因此我們務必打好基礎,理解各個單位的用法、等價方式…,才能夠撰寫出一份完整的合約內容。
今天的範例都在這裡「📦 solidity-remix-toturial/Ep4」歡迎自行取用。
下一篇我們來談談錯誤處理機制:
⏭️【開發智能合約 — Solidity系列】實作篇Ep.5 — 錯誤處理的機制(Error Handling)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
喜歡撰寫文章的你,不妨來了解一下:
Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?
歡迎加入一起練習寫作,賺取知識,累積財富!