加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 波場 > Info

技術干貨 | 深入理解Zcash的零知識證明體系_END:PEN價格

Author:

Time:1900/1/1 0:00:00

前言

主要分享ZcashSapling版本的協議細節。多多指教^_^!!!

Zcash

迄今為止,Zcash總共經歷了三個版本的迭代,第四次版本升級時間預計在12.11.2019,據官方介紹,此次更新主要是縮短了出塊的時間,詳細內容見

Zcash網絡信息。

作為零知識證明的成功應用項目,讓我們帶著以下幾個問題去研究Zcash的機制:

1.Zcash是如何隱藏發送方的?2.Zcash是如何隱藏接收方的?3.Zcash是如何隱藏交易金額的?

**建議:閱讀本文前,您最好已經了解了:1.note的概念;2.零知識證明的基本概念;

Sapling

本篇主要分享ZcashSapling版本協議的主要細節,相對于Sprout版本,還是做了很多的修改和優化,在此不做詳細的對比分析。回歸到大方向,無論是Sapling版本,還是Sprout版本,交易的整體流程都可以簡要概括為以下三個步驟:1.交易者發起交易;2.交易者生成zk-proof,和signature,?驗證者驗證;3.接收者接收交易;

接下來,我們將盡量仔細挖掘每一個步驟,去探索一下,它是如何實現這三點的。

Transaction

在這里,我們不詳細介紹交易發起者是如何發起一起交易的,我們直接介紹Sapling中的交易結構,如圖所示:

????實際上,Sapling的交易結構內容不止這些,在這只是羅列出Sapling特有的一些字段及相應的解釋,完整的交易結構在協議說明書的7.1章節有詳細介紹。

在Sapling中,交易由SpendTransfer和OutputTransfer組成,分別對應隱匿的輸入和隱匿的輸出,而spendDescription和outputDescription是用來分別描述SpendTransfer和OutputTransfer的數據字段,它們被各自編碼表示成vShieldSpend和vShieldOutput字段儲存在交易結構中。接下來,重點介紹vShieldSpend、vShieldOutput、valueBlance、bindingSig四個字段表示的內容。

基于區塊鏈技術的金融科技公司Qenta將通過 SPAC 合并上市:11月10日消息,根據美國證券交易委員會(SEC)的一份文件,使用區塊鏈技術追蹤貴金屬的金融科技公司 Qenta 將在與特殊目的收購公司 (SPAC) Blockchain Coinvestors Acquisition Corp 合并后在納斯達克上市。交易預計將于 2023 年上半年完成,一旦完成,合并后的公司的初始市值將約為 9.04 億美元。

Qenta 還從盧森堡投資公司 GEM Global Yield 獲得了 1.8 億美元的資金。GEM 將為 Qenta 提供為期 48 個月的股票認購服務。Qenta 已經從貴金屬進軍數字資產領域,它專注于數字化交易,同時通過區塊鏈技術提供出處、托管和所有權跟蹤。[2022/11/10 12:45:40]

????1.vShieldSpend

一個vShiledSpend對應著一個SpendDescription,一個可靠的SpendDescription表示一個note的有效花費,它包含的內容如下圖所示:

????cv:對Inpunote的value的承諾,所謂承諾,其實就是對v值的一種隱藏,這種隱藏是單向的,不可逆的,也不可偽造;anchor:cm默克爾樹的根,用于驗證inputnote的存在性及有效性;nullifier:note的唯一性標識,用來防止同一note被重復花費;rk:用于驗證消費授權簽名;zkproof:零知識證據,在不透露相應隱私的情況下,證明note的有效性、花費note的權力、隱私地址的有效性spendAuthSig:用私鑰對spendDescription簽名,對note的花費進行授權

??2.vShieldOutput

同理,一個vShiledOutput對應一個OutputDescription,一個可靠的OutputDescription表示產生的新note的有效性,它包含的內容如下圖所示:

