Cartesi(CTSI)去中心化應用的通用作業系統

買賣虛擬貨幣
Cartesi是用於開發和部署可擴充套件DApps(分散式應用)的第2層平臺(“位於底層鏈和DApp之間,透過高效能的鏈下計算,將Layer 1從執行合約和計算的海量工作中解放出來,專心處理token流轉和計算結果儲存,從而提升整體可擴充套件性“)。 Cartesi DApps由鏈上及鏈下兩部分模組組成。鏈下模組在Cartesi節點內執行,代表了每個DApp使用者的權益。 Cartesi節點為DApp開發者提供可重現的Cartesi Machine,可以執行大規模可信計算。這些可信計算很容易透過強大的原語整合到智慧合約中,這些原語提供了更大的靈活度和複雜邏輯處理能力。更準確地說,任何因Cartesi Machine內部計算產生有爭議性的結果,均可在區塊鏈上以相當低的成本進行仲裁(“Gas費用獎善罰惡”)。Cartesi節點還允許DApp開發者執行原生代碼。本地計算更可利用節點的全部處理能力,其中包括任何可用的顯示卡算力。無論是由節點本地執行還是在Cartesi Machines系統內執行,鏈下模組均會在完整的“Linux”作業系統下執行(“該作業系統提供複雜計算所需的完整生態系統”)。Cartesi使DApp開發者能夠使用他們已經熟悉的所有程式語言,工具,庫,軟體和服務。透過將其DApps的大多數複雜邏輯移動到便捷的鏈下模組,開發者可以擺脫區塊鏈所固有的限制和特性。 透過這種方式,Cartesi允許開發者能夠選擇最佳的執行例項環境來託管其DApp的每個部分。簡介公共區塊鏈是網路可以透過其在共享狀態下維持分散共識的機制。 通常,除了其他資料之外,該狀態還包含支付系統。在由此產生的經濟中,參與者所持有的股份是他們的動機,使國家廣泛地向其他國家開放,並拒絕無效的交易。在這種良性迴圈中,支付系統建立在分散的共識之上,而分散共識的作用只取決於支付系統本身所創造的激勵機制。然後,支付系統和共識都可以用於其他目的。隨著區塊鏈技術的新應用的設想,對底層基礎設施的需求不斷增加。目前,廣泛採用區塊鏈技術的兩大障礙是其可擴充套件性差,缺乏穩固的開發環境。 Cartesi對區塊鏈生態系統的主要貢獻是克服這兩個問題。可擴充套件性 目前部署的共識機制基於完全冗餘[Nakamoto 2009; Wood 2018]。 它們要求每個交易都永久儲存,並由每個參與者進行驗證。這種低效率是交易率增長,涉及的資料量以及交易內計算強度的關鍵限制因素。 高交易成本和增加的延遲已成為許多創新應用的障礙,否則這些應用將受益於智慧合約為區塊鏈帶來的靈活性。嘗試提高區塊鏈可擴充套件性可分為第1層和第2層解決方案。第1層可擴充套件性解決方案改變了底層的區塊鏈基礎設施本身。 示例包括區塊大小,分片和委託證明(DPoS)的最佳化。 因為它們在基礎設施層面執行,所以這些解決方案受到保持全球共識的要求的負擔。國家的某些方面,例如支付系統,對所有各方都至關重要,因此需要全球共識。否則,對於區塊鏈調解的大多數互動,將訪問和驗證責任限制在可能受影響的少數方面是完全安全的。然後,區塊鏈可用於提供最終結果,並在極少數情況下保證當地達成共識。 換句話說,全球共識是一種寶貴的資源,應該節儉的加以利用。 認識到這一事實,諸如等離子,側鏈,TrueBit或狀態通道的第2層可擴充套件性解決方案儘可能多地移動資料和計算。 在第2節中深入討論了第1層和第2層可擴充套件性解決方案。
計算環境 無論在鏈上或是在鏈下,每當出現影響交易結果的計算執行時,都必須由所有參與驗證的角色進行驗證。可重現計算模型必須是自包含的和確定的,換句話說,必須完全規定並商定計算的完整狀態和對該狀態的整個順序進行修改。但可悲的是,現存真正的計算體系結構並沒有考慮到這些條件,因此不可重現。區塊鏈平臺透過在處理智慧合約時使用自定義虛擬機器(VMs)來解決此問題,這些VM是可重現的,但只存在於一些特定情況下。一方面,它們為對智慧合約有用的功能,提供了本地支援(例如,交流計數,回滾,關聯儲存器,認證,密碼等)。另一方面,它們缺乏通用體系結構中的有價值的特性(例如,浮點運算,虛擬記憶體,中斷等)。在過去幾十年裡,全球軟體行業的變革,可歸結於兩個關鍵因素。 首先是現代硬體平臺處理大量資料的速度呈指數級增長。第二個同樣重要的是軟體開發環境不斷增強的表現力。 實際上,通用計算並非計算孤島。 相反,它更依賴於全球軟體開發者的通力協作,參與共建模組相互間的組合。這些模組和服務依賴於底層作業系統(記憶體管理,程序管理,檔案系統,網路等)託管的標準庫工具。它可理解為一個“將所有內容聯絡在一起的作業系統”。這些設施不能透過典型區塊鏈為智慧合約開發者提供的獨立程式語言和編譯器提供。可重現性和可擴充套件性問題使得鏈上計算環境非常嚴格,所以,為了提高效率並擴大區塊鏈開發的範圍,我們需要一個支援現代作業系統的可重現計算模型。本文介紹了Cartesi用於開發和部署可擴充套件DApps(分散式應用)的第2層平臺。 Cartesi DApps是一種混合模式,包括鏈上和鏈下兩個部分。鏈下模組在Cartesi節點網路(第6節)中執行,每個節點代表DApp使用者的權益。鏈下部分可再細分為兩個模組。 本地計算直接在主機硬體中執行。儘管本地計算可以訪問節點的全部處理能力(包括GPU),但計算不可重現,至少不是pri-ori。可重現計算執行在Cartesi Machine中,受Cartesi 節點控制。這是一種完整的,執行在確定性的RISC-V平臺上的自包含的Linux系統(self-contained deterministic linux system),節點透過一些確定的主機介面和Cartesi Machine進行互動。在區塊鏈中,Cartesi DAppDApp開發者可以指定鏈下計算採用可重現方式,Cartesi 節點會自動根據所指定方式執行鏈下計算。DApp開發者可以請求節點提交結果,驗證交易和辯論其他節點提交的結果。從鏈的角度來說,處理有爭議的計算只需佔用微不足道的資源。 當爭議發生,爭議處理成本只是儲存和時間的對數複雜度,即O(logN),離線部分的Cartesi 節點計算複雜度,也只是線性開銷O(n),且常數不超過2。把計算移到鏈下會獲得除了伸縮性之外的另外的好處。 Cartesi Machine讓開發者使用其所熟練的開發語言,工具,庫,軟體和服務變得可能了。此外,由於Cartesi就其本質來說,計算的組織形式和底層區塊鏈型別並無關連,那麼透過把現有的複雜的合約邏輯隔離到鏈下進行可重現計算,開發者甚至可以使其DApp能夠做到跨鏈互動。
本檔案的重點是Cartesi的核心。 它包括Cartesi的完整規範,用於控制它的主機介面,用於指定複雜的鏈下計算的區塊連結口,以及用於執行和驗證這些計算的Cartesi 節點介面。在此核心功能之上構建的高階工具,介面和各種用例將在之後的文件[Teixeira和Nehab 2019a]中描述。Cartesi SDK [Teixeira和Nehab 2019b]將提供關於所有介面的詳細文件,以及Cartesi節點和Cartesi的開發環境。Cartesi Machine規格Cartesi Machine是一個獨立的,確定性的計算模型,可以託管現代作業系統。發生在作業系統內部有充分的理由的真實世界的計算。 開發者接受過使用工具鏈的培訓,這些工具鏈可以在任何給定的工作中以儘可能高的抽象級別執行。 這些工具鏈將它們與不相關的硬體細節隔離開來,甚至與給定作業系統的細節隔離開來。 因此,發明一種特殊的新架構需要移植工具鏈和作業系統。 相反,Cartesi Machines基於經過驗證的架構,其標準工具鏈和作業系統已經是可用的。

