当前,主流的隐私保护技术有三类:CoinJoin、RingConfidentialTransaction和ZeroKnowledgeProof。CoinJoin通常需要依赖中心化或半中心化的服务,完全去中心化的方案较为复杂,难以实现无条件的隐私保护。我们也研究了零知识证明技术。零知识证明被应用在许多项目上,但经过研究发现,这种技术有两个弊端,可能严重影响使用体验。首先,零知识证明在WorldState账户模型上会浪费存储空间和计算效率,因为需要保存和计算所有历史交易,并额外保存密钥指纹来防止双花。其次,一笔转账需要四笔交易才能完成,流程相对繁琐。
经过全面研究,我们决定采用RingConfidentialTransaction技术。这种技术的优势在于只需要两次交易就能完成,并且提取完毕的环数据可以从WorldState中直接删除,不会浪费存储空间。同时,它还有良好的延展性,既能保护交易对手方,又能保护交易金额。更详细的技术说明请参考我们的交易隐私WhitePaper。
我们目前已经实现了RingTransaction,并即将在主网上线。具体方法是,发送方发起一笔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曲线,该曲线在安全性和性能方面有很好的平衡,Ethereum中也内置了类似的曲线。
下一步,我们将实现RingConfidentialTransaction和StealthAddress,用于保护交易金额和简化交易方式,将RADR上的交易隐私保护提升到目前已知的最高等级。