barnard测试网回滚相关步骤
1.修改代码
在https://stcscan.io/ 里面找到一个对应的回滚高度
https://stcscan.io/barnard/blocks/height/16080000 比如这个16080000
修改对应代码
pub static BARNARD_HARD_FORK_HEIGHT: BlockNumber = 16080000;
pub static BARNARD_HARD_FORK_HASH: Lazy<HashValue> = Lazy::new(|| {
HashValue::from_hex_literal(
"0x2dd593a9ac3e44d4a70423d39ffbd94930dba00b4682fcde9ebb2be8950bae7c",
)
.expect("")
});
修改对应版本
const BARNARD_HARD_FORK_VERSION: [i32; 3] = [1, 13, 12];
这里对应release版本号1.13.12, 这个意思是大于这个版本号的新barnard客户端进行分叉回滚
2.修改k8s相关配置
配置延长区块回滚的容忍时间,由于区块回滚可能会导致长时间无响应,该定义在kube/manifest/starcoin-barnard.yaml
中initialDelaySeconds相关字段(改成600),其中
livenessProbe
用于检测容器是否还在运行。如果探测失败,Kubernetes 会重启该容器readinessProbe
用于检测容器是否准备好接受流量。如果探测失败,Kubernetes 会停止将流量转发到该容器,直到探测成功打tag
tag名称必须按照这个前缀const BARNARD_HARD_FORK_PEER_VERSION_STRING_PREFIX: &str = "barnard_rollback_block_fix";
比如这个名称barnard_rollback_block_fix_force_upgrade_07
运行
kubectl apply -f starcoin-barnard.yaml
由于第二步设置了initalDelaySeconds为600s,需要等待600s 查看是否完全ready
5. ban节点
如果当前节点中的Peer列表中的低版本的节点的区块比当前节点的区块要长,此时应该将该低版本节点禁止掉以防止同步旧的区块,操作参考以下命令kubectl exec -it -n starcoin-barnard starcoin-0 -- /starcoin/starcoin --connect /sc-data/barnard/starcoin.ipc # 这里假设 12D3KooWQzGcP8v2hzmyFTtpR7M5HoJZEPzbBNXYbHcVDqPx9BSv 有问题 > node network ban_peer 12D3KooWQzGcP8v2hzmyFTtpR7M5HoJZEPzbBNXYbHcVDqPx9BSv
, multiple selections available,