LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 雷达(RADR)中间层的环机密交易技术的深度剖析:

雷达(RADR)中间层的环机密交易技术的深度剖析:

2020-08-18 雷达通行企业联盟 来源:区块链网络

1.Introduction

环机密交易(Ring Confidential Transaction)采用CryptoNote协议。需要实现:(1)去中心化;(2)匿名;(3)隐藏交易金额。 其中(1)是通过proof-of-work“挖矿”机制来实现的。(2)是通过一次性密钥实现的。(3)是通过多层可链接自发匿名群签名(MLSAGS)并结合Pedersen Commitment实现的。另外还应抵抗“二次花费”攻击,并进行性范围证明。

1.1 一次性密钥:

P=H(rB),其中P是交易的一次性密钥,H是哈希函数,B是转账接收方的公开密钥,r是发送方选取的随机数。发送方阿把rG发送给接收方,接受方由rG的到brG=rB,进而计算出P。即可通过P来检验交易的有效性。

1.2 隐藏交易金额:

将Confifidential Transactions加入MLSAGS。

1.3 防止两次花费:

通过链接机制实现,链接机制通过I:“key-image”实现:

在签名的链接阶段,将相同的I进行链接,第二次签名作废,避免用同一个密钥对进行两次环签名,即:每个密钥对只允许签名一次,从而避免了重复花费。

1.4 范围证明:

由于货币金额是定义在有限域上的,所以攻击者可以在满足输入等于输出的情况下,通过输出溢出(输出大于有限域的阶)来产生巨额自由货币(有限域阶的整数倍)。比如有限域的阶是10,输入是1,输出是5和6,虽然满足(5+6)mod 10=1,但发生溢出,即5+6大于10,故凭空多了10个货币。所以检测并阻止溢出而产生自由货币是十分必要的。

范围证明就是证明每一个输出都在某一正整数范围内。溢出可分为两种情况:(1)存在一些较大的输出(等价于绝对值较小的负输出)(2)大量较小的输出。可以通过设置有限域的阶+范围证明来共同检测和阻止这两种情况。通过把有限域的阶设置得足够大(比如2得256次方),把范围证明中的正整数设置得足够小(比如2的64次方,大于系统内货币总额即可),使得(1)时范围证明不通过,(2)时因输出个数巨大而不可行(比如上个例子在通过范围证明的情况下产生溢出最少需要2的196次方个输出)。

2. MLSAG

2.1 LSAG(Back)

2.2 MLSAG(对LSAG的推广)

2.3 Ring CT For Monero Protocol

(2)ransaction Verifification

与MLSAG验证步骤相同。

3. rang proofs

假设取范围证明中的正整数是2的n次方,即证明每个输出都在0到2的n次方之间。

可以使用Borromean Ring Signatures来实现。

3.1 Borromean Ring Signatures

3.2 Borromean Ring Signatures应用于范围证明

目前雷达(RADR)已经实现了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中也内置了类似的曲线。

—-

编译者/作者:雷达通行企业联盟

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...