阿爾弗雷德·懷特黑德(Alfred Whitehead) 曾說過“文明的進步是通過擴大我們可以不加思索地執行的重要行動的數量”,對於各種技術也是如此。在軟件中,這表現為預先存在的庫、工具、操作系統、編譯器、解釋器和許多其他組件,我們可以在其中構建它們而無需考慮底層系統。現代軟件非常複雜,我們只能依靠這些預先存在的工具中包含的增持知識來構建它。
這一概念是Cartesi 的核心:實現無需考慮即可完成的重要操作的數量。當前的區塊鏈技術沒有這個特徵:執行智能合約的計算機是新穎的,但方式很糟糕。過去40 年開發和成熟的軟件都不能在它們上實際運行。沒有生態系統可言。因此,不可能為當前的區塊鏈開發複雜的軟件:所有抽像都必須從頭開始構建。
想像一下去電腦商店購買新電腦的假設場景。為你提供了一個剛剛發布的超快速程序,但它無法運行當今存在的任何東西:應用程序、庫、工具、操作系統、編譯器、解釋器,應有盡有。它只能運行自己風格的機器代碼。供應商可以通過說“啊,但是可以從頭開始為這台特定計算機開發新軟件”來試圖說服你。在許多方面,這就是在高級編譯器和操作系統出現之前開發軟件的方式。儘管有性能,這樣的計算機將毫無用處。我們已經超越了舊的軟件實踐是有原因的。如果沒有過去幾十年辛勤構建和迭代的任何抽象,頭腦正常的人甚至不會考慮購買這樣的計算機。
第1 層智能合約很像這台計算機,除了它們也超級慢。第2 層智能合約被呈現為一台更快的計算機,但在沒有解決缺乏成熟生態系統的情況下,它們的用處相當有限。
Cartesi 除了計算可擴展性之外,還通過將數十年增持的計算機科學知識帶入區塊鏈,擴展了人們無需思考即可完成的工作。
運行主流工具、庫、操作系統和編程語言還有另一個重要的後果:它降低了非區塊鏈開發人員的進入門檻。從這個意義上說,Cartesi 為開發人員提供了以更易於訪問的方式創建複雜DApp 的資源。我們相信,通過利用更多的開發人員在提供計算可擴展性和成熟生態系統的計算機上構建DApp,我們將釋放區塊鏈的真正潛力。
之前,我們已經編寫了Cartesi 如何通過我們的鏈上組件解決計算可擴展性問題。那裡詳述的想法對於理解本文至關重要。在這裡,我們將重點介紹鏈下組件,以及如何解決智能合約缺乏成熟生態系統的問題。我們將深入了解Cartesi 核心背後的推理,以及它如何在以太坊內運行Linux 及其所有工具鏈之類的東西。
Cartesi Machine 是我們設計和製造的計算機,用於擴展人們可以執行的操作數量,而無需考慮。為此,底層機器架構必須得到現代工具鏈的支持,並擁有廣泛的軟件基礎設施。實現還必須是透明的和可審計的,這要求架構是開源的並且相對簡單。考慮到所有這些特性,RISC-V 是我們機器的完美架構。
RISC-V項目誕生於加州大學伯克利分校,並迅速受到關注,現在得到了充滿活力的開發人員社區的支持。它與玩具架構相去甚遠:RISC-V 支持直接本地硬件實現,並且能夠運行各種軟件基礎架構,例如Linux 內核、GNU 工具鏈、GCC 和LLVM。
在我們的營銷活動中(以及在上面的段落中),我們經常提到運行Linux 的可能性。但是,RISC-V 不限於Linux:它與其他可能對區塊鏈應用程序感興趣的操作系統兼容。一個很酷的例子是seL4,這是一個開源的、以安全為中心的內核,具有端到端的實現正確性證明。
在RISC-V 上運行的其他重要軟件是各種編譯器和解釋器。這使得使用現代編程語言及其整個生態系統編寫軟件成為可能。程序員不必在Solidity 中重新發明輪子:他們只需使用Python 並導入NumPy。
RISC-V ISA 可以通過多種不同的方式實現。我們的技術論文詳細解釋了我們的設計決策和修改,更多技術讀者可以在此處找到。然而,有兩個主要特徵需要強調:機器是確定性的,它的整個狀態可以用一個散列來概括。
在這種情況下,確定性意味著計算的完整狀態和所有中間狀態更改是完全指定和可重現的。換句話說,向特定Cartesi 機器提供特定輸入將始終產生相同的輸出和狀態變化。
Cartesi 機器在鏈外運行。但要有用,其結果必須可在鏈上證明。這就是這兩個特徵變得重要的地方:目標是將這個複雜而強大的機器轉移到區塊鏈的有限環境中。
由於其確定性,一旦機器及其輸入達成一致,兩台誠實的機器將始終產生相同的結果。該系統由運行相同的利益相關方組成,之前在區塊鏈之外商定了Cartesi 機器,一旦完成,就會對區塊鏈執行其副作用。
似乎不誠實的對手可能會試圖通過聲稱對他們有利的不真實副作用來愚弄區塊鏈。然而,任何對計算感興趣的人都有能力快速注意到可疑行為,並使用區塊鏈來懲罰壞人並強制執行正確的結果。通過這種欺詐檢測機制,我們可以在區塊鏈之外運行Cartesi 機器,並在區塊鏈內部安全地使用其結果。這樣,程序員現在可以使用他們喜歡的編程語言編寫以前不可能的DApp。
區塊鏈如何做到這一點?我們開發了一個由許多智能合約組成的仲裁系統。它為用戶提供了運行交互式爭議(也稱為驗證遊戲)的能力,以導航整個鏈下計算並檢測發生欺詐行為的單個RISC-V 指令。然後在我們匹配的區塊鏈RISC-V 實現上運行該指令。是的,我們在Solidity 中編寫了完整的RISC-V 實現。如果你想了解如何使用這台機器,請查看Descartes v1 SDK 文檔。
用戶通過發送輸入與機器進行交互,如rollups on-chain 文章中詳細描述的那樣。這些機器是特定於DApp 的,負責處理輸入,為每個輸入執行DApp 的邏輯。在每次輸入時,機器都會喚醒,處理輸入——達到一個新狀態——然後回到睡眠狀態。
新狀態並不是處理輸入的唯一副作用。機器還可以為每個輸入創建輸出和消息。 DApp 使用這些來對第1 層施加影響。輸出是要執行的事務,消息是記錄的第2 層事件。
每隔一段時間,Rollups 鏈下機器就會向區塊鏈發布一個總結其當前狀態的哈希值,以及所有新的輸出和消息。如鍊上文章中所述,這發生在每個時代結束時。
該哈希受到上一節中解釋的類似爭議機制的影響。主要區別在於,檢查點現在總結了一系列事情——創造了額外仲裁步驟的必要性,以找出欺詐行為實際發生的位置。
總之,rollup 依賴於區塊鏈作為其真實來源和數據可用性,並依賴於Cartesi 機器進行計算:輸入的可信度由區塊鏈的共識保證,輸出的可信度由Cartesi 的欺詐檢測機制保證。因此,我們能夠利用Cartesi 機器的力量去信任地執行曾經不可能的DApp。
除了本文,我們還發布了匯總基礎設施重要部分的第一個版本的代碼:將鏈上代碼與上述匯總機器連接起來的部分。
Rollups 機器和智能合約生活在根本不同的環境中。這就需要一個中間件來管理和控制區塊鍊和機器之間的通信。
因此,中間件負責首先從我們的智能合約中讀取數據,然後將它們發送到機器進行處理,最後將它們的結果發布回區塊鏈。為此,我們的中間件使用了我們之前發布的State Fold 和Transaction Manager。
任何對匯總狀態感興趣的人都可以使用中間件。我們將感興趣的用戶分為兩個角色,它們運行不同類型的節點:讀者和驗證者。讀者節點只對推進他們的鏈下機器感興趣。他們使用來自區塊鏈的信息,但不會強制執行狀態更新,相信驗證器將確保所有鏈上狀態更新的有效性。另一方面,驗證者有更多的責任:他們不僅要觀察區塊鏈,還要努力確保區塊鏈不會接受沒有發生的事情。
可以在我們的Descartes v2 GitHub 頁面上找到智能合約和中間件。
descartes-v2,Cartesi匯總,下載descartes-v2的源碼_GitHub_幫酷
該存儲庫包含用於部署、啟動和與Cartesi 交互的鏈上和鏈下部分……
看看它們,我們很樂意提供你的反饋,我們一如既往地希望任何有興趣了解更多信息或使用我們的Rollups 進行構建的人加入我們的Discord 服務器上的團隊
編劇:加布里埃爾·庫蒂尼奧和費利佩·阿根托
Cartesi 是一個多鏈第2 層基礎設施,它允許任何軟件開發人員使用他們習慣的主流軟件工具和語言創建智能合約,同時實現大規模的可擴展性和低成本。 Cartesi 結合了開創性的虛擬機、樂觀匯總和側鏈,徹底改變了開發人員創建區塊鏈應用程序的方式。
資訊來源:由0x資訊編譯自BITBOYCRYPTO。版權歸作者Catoshi Nakamoto所有,未經許可,不得轉載