以太坊 Pectra 系统合约形式化验证工具 Halmos

marsbit發佈於 2025-01-30更新於 2025-01-31

以太坊即将推出的 Pectra 硬分叉通过 11 个 EIP 引入了若干提升用户体验和验证者操作的增强功能。其中有三个 EIP 引入了链上系统合约,这些合约使用汇编语言来优化 Gas 效率。虽然这种做法在提升效率方面有效,但由于汇编语言本身较为底层,且缺乏编译器强制的安全检查,使用汇编语言的做法也带来了安全隐患。

应对这些风险的一种方法是使用形式化验证来消除潜在的汇编级安全漏洞。为此,我们使用了 Halmos 这一形式化验证工具,确保 Pectra 系统合约的正确性,从而巩固了 Pectra 升级的安全性。

通过形式化验证生成的结果文档也可以作为依赖汇编代码的其他智能合约的具体示例。尽管形式化验证通常被认为是一个抽象且复杂的概念,但像这些实际示例能够展示其在更广泛应用场景中的实用性。

在这篇文章中,我们首先简要介绍 Pectra 系统合约及汇编实现的挑战。接着,我们将形式化验证过程分解为若干步骤,并展示如何使用 Halmos 完成这些任务。

Pectra 系统合约与汇编实现的挑战


如前所述,Pectra 硬分叉计划在今年早些时候发布,其中包括 11 个 EIP,其中三个 EIP 引入了执行链上逻辑的系统合约:

  • EIP-2935 提议将最后的 8191 个区块哈希存储在一个系统合约中,以支持无状态执行。该合约使用环形缓冲区来高效存储区块哈希。
  • EIP-7002 引入了一种机制,允许验证者通过其执行层的提取凭证直接发起退出和提取操作,且提取请求存储在专用的系统合约中。此处使用队列来管理提取请求。
  • EIP-7251 提议增加验证者的最大有效余额,允许较大的验证者合并操作。此类合并请求由一个单独的系统合约管理,使用队列来进行处理。


与典型的使用 Solidity 编写的智能合约不同,这些系统合约完全采用汇编语言编写,以提高 Gas 效率。使用汇编语言编写智能合约并不罕见——Seaport 和 Solady 便是著名的例子——尤其是在 Solidity 编译器生成的代码不够优化的情况下。生成不优化代码的典型情形包括处理字节数组用于 calldata 准备、Keccak 哈希输入、以及读取或写入动态大小字节到 / 从内存的其他操作码。

尽管汇编语言在 Gas 效率方面具有优势,但其编程挑战较大,因为它容易引入缺陷和安全漏洞。在编写汇编代码时,编译器通常会自动处理的安全检查(如 calldata 验证、内存清理、隐式类型转换)需要开发者手动实现。

缺少检查可能导致无效输入或被滥用的脏内存,从而潜在地引发安全漏洞。然而,手动实现这些检查要求开发者具备高级知识,并且容易出错。这种额外的工作量,加上底层编程带来的复杂性,使得编写安全的汇编代码变得极为困难且劳动强度大。

形式化验证提供了一种系统化的解决方案,通过提供正确性和安全性的数学保证,帮助解决这些挑战。


形式化验证的蓝图


让我们简要介绍一个形式化验证的基本框架。虽然其他框架也存在,并且具体细节可能会根据目标系统和上下文有所不同,但这个框架提供了一个有用的思维模型,适用于 Pectra 系统合约。由于形式化验证的全面解释超出了本文的范围,因此这里不会详细展开。关于智能合约形式化验证的更多信息,读者可以参考这篇指南作为一个良好的起点。

端到端的全面形式化验证通常包括以下几个步骤,这些步骤可分为两个阶段:


阶段 1:模型验证

  • 步骤 1:形式化规范。将规范(通常以自然语言形式呈现,例如 EIP)转化为形式化规范语言。
  • 步骤 2:定义属性。确定规范必须满足的关键属性(例如,确保 EIP-2935 中的环形缓冲区始终保持有效的区块哈希)。
  • 步骤 3:证明属性。验证步骤 1 中定义的形式化规范是否满足步骤 2 中识别的属性。


阶段 2:细化证明

  • 步骤 4:模型实现。将实现代码转化为数学模型。
  • 步骤 5:证明细化。证明实现的形式化模型(来自步骤 4)是否忠实于形式化规范(来自步骤 1)。


