github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/gossip/blockproc/interface.go (about)

     1  package blockproc
     2  
     3  import (
     4  	"github.com/unicornultrafoundation/go-u2u/core/state"
     5  	"github.com/unicornultrafoundation/go-u2u/core/types"
     6  	"github.com/unicornultrafoundation/go-u2u/params"
     7  
     8  	"github.com/unicornultrafoundation/go-helios/native/idx"
     9  	"github.com/unicornultrafoundation/go-u2u/evmcore"
    10  	"github.com/unicornultrafoundation/go-u2u/native"
    11  	"github.com/unicornultrafoundation/go-u2u/native/iblockproc"
    12  	"github.com/unicornultrafoundation/go-u2u/u2u"
    13  )
    14  
    15  type TxListener interface {
    16  	OnNewLog(*types.Log)
    17  	OnNewReceipt(tx *types.Transaction, r *types.Receipt, originator idx.ValidatorID)
    18  	Finalize() iblockproc.BlockState
    19  	Update(bs iblockproc.BlockState, es iblockproc.EpochState)
    20  }
    21  
    22  type TxListenerModule interface {
    23  	Start(block iblockproc.BlockCtx, bs iblockproc.BlockState, es iblockproc.EpochState, statedb *state.StateDB) TxListener
    24  }
    25  
    26  type TxTransactor interface {
    27  	PopInternalTxs(block iblockproc.BlockCtx, bs iblockproc.BlockState, es iblockproc.EpochState, sealing bool, statedb *state.StateDB) types.Transactions
    28  }
    29  
    30  type SealerProcessor interface {
    31  	EpochSealing() bool
    32  	SealEpoch() (iblockproc.BlockState, iblockproc.EpochState)
    33  	Update(bs iblockproc.BlockState, es iblockproc.EpochState)
    34  }
    35  
    36  type SealerModule interface {
    37  	Start(block iblockproc.BlockCtx, bs iblockproc.BlockState, es iblockproc.EpochState) SealerProcessor
    38  }
    39  
    40  type ConfirmedEventsProcessor interface {
    41  	ProcessConfirmedEvent(native.EventI)
    42  	Finalize(block iblockproc.BlockCtx, blockSkipped bool) iblockproc.BlockState
    43  }
    44  
    45  type ConfirmedEventsModule interface {
    46  	Start(bs iblockproc.BlockState, es iblockproc.EpochState) ConfirmedEventsProcessor
    47  }
    48  
    49  type EVMProcessor interface {
    50  	Execute(txs types.Transactions) types.Receipts
    51  	Finalize() (evmBlock *evmcore.EvmBlock, skippedTxs []uint32, receipts types.Receipts)
    52  }
    53  
    54  type EVM interface {
    55  	Start(block iblockproc.BlockCtx, statedb *state.StateDB, reader evmcore.DummyChain, onNewLog func(*types.Log), net u2u.Rules, evmCfg *params.ChainConfig) EVMProcessor
    56  }