研究報告:DeFi未來將超越其技術基礎以太坊網絡:美國加密風投基金Digital Currency Group(DCG)公布的一項調查報告表示,去中心化金融(DeFi)運動未來會超越它最初建立的區塊鏈網以太坊(ETH),并聲稱其創始人更看好去中心化金融,而不是它目前的技術基礎,也就是以太坊網絡。報告中表示,其他網絡最終可能會破壞以太坊,而以太坊仍然是大多數DeFi企業的首選網絡。(Cryptonews)[2020/10/23]

????cv:對outputnote的value的承諾,亦滿足單向性,不可偽造性;cmu:對outputnote的承諾,承諾的數學形式是曲線上的一個點,cmu為點的u坐標;ephemeralKey:臨時公鑰,用于計算解密密鑰encCiphertext:noteplaint的密文,noteplaint是note的具體內容;outCiphertext:用來計算共享密鑰的信息密文,可用來恢復noteplaint信息zkproof:零知識證據,在不透露任何隱私的情況下,證明新生成Note的有效性

????3.valueBlance

valueBalance表示此transparentvaluepool的變化量,由SpendTransfer的v總和減去OutputTransferd的v的總和得出。當valueBalance為正數時,表示從Saplingvaluepool轉移valueBalance至transparentvaluepool,如果為負數,則執行相反的操作。valueBalance將在bindingSig中,用于驗證交易的balance屬性。

????4.bindingSig

在Sapling中,bingingSig發揮兩個作用。第一,保證了交易的balance屬性;第二,利用計算輸入和輸出notecv的隨機數rcv,來生成簽名私鑰,防止outputDescription被攻擊者進行重放攻擊

Zk-proofandSignature

在Sapling中,交易者總共要生成兩個zkproof(spendzkproof&outputzkproof)和兩個簽名(spendAuthSig&bindingSig)。下面逐個介紹。

習近平: 運用大數據、區塊鏈、AI等前沿技術推動城市管理創新:中共中央總書記、國家主席、中央軍委主席習近平近日在浙江考察時強調,要全面貫徹黨中央各項決策部署,做好統籌推進新冠肺炎疫情防控和經濟社會發展工作,堅持穩中求進工作總基調,堅持新發展理念,堅持以“八八戰略”為統領,干在實處、走在前列、勇立潮頭,精準落實疫情防控和復工復產各項舉措,奮力實現今年經濟社會發展目標任務,努力成為新時代全面展示中國特色社會主義制度優越性的重要窗口。習近平指出,推進國家治理體系和治理能力現代化,必須抓好城市治理體系和治理能力現代化。運用大數據、云計算、區塊鏈、人工智能等前沿技術推動城市管理手段、管理模式、管理理念創新,從數字化到智能化再到智慧化,讓城市更聰明一些、更智慧一些,是推動城市治理體系和治理能力現代化的必由之路,前景廣闊。習近平希望杭州在建設城市大腦方面繼續探索創新,進一步挖掘城市發展潛力,加快建設智慧城市,為全國創造更多可推廣的經驗。(新華社)[2020/4/1]

????1.spendzk-proof

spendzkproof主要是實現了在不暴露任何隱私信息的場景下,去證明txsender有權力去花費一些note,并且這些note都是有效的。輸入分為兩個部分,一個是primaryinput,一個是Auxiliaryinput。primaryinput是公開的輸入信息,Auxiliaryinput是隱私的輸入信息,只有txsender知道。具體內容如下圖所示:

根據上圖可知,spendzkproof總共證明了以下幾點:Notecommitmentintegrity:inputnode的承諾的完整性,證明cm確實根據v,rcm,gd,pkd計算出來的;Merklepathvalidity:默克爾樹驗證路徑有效性,證明cm是存在默克爾樹上的,是一個有效的cm;Valuecommitmentintegruty:inputnotev的承諾完整性,證明cv確實根據rcv,v計算出來的;Smallorderchecks:證明私有參數,gd和ak是合法的;Nullifierintegrity:Note的唯一標識,證明nf確實根據nsk,cm,pos計算出來的;Spendauthority:Note的花費權力,證明擁有花費note所需的私有參數;Diversifiedaddressintegrity:一次性地址的計算完整性。若以上等式均能滿足,則說明txsender有權力花費對應的Note,因為等式4,6,7成立;其花費的note是有效性,因1,2,3,5成立。

