美文网首页
【EOS项目】隐私币项目 pEOS:试试看?

【EOS项目】隐私币项目 pEOS:试试看?

作者: 荆凯_EOS42 | 来源:发表于2019-05-20 22:46 被阅读0次

    pEOS 是 EOS 上的首个隐私币项目。近日,团队放出了部分代码, 是在 EOS 链上实现类似比特币的 UTXO 转账模式。现在已经部署了合约至 Jungle 测试网络,今天,就一起体验下。

    image.png

    因为体验 pEOS 的相关的功能,所以今日更文推迟了一个多小时,还请见谅。

    今天,我们一起了解下 UTXO 是什么,如何在测试网路上使用 pEOS 的这一功能。

    本篇内容根据 pEOS文章编译: https://medium.com/@pEOS_one/peos-implementing-utxos-on-eos-7def08840466

    相关链接

    代码库: https://github.com/peosdev/utxo
    项目链接: https://peos.one

    我曾写过两篇文章,介绍 pEOS 这一项目,现在读来应该还不算过时,也可以参考阅读:

    EOS+门罗协议:EOS 上首个隐私币项目 pEOS简介

    EOS+门罗协议: EOS上的隐私币 pEOS 是如何设计的

    UTXO 是什么?

    image.png

    UTXO 是源自比特币的设计。根据《精通比特币》一书的定义:

    unspent transaction output (UTXO)
    未花费交易输出(UTXO)
    UTXO is an unspent transaction output that can be spent as an input in a new transaction.
    UTXO 是未被使用的交易输出,可以在新的交易之中用于交易的输入。

    根据 UTXO 模型的设计,比特币钱包中的总余额,会通过跟踪和添加钱包中可以消费的所有 UTXO 的总值来计算得到。进行交易的时候,会用掉一些 UTXO,并且,会产生新的UTXO给接收方,如果有找零,也会生成新的 UTXO,返回给原来的所有者。

    UTXO只能够作为一个整体来消费,换句话说,你无法消耗一笔 UTXO 的一部分,而是要么使用,要么不用。

    比特币,莱特币,狗狗币、门罗币等,都是采用了 UTXO 的交易模型设计。而本文所提到的 pEOS 这一项目,也会在 EOSIO 链上实现 UTXO 的模型,并借助门罗协议的设计,为 pEOS的转账交易提供隐私性。

    在文中,pEOS 也提到了该项目与 Everipedia 所提到的 pay2key 方式的不同之处。

    与 Everipedia 的 UTXO 模型有什么区别?

    对此,pEOS 文章中列出了几个关键点,核心的不同在于是否提供隐私性。

    • 使用Everipedia的解决方案,您不能在一笔复杂类型交易中通过组合多个UTXO的方式来生成单个或多个新的输出。因此,无法进行CoinJoin类型的匿名化。

    • Everipedia UTXOs不是唯一的,而且是可变的。pEOS的 UTXOs完全遵循比特币、Monero等使用的 UTXO 定义。

    • Everipedia 的模式下,需要跟踪每个帐户的 nonce,因为它需要对UTXOs发生的突发变化进行排序。如果你需要以太坊风格的会计系统,Everipedia 是最好的选择。

    • 转账的顺序可能出现问题。

    • Everipedia 的 UTXO 模式下,使用中间代币 -- IQ_UTXO 代币而不仅仅是IQ。pEOS直接对代币进行处理,而不需要额外的代币。

    这两种实现方式,有各自适用的场景。Everipedia 可以提供简单的记账方式、简单的钱包处理方式和假名的特性。但如果需要实现 CoinJoin、RingCT、MimbleWimble 等算法,Everipedia代码将无法提供支持。

    pEOS 团队认为,他们所提出的这一实现,是对于原始的比特币类型的 UTXO 模型的完全复制,因此,能够具备同样的对于所有隐私算法的支持,从而实现真正的匿名性。

    代码介绍

    pEOS 所发布的这一代码库,是早先的一些实现,包含了两部分:合约和命令行。

    合约部分

    合约部分,在标准代币协议的基础上增加了两个操作: loadutxotransferutxo.

    借助于 loadutxo操作,用户能够从常规的 EOS 账号中接受资金以创建新的 UTXO,而借助于 transferutxo, 用户可以创建完整的UTXO类型的交易。

    正如比特币的情形一样,这些 UTXO 的交易,会包含若干个UTXO作为输入,而且生成若干 UTXO 的输出结果。

    命令行工具: clpeos

    代码库中的另外一个文件夹中,包含了命令行工具 clpeos,可以用于进行绝大部分的交易操作,比如向新地址转账,向常规的 EOS 账号转账等。

    image.png

    借助于该命令行工具,可以使用EOSIO 代码库中所带的 EOSIO 钱包进行密钥管理,所以,必须要安装对应的应用并进行设置。最好是新创建钱包,用于存储测试 pEOS 相关的密钥。

    注意,此处所说的钱包,是指的 keosd 该程序。

    在测试网络上试用

    pEOS 将合约部署到了 Jungle 测试网络上,见: https://jungle.bloks.io/account/netpeostoken

    首先,将 pEOS 的代码库 down下来:

    git clone https://github.com/peosdev/utxo

    可以看到文档结构为:

    image.png

    进入到 cmd 文件夹:

    cd utxo/cmd

    其中的 clpeos 命令行工具,就是下文中所用到的了。

    image.png

    (下文所用到的账号和命令的截图,来自 pEOS 的文章,特此说明)

    查看

    在配置好了钱包和导入对应的jungle测试网络的密钥之后,可以用 clpeos查看账号的余额信息:

    ./clpeos balance

    image.png

    查看 UTXO 信息:

    ./clpeos balance -u

    image.png

    可以看到钱吧中总共有 98 pEOS, 来自两个 UTXO,如图所示。

    转账

    向某个地址 EOS8Dj5BLdUe1iAi6xNJnZ3bvNEMxDHX6bf4DGesA8USTwj4byJES 转账 11 个 pEOS

    image.png

    这一转账提交成功后,再查看一下账户中的 UTXO 信息:

    image.png

    实际上,转账过程中,将原来的两笔 UTXO 花费掉,而新生成了两笔 UTXO。其中一笔属于转账接收者,而另外一笔 UTXO, 用于表示转账发起者的账户中的资产信息。如上图所示,就是表示的属于发送者的 UTXO,可以见到还有 87 pEOS 的代币。

    熟悉比特币交易方式的同学,对此应该不陌生。

    除此之外,还可以从 EOS 账户转账,也可以向 EOS 账户发起转账,pEOS的工具会调用相关的合约命令,实现这一转账操作。

    接受 pEOS

    这时候可能你会问了:那么,我应该如何通过 UTXO 这种方式接收代币呢?

    ./clpeos receive

    使用该命令,会生成一个 EOS 地址:

    image.png

    你可以将此地址发送给对方,接收来自对方的转账。注意,如果使用该地址接收转账,对方也需要同样使用 clpeos的命令工具来发起才可以。

    该工具还可以有更多的一些特性,不过出于篇幅原因,在此就不多做介绍了。可以自己实验玩玩。按照 pEOS 的介绍,它可以输出不进行传输的交易,并对已经组成的交易进行中继。

    (这部分特性我还没试过,如果你感兴趣或者试过,可以教教我)

    小结

    本文基于 pEOS 的博客文章,介绍了 pEOS 的 UTXO 模式,并展示了如何使用相关的命令行工具 clpeos 进行交易转账。

    本文不构成任何投资建议,本人也不为任何项目提供任何类型的背书,仅为介绍信息供读者参考,如有投资,风险自担。

    感谢你的阅读。

    相关文章

      网友评论

          本文标题:【EOS项目】隐私币项目 pEOS:试试看?

          本文链接:https://www.haomeiwen.com/subject/voekzqtx.html