當前位置:
首頁 > 最新 > 可再高速發展十年的區塊鏈架構——蟲洞協議在比特現金網路部署具有無限可擴展性的智能合約層

可再高速發展十年的區塊鏈架構——蟲洞協議在比特現金網路部署具有無限可擴展性的智能合約層

第章 引言

以太坊的成功,激發了無數的開發者致力於開發「區塊鏈操作系統」。這是一種將「區塊鏈操作鏈」作為最底層結構,然後在上面構建各種dApp來實現各種業務,的架構。我認為這是一個難於擴展的架構。

比特現金近期復現和擴展了比特幣Omni協議,提出的蟲洞協議,這是一種更易擴展的架構。

第1章 什麼叫可擴展性

區塊鏈的可擴展性主要有兩層含義,第一層含義是交易量可擴展,即網路可以承接越來越多的交易。比如現在BTC約3~7tps,ETH約20~30tps,但目前這兩個都已經接近極限了,BCH理論值能達到100tps,只不過目前沒人用,事實使用量只有0.5~1tps,bts理論值3300tps,EOS理論值則更高,也是實際使用量少。可擴展性就是讓這個tps在事實使用值上可持續增長。

可擴展性的第二層含義是節點數量的可持續增長。約束節點數量持續增長的主要是網路硬體設施的性能限制,和成本限制。如果節點運行的成本越高,現實的網路硬體設施性能越差,那那相對來說運行的節點數量就不可持續增長。

目前以太坊節點的運行成本是很高的,在維持一定的去中心化的前提下,已經觸及到了網路硬體設施的性能極限,普通用戶幾乎不會再去運行一個節點了,用戶只能運行一個輕錢包。比特幣和比特現金的運行成本都還是很低的。BTS和EOS的DPOS共識機制的設計目標並不包含節點的可擴展性。

節點的運行成本可以分為CPU計算成本、硬碟和內存存儲成本和網路傳輸的帶寬成本來計算。

實現節點的可擴展性主要目的是為了實現去中心化,如果不考慮去中心化,使用中心化的設計交易量的可擴展性是很容易實現的。

互聯網的設計就具有非常成功的可擴展性,我們大部分人都不至一個聯網設備。互聯網從來不需要擔心聯網的設備太多了,也不會擔心發的信息過載了。

但一個以去中心化為設計目標的區塊鏈產品,要成功實現可擴展性,並不容易。

第2章 以太坊及類的區塊鏈操作系統限制了可擴展性

我們從用戶的角度來看區塊鏈操作系統。以太坊有兩類賬戶,外部賬戶和合約賬戶。

外部賬戶是由公鑰和私鑰組成的。我們絕大多數用戶生產的以太坊錢包都屬於這一類賬戶,私鑰可以決定這個賬戶里的幣,包括以太坊和ERC20幣。

合約賬戶是由一個地址和對應存儲的一些代碼組成的。在以太坊上發ERC20幣,就是創建了一個合約賬戶。存儲在合約里的代碼決定了這個地址里的幣的處理方式。合約賬戶沒有私鑰。

用戶使用錢包發送和接收以太坊,一般就是外部賬戶的行為。我們發送一筆以太坊,本質上是調用了以太坊的一個「系統合約tranfer」來修改賬戶的餘額。以太坊節點需要執行這個「tranfer函數」。任何用戶發交易,如發ERC20代幣,就會觸發執行一個合約賬戶里的代碼,以太坊節點就需要執行這個合約賬戶里的代碼。所有的節點都要執行這些代碼。

任何用戶在以太坊上部署代碼,只要有用戶通過發交易的方式觸發了這些代碼,節點都要執行並驗證,用戶支付gas付費觸發代碼執行。

以太坊是將外部賬戶和合約賬戶同時設計在同一層,要求所有的節點共同維護外部賬戶和合約賬戶,這導致非常差的可擴展性。

這種架構導致節點的運行成本隨著交易量的增長快速增長。以太坊到今天,僅運行了三年,節點需要存儲的區塊數據達到了600多G,而且區塊里託管了大量的代碼需要節點運行,這些複雜的代碼要耗費大量的計算成本,而且以太坊的區塊間隔時間快到了15s,這對帶寬要求非常高,慢一點的帶寬是跟不上的。目前以太坊為了維持去中心化,已經無法再提高網路的交易承載量了。

第3章 比特幣的純交易記賬層是可擴展性的

比特幣(包括BTC和BCH)只有使用私鑰和地址控制的「賬戶」,沒有可以託管代碼的「合約賬戶」。用戶使用比特幣網路,就只能發交易,不能執行像以太坊那樣在比特幣區塊里「部署讓節點來執行的代碼」。而節點只需要執行和驗證交易。