模型验证和细化证明解决了验证过程中的不同方面。模型验证确保规范是合理的,而细化证明确认低级实现与规范的一致性。通过这两者的结合,可以确保实现符合关键属性。

将关注点分为这两个阶段,有助于在验证过程中提供清晰性和模块化。它还提供了执行的灵活性,可以为每个阶段应用不同的工具和方法,或根据时间和资源约束并行化任务或优先处理任务。

在 Pectra 合约的背景下,模型验证相当于对其 EIP 规范文档进行推理,而细化证明确保实现代码与 EIP 文档一致。


选择工具


开发者可以从多种工具中选择,可能会选择不同的工具来进行模型验证和细化证明。

模型验证最适合使用多功能和表达力强的工具。常用的工具包括交互式定理证明器(例如 Lean、Coq、Isabelle、ACL2)、模型检查器(例如 TLA+、Alloy、Quint)和演绎验证器(例如 Dafny、Why3)。这些工具能够对属性进行严格的推理。对于较简单的规范,手动的纸上证明也可能有效,尽管这种方法增加了信任基础,并且需要细致的审查。附带说明:将模型验证与安全审计结合起来可能会非常有益,因为审计员可能会识别规范中附加的安全属性或潜在漏洞。

细化证明则更适合使用特定于其实现语言的自动化验证工具。这样的自动化工具(例如 halmos、hevm、Kontrol、Certora 用于以太坊智能合约)能够内部处理实现的建模,减少人工错误的风险以及与手动转化相关的信任基础。此外,由于实现代码经常因优化或重构而发生频繁变化,自动化验证对于持续验证特别有价值。这些工具简化了过程,确保实现始终与规范保持一致,而无需对每次代码更新进行全面的人工审查。

在了解了形式化验证框架后,我们可以讨论如何将其应用于 Pectra 系统合约。接下来,我们将详细介绍如何使用 Halmos 进行细化证明。请注意,我们基于 Halmos 的形式化验证专注于细化证明,模型验证不包括在内。模型验证可以通过前述方法和工具单独执行,相关内容留待未来的工作中讨论。


Pectra 系统合约的细化证明


Halmos 是一个专为 EVM 字节码设计的形式化验证工具,非常适合用于执行细化证明。它自动化了验证过程中的关键部分,特别是第 4 步(实现的建模),并直接验证第 5 步中规范与实现字节码之间的细化关系。

使用 Halmos 时,细化条件被表示为常规的 Solidity 测试,具体通过断言来确保实现行为与规范一致。这些断言仅关注验证实现是否符合规范,而不涉及验证规范本身的属性——后者是在模型验证阶段处理的任务。

我们将 Halmos 应用于 Pectra 系统合约时,首先手动将 EIP 规范转化为 Solidity 测试断言。然后,我们使用这些测试来验证汇编实现的编译字节码。该过程确保系统合约在所有可能的输入和合约状态下都能按规范行为运行。尽管 Halmos 提供了一个“有限的”形式化保证——受限于如循环迭代或字节数组大小等执行约束——但它仍是一种有效且实用的确保正确性的方法。

该过程的信任基础包括 EIP 规范到 Solidity 测试的手动转化——由我们的安全工程师独立审查——以及 Halmos 工具本身。重要的是,汇编编译器被排除在信任基础之外,因为验证直接面向编译后的字节码。


效率与持续验证

我们在几天内完成了初步的验证过程,随后在几周内对测试结构、断言和文档进行了改进,以提升其效果。Halmos 在初步验证和持续验证过程中均表现出色,后者涉及在代码更新后重新验证实现。每次重新验证只需几个小时,使得即便在迭代开发过程中也能实用地保持正确性。

持续验证的重要性在于,Halmos 测试在重构过程中发现了一个越界错误。重构的定义是应当保持原有代码行为。然而,测试未通过,标示出不一致之处。深入调查后发现了一个微妙的错误,这突显了持续验证作为在迭代更改中及早捕获错误的强大安全网,增强了代码的可靠性。

熱門幣種推薦

你可能也喜歡

交易

現貨

熱門文章

什麼是 ETH 2.0