另一方面,Cartesi Machines執行的鏈下計算必須透過區塊鏈進行驗證。 因此,區塊鏈必須承載整個架構的參考和實施。 如果它永遠值得信任,那麼這種實施必須易於審計。為此,架構和實施都必須是開放的並且相對簡單。 這些要求共同指向RISC-V。 RISC-VISA基於最小的32位整數指令集,可以新增幾個擴充套件[Waterman和Asanovic'2017a]。 正交地,運算元和地址空間寬度可以擴充套件到64位(甚至128位)。 此外,該標準還定義了一種特權架構[Waterman和Asanovic'2017b],它具有現代作業系統常用的功能,例如基於分頁的多個許可權級別。

虛擬記憶體,定時器,中斷,異常和陷阱等。自由選擇更適合其需求的擴充套件組合得以實現。

RISC-VRISC-V於2010年始於加州大學伯克利分校,並於2015年成立基金會。包括谷歌,三星和特斯拉在內的大型企業最近也開始使用該項技術[Tilley 2018]。 該平臺由高活躍度的社羣開發者提供支援,他們耗費大量精力搭建了軟體的基礎底層,最著名的是Linux作業系統的埠和GNU工具鏈[RISC-V 2018d]。但關鍵的是,RISC-V並不是耍花槍的技術架構。它已在本地硬體之上執行,而且SiFive公司目前已將其商業化。這意味著,未來Cartesi將不僅限於模擬或二進位制鏈下翻譯。

