比特币详解3.0 ——区块链的救赎
比特幣目前最核心的問題,還是TPS過低。目前比特幣的TPS最高為7,而支付寶TPS為25.6萬。毫不夸張的說,支付寶已經是核彈級別了,而比特幣還停留在小米加步槍的水平。
相信各位小伙伴們一定很著急,如何拯救我們的比特幣?
「朋克」在前幾章講過,從技術使用角度看,區塊鏈公鏈的三極主要是安全性、效率、規模化能力(TPS)。這三極相對來說是矛盾的,沒有辦法同時滿足超高的安全性、超高的效率及大規模化的能力。魚和熊掌,不可兼得。
目前來看,比特幣的安全性級別非常高,但是系統吞吐量(TPS)太低,從而導致的手續費過高,以及無法搭載各種智能合約及去中心化應用(這也有比特幣不是圖靈完備的原因)。
因此,「朋克」在這一篇,將要介紹
1. 比特幣目前有哪些改進方案可以提升性能;
2. 比特幣之外的其它公鏈,又有哪些改進的方向和可能性。
?
首先我們來溫習一下上一篇「朋克」提到的公式:主鏈TPS=區塊大小/(出塊間隔*交易字節大小)。公式中的三個變量:區塊大小、出塊間隔、交易字節大小,調整后都可以提升主鏈的TPS,這也是下面要講的方法中的一部分。
此外,還有一些其他方法,實質上是通過在主鏈之外進行交易或運算之后再將數據記錄到主鏈,也達到了變相提升整體吞吐量的目的。
下面「朋克」就來為小伙伴們細細道來。
?
一、 比特幣的解決方案
為了提升比特幣的TPS,以下幾種是目前正在(將要)使用的提升方案。
?
1. 隔離見證(降低單筆交易記錄的字節大小)
在比特幣設計中,一筆交易大小約為250-400字節,如果能夠降低每一筆交易的字節大小,就可以使一個區塊內記錄更多筆交易。這也就是隔離見證(SegWit)在做的事情。一筆交易的記錄包含了交易記錄和簽名信息,然而簽名信息只有礦工在將交易打包入塊,驗證合法性時才有用,對于非礦工來說其實是沒有用的。因此隔離見證提出不將簽名信息寫入區塊,僅寫入一個指向簽名信息的指針,將簽名信息儲存在另一個數據結構中。這樣的好處是減小了交易的大小,在無需增加區塊大小的前提下達到了擴容。在一筆單輸入單輸出的交易中,使用SegWit大約可以節省50%的交易大小,對于多輸入或多重簽名的交易可以節省更多,并且理論上不會降低安全性。
而且隔離見證的交易可以和沒有采用隔離見證的交易共同運行,也就是說在同一個區塊里即可以記錄隔離見證的交易也可以記錄沒有隔離見證的交易因此隔離見證另一個好處是無需硬分叉,不會造成比特幣社區分裂的風險。
但是,隔離見證的解決方案,由于只能節省大約50%的交易字節大小,最多也只能是將比特幣的TPS提升一倍多一點,只能算是解了燃眉之急,從長遠來看,對解決比特幣吞吐量的問題還是杯水車薪(吞吐量和支付寶還是萬倍的差距)。
?
2. 閃電網絡(將一部分交易在鏈下的狀態通道內完成)
除了隔離見證以外,閃電網絡也是目前比特幣正在使用的可以提高系統吞吐量的方法。
由于鏈上的容量有限,現在一種解決方案是將部分運算不在鏈上完成,而在鏈下計算好之后,再將最后的結果寫到鏈上的方式。這種方式可以大幅提升主鏈的吞吐量,而鏈下進行運算的地方,則通常被成為狀態通道(State Channel)。而閃電網絡就是采用了狀態通道的思路。
閃電網絡的基本思想是:兩個相互之間經常頻繁交易的地址,并不需要將每一筆交易都詳盡的記錄到區塊鏈賬本上,只需要記錄一段時間內的交易結果即可。為此,閃電網絡采用了支付通道(狀態通道的一種)的技術,即只需在兩個地址打開支付通道和關閉通道時寫入區塊鏈,這之間兩個人無論互相發送了多少次傳輸,寫入區塊鏈的數據都不會增加,并且閃電網絡內的交易是及時確認的,不需要等區塊確認。值得注意的是,這兩個人無論交易了多少次,都不會產生手續費,只會在開啟和關閉通道時產生手續費。
閃電網絡的另一個特性是不僅可以在建立通道的兩個地址之間傳輸,還可以連接各個通道。比如A和B建立了支付通道,B和C也建立了支付通道。這時候A雖然沒有直接連接到C的傳輸通道,A依然可以通過閃電網絡,將交易先支付給B,再由B轉交給C。理論上如果有一個超級節點,所有人都建立和這個超級節點的支付通道,那所有人都將可以通過閃電網絡互相支付。
樂觀情況下,閃電網絡可以極大的增加比特幣的TPS,并且可以大幅的降低手續費(理論上接近于0)。
未來,理想情況下,閃電網絡可能會形成多個超級節點,每個節點鏈接一部分用戶,同時超級節點間相互連接,從而覆蓋絕大部分的比特幣用戶,形成覆蓋全球的綜合交易支付平臺(這有點類似于現有的銀行體系,每個銀行覆蓋一部分用戶,同時銀行間可以進行結算)。超級節點通過收取用戶的手續費(非常低)作為盈利模式,而閃電網絡的開發公司(Lightening Network Company)通過為大客戶架設商業級的閃電網絡節點賺取利潤。
但是,上面的只是理想情況。
目前來看,閃電網絡的缺點在于并未經過長時間的驗證,安全性有待考證。并且其本身是不運行在區塊鏈之上的,這也有可能會降低交易的安全性。
此外,這種一個或多個超級節點的形成,實質上可能會導致比特幣去中心化程度降低,變成了弱中心化的產物,用戶之間的交易從主鏈上原有的C2C的模式變成C2B2C的模式,這從某種意義上與中本聰的本意相悖。
還有很重要的一點是目前階段,閃電網絡的易用性還不強。
一方面由于閃電網絡的部署難度較大,普通用戶較難部署,這也導致了目前的普及程度較低,隨機兩個用戶之間可能找不到可以把他們鏈接起來的通道(這會導致不能使用閃電網絡),或者兩個用戶之間需要通過非常非常多的中間方才能夠鏈接起來(這會導致高的手續費)。
另一方面,是用戶如果開啟閃電網絡的通道,那么他需要一直保持通道開啟的狀態,不能下線。否則一旦通道關閉,下一次開啟還需要再次支付開啟的費用,這對普通用戶來說也是較為繁瑣和不實用的地方。
?
3. RSK側鏈(將一部分交易放在側鏈上完成)
側鏈的邏輯與狀態通道類似,也是通過將部分交易放在側鏈上完成,從而降低主鏈的負擔,實現變相的提升TPS。RSK就是一種BTC的側鏈。
側鏈與狀態通道的區別在于,狀態通道本身是鏈下的(不是在區塊鏈上運行的),而側鏈是在鏈上的(其本身也是一條鏈,只是不在BTC上運行),但是可以通過跨鏈智能合約,將主鏈上的資產和側鏈上的資產進行交換。因此,可以將一部分(甚至大部分)交易或運算放到側鏈上執行,只將最后的結果放到主鏈,從而實現主鏈性能的大幅提升。
同時側鏈還可能有一些主鏈沒有的特性,比如RSK的區塊鏈是圖靈完備的(BTC不是)。圖靈完備通俗的講,就是可以實現所有的代碼編程。所以通過在RSK區塊鏈上運行智能合約,再轉移到BTC上,可以等效于運行BTC的智能合約。
側鏈目前來看是非常好的解決方案,但是核心的問題在于,側鏈本身也是一條鏈,那它又如何提升本身的TPS呢?
二、其它公鏈可行的解決方案
介紹完了比特幣目前的一些提升性能的方案,「朋克」再與小伙伴們介紹一下,比特幣之外的其它公鏈,又有哪些嘗試,以提升其系統吞吐量。
?
1. 擴容
根據我們之前的公式:主鏈TPS=區塊大小/(出塊間隔*交易字節大小)。
因此,除了隔離見證外(減少交易字節大小),增加區塊大小是最簡單的擴容方案之一。這也正是BCH(比特幣現金,具體「朋克」會在之后的文章介紹)采用的方案,通過增加區塊大小,使得每一個區塊可以記錄更多的交易,也等于可以線性的增加TPS,但是缺點是區塊鏈數據庫大小也會成倍增加。而區塊鏈數據庫大小增加之后,會導致節點需要配備更加多的存儲空間,這會導致觀察節點(不參與挖礦的節點)以及個人挖礦節點的數量減少,從而使得系統的去中心化程度及安全性減弱。
以BCH為例(注:BCH的區塊大小為8M),目前BCH如果寫滿每一個區塊,一年就會產生約400GB的區塊鏈數據。相比之下,比特幣從2008年運行至今,區塊鏈總大小為約160GB。
?
2. 提升出塊速度
同樣的,降低出塊間隔(也就是提升出塊速度)也是一種簡單的擴容方法。在保持區塊大小不變的情況下,降低出塊間隔,也可以有效的提升TPS,并且還可以提升交易確認的效率。已經有相關論文證明即使將比特幣出塊間隔改為1分鐘,幾乎不會降低比特幣區塊鏈的安全性。
但是出塊速度是不能無限制提升的,出塊越快網絡上產生自然分叉(孤塊)的概率就越大,這樣POW帶來的安全性就會對應的降低。并且,如果只降低出塊間隔,同時保持區塊大小不變,那和區塊擴容一樣也會導致區塊鏈數據庫成倍增加,從而導致觀察節點以及個人挖礦節點的數量減少,降低系統的安全性。
***
前面「朋克」提到的關于TPS公式中的三個變量:區塊大小、出塊間隔、交易字節大小都已經有方向去解決。但是大家可能已經發現,無論調整的是哪個變量,都只是線性的增加,無論如何都不可能追趕上支付寶和Visa級別的TPS。
***
下面,「朋克」將與大家探討幾個更加深層次的解決方案。
?
3. 調整共識機制
比特幣的本質是基于工作量證明(POW)的分布式賬本,那就必須受制于前面TPS的公式中的三個變量。
因此,很多公鏈嘗試調整他們的共識機制,從而大幅提升效率。例如eos(柚子鏈)提出的DPOS(股份授權證明機制)、NEO(小蟻)提出的dPBT(一種改進的拜占庭容錯算法)等,本質上是將比特幣去中心化的共識,變成了弱中心化的共識。簡單地說,就是之前的公鏈上所有的節點都可以參與進行記賬,而現在會先進行選舉,選舉出一小部分節點后,由一小部分節點參與記賬,從而可以使得共識達成的速度、出塊速度、運算速度等都大幅提升。(具體「朋克」會在之后的文章中詳細展開)
區塊鏈的共識機制,就好比現實中的政治體制
這樣做的優點是TPS的速度可以成千上萬倍的提升,并且移除了挖礦導致的電能消耗。但缺點是,一方面這種弱中心化的模式(不管是股份制也好,還是授權模式也好),會導致馬太效應愈加明顯,即富者越富,窮者越窮。另一方面,目前還沒有一個大規模部署的基于股份制(POS及相關共識機制的)系統,安全性還沒有得到驗證。
?
4. 主鏈+狀態通道(State Channel)
這種模式類似于比特幣+閃電網絡的模式,只是更近了一步,在開發公鏈的時候就已經自帶原生的狀態通道了。典型的代表公鏈例如AE(aeternity)。AE的狀態通道不僅可以處理大量交易(類似閃電網絡),還可以直接進行程序的運算(圖靈完備)。(具體關于AE的介紹「朋克」會在之后的文章中詳細展開)。
但同樣的,這種狀態通道是在鏈下完成的,并不上鏈,本質上并不是區塊鏈,其安全性可能會有所降低。
?
5. 分片(Sharding)
分片技術是由以太坊(ETH)最先提出的一種擴容技術,目前還沒有開始使用,預計在3-5年內會部署完成。分片技術簡單的說,類似于通過分層級的結構,把非常多的側鏈鏈接起來,從而極大的提升系統的吞吐量。
?
分片會將整個區塊鏈內的地址分成若干個小塊(分片),每個賬戶隸屬于一個小塊,小塊之間形成一個樹形結構。每個賬戶只能直接與同一分片中的地址進行交易,和另外分片的交易就需要進行跨分片交易。每一個分片本身也是一條區塊鏈,也遵循區塊鏈的各種規則。
分片技術將整個系統分成樹狀結構的片
打個比方,現在把整個區塊鏈分成全球(底層鏈)-國(一級分片)-省(二級分片)-市(三級分片)四級。然后屬于同一個市地址之間的交易,在市級的分片中完成即可。如果是同一個省但是跨市的,則在省內進行交易并記錄。只有跨國的交易才會導致每個國內的狀態變化,最終會統一記錄在全球區塊鏈的底層鏈上。(當然上面這樣的分法只是「朋克」為了大家更容易理解而說的,并不是最終的分法。)
這樣分片的模式可以減少底層鏈上的交易信息,僅需記錄最高層分片間的狀態變化即可,從而極大的增加整個系統的TPS和擴容性。
6. 分層
分層目前也是其它的一些公鏈提出來的擴容方案。
在現有的區塊鏈1.0、甚至是2.0的架構中(例如比特幣、以太坊等),進行的各種操作,不管是交易、還是運行代碼、或是執行智能合約等,都是混合在一起完成的。
?
而分層的邏輯是將不同的操作在不同的層級里去完成,層與層之間通過接口進行交互,每一個層本身也是一條或多條區塊鏈。這樣可以極大的提高整體的TPS能力,并且通過每一層的功能的區分,可以擴展運算能力及程序的處理效率及能力。此外將層與層之間隔離后,可以使得安全性更加提高。即使上一層出現了問題,也并不會影響下一層的安全性。
上圖是本體網絡(ONT)的部分分層架構
目前來說分層的涵蓋的范圍比較廣泛,類似于分片、側鏈等技術,也都可以算作是分層的一種。但是一般意義上來說,基于功能的分離架構,更多被認為是分層的代表形態。
?
7. 其它
除此之外,還有其他的一些擴容的方案,例如DAG(有向無環圖)的區塊結構、多鏈(類似于多條側鏈)、中繼鏈等,由于篇幅有限,不一一介紹。朋克之后會挑選有代表性的公鏈進行講解。
?
三、小結
比特幣是區塊鏈日出時的第一縷陽光,從此開創了區塊鏈的時代。
雖然目前比特幣還存在著許多的問題,無法承載大家對區塊鏈的最高期待,但是,比特幣已經推開了區塊鏈的大門,社會的發展、商業的演變會隨著區塊鏈的變革,發生翻天地覆的變化。
https://zhuanlan.zhihu.com/p/34151092
總結
以上是生活随笔為你收集整理的比特币详解3.0 ——区块链的救赎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【朋克智库】比特币详解2.0——比特币的
- 下一篇: FT到底值多少钱——再议Fcoin机制及