升级版本是否会影响到历史数据
- 方式一(不推荐 也不对)
目前我是用的master分支 但不是最新的
当前的区块高度是605
那我想要升级到最新的master代码
1、现将所有节点停掉
2、创建新的文件夹用来存放最新的版本
3、下拉最新的代码并进行编译
4、替换可执行文件
cp -r output/* lastv-20200729/pn1 cp -r output/* lastv-20200729/pn2 cp -r output/* lastv-20200729/pn3
5、将上一版本下的data和conf目录替换到最新的
cp -R pn1/data/ lastv-20200729/pn1/data cp -R pn1/conf/ lastv-20200729/pn1/conf cp -R pn2/data lastv-20200729/pn2/data cp -R pn2/conf lastv-20200729/pn2/conf cp -R pn3/data/ lastv-20200729/pn3/data cp -R pn3/conf/ lastv-20200729/pn3/conf
6、重启
nohup ./xchain --vm ixvm &
节点1可以启动,但节点2启动失败 说明这种升级的方式不对
- 方式二(推荐)
查看升级文档
https://xuperchain.readthedocs.io/zh/latest/operations_guides.html#id2
我上面的思路是创建新的文件夹 将老版本数据复制到新文件夹中
官方文档的思路是 将新的“plugins文件夹, 二进制文件xchain,xchain-cli”这些文件将老版本的替换掉 然后重启即可
cp -R output/plugins/ pn1/plugins/ cp -R output/xchain pn1/xchain cp -R output/xchain-cli pn1/xchain-cli cp -R output/plugins/ pn2/plugins/ cp -R output/xchain pn2/xchain cp -R output/xchain-cli pn2/xchain-cli cp -R output/plugins/ pn3/plugins/ cp -R output/xchain pn3/xchain cp -R output/xchain-cli pn3/xchain-cli
升级完成 保留了老数据
新增出块节点 节点数据同步中
- 如何新增节点
a、若是新增一个同步节点 不需要修改 创世块配置 不需要删除老数据 只需要修改 yaml文件即可 然后启动即可
https://xuperchain.readthedocs.io/zh/latest/advanced_usage/multi-nodes.html?highlight=%E5%A2%9E%E5%8A%A0%E8%8A%82%E7%82%B9#id1
b、若是新增一个出块节点 这个不仅仅需要修改yaml文件还需要修改创世块配置 所以需要删除老数据
- 系统如何选择出块节点
此时系统在选择出块节点的算法中会判断该节点是否已同步完成 若已同步完成才会选择该节点作为当前节点
- 查询请求过来如何处理
查询的是当前同步到的状态
- 新搭的场景 出块节点需要再创世快配置中配置 ;非新搭场景 添加一个出块节点 先修改yaml文件 跑起来 然后进行token抵押 才能出块
若一笔上链交易 在系统确认好一个出块节点之后 若突然这个节点挂掉了 此时系统是如何处理的这笔交易呢
如果发起一笔上链交易 交易在出块前会在各个节点间转发,该节点挂掉其它节点可以继续打包
如何使用xpos共识
加上这个配置就是使用xpos,也就是(tdpos+chainedBFT)
不加就是tdpos,不能保证安全性
如果通过sdk调用合约上链的时候 节点若是响应超时的话或因为网络问题没有收到响应 此时并没有收到hash值
- 交易hash没有返回一定没有上链,说明预执行失败
- 首先客户端向节点发起交易预执行请求,预执行结束后会返回客户端读写集,这时客户端会在本地计算txhash,如果没有得到txhash说明交易根本不可能上链 计算txhash成功后,才会将完整的tx发送至网络
感谢
非常感谢百度链的技术大牛的支持 超哥