Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

p2p 区块同步兼容旧版本 #371

Open
godeamon opened this issue Aug 18, 2022 · 1 comment
Open

p2p 区块同步兼容旧版本 #371

godeamon opened this issue Aug 18, 2022 · 1 comment

Comments

@godeamon
Copy link
Collaborator

5.2 的节点 p2p 消息不兼容5.1以及之前版本,这样如果从5.1或者更早版本升级时,只能全部节点同时升级,不能逐个升级节点。

@godeamon godeamon changed the title p2p 兼容旧版本 p2p 区块同步兼容旧版本 Aug 18, 2022
@godeamon
Copy link
Collaborator Author

【问题现象】
5.2版本程序的区块同步方案从广播方式改成了拉取方式,旧版本区块采用将区块广播到网络中,新版本不再广播,而是其他节点从网络中同步最新的区块,采用拉取方式。如果现在系统网络中都是旧版本的程序,如果将其中一个节点升级为5.2版本,那么此节点不能从网络中同步区块,高度不会增加。

【根本原因】
5.2版本增加了一系列p2p的消息类型: 684e0ac#diff-9898f5d59e04eeeac00a0cbde9fa0a5e2791a296204f12b8add062176064e307
同步区块时使用此类型进行同步,旧版本不会返回数据。

【解决方案】
在同步区块时进行旧版本兼容,使用两个版本进行最高区块查询,判断最高区块在哪个版本消息中,然后采用对应方案进行同步区块,这样即使网络中有旧版本和新版本两种节点,那么依然能同步成功。等所有节点都升级到最新版本后,只能使用最新版本的消息同步区块。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant