比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > BNB > Info

深度解析NEAR的私密交易功能_ICE

Author:

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

就在不久前,NEAR宣布與ZeroPool建立合作關系,后者將在NEAR協議中增加對私密交易功能的支持。目前,在NEAR的平臺上,所有交易都和比特幣和以太坊一樣,全部公開可查。也就是說,對于每筆交易,發起方、接收方和交易金額等信息都是對外公開的。采用這種方式能夠保證每個人都有權利審計賬簿,確認交易的有效性,同時還可以有效杜絕雙花現象的發生。

在很多情況下,理想的交易方式是:只有交易的參與者才能看到交易的詳細內容。而要滿足這一要求,同時保證賬簿仍然是可被驗證的是一項復雜的工作,需要用到高深的密碼學技術。在這篇文章中,筆者將從技術的角度深度解析如何在NEAR系統中實現私密交易功能,即在保證驗證交易正確性的工作不受到任何損害的情況下,使交易的各個參與方與交易金額等信息處于隱藏狀態。下面我們切入主題:

未經花費的輸出

在NEAR生態里,我們一般使用賬戶模型作為記賬方式,私密交易使用的則是UTXO(未經花費的輸出)模型。每一個UTXO都是一個元組,包含數額,接收方,salt三個元素,其中數額指交易金額,接收方其實是通證接收方的公鑰,而“salt”只是一些隨機數。

所有的UTXO都儲存在一個默克爾樹上,該默克爾樹有一個預設高度,高度值的大小決定了在該默克爾樹存在的整個生命周期內,交易池可以處理的交易數量的上限/下限。

圖:UTXO默克爾根

默克爾樹上的每一個分支(樹葉)或是一個UTXO,或是null(空值)。每一個null代表一個空位,未來可以填充進一個新的UTXO。一旦一個空值被填滿后,便不可回歸到初始狀態。所有的分支最初都是空值狀態,即都為null。

交通部副部長:推動區塊鏈等新技術與交通深度融合:12月31日消息,交通運輸部黨組成員、副部長汪洋在人民網主辦的“2021 人民財經高峰論壇”上表示,深入推進創新驅動發展,要推動大數據、互聯網、人工智能、區塊鏈等新技術與交通深度融合。[2021/12/31 8:17:03]

除了接收方,真正的UTXO不會透露給任何人。因此,默克爾樹上的分支實際上是UTXO的哈希值,這也是為什么“salt”需要存在的原因。如果沒有了它,一旦Alice知道了Bob的公鑰,就可以使用不同的數字,來驗證Bob的公鑰(哈希值)是否出現在了默克爾樹上,從而暴力破解交易金額。此時,Bob的交易也就不再匿名了。

圖: 默克爾根

交易

假設Alice想私下里給Bob轉一些通證。屬于Alice的通證存放在UTXO里,通證的接收者相當于Alice的公鑰。為了讓交易保持私密狀態,Alice用如下形式創建了一次交易:

這筆交易有2個輸入和2個輸出(輸入和輸出的確切數量不一定為2,但是必須要相同——所有交易都是如此),這里的輸入是一些既有的UTXO,對應默克爾樹上的分支;輸出則是全新的UTXO,未來將被添加至默克爾樹。

當Alice發起交易時,如果她發布的恰好是兩個正在被花費的UTXO,就會將該交易鏈接至生成這兩個UTXO的交易上。而建立交易池的目的恰恰是為了保證這樣的鏈接不能被建立,以確保輸入型UTXO不會被發布出去。那么問題來了,如何才能確保在交易的過程中,驗證節點可以確認一筆交易花費的是已有的UTXO,同時又不會對外公布正在被花費的真實的UTXO呢?

開源-聯盟、ChainUP與四川鏈存科技有限公司達成深度戰略合作:據官方消息,開源-聯盟、ChainUP宣布與四川鏈存科技有限公司達成戰略合作,雙方將在IPFS分布式存儲、Filecoin生態建設等方面展開深度合作,共同推進IPFS分布式文件技術、5G技術、云與邊緣計算技術、Al大數據及區塊鏈技術等創新技術應用落地。

