KeyFrame內部研究專用

基于 OpenZeppelin 保密库的保密型 Solidity 合约 Zama 开发者专区・第九届以太坊开发者大会(EthCC 9)

Zama中文·6月19日週五·16 min中文

三句話摘要

OpenZeppelin 發布 Confidential 合約庫,講解機密 Solidity 的核心差異、庫結構與三大安全陷阱。 機密 Solidity 的最大陷阱是「失敗不報錯」,開發者必須主動用 FHESELECT 讀取每次操作的實際結果,而非依賴 revert 來保障正確性。 1. 機密 Solidity 的根本差異在於「沒有明文、沒有分支、沒有 revert」

重點整理

重點
  • 1

    1. 機密 Solidity 的根本差異在於「沒有明文、沒有分支、沒有 revert」

  • 2

    所有變數返回的都是密文句柄,需在鏈下解密;無法用 if 分支,必須用 FHESELECT 選擇路徑;函數不能 revert,不足餘額時只能返回加密零值,呼叫者自行判斷結果。

  • 3

    2. 機密代幣(EC-7984)是 ERC-20 的隱私版本,介面設計全面加密化

  • 4

    balanceOf 返回加密句柄、totalSupply 同樣加密、transfer 需提供帶有 ZK 證明的加密金額;此外支援 operator 機制,授權他人在一定期間內使用代幣。

  • 5

    3. ERC-20 包裝器實現「公開代幣 ↔ 機密代幣」雙向轉換,解包需兩步驟

  • 6

    包裝直接呼叫 wrap() 即可完成;解包因須鏈下解密,必須先呼叫 unwrap() 觸發解密請求,取得明文與解密證明後,再呼叫 finalizeUnwrap() 才能取回 ERC-20 代幣。

  • 7

    4. 機密合約的安全模型與一般合約截然不同,需主動防禦靜默失敗

  • 8

    由於沒有 revert,開發者必須透過 FHESELECT 主動捕捉餘額不足、必須用暫態授權(transient allowance)避免密文被複製濫用、必須讀取實際轉帳結果而非假設成功。

實用技巧與重點

乾貨
  • 機密代幣標準:EC-7984
  • 庫分類:Utilities(安全 Map、Access Control)、Confidential Token、進階合約(Confidential Mixer、Confidential Vesting Wallet)
  • ERC-20 擴展:EC-20 Wrapper、Observer Access、RWA 合規模組
  • 真實案例:已有 3200 萬美元 USDT 以機密包裝器在生產環境中運行
  • 解包流程:兩步驟 — ① 呼叫 unwrap(加密金額 + 證明) → ② 取得明文後呼叫 finalizeUnwrap(明文 + 解密證明)
  • 安全漏洞一:靜默下溢(silent underflow)— 餘額不足不 revert,直接默默扣成負數;解法:FHESELECT 檢查餘額,不足返回加密零值
  • 安全漏洞二:持久授權(persistent allowance)被惡意複製密文攻擊;解法:改用暫態授權(transient allowance),並在第 14 行驗證 msg.sender 是否有權存取該密文句柄
  • 安全漏洞三:拍卖合約未驗證實際轉帳金額,零餘額用戶可成為最高出價者;解法:讀取實際轉帳結果,用 FHE gt + FHESELECT 判斷
  • 開發工具:OpenZeppelin Wizard 新增 Confidential 頁籤,可視化生成機密合約
  • 三條開發守則:① 避免靜默下溢 ② 使用暫態授權取代持久授權 ③ 始終讀取機密操作的實際返回值

結論

結論

機密 Solidity 的最大陷阱是「失敗不報錯」,開發者必須主動用 FHESELECT 讀取每次操作的實際結果,而非依賴 revert 來保障正確性。

完整解析

詳細

OpenZeppelin(影片中稱 OpenSapin)長期為 Solidity 開發者維護三個核心庫:主庫、可升級庫與社群庫。此次發表的 Confidential Contracts 是第四個成員,針對全同態加密(FHE)環境下的智慧合約開發提供標準化實作。講者 James 首先釐清了一個常見誤解:機密 Solidity 並不是一門新語言,而是在既有 Solidity 基礎上疊加的工具層,但它帶來了三項根本性的程式設計限制。

首先是型別差異——所有數值(uint、address 等)在機密環境中都以密文句柄(ciphertext handle)表示,這個句柄只是鏈外加密資料的識別符,本身不含明文。其次是沒有條件分支,開發者必須改用 FHESELECT 在兩個加密值之間做選擇。第三是沒有 revert,當轉帳餘額不足時,合約不會中止執行,而是返回一個加密的零值;呼叫者須自行解密判斷結果,這對熟悉傳統 Solidity 的開發者來說是最需要適應的思維轉換。

