github.com/okex/exchain@v1.8.0/libs/tendermint/state/execution_parallel.go (about) 1 package state 2 3 import ( 4 "fmt" 5 "github.com/okex/exchain/libs/system/trace" 6 abci "github.com/okex/exchain/libs/tendermint/abci/types" 7 "github.com/okex/exchain/libs/tendermint/libs/log" 8 "github.com/okex/exchain/libs/tendermint/proxy" 9 "github.com/okex/exchain/libs/tendermint/types" 10 dbm "github.com/okex/exchain/libs/tm-db" 11 ) 12 13 func execBlockOnProxyAppAsync( 14 logger log.Logger, 15 proxyAppConn proxy.AppConnConsensus, 16 block *types.Block, 17 stateDB dbm.DB, 18 ) (*ABCIResponses, error) { 19 var validTxs, invalidTxs = 0, 0 20 21 abciResponses := NewABCIResponses(block) 22 23 commitInfo, byzVals := getBeginBlockValidatorInfo(block, stateDB) 24 25 // Begin block 26 var err error 27 abciResponses.BeginBlock, err = proxyAppConn.BeginBlockSync(abci.RequestBeginBlock{ 28 Hash: block.Hash(), 29 Header: types.TM2PB.Header(&block.Header), 30 LastCommitInfo: commitInfo, 31 ByzantineValidators: byzVals, 32 }) 33 if err != nil { 34 logger.Error("Error in proxyAppConn.BeginBlock", "err", err) 35 return nil, err 36 } 37 38 abciResponses.DeliverTxs = proxyAppConn.ParallelTxs(transTxsToBytes(block.Txs), false) 39 for _, v := range abciResponses.DeliverTxs { 40 if v.Code == abci.CodeTypeOK { 41 validTxs++ 42 } else { 43 invalidTxs++ 44 } 45 } 46 47 // End block. 48 abciResponses.EndBlock, err = proxyAppConn.EndBlockSync(abci.RequestEndBlock{Height: block.Height}) 49 if err != nil { 50 logger.Error("Error in proxyAppConn.EndBlock", "err", err) 51 return nil, err 52 } 53 54 trace.GetElapsedInfo().AddInfo(trace.InvalidTxs, fmt.Sprintf("%d", invalidTxs)) 55 56 return abciResponses, nil 57 }