4 月 19 日,在杜拜 Token 2049 大會上,Gavin Wood 宣布了對下一代 Polkadot 技術的大膽願景。與 Polkadot 為市場帶來的其他突破性首創一樣,這個新願景將徹底改變 Web3 的未來。它將提供 Web3 所需的速度、規模、完全去中心化和易用性,以推動 Web3 乃至整個技術領域的深度創新。
這個願景的核心是 JAM,它是 Polkadot 鏈的新版本,它將推動 Polkadot 的功能超越當前 Web3 的界限,同時使在 Polkadot 上部署廣泛的技術成為可能。透過 JAM,目前只能透過 rollup 才能看到的突破性可擴展性被帶到了共識層。
在開發完成後,JAM 將成為一台分散式計算機,可以運行幾乎任何類型的任務,這些任務可以表示為服務。 JAM 將 Polkadot 推向同步可組合性的世界,這將有助於減少碎片化並整合活動,因此 Polkadot 上的應用程式能夠更好地利用整個生態系統的網路。這將為深度創新開啟新的可能性,並為開發者提供一個強大的環境,讓他們能夠以前所未有的方式進行創作。
JAM 目前正處於研究和開發階段。目前,Polkadot 社區有一項提案可供投票(公投 682 https://polkadot.polkassembly.io/referenda/682),以確認這一新方向並授權 Technical Fellowship 批准 JAM。
為了支持JAM 的發展,並確保它以真正的去中心化精神構建,Gavin 在演講中與Web3 基金會聯合宣佈設立JAM 獎金,總共1000萬DOT 將用於激勵JAM 的其他實現的開發。
在演講的同時,Gavin 也發布了一份技術灰皮書。如果你想深入了解該專案的願景和技術細節,可以在新的 JAM Graypaper 網站上找到論文:https://graypaper.com/。
Gavin 和 Polkadot 共同引領創新技術的創建,旨在實現創建自由開放網路的願景。 JAM 是不斷發展的 Polkadot 故事的下一章。
以下是 Polkadot Wiki 中對於 JAM 的最新介紹,由 Gavin Wood 撰寫。
JAM 的全名是 Join-Accumulate Machine,它是一種計劃取代現有中繼鏈的新設計。 JAM 的名稱源自 CoreJAM,表示 Collect Refine Join Accumulate,描述了機器所體現的計算模型,最初是由 Gavin Wood 在 RFC 中描述的。然而,在實際的鏈中,僅執行 Join 和 Accumulate,而 Collect 和 Refine 過程發生在鏈下。
與目前的迭代方法不同,JAM 將作為一個全面的單一升級引入。這樣做的幾個原因包括:
雖然這項轉變需要重大的突破性改變,但我們將努力將其影響力降至可管理的水平。將多個較小的突破性變化整合到單一的過渡中是更好的選擇,它引入了一個新的區塊鏈概念,整合了各種現有的想法。
JAM 將是一個特定領域的鏈,用於處理特定領域的問題。在這種情況下,就是 rollup,以太坊社群稱為 optimistic roll-up。 JAM 的 rollup 在安全性方面受到很大限制。這就是 Polkadot 在過去五年裡一直在做的事情,它已經是一個高度特定領域的 rollup 鏈。 JAM 本質上讓它帶有更少的預設偏好,變得更加通用。
JAM 鏈接受 rollup 的輸出,更普遍地說,是在其他地方完成的計算位,將輸出整合到共享狀態中,類似於 Polkadot 中繼鏈的功能。
JAM 鏈的任務是提供必要的設備,以確保輸出在轉換後正確反映輸入。
JAM 與智能合約鏈有幾個相似之處:
這些狀態的封裝稱為服務。因此,JAM 的狀態被劃分為服務。創建新服務是無需許可的,類似於在智能合約鏈上部署智能合約。因此,在 JAM 鏈中添加新服務不需要任何權威的批准或遵守治理機制,這與基於 Substrate 的鏈不同,後者要求添加新 pallet 需要治理批准。服務包括代碼、餘額和某些狀態組件,類似於智能合約鏈上常見的結構。
JAM 服務的程式碼分為三個不同的入口點:
工作包是服務的輸入。工作包可以包含許多工作項目。每個工作項都與一個服務相關聯,並且它反映了該服務的實際輸入。對於平行鏈服務,這是交易和所有區塊鏈輸入的輸入處。
JAM 的安全裝置包括兩階段處理,其中 Refine 函數接受工作項目作為輸入,並產生工作結果作為輸出,然後進入 Accumulate 函數(先 Refine,後 Accumulate)。工作項目被細化成工作結果,因此,包含許多工作項目的工作包被細化成工作報告,工作報告是多個工作項目對應的結果。可以分配一個工作包,在特定時間段(通常為 6 秒)內使用一個核心。
JAM 透過無交易(Transactionless)操作來區別於智慧合約鏈。 JAM 內沒有交易;所有動作都是無需許可的,並且最初會經歷 Refine 階段。在這個階段,服務預先細化輸入數據,將其轉換為包含工作結果的工作報告。隨後,這些工作結果被傳送到鏈上。
儘管沒有交易,JAM 仍然接受特定格式的外部資訊。有五種類型的外部資訊:
1. 保證(Guarantees)
#2. 保險(Assurances)
3. 判斷(Judgments)
4. 原像(Preimages)
5. 票據(Tickets)
前三種類型是JAM 鏈安全框架的一部分。 "Guarantees"(保證)和 "Assurances"(保險)涉及到驗證者集體證明某個工作結果在透過服務的 "Refine" 函數轉換後,準確反映了其對應工作項目的結果。
當工作結果的完整性受到質疑時,就會發生判斷,此時大量驗證者證明其有效性或缺乏有效性。在這種情況下,無效的工作項目可能已經整合到服務的狀態中,可能需要進行回溯。判斷必須在提交工作報告到鏈上的一小時內進行,期間區塊終結暫時暫停。
原來是 JAM 鏈為 Refine 函數提供的一個特性。雖然 Refine 函數通常是無狀態的,但它可以執行一個有狀態操作:尋找雜湊的原像。這個特性是 Refine 函數的唯一有預設偏好的面向。
票據作為匿名條目進入區塊生產機制。它們不是區塊生產的直接要求;相反,系統提前兩個時代(epoch)運作。這個機制是 SAFROL 演算法的一部分,是原始 SASSAFRAS 演算法的精煉版本。
在 JAM 中,Refine 處理階段可以在每個時間段接受高達 15 MB 的數據,每個時間段持續 6 秒。然而,Refine 產出的資料最大為 90 kB,由於可用性系統的分散特性,需要進行大量的資料壓縮。例如,在平行鏈的背景下,15 MB 的資料代表有效性證明(PoV),而 90 kB 的資料對應於候選收據。
Refine 可以使用高達 6 秒的 PVM Gas,相當於中繼鏈的完整區塊週期。這一延長的執行時間,與 PVF 目前的兩秒限制相比,是透過安全計量和其他最佳化來實現的。
Refine 也可以進行原像尋找。如果相信某個雜湊及其相關原像在 JAM 鏈上可用,可以透過提供雜湊來請求原像。這項能力使得程式碼的高效儲存和檢索成為可能,例如透過在 JAM 鏈上儲存平行鏈代碼並在工作包中引用其雜湊。
Refine 是主要的處理主力,處理大部分是無狀態操作的任務。
Accumulate 函式負責將 Refine 函式產生的輸出整合到鏈結狀態。 Accumulate 可以接受來自 Refine 的多個輸出,所有這些輸出都來自相同服務。 Refine 和 Accumulate 都作為來自特定服務程式碼區塊的入口點。
Accumulate 每個輸出的執行時間比 Refine 的時間短得多,通常最多只有 10 毫秒。然而,持續時間取決於工作包中工作項目的數量。如果工作包包含多個項,可用時間就會在它們之間指派。
與 Refine 不同,Accumulate 是有狀態的,它可以存取 JAM 鏈的狀態。它可以從任何服務讀取存儲,寫入其鍵入存儲,轉移資金,並在資金轉移時包括備忘錄。此外,Accumulate 可以建立新服務,升級其程式碼,並要求原像的可用性等等。
此外,Refine 可以呼叫 PVM 的子實例。這允許創建子實例或虛擬機,在其中可以部署程式碼和數據,自訂記憶體和堆疊配置,並在靈活的框架內執行計算。
JAM 系統中的 onTransfer 函數也是有狀態的,使其能夠修改服務的狀態。它具有檢查其他服務狀態並修改自身狀態的能力。這項功能促進了服務之間的通信,儘管是以非同步方式進行的。
與許多互動同步發生的智慧合約平台不同,在 JAM 中,封裝元件(例如本例中的智慧合約或服務)之間的互動是非同步發生的。訊息和代幣一起發送,並且在同一六秒執行週期內的某個時刻,接收服務會處理它們。沒有立即的返迴路徑;如果需要返迴路徑,則發送服務必須發起另一次傳輸或以接收服務稍後可以解釋的方式修改其狀態。
Accumulate 和 onTransfer 都被設計為可並行執行,允許不同服務的 Accumulate 和轉移同時發生。這種設計為未來的增強開啟了可能性,例如分配超過當前 10 毫秒的 gas 輸入。理論上,一個輔助核心可以用來執行某些 Accumulate,為它們提供更多的 gas 來利用。
如原始 Polkadot 白皮書中所述,Polkadot 主要針對特定的服務設定檔進行客製化:提供平行鏈。為了實現這項服務,Polkadot 開發了兩個重要的子元件:
與Polkadot 相比,JAM 的預設偏好更少,提供了更高程度的抽象和概括。這有助於根據個人喜好更輕鬆地利用底層組件。
JAM 以無需許可的方式運作,類似於智慧合約鏈,允許個人上傳和預期程式碼的執行。此外,它託管數據,啟用原像查找,並管理狀態,類似於鍵值對系統。由於 JAM 缺乏直接接受交易的機制,JAM 的創世區塊包含一項促進新服務創建的服務。
JAM 內的服務沒有對程式碼、資料或狀態的數量設定預先定義的限制。它們的能力由加密經濟因素決定;存放的 DOT 代幣越多,數據和狀態的容量就越大。例如,平行鏈服務在 JAM 上將所有 Polkadot 1.1 功能整合到一個服務中,其他服務也可以利用 Polkadot 的分散式可用性系統,以及計算的稽核和保證系統。
PVM 的設計基於 RISC-V 指令集架構(ISA),該架構以其簡單性和多功能性而聞名。 RISC-V ISA 提供了幾個優點:
1. 易於轉譯成常見的硬體格式,如 x86、x64 和 ARM。
2. 得到像 LLVM 等工具的良好支援。
PVM 本身體現了簡單性和安全性,具備沙盒化的能力並提供各種執行保證。它具有確定性、共識敏感且易於計量。與其他虛擬機器相比,PVM 缺乏複雜性和過度的預設偏好。
WASM 雖然針對 Web 用例進行了最佳化,但也為堆疊管理帶來了挑戰,特別是在處理連續性方面。 RISC-V 透過將堆疊放置在記憶體中來解決這個問題,從而自然地促進連續處理,而無需增加複雜性。
此外,PVM 在傳統硬體上運行時,尤其是在 X64 和 ARM 上,展示了卓越的執行速度,提供了免費計量等優勢,這與 WASM 相比具有優勢。
支援 RISC-V 的連續性將為跨 JAM 等多核心平台的可擴展編碼建立新標準。非同步並行架構對於硬體和軟體平台的可擴展性越來越重要,這一趨勢預計將擴展到區塊鏈和共識演算法。
SAFROLE 是一個區塊生產演算法,簡化了 SASSAFRAS。它排除了一些對平行鏈可能有用的組件。所以平行鏈可能會堅持使用 SASSAFRAS 來代替 SAFROLE。 SAFROLE 會盡可能簡單:
理解 Polkadot 1.0 的端對端運作方式很具挑戰性。有了 JAM,能夠閱讀和理解黃皮書的人應該能夠快速閱讀和理解 JAM 的工作方式。所以簡單性至關重要。
SAFROLE 是一個基於 SNARK 的區塊生產演算法。它使用 SNARK 是因為其匿名特性。並且它提供幾乎完全無分叉的恆定時間區塊生產。可能發生分叉的幾個實例基本上只有在出現網路分裂或有人故意惡意操作時才會發生。匿名的巨大價值不是為了保持驗證者身份的秘密;實際上,當他們產生一個區塊時,他們無論如何都會暴露自己的身份,這麼做其實是為了確保區塊生產機製本身的安全,基本上是為了避免垃圾交易攻擊。
JAM 的網路使用 QUIC 協定。這允許在大量驗證者之間直接建立點對點連線。因此,Polkadot 上的 1000 多個驗證者可以彼此保持持久連接,而不必擔心可能的套接字問題。由於 JAM 不處理交易,基本上不需要八卦(gossip)。在需要分發不是點對點或在非常小的驗證者子集中的情況下,將使用網格擴散,驗證者被排列成一個網格,包按行發送,然後每個節點將其發送到其列的所有成員。
在類似以太坊這樣的基於狀態的區塊鏈中,區塊的標題通常包含後狀態根,總結了所有區塊計算後的狀態。因此,直到所有計算完成之前,區塊頭不能發送。但是,可以在發送區塊頭之前執行一些計算,因為它們的結果決定了區塊的有效性。
然而,JAM 採用了不同的方法,將前狀態根放在區塊頭中,而不是後狀態根。這意味著標題中顯示的狀態根比一個區塊延遲。因此,可以執行大約佔區塊工作量或執行時間 5% 的輕量級計算,並可以立即分發區塊。其餘 95% 的區塊計算,主要是 Accumulate 任務,可以隨後完成。這使得在執行當前區塊之前可以開始下一個區塊。
這種方法允許更有效地利用區塊之間的時間。在傳統設定中,如 Polkadot 的六秒區塊時間,後狀態根必須提供,只能用部分時間進行計算。然而,透過 JAM 中的管線,可以有效地利用整個區塊時間進行計算,最大化效率。
雖然使用整個區塊時間進行計算可能不是理想的,因為它可能會導致永久追趕和延遲區塊導入,但與傳統設定相比,JAM 的方法可以顯著延長計算時間。這意味著可以實現大約三到三秒半的有效區塊計算時間,這比目前設定有了很大的改進。
JAM 和中繼鏈之間的一個架構上的差異在於功能的固定程度。雖然中繼鏈固定了一些元素,例如用於定義協定的語言(WASM),但 JAM 在這方面走得更遠。例如,它規定了用於編碼區塊標題和雜湊方案的類型,使得更改這些方面變得困難。
然而,JAM 透過其服務模型保留了與中繼鏈中的 WebAssembly 元協定所實現的靈活性相當的靈活性。在這個模型中,將可升級性責任轉移到服務上,使鏈本身免於承擔升級的負擔。支持這項決定的三個主要理由包括:
儘管存在這些差異,JAM 在應用程式層級功能上保持了靈活性,如核心時間銷售、質押和治理,所有這些都在服務內部管理。此外,JAM 透過將代幣餘額與服務關聯,引入了一個新概念,為在純粹可升級的鏈如中繼鏈中不容易實現的經濟模型調整提供了機會。
為了確保 JAM 符合其最初的期望,正在進行的一項工作包括為 JAM 鏈建立一個全面的測試環境。與在不可靠的硬體上運行小規模測試網路以管理雲端運算成本不同,這項舉措涉及大量投資。
這裡引入了 JAM Toaster,本質上是一個用於進行大規模試驗和性能評估的測試平台。這解決了先前在開發 Polkadot 中繼鏈期間遇到的挑戰,當時我們了解到在如此規模上運作網路的緊急效應和動態證明是困難的。先前的嘗試僅限於測試網路上的數十個節點以及 Kusama 網絡,由於無法存取驗證節點,Kusama 缺乏全面的監控能力。相較之下,小規模測試網路未能準確模擬大規模部署的網路動態。
JAM Toaster 旨在透過對整個 JAM 網路(包括 1023 個節點)進行深入研究來彌補這一差距。該平台有助於研究網路行為和效能特徵,為開發人員提供有關平行鏈預期效能的寶貴見解。
在 JAM 中,基準測試或效能測試可以是可選的。雖然在某些情況下仍可能需要基準測試,但 JAM 的計量系統通常可以避免頻繁的基準測試需求。 JAM 運行在一個計量系統上,讓使用者在完成後評估計算工作量。此外,還有一個理論機制可以在區塊建構時控制計算。
然而,在某些情況下,基準測試仍然是需要的。例如,當計量對於某些用例來說過於保守時,可能需要進行基準測試來提高效能。此外,基準測試對於需要延長執行時間的任務很有用,可確保它們不會運行過長。
接下來是跨鏈訊息傳遞 (XCMP),JAM 要求提供全面的 XCMP 支援。這是因為在中繼鏈中,如果所有平行鏈始終傳輸所有數據,則可以透過候選收據傳遞更多數據。 JAM 嚴格遵守規則,即使對於平行鏈服務也是如此,包括對 “Refine” 和 “Accumulate” 階段之間的資料傳輸的限制。目前,使用水平中繼鏈訊息傳遞 (HRMP),所有訊息都會遍歷中繼鏈,將資料有效負載限制為 4 kB 或更少,這可能不切實際。因此,XCMP 只通過鏈中繼訊息頭,而實際訊息資料在鏈下傳輸,這是必要且早該進行的改進。
Accords 本質上封裝了狀態和邏輯,類似於智慧合約,每個平行鏈都有多個實例。它們促進實例之間的訊息交換並實現與平行鏈的同步互動。協議在平行鏈之間缺乏信任的場景中有用,例如代幣轉移。與涉及儲備中介的現有方法不同,Accords 簡化了平行鏈之間的直接代幣傳送,消除了對信任妥協的中介的需求。此外,Accords 可以充當 XCM 轉發機制,即使透過第三方中介機構中繼也能確保訊息完整性,從而消除了對明確來源標記的需求。
最後,JAM 採用更廣泛、不太預設偏好的方法來利用底層共識機制,有助於實施更具創新性的解決方案。例如,對於像零知識證明這樣的複雜任務,分散式可用性變得更加實用和高效。此外,JAM 支援混合資源消耗模型,其中工作包可以包含運算密集型任務和資料密集型操作。透過將需要大量運算的服務與需要高資料可用性的服務配對,JAM 優化了驗證者資源的利用,從而降低成本。這種靈活的方法使得如分散式可用性和 SNARK 驗證與平行鏈工作負載的組合成本更低,同時提高效率。
以上是Gavin Wood官方宣布的下一代波卡科技願景「JAM」是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!