作者:PolkaWorld
Gavin Wood,以太坊聯合創始人、Polkadot 的締造者以及 Web3 的願景推動者。
在正式開始之前,先分享 Gavin 在這一部分的一些名言警句!
以太坊至今最大的成就是什麼?—— 也許是 CryptoKitties 吧,我不知道,其實不太確定。我聽說以太坊創造了歷史上最多的百萬富翁。
以太坊是一個成功的項目?—— 如果按照我的成功標準來看呢?顯然不是所有標準都符合,甚至可能只有很少一部分符合。當然,它在財務上是成功的。
隨着 JAM 的引入,Polkadot 的方向發生了變化。它可以被視爲一種原生設計的 Rollup 託管鏈,而我們開發的技術遠優於以太坊上的樂觀 Rollup 和零知識 Rollup。
Polkadot 到目前爲止最大的成就是什麼?—— 實現了一個安全的分片區塊鏈。
Polkadot 今天面臨的最大問題是什麼?—— 正是分片。
如何解決這些問題?—— JAM
繼續閱讀,查看全部內容!
以太坊至今最大的成就是什麼?
Kevin:所以你說你在 2014 年聯合創立了以太坊?爲什麼你以聯合創始人和首席技術官的身份加入他們?
Gavin:我覺得這是一個難得的機會,立刻意識到我應該抓住它,全力以赴投入其中。或許不一定是投入一輩子,但至少在未來一段時間裏傾注全部精力。這是一個在恰當時機涌現的創新項目,團隊中有一些能力出衆且專注的人,同時也有一個雖小但對新事物充滿興趣並願意嘗試的市場。坦白說,我對這個項目充滿了好奇,我覺得它非常有潛力,可以發展得很遠,並且至少能夠爲我所理解的啓蒙自由主義原則做出貢獻。
Kevin:那是什麼?
Gavin:基本上是關於社會和發展的樂觀主義觀點,這種思想大概是在四五百年前的西方發展起來的。
Kevin:以太坊至今最大的成就是什麼?
Gavin:也許是 CryptoKitties 吧,我不知道,其實不太確定。我聽說以太坊創造了歷史上最多的百萬富翁。可能是因爲衆籌時參與的人很多,而價格後來漲得足夠高。所以可能這就是它最大的貢獻。但老實說,很難說它是否真的實現了多少有用的東西。肯定沒有達到我 10 年前我對它的期望。
Kevin:所以如果我問你,你是否認爲以太坊是一個成功的項目?你的答案是否定的?
Gavin:我的回答是,我個人認爲它算成功嗎?如果按照我的成功標準來看呢?顯然不是所有標準都符合,甚至可能只有很少一部分符合。當然,它在財務上是成功的。我想也許有一兩個以太坊創始人可能原本預期它的表現會更好。
Kevin:有哪些標準能讓你認爲它是成功的?
Gavin:效用( Utility )
Kevin:如何衡量效用?
Gavin:衡量效用的方式是看,有多少事情是人們現在能夠做到,而過去無法做到的。
Kevin:這是不是整個加密行業的問題,而不僅僅是以太坊的問題?
Gavin:確實如此。這的確是整個加密行業面臨的問題。2014 年和 2015 年的時候,我們提出了很多設想,試圖通過“無需信任”的方式解鎖一些原本無法觸及的經濟領域。其中一個我特別喜歡的例子是供應鏈。比如,當你去超市時,所有商品上都有一個二維碼,你可以掃描二維碼,瞭解這個商品的所有組成部分:何時、何地、以及數量等等。我希望在買一件 T 恤時,能夠知道它的棉花是從哪裏來的。
現在,這種事情在中心化的模式下非常難實現,成本也很高。但如果採用去中心化的方式,我覺得是有可能的。然而,這種應用並沒有真正部署起來。目前雖然有一些與供應鏈相關的加密項目,但它們非常小衆,僅限於特定市場的細分領域。它並沒有兌現這個方向上的承諾。
而且這不僅僅是供應鏈的問題,我覺得加密行業的想象力很豐富,但很難把這些想象轉化爲現實的行動和真正的市場應用,這確實讓人遺憾。我認爲主要原因不是技術問題,儘管技術確實落後於我們的構想,尤其是底層技術需要很大的改進。這也是爲什麼我現在在做 JAM,試圖改善底層技術,使其能支撐那些我認爲有價值的想法,並幫助加密行業發揮更大的作用。
但僅僅改進技術是不夠的。你還需要讓人們理解它的價值所在。而這很難,部分原因是你在與注意力經濟作鬥爭。
爲什麼離開以太坊?
Kevin:爲什麼你在 2016 年離開了以太坊?
Gavin:其實是在 2015 年底。當時我們決定以太坊需要做很多事情才能被更廣泛地普及。我們在尋找外部投資,而最明顯的方式之一就是創立一個與以太坊相關的初創公司,併爲其尋求外部資金支持。這最初是 Vitalik 和 Jeff(核心開發者和工程師)共同決定去做的。
後來,Jeff 並不太適應初創公司的生活。實際上,他很快就離開了以太坊,轉而去追求他的電子遊戲事業。這樣一來,最終就只剩下 Vitalik。Vitalik 認爲他有必要繼續留在以太坊基金會,並擔任更偏學術的角色,同時作爲我們當時創立的分支公司 Ethcore 的顧問。
我們當時籌集了一些資金,把以太坊基金會大約一半的技術團隊帶到了 Ethcore,並開發了一個以太坊客戶端。我在 2015 年底離開以太坊基金會,實際上是爲了創立這個分支公司,目的是在以太坊生態內增加一個有私人資金支持的實體。
不過,我真正完全離開以太坊生態是 2017 年末,當時我創立了 Polkadot。
Polkadot 正在開發一種 Rollup 技術
Kevin:如果要向你媽媽解釋 Polkadot 是什麼?你會怎麼說?
Gavin:嗯... Polkadot 這些年來發生了一些變化。最初的願景是將不同的區塊鏈架構整合在一起,讓它們能夠互相兼容,並共享同一個安全框架。通過這樣的共享安全框架,可以顯著提高經濟效益。例如,如果設計得當,可以用相同的成本同時保護 100 條鏈,而不是像其他設計(比如 Cosmos)那樣每條鏈都需要獨立保護。
多年來,Polkadot 一直試圖在這個方面與 Cosmos 區分開。因爲在 Cosmos 的模式中,每條鏈都需要自己承擔安全性。而 Polkadot 則通過共享安全來解決這個問題。但遺憾的是,這兩者實際上在解決非常不同的問題。回想起來,我可能會更傾向於將 Polkadot 描述爲一個“分片系統”,而不是“多鏈系統”。回過頭來看,這種表述在解釋和傳達 Polkadot 的核心理念時非常關鍵。特別是在與他人溝通或推廣 Polkadot 時,這種區別有助於更清晰地描述它的技術特性和與其他項目(如 Cosmos)的不同之處。
現在,隨着 JAM 的引入,這個方向發生了一些變化。我們爲 Polkadot 開發的技術可以被視爲一種 Rollup 技術,而 Polkadot 本身可以被認爲是一個專門設計的 Rollup 託管鏈。這種技術的開發和設計並不簡單,所以也不意外我們會看到其他兩種競爭技術在效果上遠遠不及我們爲 Polkadot 開發的技術。具體來說,是樂觀 Rollup( Optimistic Rollups )和零知識 Rollup( ZK Rollups ),這兩種技術都已在以太坊上使用。因此,我們可以將 Polkadot 描述爲一種原生的 Rollup 託管鏈 —— 當然,這種說法可能不適合向媽媽解釋,但對於對加密領域有所瞭解的人來說是可以的。
通過 JAM,也就是 Polkadot 的下一步發展目標,我們試圖將 Polkadot 從一種多鏈模型轉變爲一種更通用的計算資源模型。在多鏈模型中,Polkadot 的不同鏈(在 Polkadot 體系中被稱爲平行鏈)共享同一個安全框架,能夠相互交互。而在新的模型中,我們的目標是進一步擴大 Polkadot 的適用範圍,就像以太坊將比特幣的基礎功能擴展成了一個通用計算資源一樣。我們希望移除過多的主觀設計限制,讓 Polkadot 支持更廣泛的用例。
那麼 Polkadot 的未來是什麼?從根本上來說,它將成爲一個大型的共享計算機,始終以你期望的方式運行。在這個共享計算機上,你可以上傳程序運行,這些程序可以是解決特定問題的服務。由於這是一個共享計算機,這些服務能夠相互協作和協調。
關鍵在於,這是一臺單一的大型共享計算機。我們不想做的是將其分割成不同的部分,而這些部分卻無法真正互相交互。
Polkadot 至今最大的成就是其最大的問題
Kevin:我想你可能指的是我們都知道的一個事實,而這在今天的以太坊生態系統中實際上引發了很多困惑。那麼,Polkadot 到目前爲止最大的成就是什麼?
Gavin:實現了一個安全的分片區塊鏈。
Kevin:Polkadot 今天面臨的最大問題是什麼?
Gavin:它是分片的。
Kevin:這具體是什麼意思?
Gavin:分片一直被認爲是區塊鏈擴展的“聖盃”,它的概念來源於數據庫設計。在數據庫中,你可以將一個數據庫(本質上是一組記錄)拆分成多個分片。每個分片獨立運行,只有在一些非常明確的接口情況下,分片之間才能進行交互,例如某個記錄可能會從一個分片移動到另一個分片。
一個簡單的物理例子可以幫助理解。想象一下上世紀 60 年代的辦公室,比如醫生的診所,裏面有病人的醫療記錄。這些記錄通常存放在舊式的抽屜中。如果記錄只有 20 個人的,可能一個抽屜就可以裝下,並且很容易按字母順序整理。但如果記錄超過一個抽屜的容量,比如有更多的人,你就需要將記錄分散到多個抽屜中。如果抽屜數量繼續增加,比如需要四個或五個抽屜,那麼你還需要多個文件櫃。
每個文件櫃的抽屜可以被視爲一個分片。它們彼此獨立運行:你可以打開一個抽屜而不用打開其他抽屜,也可以在一個抽屜中搜索,而不必查看所有抽屜。這與只有一個特別長的抽屜(比如 10 米長的抽屜)形成對比。如果只有一個長抽屜,那麼使用起來顯然不太實際,因爲你需要一個 10 米長的房間來容納它。而當你要找某個名字開頭是 “W” 的人時,你可能得把整個抽屜拉出來,然後沿着抽屜一路走到 “W” 的位置,這顯然效率低下。
因此,從這個角度來看,分片的設計是合理的。然而,這也帶來了問題。比如,如果某個抽屜裝滿了怎麼辦?你可能需要重新調整記錄的分配,比如將原本屬於 A 到 E 的記錄改爲 A 到 D,然後把以 E 開頭的記錄移到下面的抽屜。但這可能導致下一個抽屜也裝不下,於是你還需要調整,而每次調整還要更改抽屜外面的標籤。這整個過程會變得複雜而麻煩。
所以,分片也帶來了它自身的一系列問題。
核心在於,這些“抽屜”(分片)是獨立運行的,無論是在分片區塊鏈設計還是數據庫設計中都是如此。本質上,數據被拆分後會一直保持分片狀態,除非你執行一個非常特殊的操作,這通常非常耗時、昂貴且資源密集,才能將記錄或數據從一個抽屜(分片)移動到另一個抽屜(分片)。這意味着在單個抽屜中重新組織記錄可能很容易,但在不同抽屜之間重新組織記錄則非常困難。這正是分片的問題所在。對於數據來說,這個問題可能不算嚴重,這也是爲什麼分片在數據庫設計中被廣泛採用。但對於服務來說,比如需要頻繁交互和變化的智能合約,這種方式並不理想。如果智能合約被視爲放在抽屜裏的對象,而你希望讓一個抽屜裏的智能合約與另一個抽屜裏的智能合約交互,就需要同時打開兩個抽屜。這意味着,你需要將兩個抽屜拉出來,讓它們彼此連接在一起,執行所有智能合約需要的交互操作,然後再將它們分開,重新放回各自的抽屜。這種過程複雜且低效,非常不適合需要頻繁交互的應用場景。
如果你只是在兩個抽屜之間操作,已經夠難了,但如果你想讓多個抽屜同時交互,那就會變得非常複雜、非常困難。這樣做的一個問題是,你阻止了抽屜之間的自由互動,這意味着抽屜裏的其他智能合約只能遵循這個單一的交互模式。整個系統很快就會變得複雜、困難且低效。
另一種做法是讓抽屜之間通過發送消息來通信。一個抽屜(分片)可以發佈一條消息,稍後這條消息會傳遞到另一個抽屜。這正是 Polkadot 使用 XCM(跨共識消息傳遞)所做的事情。雖然這種方式可以用,但問題在於,它無法實現那種緊密、高效、靈活的交互,遠不如所有東西都在同一個空間或“遊樂場”中運行時那麼流暢。
舉個例子,假設一個學校有四個不同的遊樂場,這對應於四個不同的區塊鏈。如果你在其中一個遊樂場玩“捉迷藏”遊戲,那完全沒問題,遊戲可以順利進行。但如果你要跨兩個遊樂場玩“捉迷藏”,就會變得非常困難。你需要向另一個遊樂場發送一條消息,比如“現在我是捉的人,如果你進入這個區域,我會抓住你。”而另一個遊樂場的玩家需要知道,但又不能完全理解,整個遊戲很快就會變得混亂。
所以,捉迷藏是一個只能在同一個遊樂場玩的遊戲。這正是分片之間的問題所在,跨分片的交互就像試圖跨遊樂場玩遊戲,難以高效進行。
如果某些解決方案必須以非常異步的方式運行,那讓它們正常工作就會變得非常困難。就像只能通過消息來進行遊戲一樣。如果是像國際象棋這樣的遊戲,也許不會太難;但如果是像捉迷藏這樣的遊戲,那基本上是不可能的。
在智能合約中也是類似的情況。有些智能合約在這種模式下運行並不算太難,也許只是比正常速度稍慢一些,但問題不大。而有些應用場景,比如身份驗證( KYC )就相對簡單。比如你可能有一條鏈專門負責身份驗證,另一條鏈處理轉賬。轉賬鏈可能需要確認目標地址是否通過了 KYC 和 AML 驗證,然後纔會執行轉賬。它可以發送一條消息過去,詢問“這個地址是否通過了 KYC 和 AML 驗證?”身份驗證鏈回覆“是的”,然後轉賬鏈執行轉賬。整個過程可能多花幾秒鐘,但問題不大。
然而,還有一些其他的用例,比如去中心化交易所( DEX ),就複雜得多。比如你需要詢問當前的價格,然後決定是否交易。這時你可能需要發送一條消息到另一條鏈,另一條鏈回覆說“當前價格是這個,交易可以這樣完成。”然後消息再返回原鏈,原鏈確認“我接受這個價格,請執行交易。”但在交易即將執行時,另一條鏈可能又說“價格變了,現在是這個價格。”消息就會來回傳遞,很快整個過程會變得非常低效,甚至無法有效完成。
所以,像這種情況,交易必須幾乎同時完成,否則就無法進行。這種現象和在遊樂場玩的遊戲是一樣的。某些遊戲,比如捉迷藏,只能在同一個空間內完成,異步交互會讓遊戲完全無法進行。
解決方案是 JAM
Kevin:有什麼可行的解決方案?
Gavin:嗯,JAM 是我的提案,即 Join Accumulate Machine(聚合連接機器)。
Kevin:JAM 是什麼?
Gavin:JAM 是一種靈活的方式,它可以將不同的“遊樂場”的玩家聚集起來,創建一種臨時的遊樂場,讓他們可以玩捉迷藏的遊戲。以下是一個即興舉的例子(可能有點瘋狂,抱歉)。繼續用捉迷藏的例子來說:假設原本有四個固定的遊樂場,在 JAM 的設計中,不再有這樣的固定遊樂場了。
遊樂場不再是固定的,玩家也不再被束縛在某一個遊樂場中,且在不同遊樂場之間移動的成本也不會那麼高。取而代之的是,我們擁有一個寬廣的遊玩區域,其中的遊樂場可以快速地形成和消失。在這種情況下,我們會關注遊戲中的玩家,將靠近彼此、可能互相“抓到”的玩家暫時聚集在一起,爲他們創建一個臨時的遊樂場,在這裏他們可以繼續玩捉迷藏。
當這些玩家中的一部分跑出了這個臨時的遊樂場,我們就會重新調整遊樂場的位置,根據那些依然接近彼此的玩家重新劃定新的遊樂場範圍。如果有些玩家彼此距離很遠,我們知道他們短時間內不會相互“抓到”,那麼他們就不需要參與到這個遊樂場中。他們暫時處於“遊戲之外”的狀態,直到他們重新接近其他玩家並需要參與遊戲時,纔會被包含進新的遊樂場中。
如果我們以這種更加靈活的方式來實現系統,就可以想象一個既能擴展又能支持同步組合的系統。它的核心在於,不會永久性地將所謂的“狀態”( state )分割開。換句話說,玩家不會被固定綁定在某個特定的遊樂場中,而是根據需要實時動態分組。系統會根據實際需要將玩家劃分到不同的組中,並根據這些分組推進遊戲。
在智能合約的場景中,這個概念的實現類似於將所有智能合約放在一個共享的大“熔爐”中,但這個熔爐不是讓所有合約無時無刻地互相交互,而是能夠動態分區。例如,系統可以從這個熔爐中抽取 10 個、50 個或者 2 個智能合約,把它們組合在一起,讓它們同步交互並運行,之後再將它們分離開。然後重新評估,挑選另一個不同的智能合約集合,再次組合運行,然後再分離。
這種方式允許我們在同一時間處理多個並行的智能合約分組,而不是隻能讓一個智能合約組進行同步組合和運行。通過這種並行處理的方法,我們可以顯著增加系統的交互處理能力,支持比傳統方式多出數百倍的交互量,從而實現真正的可擴展性。