barnard测试网回滚相关步骤

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.yamlinitialDelaySeconds相关字段(改成600),其中

  1. livenessProbe 用于检测容器是否还在运行。如果探测失败,Kubernetes 会重启该容器

  2. readinessProbe 用于检测容器是否准备好接受流量。如果探测失败,Kubernetes 会停止将流量转发到该容器,直到探测成功

  3. 打tag
    tag名称必须按照这个前缀

    const BARNARD_HARD_FORK_PEER_VERSION_STRING_PREFIX: &str = "barnard_rollback_block_fix";

比如这个名称barnard_rollback_block_fix_force_upgrade_07

  1. 运行
    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