如果我們把比特幣交易的驗證比喻成一個解鎖函數(解鎖腳本),那比特幣的節點只需要執行一個函數,不需要執行用戶自定義的代碼。

比特幣這樣的架構可以實現更高的可擴展性,但BTC因為發展理念的問題,使用1M交易數據區塊+3M簽名數據區塊,限制了交易量的可擴展性。目前BTC網路的實際使用量已經觸及到峰值,但整個BTC社區拒絕擴容。BTC的節點可擴展性就現在的水平來說是沒有問題的。

而BCH則沒有擴容的問題,交易和節點都有非常好的擴展性,但BCH生態還沒有起來,導致很少人使用。

比特幣的問題是,和以太坊這一類區塊鏈操作系統相比,功能實在是太窄了。區塊鏈操作系統允許用戶自定義函數並託管到區塊里,讓節點來保證運行,這可以實現非常複雜的功能,而不僅僅限於發交易轉賬。比如以太坊可以搞複雜的FO3D這種資金盤遊戲,可以搞以太貓這種遊戲。而比特幣只能用來做轉賬。

比特幣也有元幣協議這些二次擴展協議來實現更複雜的功能,還有側鏈協議也可以無限擴展功能,但比特幣發展了十年了,都沒有普及起來。

比特現金近期復現和擴展了比特幣Omni協議,提出的蟲洞協議,試圖在BCH主鏈基礎上拓展出一個二層網路來實現更複雜的功能。

第4章 比特現金的合約賬戶層可無限擴展

如上所述,比特現金的交易記賬層是有非常好的可擴展性的,因為這一層執行的功能很單一。但現在區塊鏈的發展證明了,特別是以太坊的發展證明了除了交易之外的更複雜的功能是必須的。比特現金推出的蟲洞協議試圖補充這些複雜的功能。

使用蟲洞協議實現智能合約的完整協議還沒有發布,但發代幣這一部分協議已經實現了。簡單的理解是這樣的,蟲洞協議是在BCH上實現以太坊的合約賬戶的功能。和以太坊一樣,用戶也是通過發送交易來部署合約代碼,用戶構造的是一筆BCH交易,而合約代碼是保存在OP_Return(或P2SH的鎖定腳本等多種方式也可以保存代碼)里。但BCH主鏈並不執行合約代碼,BCH的節點不關心OP_Return的數據,更不需要去執行,BCH主鏈只是把這筆部署交易當成普通交易來看待。

蟲洞協議執行合約是由運行蟲洞協議的節點來執行的。蟲洞節點又是什麼?

蟲洞節點就是一台運行著蟲洞協議集的電腦,可以將蟲洞協議看成是BCH節點的一個外掛,這個外掛程序專門用來解析和運行用戶使用蟲洞協議部署在BCH主鏈上的代碼。

蟲洞節點的外掛部分是一個一個孤立的節點,但BCH節點部分是相互連接的P2P網路。孤立的意思是合約的執行是相互獨立的。

以太坊的合約賬戶是所有的節點都需要執行所有的合約,蟲洞協議合約賬戶是你關心這個合約你才去執行,並不強制所有的節點都去執行這些代碼。那安全性如何?

如果一個項目方部署了一個合約A,只有這個項目方自己運行了一個蟲洞節點並執行合約A,那是否意味著這個項目方可以造假呢?答案是否定的,因為智能合約的運行結果一定是確定性的,只要你的代碼已經部署到了BCH網路,就意味著運行的結果一定是確定性的,這意味著如果任何人都可以去驗證合約A。

另外事實上智能合約的運營主要是依賴於項目方,而不是依賴去去中心化的網路。

BCH的智能合約設計思路完全是一個二層網路的設計,並不傷害BCH主鏈的可擴展性。而因為合約之間是獨立的,或者說是「並行的」,這意味著合約是可以無限制的部署,就是說BCH的智能合約層是無限可擴展的。這是以太坊夢寐以求的合約分片,BCH的這種智能合約層天然是分片的。

第5章 分層才是可擴展性的架構

將不同的功能部署到不同的層,這樣的設計是更具有可擴展性的。以太坊將純粹做交易轉賬的外部賬戶和部署合約代碼類的外部賬戶部署到同一層的「區塊鏈操作系統」的架構,運行了三年已經面臨著極大的可擴展性挑戰了。

而BCH將交易轉賬設計成主鏈,將合約類賬戶的代碼託管到主鏈,但主鏈並不執行代碼,鏈上存儲,第二層執行。這樣即保證了合約的安全性,又阻礙主鏈的可擴展性。這樣的分層設計更具可擴展性。

第6章 結束語

如果要賭下一個十年,哪條鏈還能持續保持實際運行上的可擴展性,我站比特現金BCH。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 閃電HSL 的精彩文章:

比特幣和以太坊的記賬方式——UTXO和賬戶餘額

TAG:閃電HSL |