SNARKs 與 STARKs 與遞迴 SNARKs 之比較
作者 Alchemy
零知識證明是一種機制,允許一方向另一方揭示自己知曉某項資訊,而不必揭露該資訊本身。零知識證明也稱為有效性證明,最初用於在注重隱私的區塊鏈中隱藏交易細節。
但零知識證明還有另一個重要用途:擴展通用區塊鏈的規模。透過有效性證明,區塊鏈節點可以在不儲存細節或重新執行運算的情況下驗證交易。這縮短了確認時間,並提升了網路吞吐量。
由於在可擴展性方面的優勢,零知識證明已成為區塊鏈擴容專案的核心基礎設施,尤其是zero-knowledge rollups。本指南將介紹區塊鏈中使用的零知識證明主要分類:ZK-SNARK、ZK-STARK 以及遞迴 ZK-SNARK。
什麼是 ZK-SNARK?
ZK-SNARK 是一種產生零知識證明的協議,用於驗證資訊的真實性,同時不揭露底層資料。這個縮寫代表 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge(零知識簡潔非互動式知識論證)。
ZK-SNARK 協議涉及兩方:證明者(Alice)和驗證者(Bob)。證明者(Alice)是提出主張的一方,而驗證者(Bob)則負責驗證該主張。
主張中所指涉的資訊稱為見證(witness)或稱「秘密」。證明者(Alice)使用 ZK-SNARK 機制產生證明,向驗證者(Bob)展示該主張為真……但不揭露所指涉的資訊。
一個涉及 ZK-SNARK 的假設情境是驗證使用者身分。個人可以證明一項陳述(「我是美國公民」),而不必揭露個人資訊(例如護照或社會安全號碼)。
ZK-SNARK 之所以如此命名,是因為它們具備以下特質:
1. 零知識(Zero-knowledge):這表示驗證者除了知道該陳述是真是假之外,對陳述本身一無所知。
2. 簡潔(Succinct):證明的體積足夠小,驗證者可以在短時間內完成驗證。
3. 非互動式(Non-interactive):SNARK 之所以是非互動式的,是因為證明者與驗證者除了最初提交的證明外,不需要再交換資訊。早期的零知識證明系統需要證明者與驗證者交換多次訊息才能驗證陳述。
4. 論證(Argument):SNARK 是一種「計算上可靠」的陳述,滿足嚴格的要求,使人難以作弊(也就是說,難以產生虛假的證明)。
5. 知識(Knowledge):以 SNARK 為基礎的證明,若無法取得底層資訊或「見證」,就無法產生。

區塊鏈中的 ZK-SNARK
像公有區塊鏈這樣的分散式運算系統,需要解決所謂的「運算完整性問題」。運算完整性(CI)指的是特定運算所得結果的正確性。
在公有區塊鏈中,運算完整性指的是網路上執行的交易的正確性。大多數區塊鏈透過讓其他電腦(節點)重新執行每筆交易來達成這一點。
然而,這種方法存在問題。強迫每個節點重播每筆交易,會拖慢網路速度並限制可擴展性。節點也必須儲存交易資料(否則無法重播運算),導致區塊鏈的體積呈指數增長。
但如果節點可以在不重播運算的情況下檢查運算的有效性呢?這將提升網路吞吐量,並免除節點儲存過量交易資料的需求。
ZK-SNARK 應運而生。
使用 ZK-SNARK 產生的有效性證明,可以在不揭露輸入內容的情況下證明交易的有效性。這就是為什麼像 Zcash 和 Monero 這類注重隱私的加密貨幣會使用 SNARK 來模糊交易資訊。
SNARK 也可以在節點不必重播運算每一步驟的情況下,證明鏈下執行運算的正確性。這正是 ZK-SNARK 在擴展區塊鏈方面發揮作用之處。
使用 SNARK 驗證鏈下運算是一個複雜的過程,首先需要將運算編碼為數學表達式。這個數學陳述構成了有效性證明的基礎。
驗證者接著對證明執行一項運算,以檢查其正確性。如果證明通過所有檢查,底層運算即被視為有效。這就是為什麼 SNARK 被稱為「簡潔的」——有效性證明的體積比其所驗證的運算小上許多倍。

