日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導讀] 最近又重新看了看ZCash的白皮書。話說,看ZCash的白皮書需要一點耐心,144頁的白皮書形式化太多,通篇就只有一張圖(地址和Key生成關系圖)。 經(jīng)過Sprout和Sapling兩次

最近又重新看了看ZCash的白皮書。話說,看ZCash的白皮書需要一點耐心,144頁的白皮書形式化太多,通篇就只有一張圖(地址和Key生成關系圖)。

經(jīng)過Sprout和Sapling兩次升級,目前ZCash中Transaction中集成了三種交易:1/ 透明交易 2/ JoinSplit(Sprout)3/ Spend/Output (Sapling)。

1. Sprout

Sprout使用JoinSplit結構表示一筆交易。JoinSplit中的Vold和Vnew實現(xiàn)了隱私和透明交易的交易金額的平衡。rt是Note commit形成merkle樹的樹根。nf和cm分別是Nullifier和Note的commitment(在Sprout都是使用的sha256算法)。Note,Note Plaintext, 以及Nullifier相對直白。

1.1 JoinSplitSig

JoinSplitSig對整個TransacTIon數(shù)據(jù)使用私鑰進行簽名,保證TransacTIon的數(shù)據(jù)不被篡改。簽名的數(shù)據(jù)要被驗證,必須提供“公鑰”。在ZCash的框架中,隱私考慮,轉賬雙方的“公鑰”都不能公開。為了能提供簽名,就只能重新生成臨時的“公鑰”/“私鑰”對(JoinSplitPublicKey, JoinSplitPrivateKey)。用JoinSplitPrivateKey對整個TransacTIon的“SIGHASH_ALL“的結果進行簽名,生成JoinSplitSig。

1.2 hsig 和 h

hsig是一個比較有意思的設計。試想,如果只有JoinSplitSig機制,雖然保證了TransacTIon數(shù)據(jù)的完整性,但并沒有保證簽名本身不能變。完全可以在Transaction其他數(shù)據(jù)不變的情況下,重新生成JoinSplitPublicKey,從而生成新的JoinSplitSig。hsig就是為了解決這個問題。hsig“綁定”所有的nf的數(shù)據(jù)和當前使用的JoinSplitPublicKey。并且,使用每個nf中對應的“私鑰”,對hsig進行hash計算,生成h。也就是說,每個nf對應的私鑰都“授權”使用當前的JoinSplitPublicKey。這樣,JoinSplitPublicKey就不能隨意修改,要做改動,必須知道每個nf對應的“私鑰”。

1.3 Cenc

Sprout使用的是”In-band secret distribution“。簡單的說,需要傳輸給轉賬對方的信息(Note plaintext),加密后存儲在鏈上。采用這種方式,轉賬對方不需要實時在線,任何時候都能同步鏈上數(shù)據(jù)確認交易。和JoinSplitSig一樣的思想,轉賬對方的信息不能直接作為加密密鑰。先隨機生成epk/esk,再和pkenc結合,生成加密密鑰。

2. Sapling

Sapling是一個比較大的升級,零知識證明的性能提升了十幾倍。Sapling不用JoinSplit結構表示交易,而是用SpendDescription和OutputDescription直接表示“花費”和“支出”。一個比較重要的設計是:valueBalance,SpendDescription中的cv以及OutputDescription中的cv都是value的同態(tài)commit。所謂的同態(tài)commit,就是value的計算后的commit和commit再計算的結果相等。

2.1 spendAuthSig

SpendDescription中的spendAuthSig是對整個SpendDescription進行簽名。和Sprout簽名的思想類似。先隨機出rsk和rk密鑰對,再使用rsk進行簽名,同時把rk放在SpendDescription中。

2.2 Cenc和Cout

Sapling同樣使用的是”In-band secret distribution“。Cenc是對Note Plaintext進行加密的結果。和Sprout類似,加密的密鑰由esk和pkd生成。Sapling比Sprout設計了更多的密鑰“權限”。眾多密鑰中,有個ovk(outgoing viewing key),也就是擁有ovk,可以查看outgoing的交易。原理很簡單,就是用ovk將esk和pkd加密,生成Cout。

2.3 bindingSig

bindingSig也是整個Transaction數(shù)據(jù)的簽名。簽名使用的公鑰/私鑰(bvk/bsk)是通過cv以及生成cv時采用隨機數(shù)生成。因為同態(tài)commit的算法保證bvk=bsk*R (R是生成元),所以,bsk和bvk存在公鑰/私鑰關系。bingdingSig就是用bsk對整個Tansaction簽名的結果。

總結:

ZCash的白皮書形式化描述比較多,看完整理需要耐心。ZCash已經(jīng)經(jīng)過了三個階段:Overwinter,Sprout和Sapling。畫圖總結了Sprout和Sapling的交易數(shù)據(jù)結構,更直觀理解ZCash的隱私設計。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