開源-聯盟 f040665 屬于開源礦池節點,開源礦池致力于研發分布式存儲,以為用戶提供分布式存儲解決方案為使命,產品包括分布式存儲服務器、智能應用系統開發、算力云和分布式存儲服務器托管運維等服務,目前擁有成熟的技術研發體系和完整的產業生產供應鏈。[2021/1/7 16:39:46]

與眾多隱私保護交易引擎一樣,ZeroPool使用了一種非交互性的零知識證明(zk-SNARK)來實現私密交易。針對某種特定計算的零知識證明能夠支持以下形式的密碼證明:

給定的公開輸入1,公開輸入2…

已知某種私密輸入1,私密輸入2…

可得到[某種結論]

此類知識證明的工作原理不在本文討論范圍之內。有關此問題的更多信息,可以點擊該博客鏈接查詢。如果想以一種最簡單的方式達成私密交易,知識論證可以具有以下形式:

給定默克爾根以及兩個哈希值OUT_HASH1和OUT_HASH2,

已知有四個這樣的UTXO:IN1,IN2,OUT1,OUT2,兩個默克爾證明P1和P2以及一個私鑰x,

OUT1和OUT2對應的哈希值分別為OUT_HASH1和OUT_HASH2;IN1和IN2中的接收者相當于與x對應的公鑰X;merkel證明P1和P2是在默克爾根已確定的默克爾樹中包含IN1和IN2的有效證明;IN1和IN2中的數量之和等于OUT1和OUT2中的數量之和。

鏈上ChainUP WaaS聯盟與AI PICK達成深度戰略合作:據官方消息,鏈上ChainUP WaaS聯盟與AI PICK宣布達成深度戰略合作,雙方就區塊鏈技術應用落地、區塊鏈金融服務、資金安全等方面深度合作。

AI PICK是一個次世代的智能投顧平臺,于2020年10月開啟公測,目前已突破2000個有效用戶。AI PICK通過AI人工智能算法技術,顛覆傳統金融中介化和資金集中化的投資理財方式,引領金融行業的重大變革。在AI PICK中,平臺不接觸用戶的數字資產,數字資產永遠由用戶自己保管。 AI PICK的理念是:讓交易更簡單更智能。

WaaS聯盟是鏈上ChainUP集團依托3年時間所服務的400多家交易所經驗,將底層資產托管和200+主鏈幣種錢包封裝而成的一套完整的服務,包含主鏈資產托管、節點服務、主鏈定制開發、熱門幣種一鍵接入、共管錢包、借貸理財等多種功能服務,通過開放錢包API與SDK,幫助交易所、項目方、媒體等企業快速高效接入,實現資產云端安全托管,聯盟內部轉賬0手續費即時到賬。目前已有超過500家企業加入鏈上ChainUP WaaS聯盟。[2020/12/9 14:41:04]

交易則包含merkle_root,out_hash1,out_hash2,以及知識證明。交易中的任何內容都不會暴露輸出型UTXO的接收者,也不會將輸出型UTXO鏈接到特定的輸入型UTXO。并且,連交易金額這樣的信息也不會在交易過程中對外展示。

舉例說明:如上圖所示,假設該默克爾樹的第一個和第三個UTXO以Alice為接收者,對應的金額分別為$100和$17,Alice知道這兩個UTXO,但是對樹上的其他任何UTXO都未知。如果她想向Bob發送$42,通常的做法是她會首先創建一筆交易,這筆交易會使用她的兩個UTXO作為輸入,同時創建兩個輸出:——一個向Bob發送$42,另一個將剩下的75$返給她自己。她將屬于Bob的UTXO告訴了對方,但是其余的UTXO只有她自己知道,旁人無從知曉。并且,甚至連輸入型的UTXO的哈希值也是保密的。

