本文摘要:综上所述,当一个节点向另一个节点转发一个事务时,为了节省比特率,可以将它发送到事务的FID(ForwardingID)而不是原事务,接收方可以根据FID来判断是否必须将原事务推送给发送方。这种设计的另一个优点是,即使在节点B向节点A发送事务时再次发生FID值冲突,导致一个事务没有成功发送到节点A,当另一个节点C向节点A发送事务时,FID也会大概率使用不同的随机数R来计算,相当于减少了一次向A发送事务的机会。

字节

我们来总结一下上一期提到的事务传输中的比特率优化问题。综上所述,当一个节点向另一个节点转发一个事务时,为了节省比特率,可以将它发送到事务的FID (Forwarding ID)而不是原事务,接收方可以根据FID来判断是否必须将原事务推送给发送方。

我们的目标是将FID的长度减少到4个字节。最后一期的最后一部分还提到,如果每个事务的FID相同且不变,那么攻击者可以以较低的代价阻止特定事务的广播。基本方法是攻击者构建一个覆盖所有232个可能FID的事务数据库。

事务

受害者收到交易时,攻击者从交易数据库中自由选择相同FID的交易,先发送给其他节点,从而使其他节点误以为已经收到受害者的交易,自由选择不接管原交易。为了解决静态FID不容易被反击阻塞的问题,我们将给定的FID从静态改为动态。

因为FID只是在节点之间发送事务时才临时给出,并且当它涉及一致逻辑时不必记录在区块链上,所以FID不是常数值。考虑以下方案:各节点计算f ID时,一定程度上是从事务ID(事务的32字节哈希值)计算,但自由选择一个随机数R,通过ID和R的组合计算出一个4字节的FID,并将R和FID发送给。这样,当随机数r发生变化时,交易的FID就不会再发生变化。

接收FID和R的节点必须根据R计算的几笔交易的新FID完成比较,并确认哪笔FID对应原交易。因为一次发送的多个事务可以共享同一个随机数R,所以这个随机数R会带来额外的比特率开销。由于R的随机性,攻击者无法预测一个事务每次发送时自由选择的R和FID是什么,自然也无法提前预测具有结构冲突的事务。

这种设计的另一个优点是,即使在节点B向节点A发送事务时再次发生FID值冲突,导致一个事务没有成功发送到节点A,当另一个节点C向节点A发送事务时,FID也会大概率使用不同的随机数R来计算,相当于减少了一次向A发送事务的机会。只要计算FID的过程足够随机(例如对于伪随机函数),B的成功发送和C的成功发送就可以看作是两个独立国家的事件。

根据我们之前的计算,一个交易因为FID值冲突而被发送结束的概率为0.04%,而节点B和C都被发送到独立国家的概率为0.04% 0.04%,大大降低了失败率。但是从随机数计算出来的FID的设计也有一个缺点:每当一个节点收到一个新的随机数R,就需要为所有已经收到的交易计算出FID(按照前期的假设,只有节点不会将过去5分钟收到的180万笔交易与刚收到的FID进行比较),不会带来很大的计算开销。

交易

目前我们有两个方案不太失望:静态的FID方案在一些反攻击策略下存在安全问题,导致了新闻网,而几乎随机的动态FID方案存在计算开销过大的问题。如何同时解决问题双方的问题?我们选择了静态和动态的组合:FID由三个静态字节和一个动态字节组成。

交易

静态字节部分必须取事务ID的前3个字节(即事务的32个字节的原始哈希值),动态字节由事务ID和r计算得出,因此,根据事务ID的前3个字节,我们将所有事务放入224个“桶”中。一个节点每次收到其他节点发来的FID和R,都会根据FID的前3个字节识别出交换机所在的桶,然后根据R的新的FID值进行这个桶的交易,并进行校验。计算非常简单,可以发现,对于180万个随机分解的事务,平均每个桶只有0.1个事务,甚至事务数最少的桶也会多达10个。新计算出的一桶交易的FID比新计算出的所有交易的FID要贵。

在上述3-1动静结合方案下,攻击者仍然可以重复类似的反击策略。在以前的反击策略中,攻击者为每个静态FID计划一笔交易。在这个策略中,攻击者预先为每个桶计划一些事务。当受害者事务经常出现时,攻击者会在短时间内广播大量与受害者事务在同一个桶中的事务,因此需要降低受害者事务被发送到其他节点的概率。

即使同一个事务每次发送都使用一个几乎随机的动态字节,给定的动态字节也只有256个可能,所以一个桶中的事务越多,冲突概率就不会越高。为了应对上面的反攻击,我们引入了一个额外的规则:如果一个节点收到一个FID,并且发现在这个FID对应的桶中有不少于10个事务,它仍然会被用于FID标识,但是需要督促原来的32字节事务哈希值来比较事务是否已经被拒绝。这样,攻击者就不能再通过生产冲突的FID来屏蔽交易广播,因为当冲突太多的时候,就无法起到屏蔽的作用。当这个额外的规则启动时,它将使事务发送发展到一种不用于FID优化的情况。

但是由于长期以来每个桶只有0.1个事务,所以当多达10个事务落入同一个桶时,完全不可能再次发生,所以在系统没有被反击时,这个额外的规则就会被激活。但是,当系统知道自己被攻击时,维护系统的安全稳定是最重要的。

甚至为此目的降低系统的吞吐量都是不可接受的让步。

本文关键词:亚博网页版登陆,静态,节点,字节,计算,交易

本文来源:亚博网页版登陆-www.snippitychicks.com