在庫結構方面,OpenZeppelin Confidential 分三層:底層是工具集(安全 Map、Access Control 等低階原語);中層是機密代幣合約,遵循 EC-7984 標準,並提供 EC-20 包裝器、Observer Access、RWA 合規等擴展;上層是更複雜的應用合約,如 Confidential Mixer(隱私混幣)與 Confidential Vesting Wallet(隱私歸屬錢包)。其中 EC-20 包裝器已在生產環境部署,目前有 3200 萬美元的 USDT 以機密形式運行。包裝(wrap)是單步操作,用戶存入 ERC-20 即獲得等量機密代幣;而解包(unwrap)因須在鏈下解密,設計為兩步驟流程:先呼叫 unwrap 觸發解密請求,取得明文與解密證明後,再呼叫 finalizeUnwrap 才能取回原始 ERC-20。

最後,講者分享了三個從實際開發中歸納的安全漏洞範式。第一,靜默下溢:若合約直接對餘額做減法而不用 FHESELECT 設保護,餘額不足時不會 revert 而是靜默溢出,同時另一方餘額仍然增加,造成憑空鑄幣。第二,持久授權濫用:若合約給予費用處理合約永久性的密文存取授權,惡意者可複製密文句柄直接呼叫費用計算函數繞過正常流程;正確做法是使用暫態授權,並在函數入口驗證 msg.sender 是否有權存取該密文。第三,拍賣合約的虛假出價:若合約在接受出價時未讀取實際轉帳的加密結果,零餘額的惡意用戶只需提交一個最高加密金額,就能被登記為最高出價者;解法是讀取實際轉帳量並透過 FHE 比大小函數確認。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「GitHub 熱點」的內容

30 Self-Hosted Projects on GitHub: wacrm, halcyon-video, wrtag, Codeman, romm, wger, homelab, clay
12 min
GitHub 熱點英文8月18日

30 Self-Hosted Projects on GitHub: wacrm, halcyon-video, wrtag, Codeman, romm, wger, homelab, clay

GitHub Awesome

  • 數據主權與隱私核心:這些專案的共同特點是數據完全在使用者控制下,不依賴訂閱制或廠商,例如 WACRM 使用 Meta 官方 API 避免帳號停用,OpenArchiver 以 EML 標準格式本地儲存郵件,HQBase 在使用者自有 Cloudflare 帳戶內運行。
  • 現代技術棧達企業級質量:這些自架方案採用 Kubernetes、PostgreSQL、Cloudflare Workers 等企業級技術,證明開源不等於簡陋,Eden 家庭實驗室的完整配置就是最好例證。
  • 跨領域替代完整性:從業務通訊(WACRM、LibreDesk、HQBase)到多媒體(Halcyon、ROMM、Viofo Sync)、生產力(Super Productivity、Clay、Note Discovery)、財務(Tilevia、Taxhacker、Expenseive),開源生態已能覆蓋 SaaS 的主要應用場景。
The Next Game Engine Won't Have a Manual — Arturo Nunez, Nereu
19 min
GitHub 熱點中文8月18日

The Next Game Engine Won't Have a Manual — Arturo Nunez, Nereu

AI Engineer

  • 現有遊戲引擎要求開發者掌握程式設計、建模、渲染、動畫等多個領域,導致高學習曲線與冗長開發週期;Nereu 改用自然語言描述,讓使用者聚焦遊戲設計本身而非技術細節。
  • 系統採用實體-組件系統架構,每個遊戲物體只需加上描述用途的標籤(如「角色」「可動畫」「雙段跳」),引擎內的系統會自動查詢並執行相應邏輯,避免重複編寫樣板程式碼。
  • AI 助手 BB 透過場景上下文、使用者編輯位置和遊戲類型資訊,理解使用者意圖並自動新增或移除標籤;使用者隨時可提問如何實現特定功能,大幅降低認知負荷。
GitHub Trending Today #45: claudish-to-english, openanalytics, deepseek-harness, human-review, ha.mr
14 min
GitHub 熱點英文8月15日

GitHub Trending Today #45: claudish-to-english, openanalytics, deepseek-harness, human-review, ha.mr

Github Awesome

  • AI 代理與自動化趨勢:從 DeepSeq Harness 的模組化代理框架、到 Formin 的自動化軟體工廠(通過四個代理站點自動分類、規劃、實現、審查),再到 Agent Safe Pipeline 的安全隔離機制,展現 AI 代理工具生態正在成熟,重點從「能用」進化到「可控」與「可審計」。
  • 本地優先與隱私設計成為標準:Open Analytics 無 Cookie 追蹤、HA MR 瀏覽器側鏈接壓縮、BlueFairy 藍牙配對而非雲服務、TokenTab 本地成本追蹤、Mole 的預算硬約束機制,反映開發者對隱私邊界的明確劃分——不再默認上傳,而是明確選擇。
  • 開發者工具鏈的細節化:從 Human Review 的批量編輯反饋、Book to Skill 的文檔轉技能、Anti-slop 的類型安全檢查、到 PGBOT 的無寫入診斷,工具不再追求「大而全」,而是在特定工作流的某個環節解決明確問題。