ETH 2.0:以太坊的新時代 介紹 ETH 2.0,廣為人知的以太坊 2.0,標誌著對以太坊區塊鏈的一次重大升級。這次過渡不僅僅是表面上的改造;其目標是從根本上增強網絡的可擴展性、安全性和可持續性。ETH 2.0 透過從能量密集型的工作量證明(PoW)共識機制轉向更高效的權益證明(PoS),承諾為區塊鏈生態系統帶來變革性的改變。 什麼是 ETH 2.0? ETH 2.0 是一系列獨特且相互連接的更新,專注於優化以太坊的能力和性能。這次全面改革旨在解決現有以太坊機制所面臨的主要挑戰,特別是交易速度和網絡擁堵問題。 ETH 2.0 的目標 ETH 2.0 的主要目標圍繞著改善三個核心方面: 可擴展性:旨在顯著提升網絡每秒可以處理的交易數量,ETH 2.0 希望突破目前約每秒 15 笔交易的限制,潛在地達到數千筆。 安全性:增強的安全措施是 ETH 2.0 的核心,特別是提高抵抗網絡攻擊的能力以及保護以太坊的去中心化精神。 可持續性:新的 PoS 機制旨在不僅提高效率,還大幅降低能耗,讓以太坊的運營框架與環保考量相符。 誰是 ETH 2.0 的創造者? ETH 2.0 的創建可追溯至以太坊基金會。這個非營利組織在支持以太坊發展方面發揮著關鍵作用,由著名的聯合創始人 Vitalik Buterin 主導。他對於更可擴展和更可持續以太坊的願景,是這次升級的推動力,並吸引了來自全球的開發者和愛好者的貢獻,共同致力於改善協議。 誰是 ETH 2.0 的投資者? 雖然有關 ETH 2.0 的投資者的具體信息尚未公開,但以太坊基金會已知方向來自區塊鏈及技術領域的各種組織和個人支持。這些合作夥伴包括創投公司、技術公司和慈善機構,它們共同致力於支持去中心化技術和區塊鏈基礎設施的發展。 ETH 2.0 如何運作? ETH 2.0 以引入一系列關鍵特性而著稱,使其與前身有所區別。 權益證明(PoS) 轉向 PoS 共識機制是 ETH 2.0 的標誌性變化之一。與依賴於能量密集型挖礦進行交易驗證的 PoW 不同,PoS 允許用戶根據他們在網絡中抵押的 ETH 數量來驗證交易和創建新區塊。這導致能量效率的提升,能耗降低約 99.95%,使以太坊 2.0 成為一個相當綠色的替代方案。 分片鏈 分片鏈是 ETH 2.0 的另一個關鍵創新。這些較小的鏈與主要的以太坊鏈平行運行,使得多筆交易可以同時處理。這種方法增強了網絡的整體容量,解決了困擾以太坊的可擴展性問題。 信標鏈 在 ETH 2.0 的核心是信標鏈,它協調網絡並管理 PoS 協議。它在某種程度上充當了組織者:它監督驗證者,確保各分片與網絡的連接,並監控整體區塊鏈生態系統的健康狀況。 ETH 2.0 的時間軸 ETH 2.0 的旅程標誌著幾個關鍵里程碑,描繪了這次重大升級的演變: 2020年12月:信標鏈的啟動標誌著 PoS 的引入,為 ETH 2.0 的遷移鋪平了道路。 2022年9月:“合併”的完成代表著以太坊網絡成功從 PoW 轉型為 PoS 框架,預示著以太坊的新時代。 2023年:預期分片鏈的推出旨在進一步增強以太坊網絡的可擴展性,鞏固 ETH 2.0 作為去中心化應用和服務的強大平台。 主要特性和優勢 改進的可擴展性 ETH 2.0 最重要的優勢之一是其改進的可擴展性。PoS 和分片鏈的結合使網絡能夠擴大容量,允許其處理的交易量遠超舊有系統。 能源效率 PoS 的實施對於區塊鏈技術中的能源效率來說是一個巨大的進步。通過大幅降低能源消耗,ETH 2.0 不僅減少了運營成本,還與全球可持續發展目標更加一致。 增強的安全性 ETH 2.0 的更新機制提高了網絡的安全性。PoS 的部署,加上通過分片鏈和信標鏈建立的創新控制措施,確保了對潛在威脅更高程度的保護。 降低用戶成本 隨著可擴展性的改善,交易成本也會明顯降低。預期增強的容量和減少的擁堵將轉化為用戶更低的手續費,使以太坊在日常交易中變得更可及。 結論 ETH 2.0 標誌著以太坊區塊鏈生態系統的一次重要演變。隨著其解決可擴展性、能源消耗、交易效率和整體安全性等關鍵問題,這次升級的重要性不言而喻。轉向權益證明、引入分片鏈以及信標鏈的基礎性工作,顯示出以太坊未來能夠滿足去中心化市場日益增長的需求。在一個由創新和進步推動的行業中,ETH 2.0 是區塊鏈技術在為更可持續和高效的數字經濟鋪路方面能力的見證。

