以太坊交易費的經濟學模型

Ping Chen
CryptoCow
Published in
9 min readOct 11, 2018

這篇文章會介紹近期以太坊社群對「交易費模型」的討論,主要參照自 Vitalik 的一場演講影片,和論壇上的文章 ‘‘First and second-price auctions and improved transaction-fee markets’’,探討區塊鏈交易的外部性,以及目前的手續費競標模式存在的問題,和可能的改善方案。

連結如下:

背景知識

以太坊使用 “gas” 做為計算手續費的單位,使用者在送出交易時,除了從帳戶中扣除轉帳金額(msg.value),還要支付 gasUsed * gasPrice 的使用費。

根據每筆交易內容不同,手續費也會不同,計算主要有兩個考量:計算量、存儲量。因為區塊鏈上的交易需要由每個節點重新執行過作為驗證,並佔用每個節點的硬碟空間,所以越複雜,使用越多容量的交易需要付越多錢。

詳細的價格可以參考這份表格

區塊鏈的交易成本和利益

利益:

對於每一筆區塊鏈上被打包(確認)的交易,它提供了發送者私人利益(private benefit),也就是發送者「希望」交易被確認的理由,因為他想轉錢給別人、因為他想買東西、因為他要玩區塊鏈養貓⋯ 等等理由。總之,交易被確認對發送者是有好處的。

成本:

交易的成本分成兩部分,一個是內部成本(private cost),一個是外部成本(social cost)。內部成本比較直觀,就是發送者付出的手續費,目前手續費是由打包交易的礦工賺走,但也有其他模型正在被考慮,下面會提。至於外部成本的部分,是本文主要想探討的重點:什麼是一筆區塊鏈的外部成本?由誰承擔?首先想到的是挖礦消耗的電費,但其實那和交易的關係並不大,而是與挖礦收益和礦工間的零和競爭有關。

實際上,一筆交易的外部成本承受者非常多元。對於每個運行全節點的電腦,這筆交易如果需要紀錄狀態,比方說產生一隻新的貓,就會佔用一些硬碟空間;對於區塊鏈網路本身,越多的交易代表節點需要更多時間驗證,網路廣播效率越慢;甚至連區塊鏈服務提供者,比方說區塊鏈瀏覽器 Etherscan,也承受了交易的外部成本。

收稅:

基於區塊鏈交易存在外部成本,且我們無法準確的把錢分配給承擔者,收稅是很順理成章的作法。庇古稅(Pigouvian Tax)就是藉由對污染(外部成本製造)者課稅,以改變市場均衡的方法。在區塊鏈的領域,我們沒有政府做為收稅的執行者,所以藉由限制區塊大小以及手續費競標的方法,達到類似收污染稅的效果。

區塊大小的意義

影片 8:05

除了有形的計算資源,打包交易的另一個成本即是增大的區塊。而更大的區塊通常代表著更高的頻寬需求、單位時間內需要驗證更多筆交易,門檻增高,有能力運行節點的設備數量變少,去中心化程度和安全性相對減少。也就是說,允許更多交易的成本會使整個區塊鏈系統更脆弱。然而,我們也不會為了提高安全性而把區塊限制在非常小,因為那會使得手續費競標變得太過激烈,讓整個系統的實用性降低。

影片 13:03

為了決定區塊大小,我們考慮每增加一單位(比方說一筆交易)的邊際成本,如圖。當區塊非常小的時候,大部分的設備,包括智慧型手機,都有能力運行一個全節點。此時,增加區塊大小所犧牲的邊際安全性(或邊際去中心化性)很高,但同時提升的邊際系統可用性也高。

當區塊大小膨漲到一個程度,已經沒有手機跑得動節點之後,邊際成本變低,因為大部分的個人電腦都可以承擔比手機大很多的計算量要求,而邊際可用性以中等速度提升。

當區塊大小增加到普通電腦(筆電&桌機)無法負荷的時候,邊際成本再度變高,因為整個網路的節點數會快速下降,只剩下專業設備能運行節點,中心化程度大增,系統付出的安全成本將大於增加的可用性。

考慮實際的案例,如果比特幣的區塊大小變成 50KB,或以太坊 gas limit 變成 100000,幾乎所有的手機,甚至 IoT 設備都能運行全節點,但是手續費會高到嚇人,只有鉅額交易願意承受。一般人根本不願意付錢使用,即使手機能跑節點也沒什麼意義。

反過來說,區塊大小 10GB 的比特幣,或 gas limit 10T 的以太坊,若要維持本來的區塊時間,勢必會導致嚴重的中心化,變成類似 POA 那種稱不上區塊鏈的偽物,或 EOS 那種由超級節點構成的容易被壟斷操縱的系統。