順豐科技加快大數據+區塊鏈技術應用 打通信息壁壘實現精準溯源:此次疫情碰上春節,快遞公司普遍停運,武漢等湖北疫情嚴重地區面臨著極大的物資運輸困難,如何安全、快速實現物資的有效配送成為順豐的當務之急。除了大數據應用,備受關注的區塊鏈技術也成為了此次各地應對疫情的新措施與新“武器”。據悉,順豐看重的正是其分布式存儲、可溯源、不可逆等特性,因此大力推進了區塊鏈技術在疫情防控預警體系、物資溯源體系建設等方面的作用。

順豐基于自身的業務發展訴求和戰略布局,目前已經實現了區塊鏈技術在藥品、農產品/食品和跨境商品等泛物資供應和運輸領域進行溯源等多個場景的應用落地,從生產和加工源頭保證品質和安全,基于順豐對物流和信息流每個環節的實時監控,結合區塊鏈對關鍵節點和全程信息的保真,從內到外實現信息溯源和業務透明。(壹點網)[2020/3/26]

????2.outputzkproof

outputzkproof主要是實現了在不暴露任何隱私信息的情況下,去使得validator相信txsender所產生的新note是有效的。輸入仍分為兩個部分,一個是primaryinput,一個是Auxiliaryinput。primaryinput是公開的輸入信息,Auxiliaryinput是隱私的輸入信息,只有txsender知道。具體內容如下圖所示:

根據上圖可以看出,outputzkproof總共證明了一下幾點:Notecommitmentintegrity:outputnode的承諾的完整性,證明cm確實根據v,rcm,gd,pkd計算出來的;Valuecommitmentintegruty:inputnotev的承諾完整性,證明cv確實根據rcv,v計算出來的;Smallorderchecks:證明私有參數,gd是合法的;Ephemeralpublickeyintegrity:臨時公鑰的計算完整性。若以上等式均滿足,則說txsender產生的新note是有效的,因為等式1,2,3均成立;等式4成立則可以保證txreceiver可以根據自己的ivk密鑰和epk去解析加密后的np,并保存到本地的集合當中。

殼牌:建立大宗商品貿易平臺,發掘區塊鏈技術潛力:據第一財經報道,中國最大的液化天然氣(LNG)供給商殼牌能源已經參與投資了多家公司,共同建立了大宗商品貿易平臺,以期發掘區塊鏈技術在此方面的應用前景。[2018/3/15]

????3.spendAuthSig

關于spendAuthSig的意義,可在兩種場景下,進行描述。第一:txsender自己產生zkproof,然后對spendDescription進行簽名。這時,如果存在一個攻擊者,想對spendDescription進行重放攻擊,則其需要重新簽名,則rk會被替換,那么驗證者在驗證spendzkproof時,就會驗證失敗;如果攻擊者不替換rk,那么spendAuthSig的驗簽就會失敗,因此spendAuthSig的存在,有效規避spendDescription的重放攻擊;第二:txsender調用第三方產生zkproof,然后自己對spendDescription進行簽名,這是Sapling版本允許的,為了讓內存和計算能力受限的一些錢包也能支持隱私交易,即使這樣損失了隱私性,因為需要把auxiliaryinput全部發送給第三方。因此,在這種情況下,為了不讓第三方惡意產生有效的zkproof,txsender需要對spendDescription進行簽名,需要注意的是,txsender簽名用的是ask,zkproof中spendAuthority的證明用的是ak,因此第三方無法產生有效的簽名,有效規避spendDescription的重放攻擊。spendAuthSig的簽名流程如下圖所示:

????4.bindingSig

