隐私加密系列|Grin与BEAM之间技术公开对比( 二 )


在stem(匿名性)阶段 , 事务只传播到当前节点的对等列表中随机选择的单个对等节点 。 在沿网络随机跳数之后 , 每个跳数仅传播到一个随机对等体 , 传播过程进入第二阶段 。 在fluff(扩展)阶段 , 如在大多数网络中所发现的那样 , 事务使用full flood/diffusion方法进行传播 。 这种方法意味着在flood网络之前 , 事务已先传播到网络中的随机点 , 从而使跟踪其来源变得更加困难 。
隐私加密系列|Grin与BEAM之间技术公开对比
本文插图

两个项目都采用了这种方法来处理Mimblewimble事务 。 Grin的实现允许在传播的stem阶段进行事务聚合和切入 , 从而在事务在fluff阶段传播之前为它们提供更大的匿名性 。 除了事务聚合和切入之外 , BEAM还引入了“dummy”事务 , 这些事务被添加到stem阶段 , 以补偿实际事务不可用的情况 。
03
Grin独特功能
Grin的目标是成为Mimblewimble区块链的简单且最少的参考实现 。 因此不打算包括许多功能来扩展核心Mimblewimble功能 , 如所讨论的 。 但是Grin实现确实包含一些有趣的实现选择 , 这些选择已在其不断增长的Github存储库的Wiki中进行了深入记录 。
例如Grin实现了一种方法 , 使节点只下载部分历史记录就可以非常快速地同步区块链 。 进入网络的新节点将查询链的当前头区块 , 然后在水平上请求该区块头 。 在该示例中 , 水平线最初设置为当前磁头之前的5,000个块 。 然后节点检查是否有足够的数据来确认共识 。 如果没有共识 , 则该节点将扩大其视野 , 直到达成共识 。 届时 , 它将下载水平线区块的完整未用交易输出(UTXO)集 。 这种方法的确引入了一些安全风险 , 但是提供了缓解措施 , 其结果是 , 节点可以以较少的数量级数据同步到网络 。
自从本文撰写以来(2018年10月) , BEAM已发布其使用macroblocks进行快速节点同步的解决方案 。 macroblocks是BEAM节点定期创建的所有UTXO的完整状态 。
04
BEAM独特特性
BEAM已经开始以多种方式扩展mimblewible的特征集 。 BEAM支持在UTXO上设置一个显式的潜伏期 , 这限制了它在创建之后花费在特定数量块上的能力 。 这与时间锁不同 , 时间锁可以防止在一定时间之前将事务添加到区块中 。 BEAM还支持传统的时间锁定功能 , 但还具有指定时间上限的功能 , 之后该事务将不再包含在区块中 。 此功能意味着 , 当事方可以确定 , 如果一定时间后交易未包含在主区块链的某个区块中 , 则该交易将永远不会出现 。
BEAM的另一个独特特性是实现了一个可审计的钱包 。 企业要在特定的监管环境中运营 , 就需要向相关部门证明其合规性 。 BEAM提出了一种专为合规企业设计的钱包 , 它可以生成额外的公共/私人密钥对 , 专门用于审计目的 。 这些签名用于标记交易 , 以便只有被授予公钥的审计机构才能识别区块链上的那些交易 , 但不能使用此标记创建交易 。 这使企业可以在不损害公众隐私的情况下向给定的机构提供其交易的可见性 。
BEAM对Dandelion的实现通过在stem阶段添加诱饵事务输出来提高隐私 。 每个此类输出的值为零 , 但与常规输出没有区别 。 在后期阶段(随机计算每个输出的块数) , 将utxo添加为新事务的输入 , 从而将其花费并从区块链中移除 。
BEAM还提出了另一个旨在保持区块链尽可能紧凑的功能 。 在Mimblewimble中 , 随着交易的增加 , 执行切入 , 从而消除所有中间交易承诺 。 但是每个事务的事务内核都不会被删除 。 BEAM提出了一种重用这些事务内核来验证后续事务的方案 。 为了在不影响事务不可逆性原则的情况下使用现有内核 , BEAM建议由对旧内核具有可见性的同一用户对旧内核应用乘数 , 并在新事务中使用乘数 。 为了激励以这种方式建立的交易 , BEAM包括针对此类交易的费用退还模型 。 此功能将不属于初始版本 。


推荐阅读