聲音 | 深圳市委書記:深圳將加快區塊鏈等技術深度應用,推動技術融合、業務融合、數據融合:據人民網深圳報道,12月1日,深圳建設中國特色社會主義先行示范區“數字政府”高級別研討會舉行。深圳市委書記王偉中致辭表示,深圳將切實發揮建設粵港澳大灣區和支持深圳建設中國特色社會主義先行示范區“雙區”利好疊加優勢,對標最高最好最優,率先探索完善數據管理和安全保護機制,加快大數據、人工智能、5G、區塊鏈等先進技術深度應用,推動技術融合、業務融合、數據融合,實現跨層級、跨地域、跨系統、跨部門、跨業務的協同管理和服務,打開數字世界新空間,增強數字經濟新動能,拓展數字生活新內涵,努力建設具有世界一流水平的新型智慧城市標桿市,用數據為國家治理體系和治理能力現代化賦能,更好滿足人民對美好生活的向往,為建設網絡強國、數字中國、智慧社會作出新的更大貢獻。[2019/12/2]

智能合約負責對交易池進行日常維護,一旦該合約收到了一筆這樣的交易,便會對知識證明進行驗證。驗證無誤后,就會將兩個新的UTXO添加至默克爾樹上。

Bob從Alice處收到UTXO后,會等待一段時間,直到UTXO的哈希值被默克爾樹收錄之后,他才從真正意義上獲得了這些通證。

這種方式雖看似簡單,但存在一個問題,即相同的UTXO可能會被重復使用。由于除了Alice沒有人知道輸入型UTXO的哈希值,交易池便無法將已消耗的UTXO從默克爾樹上移除,因為連它也不知道先從哪個開始移除。

如果Alice創建2個不同的零知識證明,但是消耗了同樣的2個輸入,每個人都能驗證兩筆交易消耗了一些原本存在于默克爾樹上的UTXO,但是卻無法得知兩筆交易中消耗的UTXO其實是一樣的。為了解決這個問題,我們引入了nullifier的概念。簡單來說,nullifier是UTXO的哈希值,同時也是UTXO接收者的私鑰。然后,我們將交易的知識證明更改為以下內容:

數字錢包Dbank將與360繼續深度合作:360上周首次發布針對區塊鏈領域的安全解決方案,今日又發現了EOS史詩級安全漏洞。作為360在數字錢包領域的首家戰略合作方,Dbank表示將和360就安全和DAPP實現場景等領域繼續展開深度合作。雙方將結合360安全大腦,深度挖掘用戶在數字錢包領域的需求,加固核心代碼,同時拓展EOS超級節點安全解決方案和區塊鏈應用落地場景。

Dbank核心安全技術由360支持,具備包括包括“手機病檢測”、“數字證書安全”、“虛假合約地址識別”等10層安全防護。同時有便捷的“EOS一鍵映射”功能。[2018/5/29]

給定默克爾根,以及兩個哈希值OUT_HASH1和OUT_HASH2,另外兩個哈希值NULLIFIER1和NULLIFIER2,

OUT1和OUT2對應的哈希分別是OUT_HASH1和OUT_HASH2;IN1和IN2中的接收者相當于與x對應的公鑰X;默克爾證明P1和P2是在有確定的默克爾根的樹中包含IN1和IN2的有效證明;IN1和IN2中的總和等于OUT1和OUT2中的總和;并且hash(IN1,x)等于NULLIFIER1,hash(IN2,x)等于NULLIFIER2

請注意,任何花費特定UTXO的交易計算的都是相同的NULLIFIER值,因為NULLIFIER僅取決于UTXO的哈希值和UTXO中公鑰對應的私鑰。由于上述知識證明中的NULLIFIER是在公開的“給定”語句(Clause)中,因此如果曾經發布過使用相同UTXO的兩筆交易,每個人都可以得知它們具有相同的NULLIFIER,并舍棄后出現的那筆交易。同樣值得注意的是,只要用于計算它的哈希是抗原像攻擊的,NULLIFIER就不會顯示有關輸入型UTXO或接收方私鑰的任何信息。

通證充提

上述類型的交易可用于池內資產的轉移,但對于一個功能完善的交易池來說,必須同時支持池內外的資金轉移。因此,我們在私密交易的格式中加入了一個額外的字段,稱為delta,如此一來,輸入型UTXO的總量就等于輸出型UTXO數量+delta。

給定默克爾樹,兩個哈希值OUT_HASH1和OUT_HASH2,另外兩個哈希值NULLIFIER1和NULLIFIER2,以及一個delta值。

