为什么以太不能引用超过8层以上的节点?还有这个引用是什么意思?
为什么以太不能引用超过8层以上的节点?
以太是类GHOST协议 叔块和主链的分叉不能超过8层。
分布式系统怎么定义谁是主链。比如某国局域网关了一天,然后恢复了。会怎么样。
你说以太的规则么 这个当然有代码。
说的就是分布式系统没法用代码定义主链。
其实,共识设计里是没有考虑这种东西的。分布式系统 CAP 定理
-
一致性
-
可用性:就是不会卡在那里无法做出决定
-
容忍任意时间的网络分割
这三种只能实现其二,是有理论证明的。
你要敢在 gun 面前说 CAP,会被喷死的。我有一次要说 CAP 来着,我老板想了一下说,还好 gun 不在,但你最好还是别说
Anyway, 局域网一天这种东西,感觉所有 PoW 都得 gg.
不是 gg 的问题,我只是想问那个8怎么来的。
比如局域网一天,那就看局域网结束的时候哪边的区块多呗
是说局域网一天以后再回来,就成了两条链,不会取最长?因为超过了8? 看哪边区块多的话,那还跟8有啥关系?
8 的意思是关于以太坊的叔块机制
一码归一码 这里提8是有原因的。
我接受你说8在这里和问题无关 因为以太的8是出于奖励的考虑而非杜绝矿工去确认老的区块
这里完全不涉及分布式共识的话题
但我不接受这个跟DAG无关
当然跟DAG有关 而且这个就是DAG才有的问题 我想问的就是conflux有没有限制确认深度 目的是不让矿工偷懒去确认一个很老的区块 这样对网络的安全没有什么贡献
可能给你造成了歧义 但是辰星同学理解了我的意思 并解答了我的问题。
我仔细想了一下,CAP 本身不是一个针对区块链场景的定理。Availability 说的也不是确认交易的事情。
不过,在有限攻击者算力的前提下,被确认的交易全网一致、交易有限时间内被确认、某国局域网一天这几件事情无法同时达到,感觉是可以通过把这这件事情归约成一个数据库读写问题,然后用 CAP 不成立证明这这件事情不成立。
不过这种归约比较繁琐,还得处理1天不出块这种 negligible 概率的事件。而无论是 CAP 定理本身,还是直接说明白这个区块链版的 CAP, 反倒是很容易的。
不过仔细一想 以太搞个深度的限制 除了是鼓励矿工挖矿 应该也确实有杜绝矿工去确认老区块的意思
如果没有8这个限制。叔块等于可以任意长 像@Tux 说的这个网络长时间隔离的区块 一旦恢复 就有可能有很长的叔块链 先不说叔块奖励会比较复杂 账本结构可能也比较奇怪 而且给了攻击者一个念想可以去私挖区块
总结下:
1 这个数字就是协议的一部分 很简单的一个道理 每个节点在验证的时候会不会验证这个信息 比如说如果有个叔块超过8 其他节点会不会接受
2 这个数字的大小确实会极大地影响协议的运行效果 比如说很大 那你说的那个场景 网络恢复的时候就会有一条很长的叔块链 如果比较小 例如限现在的8 因为两边的链都远大于8 GHOST其实相当于退化成最长链规则了 哪个长就以哪个为准
3 这个跟挖矿算法就更没什么关系了 以太用哪种挖矿算法都不会影响GHOST协议
4 还有这个确认深度的问题不仅和DAG有关系 可能仅仅存在于DAG项目中 一般的区块链项目不存在这个问题
反倒是分布式共识 CAP这类话题 跟是不是DAG项目没有太大的关系 很简单的一个道理 如果是比特币 像长时间隔离 恢复后改怎么融合 也需要考虑。
很感谢大家的解答。