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  }