已知對于IN1,IN2,OUT1,OUT2計4個UTXO,兩個默克爾證明P1和P2,還有一個私鑰x,

則OUT1與OUT2對應的哈希值分別為OUT_HASH1和OUT_HASH2;IN1和IN2中的交易接收方相當于與私鑰x對應的公鑰X;默克爾證明P1和P2是有給定哈希根的包含IN1和IN2的merkel樹的有效證明;IN1和IN2數量等于OUT1,OUT2數量總和再加上delta值;hash(IN1,x)等于NULLIFIER1;hash(IN2,x)等于NULLIFIE2R。

需要注意的是,delta在給定語句中,因此是公開的。NEAR在處理上述類型的交易時,若delta值為負(即一筆私密交易中輸入通證比輸出通證少),多出來的通證會存入交易發起方的賬戶中;若delta值為正(即一筆私密交易中輸入通證比輸出通證多),則只有在剩余通證被補足時交易才有效。

交易手續費

私密交易禁止在新創建的UTXO和曾被用作交易輸入的UTXO之間建立聯系。不過對于任何將被記錄在NEAR鏈上的交易而言,交易的發出者都必須支付gas費。也正是因為這個原因,該發出者的賬戶中必須有一定數量的NEAR通證。該賬戶可能不知通過什么手段獲得了一些NEAR通證,從而在上文提到的兩種UTXO之間創建了某種聯系,私密交易的目的會因此大為受挫。

為了解決這個問題,我們在系統中引入了中繼者(Relayer)的概念。假設Alice想給Bob發送一筆交易,并打算讓Ryan充當中繼者。這筆交易的gas費用小于?1,而Alice愿意支付給Ryan?1,讓Ryan幫他把交易上鏈。

Alice甚至可能都沒有NEAR賬戶,此時的她創建了一筆私密交易。在這筆交易中,作為交易輸入的兩個UTXO的資金總額比作為交易輸出的UTXO的資金總額正好少?1。剩余的?1被提取至交易提交方的賬戶中。Ryan從Alice處收集到這筆交易信息,驗證其有效性,并用自己的賬戶提交交易。整個過程消耗的gas費小于?1,但是他最后卻得到了?1的酬勞 。

Alice最終在沒有暴露自己身份的情況下提交了一筆交易,Ryan則獲得了一筆小額的回報。請注意在交互中,任何一方都無需取得他人的信任:Ryan不能以任何形式篡改交易,留給他的只有兩個選擇:要么提交,要么放棄。因此,對于Alice來說最大的風險就是她的交易可能沒有被提交(這種情況下她可以請另一個中繼人)。由于Ryan在交易提交之前就驗證了交易,因此除非另一個中繼人捷足先登,否則Ryan便不會有花費了gas卻得不到回報的風險。

未來發展

上文描述的這種模型已經是一個可以完全滿足私密交易的交易池了。接下來,筆者會從幾個方面簡要描述一下如何提高交易池的安全性或使用性。

在我們描述如上交易的過程中,筆者曾提到當Alice悄悄將通證發給Bob的同時,也將新創建的UTXO分享給了對方。這一過程的實現需要Alice與Bob在鏈下交流,而這是我們不希望看到的。為了解決這一問題,我們可以對交易池進行擴展,使其可以存儲所有的用交易接收方的公鑰加密的UTXO。當Alice將資產轉給Bob并創建2個新的UTXO后,Bob作為接收方,其公鑰會被Alice用來對UTXO加密。

再來看Bob,他監控著所有新創建的UTXO,并試著用自己的私鑰對其逐個解密。一旦他試到Alice創建的UTXO,則解密成功——這樣,Bob就完全通過NEAR特有的鏈上溝通的方式發現了他們的UTXO。

解耦簽名與證明

當Alice創建一筆交易后,她需要使用自己的私鑰信息,設計一個復雜的證明。因此,計算該證明的機器需要獲取她的私鑰,而這是我們不愿意看到的。總的來說,私鑰最好用某些外部的硬件設備加以存儲,這類硬件的功能通常會比較單一,比如有些產品只有消息簽名這一個功能。對于這種硬件來說,運算知識證明通常在他們的功能之外。

