歡迎來到Honeypot,這是一個集optimistic、特定應用Rollup概念於一體的挑战。
從技術角度來說,這意味着Honeypot運行在專用Rollup基礎設施上,專爲單個去中心化應用設計。它不與其他DApp競爭區塊空間,並具有完全定制的自由。Honeypot之所以重要,是因爲它預示了Cartesi Rollups的主網就緒,表明整個基礎設施已准備好支持更多應用特定的Rollup的創建。Honeypot不僅僅是一個黑客挑战,它是爲新時代專業化區塊鏈應用鋪平道路的事件。在其富有趣味性的外表之下,Honeypot發揮了重要的作用:
它作爲一個激動人心的競技場,供黑客和开發人員展示技能並嘗試攻破系統。
它爲衡量可以存儲在這種新基礎設施下的資產的安全限制提供了財務基准。
它作爲一個开源的漏洞獵人活動,邀請更廣泛的Cartesi項目社區來測試、審查和完善潛在的代碼。
在本文中,我們將深入探討支持這個創新應用的重要細節,審視使其運轉的代碼,並剖析其基礎設施中涉及的信任假設。所以,准備好迎接這個honeypot的精彩旅程吧!
數據可用性、狀態根承諾和資產
當涉及舒適地與Rollup進行交互時,了解更細節的內容至關重要,包括數據可用性、狀態根承諾以及資產的位置和控制。爲了澄清,讓我們解答這些問題:
數據是如何存儲的,以及如何確保在最需要時可獲得?
資產位於何處,誰有能力控制它們?
狀態根承諾何時何地發布,它們指向哪個狀態?
請記住,在討論應用特定的Rollups時,使用相同Rollup基礎設施的應用可能對這些問題有不同的答案。例如,基於Cartesi的應用可能將其數據存儲在以太坊上,但將其狀態根承諾發布在Optimism上,或者他們可能確保數據在Syscoin上可用,同時將其資產保留在以太坊上。
但讓我們專注於Honeypot DApp,牢記這些配置是該特定應用的开發人員所做的決定。Honeypot DApp是一個真正的以太坊第二層應用。創建者選擇將以太坊作爲解決上述所有問題的方案。因此,來回答上述問題:
所有與Honeypot DApp交互的數據都源自標准的以太坊交易,發送到合約中,我們將在“基礎設施/SDK代碼”部分深入探討。雖然輸入以調用數據形式到達,但它們實際上以哈希形式存儲在區塊鏈上,從而允許在未來可能發生的糾紛中使用。
Honeypot控制下的所有資產都進入並保留在以太坊上,通過門戶的使用實現,我們也將在接下來的部分進行解釋。
至於狀態根承諾?你猜對了 - 它們也發布在以太坊上。Honeypot部署期間選擇的驗證器負責定期執行此操作。這些承諾或聲明由三個元素組成:
在考慮到所有需要考慮的輸入後,DApp機器的完整狀態。
一組憑證,允許在底層區塊鏈上執行調用(在本例中爲以太坊)。憑證的示例:向Uniswap池中添加流動性。
一組通知,這些通知是Honeypot DApp已經發出並可以在鏈上進行證明的陳述。通知的示例:最後一次分配後,對所有DApp的財務位置的摘要。
在Honeypot DApp的情境下,成功的黑客攻擊意味着欺騙DApp以創建能夠竊取資產的憑證,或執行DApp未創建的憑證。在接下來的部分中,我們將更深入地討論憑證、狀態承諾和其他相關主題。
驗證、可升級性和爭端解決
理解驗證的復雜性也是與Rollup進行交互的重要方面。可以將應用鏈(appchains)視爲最大化1-of-N信任假設效能的有效手段。基本上,這種信任假設表示依賴至少一個誠實的驗證者(可能是用戶自己)來確保DApp的正確執行,這是通過爭端解決協議實現的。
Cartesi Compute,之前稱爲Descartes,運行一個功能齊備的雙方仲裁系統。研究單位的成員最近發表的一篇學術論文詳細闡述了將這個仲裁系統轉變爲抗延遲攻擊的無權限(nxn)設置的概念。利用這一創新來打造一個可行的爭端解決機制,而不是將Compute系統定制爲在Rollup內運行,是一個由生態系統不同貢獻者共同解決的开放問題。
現在,考慮到Honeypot應用程序,啓動是在權限驗證者制度下啓動的,而爭端解決機制尚未建立。在這個設置中,一個單一地址擁有確定真相的獨佔權力。盡管任何人都可以操作Honeypot DApp並檢查驗證者的誠實性,但目前還沒有確立的方法來對抗潛在的不當行爲,除了表示異議。因此,目前參與遊戲需要對當局遵循協議並保持誠信放置信任。
至於可升級性,與共享EVM Rollups相比,這個方面對於特定於應用的Rollups來說問題較少。Cartesi Rollups軟件开發工具包(SDK)允許應用程序選擇誰擁有升級權利(甚至可以是應用程序本身)。在Honeypot的情況下,开發人員選擇了一種不可升級的方法,確保部署的版本保持不變。
基礎設施/SDK代碼
深入研究創建特定應用Rollup的細節可能首先似乎是一項令人望而卻步的任務,考慮到似乎需要爲每次啓動從零开始編寫所有代碼。然而,正如我們在本文中隱示的,這正是Cartesi Rollups SDK所要緩解的挑战。
使用Cartesi構建特定應用的Rollup涉及兩種類型的代碼:通用、可重用和共享的代碼;以及特定於應用的代碼。這種有效的平衡允許开發人員在定制其應用程序獨特方面的同時,獲得共享功能的好處。
在這一部分中,我們將努力概述關鍵組件並引用與我們早前討論的主題相關的代碼。雖然在這裏詳細介紹所有內容並非可行,但對於那些希望深入了解的人來說,可以在全面的文檔和README文件中找到豐富的信息。
共享基礎設施包括三個主要組件,它們相互交互:鏈上代碼、Cartesi節點和Cartesi機器。每個組件在Rollup應用程序的運行和效率中起着關鍵作用。隨着我們的深入探討,我們將揭示這些組件如何共同促進Honeypot DApp的無縫運行。
鏈上:
鏈上代碼充當了鏈下組件(如節點和Cartesi機器)與其他智能合約或外部擁有的账戶之間的關鍵中介。這個組件以模塊化的格式設計,每個模塊都有明確的職責和明確定義的接口。爲了全面理解,我們鼓勵您探索此存儲庫中的README和智能合約。
對於數據可用性:Input Box合約
與數據可用性密切相關的是Input Box合約。該模塊負責接收打算與DApps交互的用戶輸入。對於每個DApp,該模塊維護一個只能追加的哈希列表,該列表由輸入和相關元數據(如發送者的輸入和區塊時間戳)生成。用於重構哈希所需的所有數據都永久保存在鏈上,確保用戶可以同步鏈下機器與最新輸入,而無需依賴數據提供者。該模塊完全是無權限的,讓鏈下機器確定輸入的有效性。有關更多詳情,請考慮探索GitHub上或Sepolia Etherscan上的Input Box代碼。
對於狀態根承諾:共識接口和驗證者合約
了解狀態根承諾需要Consensus接口和驗證者合約。這個模塊的主要作用是在達成共識後向DApps提供有效的聲明。該模塊的接口意圖通用,以滿足不同共識模型的需要。聲明的編碼和存儲方式完全由接口抽象,而History合約負責實現。目前,Cartesi僅實現了稱爲Authority的共識類型,該類型由一個擁有完全權力的單一地址擁有。這是可能的最簡單實現,因此在功能方面非常有限。您可以在存儲庫或Sepolia測試網絡上驗證的代碼中找到它。
輸出驗證和CartesiDApp
輸出驗證庫和CartesiDApp代碼本身對於理解承諾的後果至關重要。在這裏找到錯誤可能會爲竊取蜜糖打开一條路徑。
憑證起着重要的作用,允許執行層中的DApps通過消息調用與基礎層中的合約進行交互。每個憑證由目標地址和有效負載組成。只有在DApp的共識提交包含它的聲明時,才能執行憑證。它們可以以任何順序執行,盡管DApp合約對執行的憑證內容不關心,但它會在允許執行之前執行合理性檢查。
資產管理:門戶
在涉及資產管理時,應該研究門戶。正如其名稱所示,門戶方便了將資產安全地從基礎層傳輸到執行層。資產通過門戶進行驗證,但實際上存儲在DApp合約中。DApp开發人員可以自由使用這些信息,可能在執行層爲每個用戶創建一個錢包,通過應用特定邏輯理解的輸入來管理資產,從而以更低的成本進行管理。
Honeypot部署信息
在部署honeypot應用程序、選擇驗證者地址以及定義是否可升級時,要查看的代碼是Cartesi DApp工廠。您可以在這裏找到詳細信息。
您可以在GitHub存儲庫中訪問所有代碼,並在Etherscan上驗證的合約中,您可以參考部署文件:
https://github.com/cartesi/honeypot/tree/main/deployments/mainnet
https://etherscan.io/address/0x0974CC873dF893B302f6be7ecf4F9D4b1A15C366
Cartesi節點:
在應用特定滾動的世界中導航需要在智能合約和Cartesi機器的不同環境之間建立一座橋梁。這個橋梁以中間件的形式出現,巧妙地處理這些環境之間的信息流。該中間件負責從智能合約中提取數據,傳遞給機器進行處理,最終將處理結果廣播回區塊鏈。
將該中間件視爲兩方使用不同語言進行對話的口譯員。它將一方的輸出轉換爲另一方能理解的格式,反之亦然。這個中間件與Cartesi機器一起構成了我們所稱的Cartesi節點的基礎。
無論您對滾動的狀態感興趣,還是您正在積極參與該領域,Cartesi節點的作用都不可或缺,類似於在以太坊生態系統中的Geth。它融合了執行和數據檢索功能。Cartesi節點推進了鏈下機器的狀態,並使得結果狀態公开可用。它從區塊鏈中獲取信息並強制執行狀態更新,保持鏈上狀態更新的完整性。使用始終富有洞察力的Patrick McCorry術語,Cartesi節點扮演執行者的角色。
實質上,無論您是僅跟蹤滾動的狀態的用戶,還是確保狀態更新真實性的驗證者,Cartesi節點都是您進入應用特定滾動世界的全面窗口。它處理復雜的交互,使您能夠專注於您的特定興趣或責任。
查看代碼:
https://github.com/cartesi/rollups/tree/v0.9.0/offchain
Cartesi機器:
不可否認,Cartesi機器在Cartesi生態系統中具有關鍵地位,爲可驗證計算提供了創新解決方案。這項技術爲DApps提供了類似於主流應用程序的擴展方式,並增強了DApp开發者的能力。
Cartesi機器的關鍵特徵包括自我封閉、可復現性和透明性。它們在隔離環境中運行,不受外部影響;在Cartesi機器上執行的任何計算都將產生相同的結果,不論是誰執行的;此外,它們向外界展示其完整狀態,以接受外部審查。
現代軟件开發通常涉及合並各種現有軟件組件。這些組件由全球社區在數十年間开發和審查,使用成熟的工具鏈,並依賴於現代操作系統提供的衆多服務。
然而,智能合約通常使用專用工具鏈進行开發,並直接在定制的虛擬機上運行,而沒有基礎操作系統。這種設置使开發人員無法使用熟悉且有效的工具,嚴重限制了他們的表達能力,因此極大地阻礙了生產力。
這就是Cartesi機器的獨特之處,它們建立在經過時間測試的RISC-V平台上。RISC-V平台得到了強大的开發人員社區的支持,他們建立了龐大的軟件基礎設施,包括Linux操作系統和GNU工具鏈的移植。
通過將DApp邏輯的關鍵部分轉移到Cartesi機器內部,並在Linux操作系統上運行,开發人員可以繞過特定區塊鏈的限制和特殊性,避免Cartesi機器架構的不必要細節。他們重新獲得了對他們工作至關重要的熟悉工具的訪問權限。
實質上,Cartesi的抱負是賦予DApp开發者無阻礙地釋放創造力,並顯著提高他們的生產力。這就是Cartesi機器的本質。也是Honeypot DApp運行的地方。
查看代碼:
https://github.com/cartesi/machine-emulator
特定於應用的代碼
誠然,前面的章節非常長而深入。但猜怎么着?這一節會簡短而精煉。爲什么?因爲我們已經在前面的章節中做了繁重的工作。
honeypot的行爲都整齊地打包在一個單獨的C++文件中,就在這裏:honeypot.cpp。如果你想更好地理解框架的運作原理,請查看我們的文檔。
如果你在想:“等等,這對於一個簡單的honeypot來說是很多代碼!”——你沒錯。但讓我來給你一些觀點。這是Cartesi基礎設施上獨一無二的應用!當前honeypot代碼的長度是因爲我們處於开發周期的早期階段。一旦我們有了像C++錢包庫這樣的東西,可以輕松處理門戶交互和憑證提取,未來honeypot的代碼將只有幾行快速的代碼。
如果你想了解honeypot應用的更詳細信息,包括其功能和部署程序,我強烈建議查看存儲庫的詳盡自述文件。它不僅描述了DApp的內部運作方式,還提供了逐步指南,說明如何啓動你自己的honeypot:
https://github.com/cartesi/honeypot
所以你有它! 有了 Cartesi,令人畏懼的部分已經完成,讓您可以專注於您獨特的代碼。
如何做出貢獻並保持最新動態
在Cartesi,我們相信集體智慧的力量,透明度和活躍的討論。這正是你會在我們的Discord頻道找到的 - 一群多元化的貢獻者進行頭腦風暴,解決問題,並塑造Cartesi的未來。我們的溝通、开發和研究都是公开進行的。此外,我們有人熱衷於回答你的問題,並深入討論本文中討論的架構的每個部分。
所以,想要參與熱情洋溢的對話,分享你的想法,甚至可能問出一直在你腦海中的那個問題嗎?來吧!加入Cartesi的Discord頻道。如果你還沒有,試試Honeypot吧!
關於 Cartesi
Cartesi 是一種特定於應用程序的匯總協議,具有運行 Linux 發行版的虛擬機,爲 DApp 开發人員創造了更豐富、更廣泛的設計空間。
Cartesi Rollups 提供模塊化擴展解決方案,可部署爲 L2、L3 或主權 Rollups,同時保持強大的基礎層安全保證。
免責聲明
本文章僅供一般參考和信息分享之用,不構成法律、金融或投資建議。本信息的准確性和完整性不受保證,也不應被視爲對特定情況的建議。讀者應自行進行獨立的研究和咨詢,以做出任何決策。作者和相關機構對任何因依賴本信息而產生的損失或損害概不負責。在做出任何金融或投資決策之前,強烈建議咨詢專業人士以獲取個性化的建議。
虛擬貨幣屬於高風險投資品,在做出投資決策前,請咨詢相關監管機構是否存在投資虧損風險。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。