大家透過以太坊(Ethereum)進行交易的時候,也許都會聽過別人提起 “Gas” 這個詞語,而且又會以多或者少去形容它,說得好像真的平時日常生活中所用到的燃料一樣。其實 Gas 是如何使用?另外,除了以太坊 Gas 之外,其實另一個區塊鏈項目 NEO 都有屬於它們 Gas。兩者其實是「兄弟」嗎?還有,為何有了 NEO,還要有 NEO Gas 呢?
在這篇新手專題的文章,你將能夠掌握:
- 以太坊 Gas 的基本概念
- 傳輸程序講解
- NEO Gas 與雙幣制度(Dual token system)
以太坊 Gas 的基本概念
Gas 是以太坊(Ethereum)的其中一個基本概念,在發布白皮書的時候已經有提及。白皮書當中清楚提到,Gas 是電腦執行計算動作(computation)的驅動工具。這看來其實很類近普通汽車使用汽油(Gasoline / Gas)的情況:你希望裡面的引擎能夠驅動,令汽車行走,你就需要給它汽油。
白皮書指在最基本的情況下,單一個計算動作須用上 1 Gas。但是,有些計算動作因為比較複雜,牽涉的資料較多,就不能夠用 1 Gas 完成,需要用上更多的 Gas。白皮書又提到,每位元組(Byte)的交易資料須收取 5 Gas 費用。現時在以太坊當中,傳送以太幣(Ether, ETH)須用上 21000 Gas。
因應 Gas 的出現,有另外兩個字詞亦引伸出現,分別就是 “Gas Limit” 和 “Gas Price”。“Gas Limit” 的意思是指,你願意在一宗交易(或者傳輸過程)當中,最多用上多少 Gas。需要注意,如果 Gas Limit 訂得太低的話,譬如傳送 ETH 需要用 21000 Gas,而你只設定了 15000 Gas,你的交易就會傳送失敗,我們一般會以 “Out of Gas” 來形容這個情況。
既然要避免這個情況,我們應該設定較高的 “Gas Limit”,譬如傳送 ETH 的話,可以設定 50000 Gas。大家不用擔心設定過高 Gas 就等於浪費,因為沒用到的 Gas 將於交易成功後退回。在此建議大家日常使用時,儘管設定高一點的 Gas Limit 也可,因為《幣訊》也確實試過用 21000 Gas 都無法送出 ETH,後來設定較高的 Limit 後才發現,系統用了約 21100 Gas 才成功傳輸。
至於 “Gas Price” 按照字面解就是油價,但套用在以太坊的情況,就是一個速度攸關的選項:如果你想快些完成交易,你應該設定較高的 Gas Price;如果你不趕時間,設定較低的 Gas Price 也沒有問題。為何較高的 Gas Price 會較快完成交易呢?我們稍後再向大家解釋。至於 Gas Price 的單位是 “GWEI”,而 10 GWEI 才等於 0.00000001 ETH,亦即是 10 億 GWEI 就等於 1 ETH - 所以在理論上,你是可以用 10 億 GWEI,即把 1 個 ETH 作為 Gas Price 送出去。GWEI 其實和 ETH 是相通的十進制換算單位,大家也可以去一些換算網站參考。
基本而言,Gas Price 的合理標準並不是一個硬性指標,到底是否「合理」,是按照當時區塊鏈的繁忙和擠塞情況而定。如果交易當刻區塊鏈並不繁忙,你要付出的 Gas Price,即是 GWEI 並不會很高;但如果在很繁忙的時候,例如鏈內充斥大量複雜的交易資料,例如謎戀貓 CryptoKitties,或者當時出現大量認購 ICO(Initial Coin Offerings, 首次代幣發行)的情況,甚至是有代幣(Token)大量生成的時候,日常付出的 Gas Price 就肯定不能滿足需求,用家就必須提高。“ETH Gas Station” 是一個相當簡明的網站,提供了即時的 Gas Price 資訊,可令用家更有預算。
有了 Gas Limit 和 Gas Price,我們就可以計到一宗交易的費用是多少了。算式就是:Gas Limit x Gas Price = Transaction fee。
打個譬喻:某個傳送 ETH 的程序,用家設定了的 Gas Limit 是 21000 Gas,Gas Price 為 20 GWEI。他需要準備的交易費就是 21000 Gas x 20 GWEI = 0.00042 ETH。
傳輸程序講解
一般來說,在我們要傳送 ETH 或者其他以太坊代幣的時候,儲幣的錢包都會容許我們設定 Gas Limit 和 Gas Price,當然閣下仍然可以使用系統預設的數值,可能是 21000 Gas 和 10 GWEI。
當我們確認傳送交易之後,錢包會給予我們交易編碼(Transaction code, TX code)。我們得到 TX Code 後,當然可以去到檢查交易進度的網站,例如 etherscan.io 查詢,但通常我們輸入 TX code 的時候,都會發現系統出現 “pending” 的情況,就是等待處理的狀態。為甚麼會這樣呢?
大家可以想像,其實等待處理的交易其實都是放在同一個池當中,等待礦工「打撈」處理。礦工拿起這些交易之後,就會放進區塊中,成為區塊鏈的一部分,交易也正式完成了。礦工並不會隨機「打撈」交易,那到底礦工會優先撈起哪一些的交易呢?當然就是交易費較高的交易了!
收取交易費的是礦工,他們優先處理能獲益最多的交易,這是很直觀和正常的做法。雖然這不是一個硬性原則,但幾乎所有礦工都會按這個原則處理。以太坊每 10 秒產生一個區塊,只要你設定較高 Gas Price 令交易費也較高的話,有時你未及檢查進度,礦工就已經完成你的交易了。如果你選擇較低 Gas Price 令交易費也較少,礦工自然也不會急切處理你的交易,留待較後期,甚至是網絡不繁忙的時候才處理,這就是為何用家付出太少 GWEI 就要等待較長時間的原因。
NEO Gas 與雙幣制度(Dual token system)
上面的段落已經講解了以太坊 Gas 的概念和使用方法,但是除了以太坊的 Gas 之外,其實另一個區塊鏈項目 NEO(NEO)都有發展 Gas(GAS),即是說項目有兩種加密貨幣,分別就是 NEO 和 GAS。為何要這樣做呢?
講解原因前,首先提供一些基本資料:NEO 是中國第一個開放源碼區塊鏈項目,早在 2014 年開展,並在 2015 年 6 月起在 GitHub 開放源碼。NEO 項目擁有自己的區塊鏈,能夠執行智能合約,而 NEO 平台內的智能合約就名為 “NeoContract”。
NEO 開發方早在發表《NEO 白皮書》的時候,已經將 NEO 設定為雙幣(Dual token)制度。嚴格而言,NEO 屬於硬幣類加密貨幣(Coin-type cryptocurrency),而 GAS 就屬於代幣類加密貨幣(Token-type cryptocurrency)。
根據白皮書,屬於「管理代幣」的 NEO 作用是用來投票選出委託人,即是實踐權益委託證明(DPoS)共識機制等,而屬於「燃料代幣」的 GAS 作用是在轉賬 NEO 和執行智能合約時使用。總量 1 億個的NEO 現時已經全部生成,但是總量 1 億個的 GAS 就仍在生成。
根據已經預載的遞減算法,目標是算法執行後的 22 年內,將 GAS 生成在不同的 NEO 錢包地址當中,換而言之,用家只要擁有 NEO 並且放在支援生成 GAS 功能的錢包當中,他都會收到 GAS。所以 GAS 除了是燃料代幣之外,亦可以視為持有 NEO 的「利息」(“dividend”)。
來到這裡,我們已經可以看到 ETH Gas 和 NEO Gas 的相同和相異之處。相同的是,ETH Gas 和 NEO Gas 都是為了執行程式運算、傳輸交易、和執行智能合約而設,要做到以上的事就必須用到 ETH Gas / NEO Gas。不過,ETH Gas 不是代幣,所以不能,而且無法以任何形式派發或取得,只能成為執行程式數量的指標單位;而 NEO Gas 作為代幣的定位,就令開發方提供了派發方式,用家亦知道取得的方法,並以它執行各種運算和交易活動。
現在還有一個問題未解答:為何 NEO,以及其他項目商都要發展雙幣制度呢?其實原因都相對簡單,就是項目商希望將他們建構的加密貨幣系統,以功能來區分定位:具備管理、交易功能的就是「主幣」,用以傳輸與執行運算的就是「副幣」。在此,副幣還可以用作獎勵礦工、貢獻者和主幣的持有者。
另外,項目商亦未必希望加密貨幣的價格升跌直接影響傳輸成本,所以就將傳輸功能交給副幣負責,期望去除主幣價格升跌所帶來的連串影響。不過按照以往經驗,主幣和副幣的價格走勢都是呈正相關性,所以上述的影響始終不能完全排除,往往只能減輕。
總結
這篇新手專題文章所談論的 ETH Gas 和 NEO Gas 雖然隸屬兩個系統,兩者沒有任何關係,但是跟雙幣制度一樣,這個都是反映了項目商的發展布局和用心。如果以更宏觀的眼光去看,各個項目自行發展的生態,其實都是「代幣經濟」(“Token Economy”)的一部分。但到底甚麼是代幣經濟呢?我們下次再談。
以上內容由《幣訊》與 9up.io 共同協作撰寫。
【若你喜歡幣訊的內容,請輕按以下拍手鍵(可以按幾次)支持我們。】