Commit 3a997b66 authored by mdj33's avatar mdj33 Committed by vipwzw

rmv parachain check most hash as not needed

parent 88c2d368
...@@ -155,7 +155,7 @@ out: ...@@ -155,7 +155,7 @@ out:
case rsp := <-consensusCh: case rsp := <-consensusCh:
consensHeight := rsp.Height consensHeight := rsp.Height
plog.Info("para consensus rcv", "notify", notification, "sending", len(sendingMsgs), plog.Info("para consensus rcv", "notify", notification, "sending", len(sendingMsgs),
"consensHeigt", rsp.Height, "consensBlockHash", common.ToHex(rsp.BlockHash), "sync", isSync) "consensHeigt", rsp.Height, "finished", finishHeight, "sync", isSync, "consensBlockHash", common.ToHex(rsp.BlockHash))
if notification == nil || isRollback { if notification == nil || isRollback {
continue continue
...@@ -166,6 +166,11 @@ out: ...@@ -166,6 +166,11 @@ out:
isSync = true isSync = true
} }
// 共识高度追赶上完成高度之后再发,不然分叉节点继续发浪费手续费
if finishHeight > consensHeight {
isSync = false
}
//未共识过的小于当前共识高度的区块,可以不参与共识, 如果是新节点,一直等到同步的区块达到了共识高度,才设置同步参与共识 //未共识过的小于当前共识高度的区块,可以不参与共识, 如果是新节点,一直等到同步的区块达到了共识高度,才设置同步参与共识
//在某些特殊场景下,比如平行链连接的主链节点分叉后又恢复,主链的共识高度低于分叉高度时候,主链上形成共识空洞,需要从共识高度重新发送而不是分叉高度 //在某些特殊场景下,比如平行链连接的主链节点分叉后又恢复,主链的共识高度低于分叉高度时候,主链上形成共识空洞,需要从共识高度重新发送而不是分叉高度
//共识高度和分叉高度不一致其中一个原因是共识交易组里面某个高度分叉了,分叉的主链节点执行成功,而其他主链节点执行失败,共识高度停留在交易组最小高度-1 //共识高度和分叉高度不一致其中一个原因是共识交易组里面某个高度分叉了,分叉的主链节点执行成功,而其他主链节点执行失败,共识高度停留在交易组最小高度-1
...@@ -186,6 +191,7 @@ out: ...@@ -186,6 +191,7 @@ out:
finishHeight = consensHeight finishHeight = consensHeight
sendingMsgs = nil sendingMsgs = nil
client.currentTx = nil client.currentTx = nil
isSync = true
} }
case key, ok := <-priKeyCh: case key, ok := <-priKeyCh:
......
...@@ -33,5 +33,5 @@ services: ...@@ -33,5 +33,5 @@ services:
- chain30 - chain30
volumes: volumes:
- ./nginx.conf:/etc/nginx/nginx.conf - ./nginx.conf:/etc/nginx/nginx.conf
expose: ports:
- "8803" - "8802:8803"
...@@ -361,25 +361,6 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error ...@@ -361,25 +361,6 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
} }
clog.Info("paracross.Commit commit ----pass", "most", most, "mostHash", hex.EncodeToString([]byte(mostHash))) clog.Info("paracross.Commit commit ----pass", "most", most, "mostHash", hex.EncodeToString([]byte(mostHash)))
// parallel chain get self blockhash and compare with commit done result, if not match, just log and return
if types.IsPara() {
saveTitleHeight(a.db, calcTitleHeightKey(commit.Status.Title, commit.Status.Height), stat)
blockHash, err := getBlockHash(a.api, stat.Height)
if err != nil {
clog.Error("paracross.Commit para getBlockHash local", "err", err.Error(), "commitheight", commit.Status.Height,
"commitHash", hex.EncodeToString(commit.Status.BlockHash), "mainHash", hex.EncodeToString(commit.Status.MainBlockHash),
"mainHeight", commit.Status.MainBlockHeight)
return receipt, nil
}
if !bytes.Equal(blockHash.Hash, []byte(mostHash)) {
clog.Error("paracross.Commit para blockHash not match", "selfBlockHash", hex.EncodeToString(blockHash.Hash),
"mostHash", hex.EncodeToString([]byte(mostHash)), "commitHeight", commit.Status.Height,
"commitMainHash", hex.EncodeToString(commit.Status.MainBlockHash), "commitMainHeight", commit.Status.MainBlockHeight)
return receipt, nil
}
}
stat.Status = pt.ParacrossStatusCommitDone stat.Status = pt.ParacrossStatusCommitDone
receiptDone := makeDoneReceipt(a.fromaddr, commit, stat, int32(most), int32(commitCount), int32(len(nodes))) receiptDone := makeDoneReceipt(a.fromaddr, commit, stat, int32(most), int32(commitCount), int32(len(nodes)))
receipt.KV = append(receipt.KV, receiptDone.KV...) receipt.KV = append(receipt.KV, receiptDone.KV...)
...@@ -391,12 +372,6 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error ...@@ -391,12 +372,6 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
titleStatus.BlockHash = commit.Status.BlockHash titleStatus.BlockHash = commit.Status.BlockHash
saveTitle(a.db, calcTitleKey(commit.Status.Title), titleStatus) saveTitle(a.db, calcTitleKey(commit.Status.Title), titleStatus)
if types.IsDappFork(a.exec.GetMainHeight(), pt.ParaX, pt.ForkCommitTx) {
key := calcTitleHashKey(commit.Status.Title, hex.EncodeToString(commit.Status.MainBlockHash))
saveTitle(a.db, key, titleStatus)
receipt.KV = append(receipt.KV, &types.KeyValue{Key: key, Value: types.Encode(titleStatus)})
}
clog.Info("paracross.Commit commit done", "height", commit.Status.Height, clog.Info("paracross.Commit commit done", "height", commit.Status.Height,
"cross tx count", len(commit.Status.CrossTxHashs), "statusBlockHash", hex.EncodeToString(titleStatus.BlockHash)) "cross tx count", len(commit.Status.CrossTxHashs), "statusBlockHash", hex.EncodeToString(titleStatus.BlockHash))
......
...@@ -13,7 +13,6 @@ import ( ...@@ -13,7 +13,6 @@ import (
var ( var (
title string title string
titleHeight string titleHeight string
titleHash string
managerConfigNodes string //manager 合约配置的nodes managerConfigNodes string //manager 合约配置的nodes
paraConfigNodes string //平行链自组织配置的nodes,最初是从manager同步过来 paraConfigNodes string //平行链自组织配置的nodes,最初是从manager同步过来
paraConfigNodeAddr string //平行链配置节点账户 paraConfigNodeAddr string //平行链配置节点账户
...@@ -28,7 +27,6 @@ var ( ...@@ -28,7 +27,6 @@ var (
func setPrefix() { func setPrefix() {
title = "mavl-paracross-title-" title = "mavl-paracross-title-"
titleHeight = "mavl-paracross-titleHeight-" titleHeight = "mavl-paracross-titleHeight-"
titleHash = "mavl-paracross-titleHash-"
managerConfigNodes = "paracross-nodes-" managerConfigNodes = "paracross-nodes-"
paraConfigNodes = "mavl-paracross-nodes-title-" paraConfigNodes = "mavl-paracross-nodes-title-"
paraConfigNodeAddr = "mavl-paracross-nodes-titleAddr-" paraConfigNodeAddr = "mavl-paracross-nodes-titleAddr-"
...@@ -50,10 +48,6 @@ func calcTitleHeightKey(title string, height int64) []byte { ...@@ -50,10 +48,6 @@ func calcTitleHeightKey(title string, height int64) []byte {
return []byte(fmt.Sprintf(titleHeight+"%s-%d", title, height)) return []byte(fmt.Sprintf(titleHeight+"%s-%d", title, height))
} }
func calcTitleHashKey(title string, blockHash string) []byte {
return []byte(fmt.Sprintf(titleHash+"%s-%s", title, blockHash))
}
func calcLocalHeightKey(title string, height int64) []byte { func calcLocalHeightKey(title string, height int64) []byte {
return []byte(fmt.Sprintf(localTitleHeight+"%s-%d", title, height)) return []byte(fmt.Sprintf(localTitleHeight+"%s-%d", title, height))
} }
......
...@@ -31,16 +31,11 @@ func (p *Paracross) Query_GetTitleByHash(in *pt.ReqParacrossTitleHash) (types.Me ...@@ -31,16 +31,11 @@ func (p *Paracross) Query_GetTitleByHash(in *pt.ReqParacrossTitleHash) (types.Me
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
if !types.IsDappFork(p.GetMainHeight(), pt.ParaX, pt.ForkCommitTx) { block, err := p.GetAPI().GetBlockOverview(&types.ReqHash{Hash: in.BlockHash})
block, err := p.GetAPI().GetBlockOverview(&types.ReqHash{Hash: in.BlockHash}) if err != nil || block == nil {
if err != nil || block == nil { return nil, types.ErrHashNotExist
return nil, types.ErrHashNotExist
}
return p.paracrossGetHeight(in.GetTitle())
} }
return p.paracrossGetHeight(in.GetTitle())
return p.paracrossGetHeightByHash(in)
} }
//Query_GetNodeGroup get node group addrs //Query_GetNodeGroup get node group addrs
...@@ -145,14 +140,6 @@ func (p *Paracross) paracrossGetHeight(title string) (types.Message, error) { ...@@ -145,14 +140,6 @@ func (p *Paracross) paracrossGetHeight(title string) (types.Message, error) {
return ret, nil return ret, nil
} }
func (p *Paracross) paracrossGetHeightByHash(in *pt.ReqParacrossTitleHash) (types.Message, error) {
ret, err := getTitle(p.GetStateDB(), calcTitleHashKey(in.GetTitle(), hex.EncodeToString(in.GetBlockHash())))
if err != nil {
return nil, errors.Cause(err)
}
return ret, nil
}
func (p *Paracross) paracrossListTitles() (types.Message, error) { func (p *Paracross) paracrossListTitles() (types.Message, error) {
return listLocalTitles(p.GetLocalDB()) return listLocalTitles(p.GetLocalDB())
} }
......
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