Cartesi Machine可以分為處理器和“主機板B”,處理器執行計算,執行傳統的獲取 - 執行迴圈同時,保留了各種暫存器。該“主機板B”透過各種儲存器(ROM,RAM,快閃記憶體)和裝置定義周圍環境。 為了使驗證成為可能,Cartesi Machines以明確定義的方式將其整個狀態對映到實體記憶體。這包括處理器,主機板和所有連線裝置的內部狀態。幸運的是,此修改不會以任何重要方式限制作業系統或其承載的應用程式。

1. 處理器

遵循RISC-V術語,Cartesi Machines實施RV64IMASU ISA。 RV之後的字母指定擴充套件集。 此選擇對應於64位計算機,具有乘法和除法的整數算術,原子操作以及可選的Supervisor和使用者許可權級別。 此外,Cartesi Machines支援Sv48地址轉換和記憶體模式。


圖1:iflags暫存器提供當前許可權級別,並指定機器是暫時空閒等待中斷還是已永久停止。

保護。 Sv48提供48位受保護的虛擬地址空間,分為4KiB頁面,由四級頁表組成。 這組功能在區塊鏈實施所要求的簡單性和鏈下計算所期望的靈活性之間創造了平衡的折衷。

總共有99條指令,其中28條指令分別縮小或加寬,分別為64位或32位指令。 表1分解了每個擴充套件的指令計數。 這是一個RISC ISA,大多數指令非常簡單,可以在幾行高階程式碼中進行模擬。實際上,唯一複雜的操作是虛擬到實體地址轉換。由於格式數量減少(僅為4,佔用32位),指令解碼變得特別簡單。

整個處理器狀態適合512位元組,分為n至64個暫存器,每個暫存器保持64位。這些暫存器中的大多數由RISC-V ISA定義,由32個通用nteger暫存器和26個控制和狀態暫存器組成。 剩下的是Cartesi特有的。 處理器透過將各個暫存器對映到物理儲存器中的最低512位元組,使其整個狀態可用,外部和只讀。 相鄰的1.5KiB保留供將來使用。整個對映在表2中給出。

