Quorum隐私交易的结构流程分析及与BlockMaze的比较

BlockMaze隐私交易

定义

BlockMaze,一种基于 zk-SNARKs 的高效隐私保护账户模型区块链。与双余额模型一起,BlockMaze 通过隐藏账户余额、交易金额以及发送者和接收者之间的联系来实现强大的隐私保证。BlockMaze是基于 Libsnark 和 Go-Ethereum 实现的。

实现原理及交易流程

一、实现原理 blockmaze隐私交易的实现为在账户下添加cmt(commitment)用于存储密文余额,发送交易时使用接受者的公钥加密且不指定接受者的地址,但是在链下告诉接受者该交易的hash,同时减去自己对应的密文余额。接受者通过交易hash获取对应的交易信息,同时通过私钥解密转账的金额,然后加上自己对应的密文余额。(相当于隐私交易的转账金额存到了隐私交易里面)。 二、交易流程 ![[20220714192452.jpg]] 1.节点A执行Mint操作,转化零知识余额到自己的账户中 2.节点B执行getPubKeyRLP()根据其账户地址获取其公钥,线下告诉节点A, 3.节点A执行Send操作进行转账,并更新自己的零知识余额,其中pubkey为接收方(节点B)的公钥,线下告诉节点B 交易SendTransaction的hash 4.节点B通过节点A产生的send交易的hash执行Deposit操作 5.节点A执行Redeem操作,转化明文余额到自己的账户中

Quorum隐私交易

定义

隐私是指在相关参与者之间保持交易私密的能力。其他参与者无法访问交易内容。

实现原理及交易流程

一、实现原理 quorum通过一个名为Tessera 的隐私交易管理器来管理隐私交易。发送者将原有的交易payload用key替代(key为Tessera对该payload加密生成的),隐私交易的接收方通过Tessera获取key对应的原始交易payload。如果该交易为合约调用交易,非接收方的账户跳过该交易的执行,接收方则通过Tessera还原payload并调用虚拟机执行然后更新存储。同时为了避免因此带来的状态不一致,隐私交易和公共交易存储的树是用不同的树分开存储的。

状态验证:块验证包括检查公共状态树的根以确定公共状态是否跨节点同步。它还包括检查全局交易哈希,这是一个区块中所有公共和私人交易的哈希。这意味着每个节点都可以验证它与其他节点具有相同的交易集。公共状态根和私有交易输入的同步(通过全局交易哈希)意味着参与节点之间私有状态的同步。进一步验证如果私有交易的私有状态变化在所有参与者中是相同的,可使eth_storageRoot 指定私有智能合约地址和区块高度。如果状态在所有参与节点之间同步,则它们返回相同的根哈希。

限制: 隐私合约交易在与公共合约交易进行数据交互时,隐私合约交易智能读取公共存储的状态,而不能写入(一旦写入会造成隐私交易接收者和非接受者数据不一致的情况)

二、交易流程 (1) 一般隐私交易 ![[Pasted image 20220722165506.png]]

  1. 参与者 A 向其 GoQuorum 节点 A 发送私人交易。

  2. GoQuorum 将私有交易data值序列化为 JSON,并将其与参与者详细信息一起发送到 Tessera 节点 A。

  3. Tessera 加密data并分发给交易参与者。

  4. Tessera 将加密的哈希返回data给 GoQuorum 节点 A。GoQuorum 用data哈希替换私有交易值。GoQuorum 签署私人交易并将其设置v3738将交易标记为私人交易。

  5. GoQuorum 在整个网络中分发私人交易。

  6. 所有节点都可以看到交易。只有交易参与者(参与者 A 和 B)才能从 Tessera 获取解密数据并执行交易。 (2) 隐私标记交易 ![[Pasted image 20220722165642.png]]

  7. 参与者 A 向其 GoQuorum 节点 A 发送私人交易。

  8. GoQuorum 将私有交易data值序列化为 JSON,并将其与参与者详细信息一起发送到 Tessera 节点 A。

  9. Tessera 加密data并分发给交易参与者。

  10. Tessera 将加密的哈希返回data给 GoQuorum 节点 A。GoQuorum 创建一个公共 PMT,并将data字段设置为哈希。GoQuorum 签署 PMT。

  11. GoQuorum 在整个网络中分发 PMT。所有节点都可以看到 PMT。

    PMT 的处理方式与标准公共交易相同。由于 PMT 的to值是隐私预编译合约的地址,因此该合约被调用。

  12. GoQuorum 节点 B 和 C 使用 PMT 调用隐私预编译data

  13. GoQuorum 尝试使用来自 PMT 的公开可用哈希从 Tessera 检索解密的私人交易。

  14. 动作取决于节点是否是事务参与者:

    1. 参与者:GoQuorumdata从 Tessera 获取隐私交易的解密信息,隐私预编译执行隐私交易。

    2. 非参与者:没有找到隐私交易,所以隐私预编译立即返回。 (3) 有关零知识证明的隐私交易 https://github.com/ConsenSys/anonymous-zether 是在quorum基础上基于zether实现的零知识证明的隐私交易。

结论

BlockMaze通过在原有的以太坊账户模型中添加一个用于存储隐私金额的密文字段,然后通过隐私交易对账户的密文余额进行操作,BlockMaze仅支持转账之间的金额隐私交易,不涉及有关智能合约的执行。BlockMaz零知识证明采用zk-snark。BlockMaze宣称的隐藏交易双方的对应关系是通过一次性构建多笔交易,这些交易存在多个发送方和接收方从而模糊发送者和接受者的对应关系。但其仅支持转账类型的隐私交易,不过其结构设计较为简单,但是其代码长期未更新,项目整体更像是一个demo,没见在实际中的应用,其方案可能存在许多隐藏问题。

quorum也是基于账户模型开发的,而且支持所有类型的隐私交易(转账交易与合约交易),其方案考虑的比较完善且代码更新活跃,文档完善,不过其结构设计相对BlockMaze更为复杂,但结构比较清晰。

总的来说quorum能够实现更为完善的隐私交易,具备多种共识方案的切换(其链本身的特性),同时其项目也在实际中广泛应用,能够提供更为完备的解决方案。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计