CKB 目前单 TX 有个 70M 的 Circle 上限,每个 Block 也有个上限,设置双重硬顶的必要性是什么,能不能把 TX 的去掉只保留 Block 的?
单个 tx 的上限不是共识规则,是网络配置。设定这个上限的初衷是为了防止提交 cycles 非常大的交易对网络进行攻击。
理论是只要提交交易的这个结点到最终矿工的路径上的所有结点都修改了这个配置就可以提交更大 cycles 的交易。不过因为默认配置里设置了 70M,除非和矿工进行了协商还是很难办成的。
这个配置是在外部的配置文件里设置的,所以比起二进制升级进行的修改来说,难度反而更大了
升级问题不大,可以在 network 传输的 flags 加入个标记 allow_large_tx_cycles。并只向这些节点广播。
问题是需要防止 tx cycles 过大导致的 DDOS 问题。
为什么会有 DDOS 攻击的问题呢,单 tx 消耗 30 亿 cycle 和 40 多个 tx 消耗 30 亿的区别是啥?
区别是在一台 4 核电脑上后者理论上能以接近前者 1/4 的时间完成验证。
目前上限:请问现在 tx size 的上限是多少? · Discussion #2839 · nervosnetwork/ckb · GitHub
其中 70m 的结点限制会在 v0.100.0 中放开, See this comment