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

平行链启动增加对历史区块的校验机制 #1148

Open
mdj33 opened this issue Jan 29, 2022 · 1 comment
Open

平行链启动增加对历史区块的校验机制 #1148

mdj33 opened this issue Jan 29, 2022 · 1 comment

Comments

@mdj33
Copy link
Collaborator

mdj33 commented Jan 29, 2022

当前平行链节点启动会从已有区块继续执行,不会对历史区块做是否和当前的bin一致的计算结果的校验。 比如一个新版本启动,不会对旧区块做校验,现在要求运维每次更新必须删除旧区块,重新执行比对block hash是否和曾经区块一致来校验。非常不方便,而且容易遗漏或犯错。
期望每次启动增加对历史区块的校验机制。如果校验失败,则panic,提示用户增加fork或其他操作。
大概实现是:

  1. 在当前下载层,执行层基础上增加校验层。校验和下载执行同步进行,不影响区块下载和执行,但是在没有校验完成时候暂停共识的发送。
  2. 对已经校验了的高度和当前bin的git 版本号绑定保存数据库,方便下次重启从上次校验高度继续校验,而不是从头校验。如果启动发现当前bin的git版本号和数据库的不一致,则从0开始校验。
@mdj33
Copy link
Collaborator Author

mdj33 commented Apr 19, 2022

校验层的设计需要重新执行数据库,会影响平行链区块,不合适
可行的方案有:

  1. 通过平行链共识交易增加对当前版本的记录,通过版本上链的方式记录平行链版本和更新记录
  2. 通过配置文件上链,版本更新作为交易发送的方式,本地增加一个监控进程,根据版本更新交易,从github获取对应版本自动更新

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