作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/optimistic_rollups_fraud_proof_cost.md
Optimistic rollups式欺诈证明成本估算 #
为什么没有分片的可用性不能扩展 #
如果我们增加我们可以存储在共识空间中的可用数据量,但仍然试图只维护一个单一的每个人的余额的默克尔树,我们会遇到缩放限制。就是不可能把元素插入到一个单一的默克尔树中,并重新计算默克尔的根,超过一定的速度。这种计算有一些方面是不能并行化的。因此,无论我们在网络上增加多少台计算机,我们在任何单一的默克尔树上更新账户余额的速度仍然会有一个上限。
因此,为了克服这个限制,我们需要维护多个账户余额的数据库,称为分片。我们需要一些较慢的机制来将价值从一个分片中转移到另一个分片中。
有多少欺诈证明 #
为了知道你收到的付款是有效的,你需要确认分片的更新是有效的。一个分片的更新只有在该分片之前没有矛盾的更新才是有效的。
我们通过激励证明者产生欺诈证明来发现矛盾的更新。
因此,让我们说区块链在一段时间内有T个txs,而且它们分布在许多分片中。有许多证明者在寻找相互矛盾的分片更新,这样他们就可以从欺诈证明中获利。
对于每个tx,都会有一个用户要求提供欺诈证明。
有多少欺诈证明人 #
为了实现二次可扩展性,我们需要每个验证人只能下载sqrt(T)个txs的情况。这意味着他们只能下载sqrt(T)个来自用户的欺诈证明请求,而且他们只能从可用的历史记录中下载sqrt(T)个txs。
如果分片的数量与sqrt(T)成正比,那么这意味着一个只关注一个分片的验证器只需要查看O(sqrt(T))的许多txs。
我们将需要O(sqrt(T))个欺诈证明器。
欺诈证明的总成本 #
对于每个侧链,我们可以让一段时间内的区块数量与sqrt(sqrt(T))成正比,所以每个区块中都有O(sqrt(sqrt(T))的许多txs。
对于每个区块,欺诈证明者需要做log2(sqrt(sqrt(T)))多次比较,看是否有可能做出欺诈证明。
所以成本是O((#证明人)*(#块)*(每块的比较)) = O(sqrt(T)*sqrt(sqrt(T))*log(T)) = O(log(T) * T^(3/4))
O(log(T) * T^(3/4))实际上与O(T)是同一回事。
如果我们将T从1增加到10亿,那么每个Tx的成本将只减少约6倍。
结论 #
每个tx的欺诈证明的检查成本大约是恒定的。如果txs的总数非常小,那么检查欺诈的成本就会小于生成签名的成本。
所以,支付检查欺诈证明的成本总是小于生成该TX的签名的成本。
所以欺诈证明的成本永远不会成为瓶颈。