Commit 0fc2c2e5 authored by mdj33's avatar mdj33 Committed by vipwzw

fix para get consens height sequence

parent 33abf21a
......@@ -528,47 +528,52 @@ out:
client.paraClient.wg.Done()
}
func (client *commitMsgClient) getConsensusStatus(block *types.Block) (*pt.ParacrossStatus, error) {
//获取主链共识高度
if !isParaSelfConsensusForked(block.MainHeight) {
reply, err := client.paraClient.grpcClient.QueryChain(context.Background(), &types.ChainExecutor{
if isParaSelfConsensusForked(block.MainHeight) {
//从本地查询共识高度
ret, err := client.paraClient.GetAPI().QueryChain(&types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitleByHash",
Param: types.Encode(&pt.ReqParacrossTitleHash{Title: types.GetTitle(), BlockHash: block.MainHash}),
FuncName: "GetTitle",
Param: types.Encode(&types.ReqString{Data: types.GetTitle()}),
})
if err != nil {
plog.Error("getMainConsensusHeight", "err", err.Error())
plog.Error("getConsensusHeight ", "err", err.Error())
return nil, err
}
if !reply.GetIsOk() {
plog.Info("getMainConsensusHeight nok", "error", reply.GetMsg())
resp, ok := ret.(*pt.ParacrossStatus)
if !ok {
plog.Error("getConsensusHeight ParacrossStatus nok")
return nil, err
}
var result pt.ParacrossStatus
err = types.Decode(reply.Msg, &result)
if err != nil {
plog.Error("getMainConsensusHeight decode", "err", err.Error())
return nil, err
//开启自共识后也要等到自共识真正切换之后再使用,如果本地区块已经过了自共识高度,但自共识的高度还没达成,就会导致共识机制出错
if resp.Height > -1 {
return resp, nil
}
return &result, nil
}
//从本地查询共识高度
ret, err := client.paraClient.GetAPI().QueryChain(&types.ChainExecutor{
//去主链获取共识高度
reply, err := client.paraClient.grpcClient.QueryChain(context.Background(), &types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitle",
Param: types.Encode(&types.ReqString{Data: types.GetTitle()}),
FuncName: "GetTitleByHash",
Param: types.Encode(&pt.ReqParacrossTitleHash{Title: types.GetTitle(), BlockHash: block.MainHash}),
})
if err != nil {
plog.Error("getConsensusHeight ", "err", err.Error())
plog.Error("getMainConsensusHeight", "err", err.Error())
return nil, err
}
resp, ok := ret.(*pt.ParacrossStatus)
if !ok {
plog.Error("getConsensusHeight ParacrossStatus nok")
if !reply.GetIsOk() {
plog.Info("getMainConsensusHeight nok", "error", reply.GetMsg())
return nil, err
}
return resp, nil
var result pt.ParacrossStatus
err = types.Decode(reply.Msg, &result)
if err != nil {
plog.Error("getMainConsensusHeight decode", "err", err.Error())
return nil, err
}
return &result, nil
}
func (client *commitMsgClient) fetchPrivacyKey(ch chan crypto.PrivKey) {
......
......@@ -35,8 +35,7 @@ function para_set_toml() {
sed -i $xsedfix 's/^emptyBlockInterval=.*/emptyBlockInterval=4/g' "${1}"
sed -i $xsedfix '/^emptyBlockInterval=.*/a MainBlockHashForkHeight=1' "${1}"
#测试使用,主链也要替换ForkParacrossCommitTx 为300
# sed -i $xsedfix '/^emptyBlockInterval=.*/a MainParaSelfConsensusForkHeight=300' "${1}"
sed -i $xsedfix '/^emptyBlockInterval=.*/a MainParaSelfConsensusForkHeight=50' "${1}"
sed -i $xsedfix 's/^MainForkParacrossCommitTx=.*/MainForkParacrossCommitTx=1/g' "${1}"
# rpc
......
......@@ -32,11 +32,14 @@ func (e *Paracross) ExecDelLocal_Commit(payload *pt.ParacrossCommitAction, tx *t
key = calcLocalHeightKey(g.Title, g.Height)
set.KV = append(set.KV, &types.KeyValue{Key: key, Value: nil})
r, err := e.saveLocalParaTxs(tx, true)
if err != nil {
return nil, err
if !types.IsPara(){
r, err := e.saveLocalParaTxs(tx, true)
if err != nil {
return nil, err
}
set.KV = append(set.KV, r.KV...)
}
set.KV = append(set.KV, r.KV...)
} else if log.Ty == pt.TyLogParacrossCommitRecord {
var g pt.ReceiptParacrossRecord
types.Decode(log.Log, &g)
......
......@@ -31,12 +31,14 @@ func (e *Paracross) ExecLocal_Commit(payload *pt.ParacrossCommitAction, tx *type
key = calcLocalHeightKey(g.Title, g.Height)
set.KV = append(set.KV, &types.KeyValue{Key: key, Value: types.Encode(&g)})
r, err := e.saveLocalParaTxs(tx, false)
if err != nil {
return nil, err
if !types.IsPara(){
r, err := e.saveLocalParaTxs(tx, false)
if err != nil {
return nil, err
}
set.KV = append(set.KV, r.KV...)
}
set.KV = append(set.KV, r.KV...)
} else if log.Ty == pt.TyLogParacrossCommitRecord {
var g pt.ReceiptParacrossRecord
types.Decode(log.Log, &g)
......
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