区块头累加器一类能让我们高效证明某个区块头来自主链的机制。基于 https://ethresear.ch/t/double-batched-merkle-log-accumulator/571 同步 历史同步区块头同步 即一个节点追赶区块链的顶端时所用的进程。基于不同的安全等级,有几种同步方法“ 完全验证从创世块起下载全体区块头检查点式下载法使用一个自己信任的较近区块的区块头,并从该区块头开始追及区块链追随 HEAD(区块链最新区块)只需追随最新区块头,就可以相当有自信(自己同步得到的是主链而非伪链)。区块链越长,攻击者要制造伪链所需付出的代价就越大当前,只有掌握了全体区块头,才能够任意地验证其他历史数据。区块头累加器可以改善这个状态,使得一个客户端可以把检查点设在区块链顶端,而仍然能够验证历史数据。 区块同步 客户端用来 pull(拉取)历史事务和叔块信息的进程。 验证这些数据需要先有全体区块头,然后根据 Header.transactions_root 和 Header.uncles_root 来检查收据同步 不执行 Full Sync(完全同步)的客户端往往需要通过 ETH DevP2p 协议来取得历史收据 验证这些数据需要先有全体区块头,然后根据 Header.receipts_root 和来检查状态同步节点获得近期状态完整副本的机制。 Full Sync(完全同步) 下载所有历史区块并按顺序执行这些区块。 最简单的同步方法计算量非常大需要区块头同步需要区块同步快速同步 下载全部历史区块,以及近期状态数据的副本 使用了一个安全假设:从历史区块中得到的状态根都是正确的要求历史同步会给提供这些状态数据的节点造成很大的负担Flat Dtatabase Layout 不容易满足快速同步的要求Snap Sync(快照同步) 下载全部历史区块以及近期状态数据的副本 使用了一个安全假设:从历史区块中得到的状态根都是正确的要求历史同步非常适合 Flat Dtatabase Layout带宽、硬盘读写和耗费时间都有指数级节省Stateless Sync(无状态同步) 这个术语并不常用,其定义也可能随时调整不像其它状态同步方法,这一方法最终无法使节点获得近期状态数据的完整副本。就其自身而言,其用法是免去维护状态数据本地副本之需、仍能验证区块;或者,它可以与其他同步方法结合,从而能即时验证区块,然后慢慢在本地构建出可访问的完整状态数据。 需要区块广播需要区块见证数据Beam Sync(光子同步) 光子同步本质上就是一种无状态同步,但不要求网络提供区块见证数据。相反,客户端是按需从网络中请求所需的状态 需要区块广播需要按需状态检索Access list(访问列表)的可得性大大提高了这种方法的效率 (责任编辑:admin) |