spectreDAG技术评价

作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/spectreDAG.md


关于spectreDAG的论文:https://eprint.iacr.org/2016/1159.pdf

spectreDAG的挑战 #


Spectre有2个相互矛盾的问题要解决。他们想阻止人们秘密建造区块来控制区块链。

所以为了阻止这种情况,他们需要拒绝那些没有被其他最近的区块引用的区块。

另一个问题是,如果攻击者建立了区块并拒绝引用其他区块,以努力审查它们,这也需要受到惩罚。

但任何防止第一种失败模式的努力都会使第二种失败模式更容易实现。而任何防止第二种故障模式的努力都会使第一种故障模式更容易被破坏。因此,当你想象可以帮助防止一种故障模式的功能时,你也需要考虑你是否在其他故障模式中创造了一个漏洞。

未被引用的区块必然会被删减 #

如果最优先的区块没有你的区块作为祖先,那么你的区块就被审查了。

想象一下,我做了一个与死区块中的tx冲突的tx,而我的tx又被列入了最近的区块。哪一个冲突的TXS获胜?

如果死块赢了,这意味着我可以在事后通过建造死块来改写历史。

如果死区块输了,那么其中的所有TXS就没有价值。因为他们总是输。

因此,一个从未在上面建造过的区块,可能根本就不存在。

软分叉贿赂攻击 #

贿赂一些矿工,让他们增加一条新的规则,说明他们接受哪种类型的TXS。这些矿工不会在任何违反新规则的区块上进行建设,但他们仍然立即发布他们的区块。

诚实的矿工会在攻击者的区块之上进行建设,因为攻击者遵守的是诚实的矿工所知道的整个规则集。

最终,足够多的诚实的矿工区块被遗弃,所以他们改用新的规则集,以便获得更好的区块奖励。

在比特币中,你只能通过在很长一段时间内支付至少50%的区块奖励来实现这一目标。

在DAG中,即使矿工审查了诚实矿工的区块,他们仍然可以得到报酬。因此,贿赂的成本非常低。

Spectre的分叉选择规则 #

如果spectre是一个严肃的区块链共识的尝试,他们要做的第一件事就是给出一个分叉选择规则。要从任何给定的区块中计算出链的权重。所以我们可以知道哪个区块的优先级最高。区块链设计者总是害怕承认分叉选择规则,因为那样的话,它是如何被破坏的就很明显了。

如果他们能够掩盖分叉选择规则,那么他们就可以秘密地对每个例子使用不同的分叉选择规则,并欺骗人们认为这是可以存在的。

这是区块链设计中过度泛化的一个例子

Spectre轻节点在计算上是不可行的。 #

假设Spectre不强迫每个用户运行一个完整的节点并同步每一个tx,那么一定有办法做轻度节点。如果有轻量级节点,那么就需要有一种方法让轻量级节点验证Merkle证明,以确保他们的tx被包含在一个区块中,不会被取消。

所以,每个区块必须有一个merkle根,用于从该点开始的utxo集/账户数据库。

但是,根据spectre论文,当新的区块被开采时,冲突的TXS可以切换出哪一个具有最高的优先级。因此,这意味着一个完整的节点需要为每一个区块扫描整个UTXO集,为每个输出分配新的优先级,并可能切换出有效和无效的输出。

诚实的假设 #

在第17页C节,他们正在谈论审查制度的攻击。软分叉的贿赂攻击是一种审查攻击。但他们并没有很深入地讨论细节。

但他们似乎在做一个假设,即大多数矿工会诚实地报告他们首先看到的是哪一个tx。

假设矿工会诚实地报告他们首先看到的是哪一个tx,即使没有经济激励来强制他们诚实地报告,这也是基于我的信任理论模型的漏洞https://github.com/zack-bitcoin/amoveo-docs/blob/master/basics/trust_theory.mdhttps://tradingt.com/cn/trust_theory/ , 如果执行攻击的成本为零,那么它就不安全。