為了適配這些硬件,我們生成3個密鑰,而不是傳統的公私鑰對:私鑰,解譯鑰和公鑰。在這種情況下,用公鑰加密的某條信息可以使用解譯鑰來解密。同理,私鑰簽名可以通過解譯鑰來驗證。只有公鑰是大家都能看到的。解譯鑰被儲存在一個運算交易證明的設備上,而私鑰被儲存在外接設備中,該設備只能對信息進行簽名。

我們可以使用以下方式對知識證明做一些修改:

給定默克爾根,兩個哈希值OUT_HASH1和OUT_HASH2,以及另外兩個哈希值NULLIFIER1和NULLIFIER2

已知有IN1,IN2,OUT1,OUT2四個UTXO,兩個默克爾證明P1和P2,一個解譯鑰d和一個簽名s。

OUT1,OUT2對應的哈希值為OUT_HASH1和OUT_HASH2;IN1和IN2中的接收方相當于和d對應的公鑰X;默克爾證明P1和P2是給定哈希根的默克爾樹包含IN1,IN2的有效證明;IN1與IN2數量之和等于OUT1與OUT2的數量之和;hash(IN1,d)等于NULLIFIER1;hash(IN2,d)等于NULLIFIER2,s是message(IN1,IN2,OUT1,OUT2)的簽名、并對于d有效。

當Alice想要創建一筆交易時,她會使用硬件設備簽名(IN1,IN2,OUT1,OUT2),然后使用簽名s在只能獲取解譯鑰的機器上生成證明。需要注意的是,如果無法使用硬件設備,Alice就無法生成簽名s,也就不能花出這筆錢——即使獲取了用于生成證明的機器的使用權限也不行。

支持更多通證

私密交易并不僅僅局限于NEAR通證。開發人員只需作輕微調整,便可讓交易池可以支持任何發行在NEAR平臺上的通證。具體的實現方式本文不再贅述。

Tags:OUTLICICEALICEPloutozHyperbolic Protocolflokiceo幣總量AliceNet

BNB
畫門后休整 BTC白盤維持震蕩_SPR

文章開始前,先吹一波牛,走波關注!前期大餅崩盤前,本人在03月04日參加金色沙龍、即BTC血崩前,就看空2020減半!以及早在大半年之前,2019.09.03比特幣還是一萬刀以上的時候.

1900/1/1 0:00:00
Kava宣布將于6月10日上線DeFi產品 計劃撥付384.8萬KAVA用于獎勵_KAVA

6 月 10 日,Kava 的 DeFi 借貸平臺將正式上線,首次向 BNB 持有者提供 DeFi 服務.

1900/1/1 0:00:00
北京市政府常務會議研究區塊鏈創新發展行動計劃_APP

6月9日下午,市政府召開常務會議,研究本市區塊鏈創新發展行動計劃等事項。市委副書記、市長陳吉寧主持會議。會前首先進行學習,邀請北京微芯邊緣計算研究院院長董進就“區塊鏈技術與價值”作專題講解.

1900/1/1 0:00:00
灰度基金減半后買入數萬個BTC?假的_ETH

如果要問2020年哪一個機構最受人矚目?灰度基金無疑是很多人給出的答案。據統計,從今年2月到5月,灰度每天購買約607個BTC,其比特幣信托基金增加了約60762BTC.

1900/1/1 0:00:00
一年時間內用戶量翻3倍:主流DEX到底做了什么?_TOKEN

去中心化交易作為以太坊區塊鏈技術的主要應用領域之一,從概念誕生的開始,就被大家賦予了極高的期望。然而,隨著 18 年幾家去中心化交易所落地,平平的交易數據仿佛讓大家感受到了現實的骨感.

1900/1/1 0:00:00
工信部第五研究所區塊鏈創新團隊負責人:協助江漢區打造區塊鏈產業創新發展示范區_區塊鏈

近日,工業和信息化部電子第五研究所區塊鏈創新團隊負責人、高級工程師相里朋“云連線”有關人員,為武漢支招獻策.

1900/1/1 0:00:00
ads