名稱以i開頭的暫存器是特定於Cartesi的,並具有以下語義。 暫存器iflags的佈局如圖1所示.PRV給出當前的許可權級別,當處理器空閒時(即,等待中斷),I設定為1,H設定為1,表示處理器已永久存在暫停。 暫存器ilrsc儲存LR / SC原子儲存器操作的保留地址預設初始化使用以下值填充狀態:

•iflags中的PRV設定為3(對於機器許可權級別);
•misa設定為RV64IMASU;
•mstatus中的SXL和UXL設定為2(64位);
•pc從0x1000開始(指向ROM);
•marchid設定為ASCII格式的cartesi␣。

mvendorid用於測試匹配的鏈上和鏈外實施。 每次更新匹配對時,mimplid都會遞增。剩餘的預設狀態設定為零。

2. 主機板

主機板和處理器之間的互動透過對映到處理器實體地址空間的裝置進行。 表3顯示了這種對映。 從地址0x1000開始有64KiB的ROM,執行開始。 這個ROM的核心作用是持有描述系統硬體的裝置[DTSpec 2017]。 此外,ROM-base的載入程式將x10暫存器設定為0(mhartid的值),x11指向裝置,然後跳轉到RAM-base為0x80000000。 這是啟動映像的入口點所在的位置。 最後,可以為快閃記憶體裝置留出一些額外的實體記憶體範圍。 這些通常會預先載入檔案系統映像。

2 x86 ISA定義了至少2000條(可能很複雜的)指令


圖2:實體記憶體屬性。每個範圍的istart和ilength與4KiB邊界對齊。 每個64位字的12個LSB給出了該範圍的屬性。

兩個非記憶體裝置對映到地址空間。 核心本地中斷器(或CLINT)控制定時器中斷。有效地址分別為0x0200bff8和0x02004000,對映到暫存器mtime和mtimecmp。 只要mtime等於mtimecmp,CLINT就會發出硬體中斷。 為了確保可重複性,處理器的時鐘和定時器標介面(HTIF)調解與外部世界的通訊。其活動地址為0x40000000(tohost)和0x40000008(fromhost)。它在寫入tohost時停止機器,位63-48設定為0,位0設定為1.(位47-1可以設定為任意退出程式碼。)它也可以作為互動式部分的基本通訊埠。

實體記憶體對映由實體記憶體屬性記錄(PMA)描述。每個PMA由2個64位字組成。 第一個單詞給出一個範圍的開頭,第二個單詞給出它的長度。 由於範圍必須與4KiB頁邊界對齊,因此每個字的最低12位可用於屬性。 圖2顯示了每個屬性欄位的含義。 M,IO和E位是互斥的,分別將範圍標記為記憶體,I / O對映或排除。 R,W和X位分別授予讀,寫和執行許可權。 最後,IR和IW位分別將讀取和寫入的範圍標記為冪等。

該主機板支援總共32個PMA,並使它們以只讀方式可用,從實體記憶體中的偏移量2KiB開始。 另外2KiB留作將來使用。 PMA 0描述RAM,PMA 16-23描述快閃記憶體裝置0-7。 這些PMA在初始化期間是使用者可配置的,之後是隻讀的。 (RAM istart欄位被硬編碼為
0x80000000。)這些記錄一起限制了計算期間可訪問的最大儲存量。

3. 狀態轉換函式

機器計算的序列是s0 , s1 , . . . , sh,由過渡函式管理,使得

在這裡,s0是初始狀態,sh是停止狀態。 前面的部分詳細描述了Cartesi machine的狀態空間和過渡功能。

回想一下,此狀態由Cartesi machine的64位地址空間中每個字的值組成。 實際上,表示一個狀態需要的花費少於2 個位元組。 只有表3中描述的區域必須明確定義。 所有剩餘值都可以隱含地用零填充。

