目前Filecoin網路每天會產生6-7百萬zk-SNARK證明量,其中每個證明有超100萬算法方面的容量,為了保證網路安全,Filecoin改進并大量優化了zk-SNARK以滿足目前的需求,
零知識證明
零知識證明中最重要的加密技術就是zk-SNARK,它能讓證明者有效地說服驗證者其知道某種資訊,卻無需透露此資訊本身,這一屬性保證了區塊鏈環境中的安全和隱私互動,目前Filecoin所依賴的主要屬性是其效率,zk-SNARK的誕生讓使用更少空間去證明存儲有效性成為可能。
用一個簡單的例子來說明一下:阿里巴巴被強盜抓住,為了保命,他需要向強盜證明自己擁有打開石門的密碼,同時又不能把密碼告訴強盜。他想出一個解決辦法,先讓強盜離開自己一箭之地,距離足夠遠讓強盜無法聽到口令,足夠近讓阿里巴巴無法在強盜的弓箭下逃生,阿里巴巴就在這個距離下向強盜展示了石門的打開和關閉。
這個整個過程可以形象化理解為零知識證明,證明者能夠在不向驗證者提供任何有用資訊的情況下,使驗證者相信某個論斷是正確的,
應用
目前最廣泛使用零知識證明場景的項目是zcash的隱私方向,Zcash項目,大家都知道是“隱私交易”,Zcash代表了零知識證明中zk-SNARK的一個應用方向:隱私,隱私有不同的程度,ZCash的隱私交易指的是隱藏交易的發送方,接收方以及交易金額。
Filecoin是存儲行業比較熱門的項目,去中心化的存儲,有個核心問題,怎么證明K工真實有效的存儲了指定的數據,Filecoin是通過復制證明以及時空證明算法實現(其中就包括零知識證明)。復制證明通過零知識證明,證明每一層的數據都經過VDE計算生成,并提供最后結果的Merkle樹的樹根,
在數據處理并存儲后,每隔一段時間,需要提交存在性證明,也就是時空證明的算法。時空證明算法的基本思想,隨機挑選一個Merkle樹的葉子節點位置,需要提供出一條Merkle路徑的零知識證明。
復制證明的算法,通過零知識證明證明數據已經正確處理,并提供了處理后數據形成的Merkle樹的樹根,時空證明,即每隔一段時間,隨機抽選一個葉子數據,需要K工在一定的時間內提供從該葉子數據到Merkle樹根的路徑證明。如果,處理完的數據沒有保存在一個可靠的存儲上,無法在合理的時間內重建整個Merkle樹,也就無法提供證明。
Filecoin的改進
為了支持 Filecoin 所需的容量,現在運行了一個新的Powers of Tau Ceremony,原本在Zcash運行的Ceremony基礎上將支持的容量增加了 64 倍!
zk-SNARK 在生成成為瓶頸時,支持證明生成的核心操作是高度可并行化的,所以Filecoin利用現代通用 GPU 計算從 CPU 卸載它們。
這允許更高的吞吐量,同時也創造經濟效率,通過將可并行化的工作轉移到相對便宜的并行處理器上,Fileoin可以讓主內存和 CPU 空閑,用于創建數據挖掘者必須證明的高度順序和內存密集型工作負載。
為了提高多個 zk-SNARK 的驗證速度,實現了批量驗證,因此Filecoin實施了SnarkPack,這允許K工將許多 zk-SNARK 聚合為一個組合證明,這種優化不僅在規模上將驗證時間減少了 10 倍以上——它還通過減少必須提交給鏈的每個證明的平均字節數來減少鏈帶寬。
總結
為了實現這一目標,Filecoin建立了對內積參數的研究,并合作擴展以支持Filecoin網路的需求,而無需新的可信設置。Filecoin通過調整技術以使用兩個現有的 Powers of Tau 可信設置安全地應用來實現這一點。通過此舉改進,說明Filecoin克服了證明障礙以實現規模突破并成為全網最大的zk-SNARK證明網路,
文章來源:原力觀察