Commit 7a2a62c4 authored by mdj33's avatar mdj33 Committed by 33cn

add comments

parent 2147da5c
......@@ -94,7 +94,7 @@ out:
client.currentTx = nil
}
//在分叉的主链上,回滚会连续回滚,回滚结束前不会add block,停止发送同时也忽略共识消息,回滚结束后根据共识高度重新设定finishHeight
// 如果分叉高度大于当前已完成高度,说明新的主链也收到了finish的tx,不需要重发,也就不需要重新设定
//如果分叉高度大于当前已完成高度,说明新的主链也收到了finish的tx,不需要重发,也就不需要重新设定
if height <= finishHeight {
finishHeight = notification[0] - 1
}
......@@ -178,7 +178,8 @@ out:
//未共识过的小于当前共识高度的区块,可以不参与共识, 如果是新节点,一直等到同步的区块达到了共识高度,才设置同步参与共识
//在某些特殊场景下,比如平行链连接的主链节点分叉后又恢复,主链的共识高度低于分叉高度时候,主链上形成共识空洞,需要从共识高度重新发送而不是分叉高度
//共识高度和分叉高度不一致其中一个原因是共识交易组里面某个高度分叉了,分叉的主链节点执行成功,而其他主链节点执行失败
//共识高度和分叉高度不一致其中一个原因是共识交易组里面某个高度分叉了,分叉的主链节点执行成功,而其他主链节点执行失败,共识高度停留在交易组最小高度-1
//而分叉高度是交易组里面的某个高度
if finishHeight < mainConsensHeight {
finishHeight = mainConsensHeight
sendingMsgs = nil
......
......@@ -20,6 +20,8 @@
## 分叉,节点回滚
1. delete的高度如果当前正在发送,取消当前的发送,不取消有可能会失败原因一直发
1. 分叉时候如果回滚高度小于finish高度,需要重新设置finish高度为最小值,等主链共识消息来之后重新设定finish高度
1. 分叉时候停止共识响应,等分叉结束新增加高度时候再放开,可以保证一致性,也减少不必要的交易发送浪费手续费
## 普通执行
1.如果收到主链block,检查是否当前的交易在block里面且执行成功,如果执行失败或pack,都不算上链,都需要重发。
......@@ -66,4 +68,12 @@
## 硬分叉场景
1. 新的版本增加了挖矿tx,如果所有节点都没有共识,也就是共识为-1,可以删除所有平行链节点数据库,升级代码重新执行,不影响共识
1. 如果节点有共识,共识高度未N,commit msg需要设置>N才加入挖矿交易,也需要删除所有平行链数据库,主链数据库不动
1. 如果节点有共识,高度为N,平行链不删除已有数据库,更新版本,需要主链设置一个尚未达到的高度为共识分叉点,平行链侧不需要设置,共识高度以前的不发送。
\ No newline at end of file
1. 如果节点有共识,高度为N,平行链不删除已有数据库,更新版本,需要主链设置一个尚未达到的高度为共识分叉点,平行链侧不需要设置,共识高度以前的不发送。
## 测试分叉和回退场景
1. docker-compose.sh里面把CLI4节点的钱包启用,并且转账
1. miner CLI4
1. transfer CLI4
1. nginx.conf 里面的server chain30:8802 打开,可以测试pause chain30场景
1. 如果测试平行链自共识,需要在paracross testcase里面设置MainParaSelfConsensusForkHeight和fork.go的local里面设置
pracross的ForkParacrossCommitTx高度一致,或者MainParaSelfConsensusForkHeight 大于分叉高度
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment