保护交易隐私在密码学货币的发展历史上一直是一个很重要的分支,BIP32、CoinJoin、Zerocoin、Monero、Grin等等都是这个技术方向上的代表。过去,这些技术主要应用在UTXO模型(如BitCoin)的密码学货币上。如何在World State账户模型的RADR上实现更好的交易隐私保护,一直是区块链实验室的研究课题。同为World State账户模型的Ripple和Ethereum在这个方向上也一直进展缓慢没有实质性的突破,RADR可以说是第一个在World State账户模型上实现了无条件的交易隐私保护的密码学货币。
当下,主流的隐私保护技术有三类,CoinJoin、Ring Confidential Transaction、Zero Knowledge Proof(零知识证明)。其中,CoinJoin通常需要依赖一个中心化或半中心化的服务,完全去中心化的方案非常复杂并且要求较为苛刻鲜有实现,很难达到无条件的隐私保护,在一段时间的研究之后被宣告排除。我们也投入了很多精力研究零知识证明。零知识证明这个技术被应用到了很多项目上,但经过一段时间的研究之后我们发现这个技术也有不少弊端,其中有两个弊端我们认为会严重影响使用体验。第一个弊端是在World State账户模型上会造成存储空间和计算效率的严重浪费,这是由于零知识证明的所有历史交易都必须保存和用于计算,同时额外需要保存密钥指纹防止双花。第二个弊端是,一笔转账需要通过四笔交易才能最终完成,首先需要将明文余额转为零知识余额,然后声明一个零知识余额转出,之后接收方声明一个零知识余额转入,再将零知识余额转为明文余额。
经过全面研究,我们决定采用Ring Confidential Transaction技术,这个技术的优势在于只需要两次交易就可以完成,提取完毕的环数据可以直接从World State里删除,不会浪费存储空间,同时还有很好的延展性,保护交易对手方的同时也可以保护交易金额。更详细的技术说明参见我们关于交易隐私的WhitePaper。
目前我们已经实现了Ring Transaction,能够消除交易双方的关联性,并即将产品化在主网上线。具体方法为,发送方发起一笔RingDeposite交易向环存入相应金额,当环累计一定数量的交易(相同金额)后即可发起RingWithdraw,环上没有任何证据可以证明某两笔RingDeposite和RingWithdraw之间存在关联性,从而保护该环内交易多方的关联性隐私。这个在WhitePaper里有详细的阐述。相关代码见 https://github.com/radrbiz/radard/blob/master/src/ripple/app/tx/impl/RingDeposit.cpp和
https://github.com/radrbiz/radard/blob/master/src/ripple/app/tx/impl/RingWithdraw.cpp 。环签名采用的曲线为AltBn128,代码见 https://github.com/radrbiz/radard/blob/master/src/ripple/crypto/impl/AltBn128.cpp ,这个曲线较好的平衡了安全性和性能,Ethereum中也内置了类似的曲线。
区块链官网声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。