如前面所說,bindingSig主要實現了兩個功能。第一:在不暴露spendTransfer和outputTransfer的v值的情況下,保證了transactionbalance;第二:防止了outputDescription被攻擊者重放,主要是利用spendDescription和outputDescription對應的用于計算cv的隨機數rcv來產生簽名私鑰bsk,這使得攻擊者無法作惡,因此簽名驗證公鑰是利用spendDescription和outputDescription對應的cv來生成的,攻擊者無法改變cv,否則zkproof會驗證失敗。bindingSig的簽名驗簽流程如下圖所示:

ReceiveTransation

txReceiver接收交易的一般步驟為:接收者遍歷每筆交易的outputDes,用自己的ivk和outputDes里的epk嘗試解密每一個Cenc,如果返回成功,則將接收到的note添加至本地的receiveSets。那么什么是Cenc呢?用ivk和epk如何去解密Cenc?

????1.什么是Cenc?

Cenc是encCiphertext,是noteplaint經過對稱密鑰加密后的密文信息,noteplaint是指交易新生成的note的內容,這些內容都是私密的。np的組成及Cenc的加密過程如下圖所示:

相關字段解釋如下DiverfiedHash:一次性參數生成器,輸入d,輸出gd,每次調用都不一樣;esk、epk:一次性私鑰、公鑰,滿足epk=esk*gd;pkd:一次性傳輸地址;np:noteplaint{memo、rcm、v、d}=>note信息{特殊字段,由交易發送者和接收者協商一致使用、生成cm的隨機數、note的面額、diversifier};KA.DerivePublic:計算公鑰;KA.Agree:計算共享密鑰;KDF:密鑰獲取函數,得到最終的加密密鑰Kenc;Sym.Encrypt:一次性對稱加密函數;其中Kenc為一次性對稱加密密鑰,Penc為編碼后的Cenc。從交易結構里可以看出,Kenc并沒有直接的當作明文進行傳輸,那么,交易接收者是如何獲取Kenc,對Cenc進行加密的呢?

2.用ivk和epk如何去解密Cenc?

首先,讓我們關注兩個等式:pkd=ivk*gdesk*gd=epk在加密的過程中,KA.Agree的輸入參數為pkd和esk,由pkd*esk=ivk*gd*esk=ivk*epk,因此在解密的過程中,如果能輸入ivk和epk,那么由KA.Agree(pkd,esk)==KA.Agree(ivk,epk)。理解了這一點,下面具體看一下Cenc的解密過程,如下圖所示:

相關字段解釋如下:

NoteCommit:cm計算函數,原始輸入為np的數據;cm:note的承諾;Extractor:抽取器,返回cm的u坐標,cm形式(u,v);若返回的cmu與outputDes里的一致,則說明證明者有計算cm的私有數據;

總結

1.Sapling中spendDescrption部分關于spendAuthSig的理解。

a.目的:證明某個人對于inputnote具有花費的權力,即擁有spendKey

b.疑問:在spendDes的zkproof中,證明花費權力如下:

spendauthority:rk=spendAuthSig.RandomizePublic(a,ak)

由于a、ak都是Auxiliaryinput,是私有數據。且ak=spendAuthSig.DerivePublic(ask),ask也是私有數據,因此若公式成立,意味著此人有相應花費權力。那spendAuthSig存在的意義是啥?

c.解答:在sapling版本,考慮到一些計算能力和內存空間受限的錢包,不具備生成proof的能力,因此可能需要第三方代理生成,此時,需要把ak、nsk等生成證明需要的私有數據公開給第三方,這樣就會損失隱私性,在這種情況下,為了保證第三方不能隨意生成一個有效的zkproof,交易發起者需要對整個spendDes用私鑰進行簽名。一個需要注意的點是:生成zkproof需要ak,不需要ask,ask是在簽名時使用。因此第三方無法生成一個有效的簽名。

2.為何由sprout的joinsplittransfer演變成sapling的spendtransfer&outputtransfer。

a.生成proof的大小變小了,joinsplit>spend+output

