介紹:Aztec 是一間以隱私為先的第二層解決方案,讓開發者能夠建立同時具有私有與公開狀態、私有與公開執行的智能合約,實現「選擇性隱私」應用程式,體驗如同常規去中心化金融(DeFi)一樣,卻無需將所有資料暴露於鏈上。
什麼是 Aztec?
Aztec 是一個以隱私為設計核心的第二層網絡,同時在需要時仍支援公開的可組合性。
核心概念很簡單:
-
針對敏感使用者操作(餘額、身份、意圖、策略)的私有執行與私有狀態。
-
公開執行與公開狀態,適用於必須全球可見的內容(公開流動性、公開合約邏輯、共享狀態)。
因此,Aztec 支援混合型應用程式,而非僅選擇「全部公開」或「全部私有」。
Aztec 上交易的運作方式
Aztec 將執行分為兩個獨立的環境:
-
私人執行環境(PXE)— 在用戶端運行
私有功能在 PXE(發音為 “pixie”)內於用戶端執行,以最大化隱私。
PXE:
-
在本地執行私有功能
-
持有鑰匙 + 備註
-
為私密操作生成零知識證明
-
包含於 aztec.js(TypeScript)中,可在 Node 或瀏覽器中運行
-
公共 VM(AVM)— 在 Aztec 節點上運行
公共函數在 Aztec 虛擬機器(AVM)上執行,其概念類似於 EVM(因此「氣體效率直覺」更類似於 Solidity)。
方向性執行規則(重要)
一筆交易從私有流向公有:
-
私有函數可以將公有函數排入佇列,以延後執行。
-
公開函數不能調用私有函數。
這種分離是故意的:公共網絡不應能夠「介入」私有執行。
私有狀態與公開狀態:備註、空值與樹狀結構
Aztec 根據隱私需求使用不同的狀態模型:
私有狀態 = UTXO 式的「註記」
私有狀態以備註形式儲存(類似 UTXO 的數據塊)。為確保私密性:
-
備註將被附加至一個僅可追加的 UTXO 樹中
-
當一筆註記被「花費/刪除」時,會產生一個空值符號
-
Nullifiers 存儲在獨立的 nullifier 樹中
這使得網路能在不洩露筆記私密內容的情況下,強制執行「僅能使用一次」的規則。
公開狀態 = 像帳戶一樣的公開儲存
公共狀態的行為更像以太坊:
-
儲存在公共資料樹中
-
直接更新並於鏈上顯示
開發者重點:
-
私有狀態工作 = 承諾 + 消除器(證明正確性而不洩露資料)
-
公共狀態工作 = 直接更新(正常的區塊鏈儲存行為)
帳戶抽象:每個帳戶都是一個智能合約
Aztec 在協議層級具有原生帳戶抽象:
-
沒有 EOAs(沒有簡單的「金鑰對帳戶」)
-
每個帳戶都是一個智能合約
-
開發者可以為以下項目自定義規則:
-
認證(簽名、多重簽名、通行密鑰、自定義邏輯)
-
授權政策(限額、權限、會話金鑰)
-
nonce / 重放保護
-
為何這有助於防禦 DoS(「驗證成本高昂」問題)
Aztec 的模型將複雜的驗證推送到用戶端:
-
客戶驗證並生成一個「驗證成功」的 ZK 證明
-
序列器驗證一個固定大小的證明
-
因此,驗證複雜性不會導致網路驗證成本急劇上升
這可在不讓區塊鏈變慢的情況下啟用「進階使用者」帳戶邏輯。
Aztec 帳戶(注重隱私)的密鑰
每個 Aztec 帳戶均由 3 組密鑰對支援:
-
隱藏金鑰對:用於計算筆記消滅值
-
即將到來的檢視金鑰對:用於加密給接收者的備註
-
發出檢視金鑰對:用於加密給發送方的備註
由於帳戶是智能合約,它們不會自動擁有簽名密鑰對——驗證取決於帳戶合約的設計。
認證見證人:比「無限授權」更安全
Aztec 以認證證據(AuthWit)取代了高風險的「無限批准」模式:
-
而非永久授予無限權限,
-
使用者授權特定操作與特定參數
此設計旨在降低持續批准的風險,同時仍能提供良好的使用者體驗(批次處理、自動化)。
在 Aztec 上使用 Noir 建構
Aztec 的智能合約使用 Noir 撰寫,這是一種專為零知識證明(ZK)設計的語言,用於編寫可證明���程式/合約。文件中有一個重要提醒:私有函數可能以效率低下的方式撰寫,因為證明的效能直覺與一般執行不同——因此學習「如何撰寫高效能的 Noir」至關重要。
















