昨天内容聊到了首个 EOS 区块链上的隐私币,目的是在EOS上提供不可追踪的隐私交易方式,今天稍微多聊一点细节的信息。
images.jpeg对于pEOS 的介绍,更多是出于好奇心,想看看 EOS 能够走多远。留两个问题:
- 在 EOS 上实现不可追踪的私密交易,会有多少潜在需求?
- 如果 pEOS 这个项目能够如期完成上线,你会希望用来做什么类型交易?
这篇文章超过平日篇幅,也涉及到是我较陌生的匿名币领域,边理解边写,写了较久,也导致两次跳票,让各位等待发文的读者久等了,实在抱歉。
前一篇文章见: EOS+门罗协议:EOS 上首个隐私币项目 pEOS简介
另外,今日搜寻资料之时,发现很久之前的一位同事现在就门罗币写了不少的资料介绍,也算是巧了。
pEOS 与 EOS 对比
pEOS 不是单独的一条链,而是运行在 EOS 主网上。pEOS 会以智能合约的方式在 EOS 主网上发行,代币发行总量约为12亿5千万左右。
pEOS 可以像常规的 EOS 主网上的代币一样交易,意味着使用公开的账号,且交易信息公开可见;也可以选择使用私密地址的方式,隐藏交易信息。
举个例子:
如果分别从 账户 Alice 转给 账户 Bob 100 EOS 和 100 pEOS,则各自的信息会如下:
EOS: 从 账户 Alice 转账 100 EOS 到 账户 Bob
pEOS(启用隐私模式): 从 ? 账号 转账 ?pEOS 到账户 ?
pEOS是将门罗协议中的三个特征引入到了 EOS 智能合约之中,从而实现了:
- Ring Signatures(环签名)保证了发送方隐私
- Condidential Address(隐匿地址)保证了接收方隐私
- Ring CT(Ring Confidential Transaction, 环隐匿交易)保证了交易隐私
(https://www.jianshu.com/p/6aca39768858)
pEOS是怎么实现的?
如果对门罗币的机制比较熟悉的话,对pEOS也就很容易理解了。我个人对门罗币所了解不算多,所以有理解错误之处,还请多指教。这部分主要参考自门罗币的相关介绍资料及 pEOS 的白皮书信息。
UTXO 模型
pEOS 在进行匿名交易时候,仍然是采用了比特币的 UTXO 的模型,这应该也是为了更方便使用门罗相应的技术,毕竟,在门罗币兴起的时代,现在 EOS 的这类账户模型并没有得到多少的关注。其实看 pEOS白皮书时候,我在想,BM 所提到的privacy EOS,应该会是另外一种不同的实现方式,基于 EOS 现在的action的设计方式,而不会采用 UTXO 模型。
1. 用户的私密地址
image.png系统会为用户生成两组密钥对,一组用于查看交易,一组用于使用交易(将pEOS花出去)。
而且,用户会有一个公开的地址,可以用于发送给其他人接收转账用。该地址与已有的信息等没有关联。
设想有两个用户: Alice 和 Bob,Alice 想要转 100 pEOS给Bob,通过匿名的方式来进行。
首先,用户 Bob 会有一个公开的地址。不过,转战交易不会以公开的方式将代币转到该公共地址的,而是通过转到一次性地址的方式来完成。这样,外部用户无法看到向接收方的付款。不过,接收者可以使用上面提到的查看密钥来查看和识别相应的交易输出(UTXO), 也可以使用消费密钥,进行消费。
正如上图中所显示的:转账会转到一个一次性的地址,而不是 Bob 的公开地址。
在 pEOS 中,为了跟 EOS 保持一致的加密方式,选用了 secp256r1 算法。
2. 转到未关联的地址
image.png在 pEOS 的隐匿交易中,无法通过查看交易记录来找出来接收方的地址信息。而在比特币或者 EOS 这类公开信息的区块链上,是可以通过公钥、账户、地址等对交易进行追踪的。
在 pEOS 中的每次交易,都会根据:
- 接收方 Bob 的 公开地址
- 发送方所产生的一个随机数
生成一个新的地址(新的公钥),代币会转至该新生成的地址。
我们来看一下细节信息。
(V,S)是 Bob的公开地址;r是发送者 Alice 所生成的一个随机数(r 在1--(l-1)之间);然后,通过 Diffie-Hellman 的算法,来计算出来一个新的地址 P:
image.png而借助于密码学技术,使得 Bob是唯一一个可以读取交易信息,且使用所接收到的代币的用户。
3. 交易不可追踪
image.png如何使得交易无法追踪?
pEOS采用环签(Ring Signature)的技术, 来隐藏一笔交易的真正输入,加以混淆,使得第三方无法发现那些是真实的输入,哪些是用于混淆的输入。
关于环签,一个通俗的解释例子是这样:
环形签名是指将一群人连成一个圆圈,然后从第一个人开始,A签名,B在A的签名后面再签名,C在B和A的后面再签名,一直持续到最后一个人都签名完成。环形签名是一种简化的群签名形式,只有在这个环上的成员而没有管理者。
(来自: 吴强:环形签名怎么签? https://bihu.com/article/1984762329)
具体到 pEOS中的设计,和门罗一样,会使用N个公钥+1个私钥,对交易信息进行签名。而发送者可以选择N的数量,N 越大,可以简单理解为隐匿程度越高,更不容易找出来真实的输入是什么。不过,在 pEOS 中,如果设置过大的 N 值,也会消耗不少的 RAM 资源。
采用环签方式,将真实的发送者隐藏起来。
4. 交易过程
- 首先,在用户的钱包中生成 pEOS的匿名不可追踪的交易信息;
- 然后,将交易广播至 pEOS 智能合约中,以便进入 EOS 区块链。
现在,假设: Alice 向 Bob 转 100 个 pEOS 代币。
由于 pEOS 合约中采用的是 UTXO 模型,所以实际上:Alice 所消耗的是转到她某个一次性地址上的一笔UTXO(未花费交易输出),她可以对此笔交易输出进行签名以使用。
现在,她要向 Bob 发起转账交易了。
- Alice 生成一个随机数
- 使用该随机数、交易输出的数字、Bob地址的公钥,生成一个Bob的一次性地址。
- 使用环签的方式,Alice 用了一次性的私钥(可以解锁上文所提到的UTXO,即为未花费的交易输出)、私钥的映像、以及其他的公钥(混淆所用到的公钥)对交易签名,将环形签名的结果附加到交易数据之中。然后,再将交易数据发送至 EOS 区块链中打包。
到这里,这一笔交易算是完成了。还剩下一个问题:
如何隐藏交易数额的?
5. 交易金额如何隐藏
在门罗币的设计思路基础上,pEOS做了进一步的改动。在pEOS中,设计者想要对交易数量完全隐藏掉。由于 pEOS 采用的是 UTXO的设计模式,所以,pEOS不去管究竟交易数量是多少,而是验证:
image.png交易的输入总数量 = 交易的输出总数量
这里所提到的输入和输出,请放在 UTXO模型的场景下理解,正如在比特币之中一样,一笔交易需要消耗掉若干UTXO作为输入,生成若干的UTXO作为输出。
pEOS 使用 Pedersen Commitments的方式。并且,为了进一步避免交易数额被猜到,pEOS也引入了盲因子( blinding factor)。这里涉及到稍多的技术细节,就不展开了,如果对这部分的机制感兴趣,可以直接阅读 pEOS 对应的部分。
pEOS 如何与 EOS 区块链交互?
pEOS 通过智能合约与 EOS 区块链交互。正如前文所提到的,pEOS 的代币可以像其他的EOSIO类代币一样使用,可以直接用普通的钱包来使用,不过,这种使用方式下,交易记录是公开的。
另外,pEOS 支持了匿名的方式,主要包括:
- 从正常的EOS账户转账到匿名地址
- 从匿名地址转账到匿名地址
- 从匿名地址转账到常规的EOS账号(开发周期会长,上线时未必实现)
为了实现这种特殊的交易,自然需要用到特别的钱包软件,需要能够支持匿名交易,识别匿名交易,并且能够安全保存用户所拥有的匿名地址的密钥。
按照pEOS团队的描述,由于使用匿名地址采用了环签等技术,如果设定的混淆度越高,则发起的匿名交易需要使用的RAM 资源会越多。会借助于 pEOS的合约,将交易进行编码形成匿名的事务数据,传递到智能合约,进而写入到 EOS 区块链上。
pEOS 的代币本身会有投资价值么?
援引慢雾科技创始人余弦对门罗币的一个观点:
门罗币作为隐私世界的匿名价值载体存在,载体是无所谓价格的,当天方便和法币计算就好,基本是用完就“丢”。
对于 pEOS 而言,我个人认为也可以从这个角度去参考。pEOS 提供了新的思路,如何将一些其他的项目或区块链的细分领域的特性,以智能合约的方式基于EOSIO软件而架构,利用EOSIO作为底层的网络支撑和安全保护,降低了开发和运营维护的成本,不必像门罗币等一样,从零开始做底层网路设计、共识机制开发等等,是一个更轻量级的匿名币解决方案。
不过,pEOS本身的投资价值未必因此可以做预估判断,还要看上线之后 pEOS的用户群体规模等的影响。正如我开头所提到的问题一样:在 EOS 上面进行隐秘交易的需求,是否强烈?
我个人比较认同余弦的看法,由于 pEOS 这类匿名币本身是作为一个匿名的中间渠道,对于发送者和接受者来说不存在存储的需求,更可能是收到之后即通过交易所转换为 EOS或在EOS上的稳定币等相对波动更温和的代币。
关于 pEOS 的介绍就到这里。这个项目是在 EOS 上的创新实践,也期待未来在 EOS 上有更多的新探索。
参考阅读资料
pEOS
- pEOS白皮书: https://peos.one/docs/pEOS_whitepaper_rev1.pdf
- pEOS网站: https://peos.one/
门罗
BM的匿名币设想
电报群
多谢阅读,随时欢迎指正。
EOS42 开创去中心化的未来
image.pngEOS42的账号为: eos42freedom。
请为EOS42投票,支持我们继续不停开拓去中心化解决方案的未来。
网友评论