ZK-SNARK 與 ZK rollups
Rollup 是Ethereum 的一種 Layer 2 擴容方案,透過鏈下執行來提升 Layer 1(L1)區塊鏈的吞吐量。Rollups 在 L2 鏈上處理交易,將多筆鏈下交易匯總成區塊,再提交至 L1 鏈。
透過將運算移出基礎層,rollups 降低了網路壅塞,並擴展了交易處理能力。
然而,L1 鏈需要知道鏈下執行的交易是否有效(也就是運算完整性問題)。否則,惡意行為者可能劫持 rollup,向主鏈提交不正確的交易。
有一種 rollup 類型(zero-knowledge rollup)使用 ZK-SNARK 向 L1 鏈證明鏈下交易的真實性。任何人都可以驗證 SNARK 證明,這讓 L1 鏈能夠確保交易的有效性。
大多數使用 ZK-SNARK 的 ZK rollups 遵循相同的架構:
-
L2 鏈上的使用者對交易簽名,並提交給驗證者(validators)。
-
驗證者將交易壓縮成一個區塊,並產生對應的有效性證明(SNARK)。這提供了加密學上的保證,證明新的狀態是由有效交易的加入所產生。
-
L1 鏈上的智能合約對有效性證明執行一項運算。此運算的結果決定批次交易是否通過驗證並發布至主鏈。

ZK-SNARK 有哪些優點?
使用 ZK-SNARK 有三大主要優點:高吞吐量、較小的有效性證明體積,以及安全性。
1. 高吞吐量
ZK-SNARK 透過縮減 Ethereum 基礎層上的運算量來擴展吞吐量。使用 ZK-SNARK,rollups 可以將 TPS 速率提升至數千筆。
ZK-SNARK 通常比其所驗證的交易資料小上許多倍。這減少了基礎區塊鏈的壅塞,使 gas 費用更低、交易速度更快。
2. 較小的證明體積
SNARK 證明體積小,使其容易在主鏈上驗證。在 Ethereum 上,這意味著驗證鏈下交易時 gas 費用較低,降低了終端使用者的 rollup 成本。
3. 安全性
ZK rollups 被認為比其他擴容專案更安全,主要原因在於 ZK-SNARK 所使用的尖端加密安全機制。
ZK-SNARK 證明在計算上是可靠的,使人難以欺騙驗證者並進行惡意行為。ZK-SNARK 的非互動性也意味著任何人都能以無需信任的方式驗證證明。
ZK-SNARK 有哪些缺點?
使用 ZK-SNARK 有三大主要缺點:需要可信任設置、容易受到量子運算攻擊,以及依賴特殊硬體。
1. 可信任設置
建立 ZK-SNARK 協議需要建立一個通用共同參考字串(CRS)。CRS 也稱為「公開參數」,可讓證明者與驗證者之間進行安全的通訊。
如果惡意行為者取得了這些公開參數的相關知識,他們就可以產生虛假的有效性證明。有些專案嘗試透過使用多方運算(MPC)來解決這個問題,這涉及讓多位不同的參與者共同產生公開參數。
儘管如此,這種方法仍需要使用者信任參與者的誠信。這相當有問題,因為區塊鏈的目的正是要減少對權威機構信任的需求。
2. 容易受到量子運算攻擊
ZK-SNARK 使用橢圓曲線密碼學(ECC)來加密用於產生有效性證明的資訊。ECC 目前相對安全,但量子運算的進步可能會破壞其安全模型。
3. 依賴特殊硬體
使用 ZK-SNARK 產生有效性證明是一個運算密集的過程,這意味著證明者必須投資專用硬體。由於很少人能買得起這類機器,許多人認為 ZK-SNARK 的證明產生過程高度中心化。
有哪些專案使用 ZK-SNARK?
五個著名使用 ZK-SNARK 的專案分別是 ZKSync、Loopring、Aztec、Polygon Hermez 和 ZKSpace。
zkSync
由 Matter Labs 打造、與 EVM 相容的 ZK rollup,運行在 Ethereum Mainnet 上。ZKSync 支援智能合約、代幣交換、支付以及 NFT 鑄造。
Loopring
由基於 SNARK 的 ZK rollup 技術驅動的 Ethereum Layer 2(L2)專案。Loopring 也作為一個去中心化交易所,用於交易 ETH 及其他 ERC-20 代幣,成本僅為 Ethereum Mainnet 上 DEX 收費的一小部分。
Aztec
建構於 Ethereum 網路之上的開源 L2 網路。Aztec 利用 ZK-SNARK 來擴展交易規模,並提升使用者的財務隱私。
Polygon Hermez
運行於 Ethereum 區塊鏈之上的 ZK rollup。Polygon Hermez 使用 ZK-SNARK 驅動安全且低成本的代幣轉帳與支付。
ZKSpace
基於 ZK-SNARK 的 ZK rollup 專案。ZKSpace 為 Ethereum 使用者提供更低的 gas 費用與更快的交易速度,並包含一個 AMM 式 DEX(ZKSwap v3)、支付網路(ZKSquare),以及NFT 市場(ZKSea)。
什麼是 ZK-STARK?
ZK-STARK 是 Zero-Knowledge Scalable Transparent Argument of Knowledge(零知識可擴展透明知識論證)的縮寫。與 ZK-SNARK 相同,ZK-STARK 可以在不揭露陳述本身任何資訊的情況下,證明一項陳述為真。
除了少數差異之外,STARK 與 SNARK 具有相同的特性。基於 STARK 的有效性證明是使用一份對驗證者隱藏的資訊來產生的。STARK 同樣可以在不揭露輸入內容的情況下,驗證交易的正確性。
ZK-STARK 對比 ZK-SNARK
ZK-STARK 最大的差異來自於它的可擴展性與透明性:
ZK-STARK 被認為是透明的,因為它不需要通用共同參考字串(CRS)的可信任設置就能運作。相反地,STARK 協議使用公開可驗證的隨機性,來建立證明者與驗證者之間的互動。
ZK-STARK 是「可擴展的」,因為證明與驗證的複雜度相對於運算複雜度呈現「準線性(quasilinear)」成長。而在 ZK-SNARK 中,證明與驗證的複雜度相對於底層運算呈現「線性」成長。
這簡單來說意味著,當我們需要驗證的運算規模較大時,ZK-SNARK 協議產生和驗證證明所需的時間會比 ZK-STARK 長。這就是為什麼 STARK 更適合處理大量交易的應用場景。

