Zero-Knowledge-Proofs
為什麼 libSTARK 使用二進製欄位而不是 zk-SNARK 的素數字 段?
zk-STARKs 論文第 11 頁指出:
我們強調 ZK-STARK 也可以在素數域上執行,但我們還沒有在程式碼中意識到這一點
帶腳註
FRI 系統要求 p 包含足夠大的乘法子群 $ 2^{t+\mathcal{O}(1)} $ ; 正如林尼克定理所暗示的那樣,這樣的素數場比比皆是。
這篇有用的部落格文章解釋並實現了類似於libSTARK狀態的程式碼:
STARK“在現實生活中”(即,在 Eli 和 co 的生產實現中實現)傾向於使用二進製欄位而不是主要欄位,因為特定於應用程序的效率原因
如果二進製欄位提供某種優勢,它們提供什麼優勢?
注意:這個答案是關於為什麼二進製欄位的基礎知識 $ \Bbb F_{2^k} $ 有時比主要領域更受歡迎 $ \Bbb Z_{p} $ . 它不涵蓋 zk-STARK、libSTARK 或 FRI 可能存在的細節。
二進製欄位允許使用 XOR 而不是進位加法和無進位乘法。這使得欄位算術的計算更容易,因為進位需要程式碼(對於密碼學中使用的大參數,特別是對於包括SSE n 的SIMD實現)或電路,因此需要功率和時間。去除進位消除了在進位前瞻中的簡單性和傳播延遲之間進行權衡的需要,這對於寬字硬體實現非常重要。
對於二進製欄位,模約簡中的商的估計更簡單:它不能像普通的多位數歐幾里德除法中發生的那樣不為一,這使得常數時間的實現變得容易,消除了可能的邊通道。
通過使用該欄位的正常基表示,可以將二進製欄位中的平方簡化為位旋轉。這反過來又允許在橢圓曲線組上更有效地進行標量乘法,該橢圓曲線組是在二進制域上的一些 Koblitz 曲線上定義的。