如何在現有的區塊鏈上增加隱私功能?

買賣虛擬貨幣
編者的話:近日,Qtum量子鏈發起2019全球線上隱私主題駭客馬拉松,我們收到了許多關於大賽的問題——如何將Qtum與現有的隱私技術結合?哪些技術適合移植到Qtum上?在哪些具體的結合點上可以開發?本文透過結合Qtum與Zether的思考,希望帶給你更多隱私方向的啟發。眾所周知,區塊鏈上交易和合約都處於透明狀態,不適合部分商業應用場景。Zether透過智慧合約賦予區塊鏈隱私交易的功能,幫助了鏈上資產、投票、拍賣等應用的隱私化。可是目前Zether面臨Gas過高的問題,那我們怎麼透過Qtum降低Gas和增加預編譯合約呢?1. 簡介區塊鏈網路中,儘管使用者的地址來自於隨機生成的私鑰,但地址和實體之間的對應關係還是有可能被交易所、商戶洩漏,甚至被區塊鏈資料的抓取和聚類演算法所挖掘。這種程度的隱私性限制了商業場景的應用。隱私幣的熱潮中,出現了包括Monero、ZCash、Grin和Beam在內具有隱私特性的公有鏈,而這些也已經被大多數使用者所認可。但是它們使用的方法都需要對區塊鏈系統進行較大的改動,想要在現有的區塊鏈上去實現有一定的難度。斯坦福大學的博士生Benedikt Bunz(Bulletproofs防彈協議發明者之一)、斯坦福大學教授Dan Boneh以及Visa研究部門,提出了一種基於以太坊智慧合約的隱私協議:Zether。
Zether的基本想法是透過智慧合約實現隱私交易——即隱藏交易的金額和賬戶的餘額,並最終應用於拍賣、投票等場景中。為了滿足智慧合約基於Account的特性,它提出了ElGamal encryption、Pending transfer、Rolling over等機制。為了增加Zether和其他合約的互動性,它又增加了lock/unlock的功能。為了提升Bulletproofs的效能,它使用新的Σ-Bullets進行代替。Zether提出之後,受到了廣泛的關注。JP Morgan不但將其用於自己Quorum區塊鏈系統中,而且還嘗試對其進行進一步的改進。Zether的最初設計文件位於[1],作者公佈了部分原始碼[2]。JP Morgan對其的改進文件位於[3],原始碼位於[4]。2. 原理已有的隱私交易方法,例如Confidential Transactions[5]與其衍生方法MimbleWimble[6],都是基於UTXO實現的。Zether的主要想法是將這一類方法應用到智慧合約中,實現基於Account的隱私交易。為此,它對已有的方法進行了如下修改。UTXO到Account
如果在智慧合約中實現UTXO,會佔用大量的儲存空間。所以Zether的一大主要工作是將Confidential Transactions的UTXO模型改造為Account模型。ElGamal encryptionConfidential Transactions使用了Pedersen commitments隱藏每個UTXO的金額。如果對方傳送給你一個Pedersen commitments取值錯誤的UTXO,不會影響你其他UTXO的使用。當改成Account模型的時候,需要對每個使用者接收的UTXO進行金額累加,得到最終餘額,儲存於合約中。但如果直接對Pedersen commitments進行累加,其中一個的錯誤會導致最終餘額的錯誤,影響所有金額的使用。因此,Zether採用了ElGamal encryption的方式,用接收方的公鑰來加密交易金額。這樣,接收方就能驗證加密金額的正確性,然後合入到餘額中。解決Front-running問題
交易的過程中,需要對交易金額和交易後餘額進行範圍證明。但在Account模型中,如果你發起交易的同時,另一使用者給你傳送了一筆交易,並且在你的交易之前打包進行了區塊,這樣餘額就發生了改變,你交易中的範圍證明就不再有效。因此,Zether提出了Pending transfers和Rolling over的機制。即使用者收到的交易並不立即合入到餘額中,而是週期地合入。每個週期中,當你第一次與自己賬戶互動的時候,進行接收交易合入餘額的操作。即,只有賬戶的所有者可以改變賬戶的餘額。這樣,Front-running就不會發生。重放攻擊保護假定使用者在某個特定的餘額下發起了一筆交易。當使用者再次出現這個餘額時,則這筆交易能夠再次生效。這種情況就稱作Relay Attack(重放攻擊)。為了防止Relay Attack,Zether參照了Ethereum的方式,在每個賬號上加上了一個nonce。使用者每發起一筆交易,nonce的取值就會增加。使用者的交易都需要對nonce進行簽名,這樣就保證了每筆交易都無法被relay。範圍證明Zether使用了Σ-Bullets替代Bulletproofs。Σ-Bullets是Bulletproofs和Σ-protocols的結合。它的特點是可以證明更為複雜的陳述,且證明和驗證的過程更加高效。
3. 思考評價ZetherZether的優點如下:1.基於智慧合約實現,對區塊鏈底層邏輯不需要進行改動2.基於Confidential Transactions方案修改,不需要zkSNARK那樣需要信任的初始化過程Zether的缺點如下:

1.Gas消耗太高。如圖,每次Transfer需要7188k的Gas,其中6455k消耗在橢圓曲線相關計算上。

2.沒有隱藏地址。相比MimbleWimble,Zether沒有隱藏使用者的地址。需要後續進一步的改進。

還有2點問題值得考慮:

1. Zether官方並未對論文中的實現進行完全開源,所以無法對其進行充分驗證。只能嘗試對[4]中JP Morgan的改進演算法進行驗證。
2. 需要考慮是否可以對Zether進行簡化,減少橢圓曲線的計算次數,從而減輕對節點計算資源的消耗。

Zether & Qtum

Zether舉例了4個主要的應用場景,包括Sealed-bid Auctions(私密競標的拍賣)、 Payment Channels(支付通道)、Stake Voting(權益證明投票)、Privacy-preserving Proof-of-Stake(保護隱私的PoS)。其中,前兩個是和隱私相關的商業應用場景,是Qtum當前重點關注的方向之一;後兩者增加了PoS過程的隱私性,可適用於Qtum共識機制的改進。

Zether目前Gas消耗太高,無法有效應用於Ethereum。以太坊的一些EIP[7][8]可以降低其Gas,但需要很長的一段時間來實現這些改進。另外,透過增加預編譯合約來實現隱私演算法中一些常用的演算法,也會對Zether的應用有很大幫助。這些改進都可以基於Qtum來實現。

未來計劃

首先,需要在Qtum執行Zether的智慧合約,檢視其Gas消耗以及對節點計算資源的真實消耗。其次,需要深入調研其他基於智慧合約的隱私方案,例如AZTEC[9]等。最後,可以考慮如何基於Qtum即將推出的x86虛擬機器上增加一些隱私解決方案。

參考文獻

[1] https://crypto.stanford.edu/~buenz/papers/zether.pdf.
[2]https://github.com/bbuenz/BulletProofLib/tree/master/src/test/java/edu/stanford/cs/crypto/efficientct/zether.
[3] https://github.com/jpmorganchase/anonymous-zether/blob/master/docs/AnonZether.pdf.
[4] https://github.com/jpmorganchase/anonymous-zether.
[5] https://elementsproject.org/features/confidential-transactions.
[6]https://github.com/mimblewimble/grin/blob/master/doc/intro.md
[7]https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1108.md.
[8]https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1109.md.
[9]https://github.com/AztecProtocol/AZTEC/blob/master/AZTEC.pdf.

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;