208 人學過發佈於 2024.04.04更新於 2024.12.03

什麼是 ETH 2.0

什麼是 ETH 3.0

ETH3.0 與 $eth 3.0:以深入分析以太坊的未來 介紹 在快速發展的加密貨幣和區塊鏈技術領域,ETH3.0,通常標記為 $eth 3.0,已成為一個備受關注和猜測的話題。該術語包含兩個主要概念,值得說明: 以太坊 3.0:這代表潛在的未來升級,旨在增強現有的以太坊區塊鏈的能力,特別集中於提高可擴展性和性能。ETH3.0 表情符號代幣:這個獨特的加密貨幣項目旨在利用以太坊區塊鏈創建一個以表情符號為中心的生態系統,促進加密貨幣社區的參與。 理解這些 ETH3.0 的方面不僅對加密愛好者至關重要,也對觀察數字空間中的更廣泛技術趨勢的人有所幫助。 什麼是 ETH3.0? 以太坊 3.0 以太坊 3.0 被認為是對已建立的以太坊網絡的擬議升級,自其誕生以來,它一直是許多去中心化應用程式(dApps)和智能合約的支柱。預想的增強主要集中於可擴展性——整合先進技術,如分片和零知識證明(zk-proofs)。這些技術創新旨在促進每秒交易數量的前所未有(TPS),潛在地達到數百萬筆,從而解決當前區塊鏈技術面臨的最重大限制之一。 這次改進不僅是技術性的,更是戰略性的;它旨在為以太坊網絡的普遍採用和未來的實用性做準備,因為該未來將面臨對去中心化解決方案日益增長的需求。 ETH3.0 表情符號代幣 與以太坊 3.0 不同,ETH3.0 表情符號代幣進入了一個更輕鬆和更具玩樂性的領域,通過將互聯網表情符號文化與加密貨幣動態相結合。該項目使用戶能夠在以太坊區塊鏈上購買、出售和交易表情符號,提供一個促進社區通過創造力和共同利益參與的平台。 ETH3.0 表情符號代幣旨在展示區塊鏈技術如何與數字文化交匯,創造出既有趣又具有經濟價值的使用案例。 誰是 ETH3.0 的創造者? 以太坊 3.0 對以太坊 3.0 的倡議主要由以太坊社區內的一個開發者和研究人員的聯盟推動,特別是包括 Justin Drake。他因對以太坊演變的見解和貢獻而聞名,Drake 在關於將以太坊轉變為新共識層的討論中是一個重要人物,這被稱為「Beam Chain」。 這種協作開發的方式標誌著以太坊 3.0 不是單一創造者的產品,而是集中精力促進區塊鏈技術進步的集體智慧的體現。 ETH3.0 表情符號代幣 關於 ETH3.0 表情符號代幣的創造者的詳細資料目前無法追溯。表情符號代幣的特性通常導致更分散和社區驅動的結構,這可以解釋為什麼缺乏具體的歸屬感。這與更廣泛的加密社區的精神相符,該社區的創新往往源於協作而非個人努力。 誰是 ETH3.0 的投資者? 以太坊 3.0 對以太坊 3.0 的支持主要來自以太坊基金會以及一個充滿熱情的開發者和投資者社區。這種基礎聯繫提供了相當程度的合法性,並增強了成功落實的前景,因為它利用了多年網絡運營建立的信任和可信度。 在快速變化的加密貨幣氣候中,社區支持在推動開發和採用中發揮了關鍵作用,將以太坊 3.0 置於未來區塊鏈進步的重要競爭者地位。 ETH3.0 表情符號代幣 雖然目前可用的來源並沒有明確提供支持 ETH3.0 表情符號代幣的投資機構或組織的具體信息,但這反映出表情符號代幣典型的資金模型,通常依賴於基層支持和社區參與。此類項目的投資者通常由因社區驅動的創新潛力以及在加密社區中發現的合作精神而受到激勵的個人組成。 ETH3.0 如何運作? 以太坊 3.0 以太坊 3.0 的區別特點在於其擬議的分片和零知識證明技術的實施。分片是一種將區塊鏈劃分為更小、更易管理的單元或「分片」的方法,這些分片能夠同時處理交易,而不是按序處理。這種處理的去中心化有助於避免擁堵,並確保即使在高負載下,網絡也能保持響應。 零知識證明(zk-proof)技術通過允許交易驗證而不揭示涉及的基本數據,增加了一層複雜性。這一方面不僅增強了隱私性,還提高了整個網絡的效率。還有討論將零知識以太坊虛擬機(zkEVM)納入此次升級,進一步擴大網絡的能力和實用性。 ETH3.0 表情符號代幣 ETH3.0 表情符號代幣通過利用表情符號文化的受歡迎程度而脫穎而出。它建立了一個市場,讓用戶參與表情符號交易,不僅僅是為了娛樂,也是為了潛在的經濟利益。通過整合質押、流動性供應和治理機制等特性,該項目營造了一種促進社區互動和參與的環境。 通過提供娛樂和經濟機會的獨特結合,ETH3.0 表情符號代幣旨在吸引多樣的觀眾,範圍從加密愛好者到隨便的表情符號愛好者。 ETH3.0 的時間表 以太坊 3.0 2024年11月11日:Justin Drake 暗示即將到來的 ETH 3.0 升級,重點是可擴展性改進。這一公告標誌著關於以太坊未來架構正式討論的開始。2024年11月12日:預期中的以太坊 3.0 提案將在曼谷的 Devcon 上公佈,為更廣泛的社區反饋和潛在的開發後續步驟奠定基礎。 ETH3.0 表情符號代幣 2024年3月21日:ETH3.0 表情符號代幣正式在 CoinMarketCap 上列出,標誌著其進入公眾加密領域,並增強了其基於表情符號的生態系統的可見性。 關鍵要點 總之,以太坊 3.0 代表了以太坊網絡內的重要演變,集中於通過先進技術克服可擴展性和性能的限制。其擬議的升級反映出對未來需求和可用性的主動應對。 另一方面,ETH3.0 表情符號代幣 encapsulates 加密貨幣領域中以社區為驅動文化的本質,利用表情符號文化來創建鼓勵用戶創造力和參與的平台。 理解 ETH3.0 和 $eth 3.0 的不同目的和功能對於任何對加密領域中正在進行的發展感興趣的人來說都是至關重要的。隨著這兩個倡議鋪展獨特的道路,它們共同凸顯了區塊鏈創新動態和多樣化的本質。

