目的
區塊鏈世界中,可擴充套件性是每個專案都需要應對的問題。從以太坊專案入手,有利於我更好地瞭解這個難題,並作出投資決策。以太坊擴容系列結束後,其他專案也可能涉及,例如eos和quarkchain。
這些文章不會涉及到程式碼,我只概述我理解的可擴充套件性工作機制。
2018:以太坊基建之年
之前在關於區塊鏈可擴充套件性一文中提到,目前尚無區塊鏈兼顧去中心化、可擴充套件性和安全。對以太坊來說,可擴充套件性問題在ico和cryptokitties等應用中已體現出來,自然這成為以太坊開發者考慮的重點。按照創始人vitalik buterin的說法,2018年將成為以太坊基礎設施建設之年:
[2018] will be the year where all of the ideas around scalability, plasma, proof-of-stake, and privacy that we have painstakingly worked on and refined over the last four years are finally going to turn into real, live working code.
從實用角度來說,以太坊尚處於早期,當前的情況是它既不安全(考慮到智慧合約中經常出現的漏洞),也難以擴充套件。距離最終目標:為幾十億人服務的安全易用的去中心化網路,路途尚遠。
為了解決這個問題,目前有多個專案從事以太坊擴充套件性研究。最近一次綜合這些方案現狀的是今年三月份在巴塞羅舉辦的scalingnow!大會,參會專案類別和名稱如下:
state channels(狀態通道)類別
- uraiden
- counterfactual
- funfair
- decentraland
- liquidity network
sidechains(側鏈)類別
- parity tech
- poa network
- plasma
sharding(分片)類別
- diamond drops
multi-chain(跨鏈)類別
- cosmos
alternative(其他)類別
- truebit
擴充套件性的難點
擴充套件性討論中常出現的一個縮寫詞是tps(transaction per second, 每秒交易數),當前以太坊差不多有15tps,而visa在65000tps左右,可見以太坊成為日常生活的一部分,還有很長的路要走。這種限制發生在以太坊設計本質上,因為每筆交易都會被網路中每一個節點處理;每個節點,無需依賴其他人告訴當前網路狀態,它自己可以得知。
或許我們可以讓每個節點做更多的事情,例如把區塊大小翻倍,但這樣子做會犧牲去中心性,因為處理能力較強的節點將在挖礦中獲得優勢,從而使得全網算力分佈更加集中。
所以,我們的目的是在不增加每個節點工作量的前提下,儘可能讓整個網路做更多的事情。目前看來有兩種方法。
如果每個節點無需處理網路中的每個操作
這個假定直接推翻了以太坊的設計原則,但如果我們把網路切成兩半,各自可以半獨立執行呢?a部分處理一半交易,b部分處理另一半,這將使全網tps翻倍。在此基礎上,我們把網路切成多個,這將更大地提高tps。這就是前文提到的sharding(分片)處理。
分片處理由vitalik buterin帶領研究。以太坊將被劃分為多個shard(片),每一個可以獨立處理交易。分片技術經常被稱為layer 1(第一層,或稱鏈上)擴充套件方案,是因為它在以太坊協議中實現。這也意味著,分片技術將造成hard fork(硬分叉)。硬分叉的定義就是區塊鏈發生了永久性的分歧,導致沒有升級的節點無法驗證已升級節點產生的區塊。
如果我們能從以太坊當前處理能力中獲得更多
第二種想法就是,與其硬分叉以太坊,不如我們基於當前的tps做更多的事情。這種通常稱為layer 2(第二層,或稱為鏈外)擴充套件方案,它們建立在以太坊之上,無需修改以太坊本身。典型的例子如上文提到的state channels(狀態通道),plasma(側鏈的一種)和truebit(提高複雜運算能力)。
- 狀態通道
以有賭注的打牌為例,假如我們把撲克牌遊戲放到以太坊上,這將註定是一個比較昂貴緩慢的遊戲,因為參與打牌的人需要等待礦工的確認,而且每次動作都需要付出以太坊的gas,這個實在難以接受。不如,我們找個以太坊之外(鏈外)的地方打牌,每次輸贏先用本子記下來,最後到以太坊鏈上統一結算。這將極大加快我們的打牌進度,並且也不影響最終結果。
當然,實際執行起來是有很多細節和限制的,我將在以後的文章中解釋。
- 側鏈
另一種打牌方法,我也不在以太坊上打,但我自己發明一條區塊鏈,作為以太坊的子鏈依附其上,而且子鏈上還能掛載下一層子鏈。這種方法也能極大減少以太坊的負荷並提高tps。典型的專案就是vitalik buterin釋出的plasma技術。
- truebit
truebit不會直接提升網路中的tps,它的目的是讓以太坊應用能處理較為複雜的運算,並且能在主鏈上得到驗證。考慮gas費用,複雜運算在以太坊上進行是很貴的。truebit有一套專門的驗證計算結果的方法,將在以後文章中論述。
跨鏈操作
目前公鏈(public blockchain)數目不少,cosmos致力於建立基於區塊鏈的乙太網(internet of blockchains),使得各個區塊鏈能連線到一起。cosmos將從整個網路角度提升tps,和單個區塊鏈的鏈上鍊外方案構成補充。
總結
- 目前尚無區塊鏈兼顧去中心化、可擴充套件性和安全。對以太坊來說,可擴充套件性是2018年的重點
- 解決以太坊擴充套件難題,目前有鏈上和鏈外兩種解決方案
- truebit專門用來處理複雜運算
- cosmos能從整個網路(跨鏈)角度提升tps
到這裡也就結束了以太坊擴容方案的概述,接下來的文章,將按照鏈上、鏈外、複雜計算和跨鏈四個角度逐一解析,也歡迎各位的反饋。