ZK-STARK 有哪些優點?
使用 ZK-STARK 有四大主要優點:不需要可信任設置、可擴展性、為使用者提供最大吞吐量,以及高安全性保證。
1. 不需要可信任設置
ZK-STARK 不需要可信任設置即可運作,而是依賴公開的隨機性。這減少了使用者所需的信任假設,並提升了基於 STARK 的協議的安全性。
2. 可擴展特性
相較於 SNARK,STARK 在規模擴大時的運算與驗證速度更快。更重要的是,即使底層運算的複雜度呈指數增長,ZK-STARK 依然能維持較低的證明與驗證時間。
3. 最大吞吐量
與 SNARK 相同,STARK 可以透過實現安全且可驗證的鏈下運算來擴展區塊鏈規模。
提交至 L1 鏈的單一 STARK 證明,可以驗證在主鏈之外進行的數千筆交易。因此,多個知名的 ZK rollup 專案使用 ZK-SNARK 來證明鏈下運算的完整性。
4. 更高的安全性保證
ZK-STARK 使用抗碰撞雜湊(collision-resistant hashes)進行加密,而不是 ZK-SNARK 所使用的橢圓曲線方案。這被認為能夠抵抗量子運算攻擊,因此比 SNARK 所使用的橢圓曲線更加安全。
ZK-STARK 有哪些缺點?
使用 ZK-STARK 的兩大主要缺點是:證明體積較大,以及該技術在區塊鏈領域的採用率較低。
1. 較大的證明體積
雖然 STARK 提供更快速的證明,但缺點是這些證明相較於基於 SNARK 的證明體積更大。這使得在 Ethereum 上驗證 STARK 證明的成本更高,因為運算更大的證明會產生更高的 gas 費用。
2. 較低的採用率
SNARK 是零知識技術在區塊鏈中的首個實際應用,這也是為什麼它的市占率比 STARK 更高。大多數 ZK rollups 使用 ZK-SNARK,且基於 SNARK 的零知識證明的開發者生態系統與工具鏈也更為成熟。
儘管 ZK-STARK 也有一些知名的支持者,包括 Ethereum Foundation,但其採用率仍然較低。因此,開發者在使用 STARK 建構 ZK 專案時,可能會發現支援和工具較少。
有哪些專案使用 ZK-STARK?
StarkNet
作為 Ethereum 上 L2 網路運行的通用型 ZK rollup。StarkNet 讓去中心化應用程式能夠在不影響 Ethereum 去中心化程度與安全性的前提下,實現無限的可擴展性。
dYdX
基於 Ethereum 的 ZK rollup 專案(同時也是一個去中心化交易所),為加密貨幣使用者與交易者提供快速且低成本的交易、借貸與放貸服務。dYdX 將 STARK 證明作為其安全機制的一部分,確保使用者資金的安全。
Polygon Miden
基於 STARK、與 EVM 相容的 ZK rollup。雖然仍在開發中,Polygon Miden 將成為推出時首個與 EVM 相容的 ZK-STARK 協議,讓開發者能夠將原生於 Ethereum 的應用程式遷移過來,享受 L2 網路的可擴展性。
什麼是遞迴 ZK-SNARK?
遞迴 SNARK 系統為不同的交易區塊平行產生證明,並將這些證明聚合成一個提交至主區塊鏈的單一區塊證明,這意味著一個 SNARK 可以驗證其他的 SNARK。
L2 rollup 仍然只在 Ethereum 上提交一個有效性證明。然而,這個「遞迴證明」可以驗證多個 L2 區塊中的交易,一旦鏈上合約接受了提交的證明,這些交易便全部生效。

遞迴 ZK-SNARK 解決了什麼問題?
遞迴 ZK-SNARK 透過將多個 L2 證明合併為單一提交至 L1 鏈的證明,大幅增加了能夠以一個 ZK 證明最終確認的交易數量,而目前這一數量受限於 Ethereum 12 至 14 秒的區塊時間。
區塊時間指的是在 Ethereum 上挖出一個新交易區塊所需的時間。ZK rollups 每個區塊只能提交一筆鏈上交易(以及對應的有效性證明),這限制了它們能處理的交易數量。
遞迴 ZK-SNARK 與一般 ZK-SNARK 有何不同?
遞迴 ZK-SNARK 與一般的 ZK-SNARK 不同之處在於,遞迴 ZK-SNARK 可以透過將為不同 L2 區塊產生的 SNARK 合併成一個提交至 L1 鏈的單一有效性證明,來驗證多個交易區塊。
ZK rollups 會在提交至主區塊鏈之前,為每一批交易建立一個 SNARK 證明,而單一 SNARK 證明只能驗證在 L2 rollup 上進行的一個交易區塊。
ZK-SNARK 可以在不使用原始輸入的情況下,驗證已被一般 ZK-SNARK 驗證過的交易。因此,鏈上智能合約可以驗證更大量的鏈下運算,而無需將多個 SNARK 作為輸入來運行。
什麼是 Plonky2?
Plonky2 是一種新穎的證明機制,用於 Polygon Zero——這是一個提議中的Polygon ZK rollup,使用遞迴 ZK-SNARK 來增加交易處理量。
遞迴 SNARK 透過將多個證明聚合成一個遞迴證明,來擴展證明產生過程,而 Plonky2 使用相同的技術來縮短產生新區塊證明所需的時間。
Plonky2 的證明機制會平行為數千筆交易產生證明,然後再遞迴地將它們聚合成一個區塊證明。這比試圖一次產生「整個」區塊證明的傳統證明機制更有效率。
這種方法的優點顯而易見。
Plonky2 可以在 0.17 秒內產生一個遞迴證明,使其成為目前最快速的證明機制。此外,Plonky2 能夠在一般消費級設備上產生證明,解決了一般基於 SNARK 的證明者系統所面臨的硬體中心化問題。
結論
零知識證明已從保護隱私的技術,發展成為擴容技術的下一個前沿領域。隨著 ZK rollups 的蓬勃發展,可以肯定地說,ZK-SNARK、ZK-STARK 以及遞迴 SNARK 將在擴展 Ethereum 規模的過程中扮演重要角色。
Web3 開發者可以透過在 StarkNet 上建構應用程式來運用零知識技術,這是一個由 Alchemy 支援、以 STARK 驅動的 Ethereum ZK rollup。立即開始建構能夠擴展規模、且無需取捨的應用程式吧!
相關總覽
Blockchain2026年9月25日
EVM vs SVM:開發者指南
針對開發者比較 EVM 與 SVM,涵蓋帳戶模型、平行執行、手續費、程式設計與遷移,並附程式碼範例。
Blockchain2026年9月21日
在 Arc Chain 上發行 memecoin
使用 Foundry 與 Alchemy RPC 在 Arc mainnet 上撰寫並部署固定供應量的 ERC-20,以 USDC 支付 gas,或使用 Alchemy CLI 將整個發行流程交給 coding agent 處理。
Blockchain2026年9月15日
什麼是 Arc?給開發者的網路經濟作業系統解析
Arc 是 Circle 推出的開放式 EVM 相容 Layer-1,專為穩定幣金融設計。本指南說明 USDC gas、確定性最終性,以及移植合約時可能出錯的地方。

打造區塊鏈魔法
Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。