最近在研究零知識證明,也就是大家常說的zkp。

以前的我只覺得zk比op好,比如什麼更加快速便捷,更加安全之類的,這些泛泛而談其實忽略了一個重要的點,那就是爲什麼比op好,zk的本質是什麼?

zk所用的一個證明方法叫做snark,這個證明方法很有意思,證明者prover會生成一個證明,來表示完成了某項計算,而驗證者verifier則只需要驗證這個證明的正確性即可,就能確認這件事真的發生了。

這個描述可能有點抽象,我用一個比較形象的比喻來描述「證明」這件事。

當你有一個AI大模型需要計算,但是手頭沒有相應的算力工具時,這時候小明出來了,他說他有機器願意幫你算,只要你給他費用就行。十天後,小明給了你一個AI結果「明天的股市會跌」,這時候你如何判斷小明有沒有真的幫你算呢?還是說隨便告訴你一個結果就說算了,換句話說「小明是不是值得信任?」。最好的驗證方式是,你找另一個人也算一遍,比較兩個人的結果,但是這就會導致雙重費用,甚至說自己直接算,畢竟自己纔是最靠譜的,那就引入另一個問題,你缺少工具沒法進行這個AI複雜計算。

那如何解決這個信任危機問題呢?

聰明的數學家發明了一種叫做snark的證明方式,這種方式的特點是會將計算過程的每一步記錄下來,將這些中間結果通過一系列的代數變化形成一個小巧的proof,也就是所謂的「證明」,這個證明的特點就是和計算過程強相關,如果計算過程和預期不符,那麼這個proof就會發生變化。

而作爲驗證者,也就是你,只需要證明這個proof是正確的,就能保證小明確實按照我說的去做了,並不是瞎編一個結果給我。

還得提醒一下,生成proof的過程很複雜,但是驗證proof的過程很簡單,也就是說作爲一個驗收者來說,我只要確保proof對,那麼這筆交易就是合理的,大大節省了驗證的時間花銷,在這個例子就是說,你不需要去自己另找一個人再算一遍。

所以本質上來講,zkp解決的是人與人的信任問題。沒有第三方作爲監督參與的情況下,兩個陌生人如何進行有效的溝通和交易,zkp給了一個很好的解決方案。

同樣,映射到區塊鏈世界裏,爲什麼layer2要用zkp,因爲複雜的計算可以放到鏈下,而上鍊的過程只需要驗證一個proof即可,甚至只需要存一個proof即可,這對於寸土寸金的主網區塊來說,無異於是擴容的最佳方案之一。

透過對zkp的理解,我意識到兩件事:第一,zkp不光能解決以太坊擁堵的問題,還能給實際生活中提供安全證明的方法,加速人與人之間的合作;第二,人的大多數創新其實都是在修復人本身的劣根性,如果沒法修復就去迎合,比如人天生會欺詐,所以需要引入技術來避免,人天生就懶惰,所以怎樣讓人越懶,越爽就會有商機。