b.balance證明不在zkproof中實現,減少了電路的復雜性,可改善生成和驗證性能

3.spend和outputproof均為驗證balance屬性,怎么保證整體value平衡。

使用了pedersonvaluecommitment方法,它具有同態加法屬性,即在不暴露v值的情況下,驗證:

??∑vold-∑vold=vbalance

????4.Sapling接收者如何接收note。

接收者遍歷每筆交易的outputDes,用ivk和outputDes里的epk嘗試解密每一個Cenc,如果成功,則計算note并添加至receiveSets

5.BindingSig。

關于這個簽名的實現,您可參考協議說明文檔4.12章節,密鑰對不是重新生成的,而是基于cv和rcv的生成關系,實現簽名驗簽過程

6.如何隱藏交易發送者?

每筆交易的驗證公鑰都是一次性臨時公鑰,因此礦工不知道交易發起者。

7.如何隱藏交易接收者?

交易結構中不存在交易接收者的地址信息,用交易接收者的隱私地址去生成對稱密鑰,生成Cenc,交易接收者用問題4的方法接收交易。且同一交易接收者暴露給不同交易發起者的地址是不同的,為了防止交易發起者之間串通作惡。

8.如何隱藏v值?

利用pedersonvaluecommitment進行同態隱藏。

以上是個人理解,如果錯誤,還希望各位讀者批評指正。。多謝^_^。最后附上一張整體的結構圖,希望能幫助大家理解。

圖片超過2M,有需要的可以看資料私信我。

附錄

1.ZCASH官方協議說明書https://github.com/zcash/zips/blob/master/protocol/protocol.pdf

Tags:ENDPENSPEPENDETHB LendPEN價格Vesper V-DollarPENDULUM

波場
歐洲當局看國家數字貨幣:又愛又怕_BRO:Tokenswap

原文:Fortune,原文作者:GeoffreySmith來源:Odaily星球日報?譯者:念銀思唐歐洲正在認識到,未能實現金融體系的現代化不僅使其競爭力面臨挑戰,而且對其主權構成威脅.

1900/1/1 0:00:00
2140年,比特幣礦工還挖礦嗎?_比特幣:DEF

作者:AA大神 中文翻譯:Cobo錢包 網友DumbJanos問到:“等到2140年,比特幣網絡上區塊高度達到6,930.

1900/1/1 0:00:00
烏克蘭批準反洗錢法最終版本,將根據FATF指導方針規范虛擬資產交易_加密貨幣:加密貨幣市場總市值數量級是多少

據Cointelegraph12月7日報道,烏克蘭政府已經批準了反洗錢法的最終版本,該版本將根據金融行動特別工作組的指導方針對虛擬資產和虛擬資產服務提供商進行規范.

1900/1/1 0:00:00
觀點:為什么說“區塊鏈不是比特幣”類似在1800年代說“蒸汽機不是鐵路”?_比特幣:CryptoArt.Ai

前言:比特幣之所以起作用是因為它運用了一系列的技術,而不僅僅是區塊的鏈接。本文作者認為僅有區塊的鏈接并不能產生有效作用,要想有真正的影響,需要有一系列的技術組合起來才能發生作用.

1900/1/1 0:00:00
數字貨幣時代越來越近:從流通中的現鈔入手,用于小額零售場景_數字貨幣:LIB

經濟日報·中國經濟網記者陳果靜 來源:經濟日報 按照現階段的設計,央行數字貨幣DC/EP是對M0的替代,而對于現鈔是不計付利息的,因此,不會引發金融脫媒,也不會對實體經濟產生大沖擊.

1900/1/1 0:00:00
市場并不具備看多的理由,安靜看主力自救_BTC:ETH

從技術面上來看,中期調整的走勢也沒有得到充分的修復,所以現在似乎并沒有看多的理由,成交量方面也沒有什么太明顯的變化,如果一直是這樣的不溫不火的走勢的話,很有可能會一直保持這樣的趨勢往下走.

1900/1/1 0:00:00
ads