手續費模型

第一價格拍賣

目前的比特幣和以太坊採用第一價格拍賣(first price auction),發送者可以自行決定願意付的手續費,如果交易成功被打包,手續費將從發送者帳戶扣除。由於協議限制礦工只能打包固定量的交易,因此礦工會優先處理手續費高的交易。然而,這樣的模型對使用者並不直覺,他們心裡或許有一個價格,但是為了降低成本,他們會想要出一個剛好能被打包,但不要太高的手續費,也就造成一種不必要的煩惱:猜測最低手續費。

第二價格拍賣

一種改善的方法是採取第二價格拍賣(second price auction),對於所有被打包的交易,不收取他們最開始出的手續費,而是以被打包的交易中手續費最低者的出價為準,對所有人收一樣的錢。這樣的好處是使用者可以盡情出價,他只要出一個「手續費比這個價格高我就寧願不要交易」的價格就好。然而,這樣的模型卻存在明顯的漏洞。如圖左所示,礦工的手續費是底下那個灰色長方形的面積,也就是 交易筆數×最低成交價 的金額。礦工可以透過假造一些高價交易的方式,來提高長方形的面積,使得圖右中的面積扣掉深色長方形(手續費會回到礦工身上)之後還比圖左的大。礦工可以操縱價格,還會讓系統效率降低。

手續費價格自動化

為了解決第二價格拍賣中礦工過大的權利,一個由協議自動決定價格的方式被提出。協議決定價格的概念類似於挖礦難度,是根據先前的狀態(previous state)自動決定下一個狀態的機制,因為它是寫死在系統協議裡的,任何人都能檢驗數值是否合法,礦工不容易操縱,或者應該說,礦工比較沒有經濟上的理由操縱,因為不合法的高收益會被其他節點否認,刻意製造低收益則對自己不利。

目前提出的公式是,將一個區塊的 gas 使用量錨定在 gas limit 的 50%,當前一區塊打包的交易高於 50% 就漲價,低於 50% 就降價。透過以價制量,而不是硬上限的方式,讓區塊的長期趨勢維持在半滿的狀態。

區塊鏈的儲存空間定價

目前,以太坊的儲存空間也是透過支付 gas 購買的,由於這些購買的空間,在使用者不主動釋放的情況下,會永久性地佔用節點電腦的硬碟,甚至珍貴的記憶體空間,需要用超級高的價格來避免系統被垃圾資料壓垮。現在,做一次加法需要支付 2 gas,宣告一個變數卻要支付 20000 gas,價差高達一萬倍!不過,即使已經用超高價避免垃圾攻擊,如果考慮到系統的長遠發展,似乎再高的收費也無法緩解空間無限膨脹的恐懼。

一個潛在的替代方案是:不再提供永久性的儲存空間,改以「租賃」的方式讓使用者存放資料,這樣,收費想必可以便宜很多。這乍看是個很合理的做法,就像使用任何的雲端主機一樣,你如果要一直用就要持續付錢,使用者便會自覺清掉用不掉的垃圾檔案。但是在以太坊智慧合約的情境,非永久的儲存空間會為 DApp 開發者帶來沈重的負擔。

當合約簽訂後,合作關係進展到一半時,當初記載款項的變數居然被釋放了,這麼可怕的事情是絕對不允許的,但為了避免這個情況,又需要多更多的工程和條件控制來確保儲存空間活到它不再被需要。而如果,你的系統是供不特定人使用,比方說 ERC20 Token,還要擔心湧入的人潮會自動佔用更多空間,加速租金被耗盡。開發 DApp 已經不容易,還要規劃能一邊運作一邊維持租金的收費模式,簡直是工程師的天大噩夢。

影片 24:51

一個稍微減輕工程師恐懼的方法是:不要在租金耗盡的時候徹底刪除資料,而是讓它「睡著」。把數值從 state trie 中暫時移除,讓合約不能直接存取數值,但如果任何使用者想要/願意,他可以提供錢和該數值過去存在的證明,重新「喚醒」這個變數,讓合約繼續被使用。

不過,這樣的模式仍然比過去買斷制的空間使用權來得麻煩不少,在實裝前可能還需要很大幅度的調整,或者永遠不會有上線的一天。

如果想知道更深入的分析,可以看這篇論文:
https://github.com/ethereum/research/blob/master/papers/pricing/ethpricing.pdf

https://fb.me/artistichorn

ETH:
pingchen.eth
0xc1f9bb72216e5ecdc97e248f65e14df1fe46600a
BTC:
1HUHtZ2mTLZgJai35msRfj6jupULP2kc6N

--

--