EOS+门罗协议,pEOS是怎么做的?

2019-02-20  本文已影响50人  荆凯_EOS42

昨天内容聊到了首个 EOS 区块链上的隐私币,目的是在EOS上提供不可追踪的隐私交易方式,今天稍微多聊一点细节的信息。

images.jpeg

对于pEOS 的介绍,更多是出于好奇心,想看看 EOS 能够走多远。留两个问题:

这篇文章超过平日篇幅,也涉及到是我较陌生的匿名币领域,边理解边写,写了较久,也导致两次跳票,让各位等待发文的读者久等了,实在抱歉。

前一篇文章见: 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 智能合约之中,从而实现了:

(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 中的每次交易,都会根据:

生成一个新的地址(新的公钥),代币会转至该新生成的地址。

我们来看一下细节信息。

(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. 交易过程

现在,假设: Alice 向 Bob 转 100 个 pEOS 代币。

由于 pEOS 合约中采用的是 UTXO 模型,所以实际上:Alice 所消耗的是转到她某个一次性地址上的一笔UTXO(未花费交易输出),她可以对此笔交易输出进行签名以使用。

现在,她要向 Bob 发起转账交易了。

到这里,这一笔交易算是完成了。还剩下一个问题:

如何隐藏交易数额的?

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 支持了匿名的方式,主要包括:

为了实现这种特殊的交易,自然需要用到特别的钱包软件,需要能够支持匿名交易,识别匿名交易,并且能够安全保存用户所拥有的匿名地址的密钥。

按照pEOS团队的描述,由于使用匿名地址采用了环签等技术,如果设定的混淆度越高,则发起的匿名交易需要使用的RAM 资源会越多。会借助于 pEOS的合约,将交易进行编码形成匿名的事务数据,传递到智能合约,进而写入到 EOS 区块链上。

pEOS 的代币本身会有投资价值么?

援引慢雾科技创始人余弦对门罗币的一个观点:

门罗币作为隐私世界的匿名价值载体存在,载体是无所谓价格的,当天方便和法币计算就好,基本是用完就“丢”。

对于 pEOS 而言,我个人认为也可以从这个角度去参考。pEOS 提供了新的思路,如何将一些其他的项目或区块链的细分领域的特性,以智能合约的方式基于EOSIO软件而架构,利用EOSIO作为底层的网络支撑和安全保护,降低了开发和运营维护的成本,不必像门罗币等一样,从零开始做底层网路设计、共识机制开发等等,是一个更轻量级的匿名币解决方案。

不过,pEOS本身的投资价值未必因此可以做预估判断,还要看上线之后 pEOS的用户群体规模等的影响。正如我开头所提到的问题一样:在 EOS 上面进行隐秘交易的需求,是否强烈?

我个人比较认同余弦的看法,由于 pEOS 这类匿名币本身是作为一个匿名的中间渠道,对于发送者和接受者来说不存在存储的需求,更可能是收到之后即通过交易所转换为 EOS或在EOS上的稳定币等相对波动更温和的代币。

关于 pEOS 的介绍就到这里。这个项目是在 EOS 上的创新实践,也期待未来在 EOS 上有更多的新探索。

参考阅读资料

pEOS

门罗

BM的匿名币设想

电报群

pEOS 电报群
EOS privacy Coin电报群

多谢阅读,随时欢迎指正。

EOS42 开创去中心化的未来

image.png

EOS42的账号为: eos42freedom。
请为EOS42投票,支持我们继续不停开拓去中心化解决方案的未来。

vote for EOS42
上一篇下一篇

猜你喜欢

热点阅读