213 人學過發佈於 2024.04.04更新於 2024.12.03

什麼是 ETH 3.0

如何購買ETH

歡迎來到HTX.com!在這裡,購買Ethereum (ETH)變得簡單而便捷。跟隨我們的逐步指南,放心開始您的加密貨幣之旅。第一步:創建您的HTX帳戶使用您的 Email、手機號碼在HTX註冊一個免費帳戶。體驗無憂的註冊過程並解鎖所有平台功能。立即註冊第二步:前往買幣頁面,選擇您的支付方式信用卡/金融卡購買:使用您的Visa或Mastercard即時購買Ethereum (ETH)。餘額購買:使用您HTX帳戶餘額中的資金進行無縫交易。第三方購買:探索諸如Google Pay或Apple Pay等流行支付方式以增加便利性。C2C購買:在HTX平台上直接與其他用戶交易。HTX 場外交易 (OTC) 購買:為大量交易者提供個性化服務和競爭性匯率。第三步:存儲您的Ethereum (ETH)購買Ethereum (ETH)後,將其存儲在您的HTX帳戶中。您也可以透過區塊鏈轉帳將其發送到其他地址或者用於交易其他加密貨幣。第四步:交易Ethereum (ETH)在HTX的現貨市場輕鬆交易Ethereum (ETH)。前往您的帳戶,選擇交易對,執行交易,並即時監控。HTX為初學者和經驗豐富的交易者提供了友好的用戶體驗。

4.2k 人學過發佈於 2024.12.10更新於 2026.06.02

如何購買ETH

相關討論

歡迎來到 HTX 社群。在這裡,您可以了解最新的平台發展動態並獲得專業的市場意見。 以下是用戶對 ETH (ETH)幣價的意見。

活动图片