使用公鏈,傳送比特幣,以及傳送以太坊上的代幣,都是需要使用者支付礦工費的。這和我們使用微信支付,支付寶支付不需要手續費是不一樣的(嚴格來說,微信支付等是向商家收費)。公鏈礦工費應該如何設計?
我們可以從四個視角來分析諸如比特幣以太坊等公鏈的礦工費設計。
1誰付錢?2付多少?3誰收錢?4誰出資源?5礦工費的設計如何利於構建更完善的網路?
絕大多數公鏈都是需要使用者支付礦工費才能傳送交易的。只有極少數的公鏈使用了零手續費的設計,如EOS。比特幣的礦工費的設計原則是,第一是按使用者傳送的交易的位元組數來計費;第二位元組數的單價一般是有一個最低價原則,然後按市場競爭誰出更高價誰獲得更快的確認。比特幣的礦工費就是比特幣本身。交易的位元組數最低單價,一般是在完整節點錢包裡設定的,基本上是1sat/byte。雖然這並不是強制的全網共識規則,但低於完整節點設定的礦工費,更大的可能性會被節點拒絕。BTC、BCH和BSV,以及絕大多數UTXO制的區塊鏈產品,都採用類似的礦工費設計。基本上最低位元組數單價為1sat/byte。BCH和BSV因為使用人數少,使用者基本上都是按最低價來支付礦工費,使用者之間不會涉及到礦工費競價排名。BTC使用多,會涉及到競價排名,現在一般為10sat/byte。雖然BTC的礦工費設計比BCH等要複雜一點,BTC的隔離見證交易資料分見證資料和基礎交易資料,後者的最低位元組單價是前者的3倍。但這些細節我們可以不用在意。在比特幣上發token交易,也是要消耗比特幣作為礦工費的。如在BTC網路上發omni-usdt,礦工費也是BTC;在BCH網路上發SLP代幣,礦工費也是BCH。代幣交易的礦工費同樣是按位元組數來衡量。比特幣的礦工費,最終是被礦工收走了的。礦池打包區塊時,會按使用者傳送交易時新增的礦工費收進coinbase交易。礦工也是主要的比特幣節點運營者,比特幣交易需要節點來驗證、廣播、和儲存。所以可以說礦工費是使用者支付給礦工,礦工付出交易所需的資源。 以太坊的礦工費設計原則是,第一是按使用者傳送的交易的計算步驟來計費;第二同樣是每一個計算步驟有一個最低單價,然後按市場競價排名來優先獲得更快的確認。以太坊的礦工費是引入了一個額外的幣,叫gas(燃氣),gas和以太幣是在系統中有固定兌換價格的。以太坊的交易涉及到很多的合約程式碼之類的,需要計算執行。gas的設計是綜合考慮了交易的計算量、儲存和頻寬需求。單純傳送以太幣,需要執行的是系統合約,涉及到的gas量是相對更少的。而要在以太坊上傳送token,需要額外執行token合約,這就需要支付更多的gas。平均來說,發token的礦工費是發ETH的1.5倍。但無論是發以太坊,還是發token,以太坊網路都是統一按gas來計算礦工費。而gas值反應的就是交易的計算量、儲存和頻寬需求。因為以太坊現在使用量也非常大,需要使用者之間競價排名來優先獲得確認。而且以太坊的礦工費設計是先收礦工費,再確認,如果你的礦工費付的不夠,有可能得不到確認,但礦工費卻被沒收了,交易傳送失敗。這就很讓人討厭。
相對的,比特幣交易礦工費,只是反應了儲存和頻寬,就是按位元組數來計算。以太坊的礦工費也是由礦工收走的,礦工是以太坊節點主要運營者,同樣是相當於礦工提前交易所需的計算、頻寬和儲存資源,換取使用者支付的礦工費。 EOS的礦工費設計顯現出了BM的設計技巧,有人認為是好,也有人認為不好。EOS的交易是精確地按交易所需要資源分成了CPU(計算步驟)、Net(頻寬)和記憶體Ram(儲存)。CPU、Net和Ram是可以看成是三個幣,和EOS有一定的匯率關係。使用者傳送交易裡,系統會計劃交易需要的這三種資源,然後進行計價。但EOS系統出售這三種資源的方式卻是“租賃”。使用者先購買EOS,然後分別抵押進三個系統合約,換取這三種資源。其中CPU和Net是穩定價格的,你花了多少EOS抵押,未來你也可以贖回對應的EOS數量,不會少。但Ram是波動價格的,你贖回時可能變多,也可以變少。因為抵押EOS獲得傳送交易需要的三種資源,但抵押又可贖回,所以EOS被稱為是免礦工費的。
這是一種變相的免費的。同樣的在EOS上傳送token,因為要執行除系統合約外的額外合約,也是需要更多的資源的,使用者就需要抵押更多的EOS來獲得使用權。EOS的礦工費是不支付給超級節點的(礦工),因為這是變相的免費。但超級節點是提供交易所需的資源的。超級節點為什麼會提供資源但又不收礦工費呢?因為超級節點可以獲得區塊獎勵。比特幣和以太坊礦工,是同時獲得礦工費和區塊獎勵的雙重獎勵。 還有一類公鏈的礦工費設定是固定費用,並且礦工費承擔了獨特經濟學責任。vsys公鏈的礦工費設定就是固定的。在vsys公鏈上傳送基礎貨幣vsys,使用者需要支付固定的礦工費0.1vsys,傳送vsys上的代幣(如IPX)需要支付0.3vsys作為礦工費。vsys上的一切礦工費都是直接銷燬。相當於給全網的經濟系統設計一個通縮機制,受益者是全網持幣人。vsys提供執行交易的計算、傳輸和儲存資源的是超級節點(礦工)是收不到礦工費的,但有區塊獎勵。 下面我們來思考礦工費的設計如何最佳化系統設計。比特幣和以太坊的礦工費最終是被礦池收走的,所以礦池就有動機想方設法捕捉更多的交易,以獲得更多的礦工費。礦池是透過在全球部署更的完整節點來捕捉使用者的交易。這種設計就有利於使用者交易的及時處理,有利於推動礦池去搭建更好的基礎硬體網路。比特幣的礦工費設計非常簡潔,系統設計也相對簡潔。以太坊的礦工費就因為太複雜,出現過多起利用gas對系統發起攻擊的事件。EOS的礦工費設計非常精細,有利於系統設計師展現實力。EOS有兩種重大升級就是針對Ram和CPU資源定價問題。變相的“免費”設計,也讓EOS系統資源被大量浪費,EOS區塊鏈現在已經超過了600G,非常大了。因為超級節點收不到礦工費,所以失去了像比特幣以太坊那樣的由礦池構建更好的基礎網路的動因。EOS礦工費是太複雜,讓使用者很難受。
vsys的礦工費設計最簡潔,就是固定費用,系統設計相對最簡潔了。vsys礦工費的銷燬機制,給經濟系統設計了一個通縮機制,有利於基礎貨幣的價格堅挺。和EOS一樣,因為超級節點收不到礦工費,所以超級節點沒有動機去擴充套件建設更好的硬體基礎網路。
vsys的礦工費的設計是固定費用,不考慮網路資源;比特幣的礦工費設計更多考慮儲存資源;以太坊的礦工費設計向計算資源傾斜;EOS是精細地將資源劃分成三種來分別定價。
礦工費的主要設計目的是防止DDOS這樣的流量攻擊,有了礦工費作為成本,以此防止發往區塊鏈上發大量的攻擊交易。
設計的越精細,不考慮程式碼質量的話,那對交易就越公平,就越能最佳化資源配置,駭客就越難透過構建特殊的交易來攻擊網路。反過來,越粗糙的設計,就可能給駭客留下漏洞,透過構造特殊的交易,花少量的礦工費,卻達到極大地浪費系統資源的目的。但另外一方面,設計的越精細,對程式碼質量要求就越高,而留下bug的可能性就越大。
萬事古難全啊。
EOS和vsys因為超級節點收不到礦工費,但因為有區塊獎勵,所以也存在競爭關係,這一點彌補了超級級缺乏動機去擴充套件硬體基礎網路的動因。如果超級節點不建設更好的網路,可能會失去使用者的投票。
礦工費越低,甚至免費,就越容易獲得使用者的使用。這也是EOS真實TPS最高的原因。