谢邀。
最近太忙没时间细看,但是我之前大略的浏览过。之前的版本以及其他POS,包括Algorand和snow white,都涉及到一个long-range attack的问题,或者是说启动问题:当你一直在线的时候,恶意节点发给你一条链你会觉得“等等这个不对劲,你的这条链和我当时收到的不一样啊,如果你有这条链当时为什么不发呢?肯定是你后面生成的!”但是对于新节点或者长期不在线节点而言,它们就分辨不出哪个是真的了,因为两个从规则上看起来都有效。POW没有这个问题,因为POW可以简单地用最长链规则分辨,或者说是算力最高原则——恶意节点生成的链算力一定不如合法的链,算力多的链肯定是真的。但是对于POS,简单的最长链规则行不通,恶意节点生成的链不一定比真实的链短。解决这个问题的方法很简单,就是加入检查点或者链外共识,换句话说就是新节点加入之前先要去问一些比较大的节点“你们当时收到的链是不是这样的?”当然,这点确实让人觉得不舒服,因为这个涉及到额外的信任问题,在POW里是不需要的,也不太符合区块链的原则。
从理论上来讲,这确实是一个loose end。但是从实际上说,问题不算太大因为第一这种情况只在理论上存在,实际上没见过long-range attack(当然实际上也还没有过POS)。第二就是大家觉得恶意节点生成的链其实还是很好辨别的,例如你会发现虽然长归长,但是出块节点来来回回就那几个。当然,我们主观觉得“这东西应该很好认”是没用的,对于区块链,我们需要一个写定的方法让所有节点辨别并且丢弃这种链。
Genesis主要的贡献就是提出了并证明了这样一种方法,就是无论什么时候加入都可以用一个一致的方法辨别long-range attack,所以基本算是解决了POS中最后一个loose end。