RISC-V ISA手冊[Waterman和and Asanovic'2017a,b]指定了與每個結構執行相對應的狀態轉換。 這意味著在執行的指令之間很好地定義了狀態。 由於所有指令都可以在O(1)時間內實現,因此Cartesi將每個狀態轉換定義為恰好1個週期。 可以從相應的序列中讀取序列中給定狀態的索引。

表3:Cartesi machine的實體記憶體佈局。

mcycle的價值。 (請注意,由於機器偶爾會空閒,因此minstret不會跟蹤mcycle。)唯一顯著的是Cartesi特定修改涉及停止機器。當iflags中的欄位H設定為1時,不允許進一步的狀態轉換。 當指示HTIF停止機器時,將顯式設定條件。

4. Linux埠

從頭開始設定Linux系統涉及到的各個步驟。與獨立系統不同,嵌入式系統通常不是自託管。相反,元件構建在單獨的主機系統中,在該系統上安裝了目標體系結構的交叉編譯工具鏈。 關鍵元件是GNU編譯器集合和GNU C庫。 此基礎結構可在RISC-V GNU工具鏈儲存庫[RISC-V 2018a]中找到。第一步是要建立這種基礎項設定。

然後可以使用工具鏈交叉編譯Linux核心。 核心原始碼可以在RISC-V Linux儲存庫[RISC V 2018b]中找到。核心以管理模式執行,位於在機器模式填充程式提供的Supervisor二進位制介面(SBI):Berkeley引導載入程式(BBL)。 BBL可以在RISC-V代理核心庫[RISC-V 2018e]中找到。由此產生的引導映像被預載入到RAM中。 SBI提供了一個簡單的介面,核心透過該介面與CLINT和HTIF協同工作。除了實現SBI之外,BBL還安裝了捕獲無效指令異常的陷阱。此機制可用於模擬浮點指令。 安裝陷阱後,BBL切換到管理員模式並將控制權交給核心入口點。

最後一步是建立根檔案系統。 此過程從主機系統中的根目錄開始,該目錄包含一些子目錄(sbin,lib,var等)和文字檔案(sbin / init,etc / fstab,etc / passwd等)。 許多常見的UNIX實用程式(ls,cd,rm等)的微小版本可以組合成單個二進位制檔案[Vlasenko2018]。 目標可執行檔案通常依賴於工具鏈(lib / libm.so,lib / ld.so和lib / libc.so)提供的共享庫。當然,必須將這些庫複製到根檔案系統。一旦根目錄準備繼續,就將其複製到實際的檔案系統映像中(例如,使用gene2fs)。

這些步驟可以自動化。Cartesi的SDK以便捷的Docker容器形式為開發者提供了預配置的主機環境。複雜的Linux系統可以在Sifive的Buildroot [Petazzoni 2018]的分支,或Yocto專案的RISC-V埠[RISC-V 2018c]的幫助下構建。容器中的環境使開發者能夠根據應用程式的需要自定義啟動映像和根檔案系統。成千上萬的軟體包可供安裝。


圖3:使用128MiB RAM和64MiB快閃記憶體裝置進行簡單設定的部分裝置,作為根檔案系統安裝。

在完成自己的初始化後,核心最終將控制權交給/ sbin / init。 在Cartesi DApps中,這通常是一個shell指令碼,它呼叫適當的命令序列來執行以形成所需的計算。核心在bootargs中的分隔符␣-after之後將所有引數作為命令列引數傳遞給/ sbin / init。這些引數可用於為要執行的計算定義附加引數。完成後,/ sbin / init使用HTIF透過可選的退出程式碼暫停機器。 這可以用作計算輸出的一部分。 任意複雜的輸入,引數和輸出都可以作為快閃記憶體裝置傳遞。

cartesi機器的非鏈實現有兩個目的,它們的主要作用是執行計算本身。第二個作用是支援解決有關計算結果的爭議。為了提供這些服務,cartesi機器的非鏈實現必須公開可程式設計介面。

區塊鏈中的Cartesi Machine

回想一下,Cartesi是一個開發分散應用程式的平臺。Cartesi DApps使不相互信任的各方能夠在區塊鏈中籤訂一份取決於鏈下計算結果的約束性合同。使用”Alice”和”Bob”這些角色代表這些派對很方便。請注意,”Alice”和”Bob”是角色,而不是人。它們甚至可能代表相互競爭的集體利益。實際上,這兩個角色都將由Cartesi節點自動播放,以捍衛控制節點執行的鏈下計算機的人的利益。因此,Cartesi DApps是在區塊鏈中執行的一組智慧合約與在”Alice”和”Bob”的節點上執行的鏈下軟體之間的協作。作為一般規則,同一DApp開發者負責智慧合約和DApp特定的鏈下軟體。查理將扮演DApp開發者的角色。”Alice”和”“Bob””信任查理,否則他們不會與他的DApp交往。然而,查理既不信任”Alice”也不信任”“Bob””。當然,”Alice”和”“Bob””也不相互信任。

Cartesi的角色是支援查理的工作。為此,Cartesi提供了各種原語,Charlie用它來調解”Alice”和”Bob”之間潛在的對抗性互動。一些原語不需要互動,可以在區塊鏈中從輸入中自主地進行評估。然而,有趣的原語是那些雖然完全由它們的輸入定義但只能在鏈外進行評估的原語。透過構造,當使用Cartesi DApp時,”Alice”和”Bob”總是同意這些原語的輸入。在不失一般性的情況下,”Bob”評估原始的離線鏈並提交結果。然後”Alice”有機會接受或拒絕”“Bob””的結果。查理的DApp可以使用無可爭議的結果來達到他選擇的目的。如果被拒絕,Cartesi將與”Alice”和”Bob”一起參與爭議解決協議,該協議以正當理由對仲裁方進行仲裁。這種判斷總是在幾次互動中完成,並且對區塊鏈的計算成本可以忽略不計。

Cartesi以對查理極為方便的方式自動化大部分過程。

這些原語中最重要的是Cartesi機器。智慧合約無法在區塊鏈中儲存Cartesi機器的狀態,更不用說執行隱含的計算了。畢竟,處理能力和儲存容量方面的成本都是令人望而卻步的。為了解決這些問題,Cartesi使用加密雜湊來簡潔地表示區塊鏈中的機器狀態。從區塊鏈的角度來看,計算只是一對與機器的初始和最終狀態相對應的雜湊。由這種雜湊所對應的儲存器的內容僅在鏈外已知。 Cartesi定義了各種附加原語,允許智慧契約方便地操縱與這些雜湊相對應的狀態的內容。

未來的工作

本文件的重點是核心功能,以及DApps用於直接指定,控制和驗證鏈外計算的介面。Cartesi平臺將提供在核心上構建的幾個附加元件,或擴充套件其範圍。這些將在未來的出版物[Teixeira和Nehab 2019a,b]中更詳細地描述。

資料可用性 Cartesi透過保持僅鏈上Merkel樹的離線資料雜湊來彌補區塊鏈的嚴重儲存限制。如第5.2節所述,Cartesi假定參與驗證角色的所有各方都可以訪問這些資料。在某些應用中,這很難保證。特別是,必須減輕資料扣留攻擊的風險,其中一方向區塊鏈提交雜湊值,同時拒絕向其他人提供此資料。

資料可用性問題是區塊鏈共識演算法設計中的一個主要問題[Buterin 2012]。但是,在地方共識的背景下,這個問題變得更加簡單。 Teixeira和Nehab [2019a]提供了幾種設計模式,用於在驗證期間處理資料可用性。資料通道,裝置加密和資料分類帳可確保Cartesi DApps可能遇到的所有情況下的可用性。

可用性 廣泛採用塊鏈技術的主要障礙之一是DApp使用者遇到的不便。儘管關於集中式應用程式可用性的文獻仍然適用於分散式應用程式,但從使用者體驗的角度來看,區塊鏈特性還沒有得到充分解決。 Teixeira和Nehab [2019a]描述了開發簡單直觀的DApps的幾種設計模式。

例如,Cartesi將為交易代幣提供自動化基礎設施。這將使使用者免於擔心每個DApp內使用的不同令牌。還將提供外包延期行動的系統。這將使使用者即使在參與需要在嚴格期限內與區塊鏈互動的協議時也可以關閉他們的機器。在這種情況下,代理方將代表使用者行事以換取費用。 (與第6.2節中描述的爭議委託市場非常相似。)使用加密時間鎖[Rivest等.1996年]還將適應使用者必須在未來揭示不應立即傳遞給代理方的秘密的情況。將描述其他可用性構造以促進檔案傳輸並降低Gas成本。這些設施將使Cartesi DApps的使用者體驗更接近當前的集中式解決方案。

Cartesi SDK 隨著Cartesi SDK的釋出,可以使用各種更高階別的API來封裝核心的典型用例。這些將包括上述可用性和資料可用性解決方案,以及Cartesi節點的容器和CartesiMachine的開發。隨著時間的推移,SDK中可用的API將大大減少DApps區塊鏈元件的大小和複雜性。相反,這將顯著增加DApps對多條區塊鏈的跨鏈可移植性。Cartesi SDK將在開源中分發並廣泛記錄[Teixeira和Nehab 2019b]。

Cartesi Machine的擴充套件 Cartesi Machine可以透過兩個令人興奮的新裝置進行擴充套件。

Dehashing裝置為應用程式提供了遍歷雜湊指標資料結構的能力。在Cartesi Machine內執行的程式可以使用Dehashing裝置來讀取僅給定其雜湊的區塊的內容。雖然這種操作一般是不可能的,但是當所有各方事先知道允許區塊的範圍時,它變得可能。最直接的應用是區塊鏈本身。當Cartesi Machine執行時,Dehashing裝置查詢預載入在主機中的雜湊表,查詢與雜湊匹配的區塊。如果出現爭議,任何一方都可以提出該區塊作為與所需雜湊匹配的證據。透過這種方式,dehashing裝置可以實現區塊鏈內省。締約方可以簽訂合同,這些合同取決於合同本身定義的區塊鏈的整個狀態。這就有很多有價值的應用,特別是在期貨市場。

另一個計劃的裝置是及時的資料埠。該埠透過將進入或離開機器的資料包與事件中的mcycle值繫結,實現Cartesi Machine之間的可重複通訊。 DApps可以安排在給定的未來mcycle發生資料包傳送。 Cartesi Machine也可以回滾到mcycle進行交付。及時的資料埠在向Web 3.0的發展方面開闢了新天地。它將啟用涉及多個Cartesi Machine之間直接協作的DApps。

群體爭議 可以設想涉及許多獨立參與者的應用程式,每個參與者在鏈外計算的結果中都有一些利益。 在這種情況下,至關重要的是要防止一群不誠實的參與者使用連續的爭議而不是誠實的結果作為對合同的拒絕服務攻擊。 我們開發了一種驗證遊戲的變體,使任何誠實的參與者能夠以可忽略的成本為整個人群辯護他的結果。 當需求變得明顯時,Cartesi平臺將擴充套件為支援這種變體。

結論

本文為Cartesi平臺奠定了理論基礎。 Cartesi的使命是幫助DApp開發者為他們的使用者構建更加有競爭力的產品。伴隨任意正規化的轉變,區塊鏈為實際創新和風險帶來了機遇“車輪改造”。秉持著“簡約而簡單”的開發原則,Cartesi的核心目的是要使開發者更容易的上手,更簡便的提升開發效率。未來的文件[Teixeira和Nehab 2019a]中描述的Cartesi平臺的剩餘元件將幫助開發者在利用區塊鏈的獨特潛力時釋放他們的創造力。

關於更多Cartesi資訊:https://cartesi.io/
更多區塊鏈專案介紹:http://www.qukuaiwang.com.cn/news/xiangmu
風險提示:區塊鏈投資具有極大的風險,專案披露可能不完整或有欺騙。請在嘗試投資前確定自己承受以上風險的能力。區塊網只做專案介紹,專案真假和價值並未做任何稽覈!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;