github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/baseapp/baseapp_mode_deliverInAsync.go (about)

     1  package baseapp
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  )
     6  
     7  func (m *modeHandlerDeliverInAsync) handleDeferRefund(info *runTxInfo) {
     8  	app := m.app
     9  
    10  	if app.GasRefundHandler == nil {
    11  		return
    12  	}
    13  	if info.msCacheAnte == nil {
    14  		return
    15  	}
    16  	var gasRefundCtx sdk.Context
    17  	gasRefundCtx = info.runMsgCtx
    18  	if info.msCache == nil || !info.runMsgFinished { // case: panic when runMsg
    19  		info.msCache = app.parallelTxManage.chainMultiStores.GetStoreWithParent(info.msCacheAnte)
    20  		gasRefundCtx = info.ctx
    21  		gasRefundCtx.SetMultiStore(info.msCache)
    22  	}
    23  
    24  	refundGas, err := app.GasRefundHandler(gasRefundCtx, info.tx)
    25  	if err != nil {
    26  		panic(err)
    27  	}
    28  	info.msCache.Write()
    29  	info.ctx.ParaMsg().RefundFee = refundGas
    30  }
    31  
    32  func (m *modeHandlerDeliverInAsync) handleDeferGasConsumed(info *runTxInfo) {
    33  }
    34  func (m *modeHandlerDeliverInAsync) handleRunMsg(info *runTxInfo) (err error) {
    35  	app := m.app
    36  	mode := m.mode
    37  
    38  	info.msCache = app.parallelTxManage.chainMultiStores.GetStoreWithParent(info.msCacheAnte)
    39  	info.runMsgCtx = info.ctx
    40  	info.runMsgCtx.SetMultiStore(info.msCache)
    41  
    42  	info.result, err = app.runMsgs(info.runMsgCtx, info.tx.GetMsgs(), mode)
    43  	info.runMsgFinished = true
    44  	if err == nil {
    45  		info.msCache.Write()
    46  	}
    47  	err = m.checkHigherThanMercury(err, info)
    48  
    49  	return
    50  }
    51  
    52  // ====================================================
    53  // 2. handleGasConsumed
    54  func (m *modeHandlerDeliverInAsync) handleGasConsumed(info *runTxInfo) (err error) {
    55  	m.app.parallelTxManage.blockGasMeterMu.Lock()
    56  	defer m.app.parallelTxManage.blockGasMeterMu.Unlock()
    57  	return m.modeHandlerBase.handleGasConsumed(info)
    58  }