区块链共识问题
关于区块链有两个问题一直找不到合适的解释,还请大神帮忙看看。
1 区块链共识要求所有矿工对要写入的节点进行验证,并且所有矿工都确认之后才能写入链中,那么如何让所有矿工知道是“所有”呢?难道每个节点之间是完全互相连接的么?
2 当有新矿工加入链中,如何让全网的矿工更新这个“所有”的信息呢,并且让新节点知道“全网”的信息呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
区块链的核心是去中心化,所以不要被传统的C/S模式固定了思维。
由于并没有所谓的中心,所以区块链的很多事件都是通过广播来通知其他人的。
1.最终一致性和强一致性的区别。类似Paxos、Raft、PBFT都是在提交时就已经保证了Safety。公链采用的共识算法,节点会把通过验证的当前最长链看作主链,如果探测到更长的链,则切换过去,从概率上最终保证一致性;
2.同上,公链节点可以随时加入、退出,共识达成不需要节点交互达成强一致,网络层的路由信息由类似DHT的表来维护;而运行PBFT等算法的联盟链必须提前知道节点数量(节点变更会运行视图切换协议,但很复杂)
我回答下我的理解,我提问的点是要问每个节点之间是如何连接的,是否需要每个节点都保持全连接。
就我目前理解的是,每个节点不需要与其他每个节点保持全连接,新节点最开始只需要保持和几个预设的节点链接就可以了。只要账本保持同步即可,当节点作为矿机时,只需要保证及时同步已经连接的其他节点的最新数据,积极挖矿、打包交易即可。如果挖矿成功,挖矿的确认会逐步扩散到全网。当节点只是作为轻客户端,只需要把交易信息广播到已经连接的点然后等待其他节点的确认即可。
所以没有必要保持全网的全连接,据其他网友的数据,全网保持全连接的节点只有15个。