Chia 共識協議理解 - 1

Chia 自家的資料有三份,白皮書、綠皮書,還有一個 Chia Proof of Space Construction。

白皮書太簡單,綠皮書是綜合的,講共識協議的,就 CPoSC 詳細而易懂。China Proof of Space Construction 在這裏:https://www.chia.net/assets/Chia_Proof_of_Space_Construction_v1.1.pdf

可能因爲 Chia 比較新,中文網絡上幾乎沒有詳細資料。能搜索到的幾篇,跟垃圾也差不多。有一篇論文,《關於時間存儲證明算法》 ,還不錯,在這裏:http://www.css.ccidgroup.com/CN/abstract/abstract532.shtml

Chia 和 Fil 的共識算法類似,都是用硬盤存儲作爲稀缺資源。比特幣 PoW 那是用 CPU 作爲稀缺資源。用稀缺資源來拼一片真心,構成“好人 VS 壞人” 的血肉長城。話說,古代的彩禮也是這個意思吧,用稀缺資源來阻擋夫妻反目:結個婚成本多高啊,能過就過下去吧。今天離婚率過高,還是因爲婚姻自由,沒成本了。建議結婚之前,用 Chia 鎖一萬塊硬盤。

怎麼證明你投入硬盤了呢?你說你投入了 1T 硬盤,怎麼證明呢?你得證明給某個 “甲方” 看啊。(甲方就是驗證着,乙方就是證明人)

最簡單的方法,就是 “甲方” 發送1000部電影給你,每部1G,存好。 之後呢,甲方時不時抽查,問:第3部電影第60秒處的字幕是什麼? 

要想回答的出來,那就只能在硬盤上存儲所有電影。

但這個方法有兩個瑕疵,第一呢,甲方很累,甲方也得存1000部電影,甲方不幹;第二呢,甲方這1000部電影,針對每個乙方,還必須不一樣,不然就能串供了。

改進吧。不能累着甲方。

跟甲方約定一個哈希函數,乙方自己的密鑰是 n,這個 n 甲方也知道。乙方對 0-2^{k} 做哈希,用哈希值把硬盤寫滿。這些哈希值只存在乙方的硬盤上,甲方沒有。

當甲方需要驗證奴隸乙方是否真的投入硬盤,甲方就喝着茶剔着牙,從 0-2^k  中隨機挑選一個數 x_{i} ,用哈希算出哈希值 H(x_{i} ),把哈希值給乙方,呵斥乙方:趕緊給我找出來x_{i}

由於哈希是沒法逆着算的,乙方只能從硬盤上存儲的哈希值中查找 H(x_{i} ),然後根據 H(x_{i} )的位置,確定出 x_{i} ,並返回給甲方,甲方一看,小子挺快,對的,肯定是從硬盤上查出來的。硬盤一定存儲,佔用了,

看上去很完美,空間證明就用這麼簡單的方法解決了? 慢着,想的美,沒那麼簡單的。

這種方法有個大問題,就是容易遭受 Hellman 攻擊,也就是彩虹表攻擊。 簡單說,就是前面有句話 “哈希是沒法逆着算” ,這句話是有問題的。哈希雖然沒法你着算,但可以暴力窮舉破解,當然要的算力需要拿銀河系當柴燒來發電。 不過,Hellman 老人家發明了“空間換時間” 攻擊法,後來發展成彩虹表攻擊,其實也簡單啦,說到底還是窮舉法,不過是先窮舉所有值算出來,存下後,供以後查找用。其中 “空間換時間” 大法的精髓是,用其他哈希法,對本哈希的值再次哈希,然後只存原文和最後的哈希值,這樣就用存兩個值的空間代表了多個哈希原文。

於是,最後的 Pospace 算法出場,解決了這個問題。 Pospace 有兩種算法,一種叫鋪石算法(Peddling Game),一種叫函數求逆算法。Chia 就用的這種算法。在前面所提的論文 《關於時間存儲證明算法》,對函數求逆算法的介紹,簡單到不像話。只有 Chia 的 CPoSC 講的清楚,估計對這個領域 CPoSC 是最細緻的文了。當然,也很燒腦,細節處理太多。

咱這裏就粗略介紹下吧。

如前所述,要對付彩虹表攻擊,就不能直接算哈希,要切斷 f(x) = H(x) 這麼簡單的哈希關係。打消壞人用彩虹表窮舉的夢想。

方法也很簡單,就跟地下黨防特務追蹤一樣,在小巷裏多繞幾圈就是了。

見上圖。 存儲的哈希值 H,不是簡單對一個 x_{i} 進行計算,而是對兩個 x_{1}  x_{2} ,也就是 H(x_{1} \vert \vert x_{2} )。所以,當甲方發來一個 “挑戰” Chall,乙方就要返回 x_{1},x_{2} 。難度加 1。

似乎也可以用彩虹表。根據甲方挑戰 Chall,找到了原文,然後從原文列表(原文就是 0 - 2^k )中尋找兩個可以拼成原文的,就是 x_{1} x_{2}

所以,再次增加難度。x_{1} x_{2}  不能隨便湊出來,而是要符合一個條件,用另外一個哈希算法 f_{1}() ,要求 f_{1}(x_{1} )= f_{1}(x_{2} ),這樣下來,即便有準確的 f(),也就是H 的彩虹表,還得有 f_{1}  的彩虹表。

Chia 用了 7 個表,也就是 6 次哈希和 6 次匹配,來打消覬覦者的妄想。不僅於此,在 CPoSC 中,還可以看到更多細節,比如匹配的函數 M 並不那麼簡單,比如對存儲的值做壓縮,證明質量字符串等等。

稍後再表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章