-
Notifications
You must be signed in to change notification settings - Fork 73
/
config.go
49 lines (43 loc) · 1.37 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package states
import (
"math/big"
"github.com/artela-network/artela/x/evm/txs/support"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/params"
)
// EVMConfig encapsulates common parameters needed to create an EVM to execute a message
// It's mainly to reduce the number of method parameters
type EVMConfig struct {
Params support.Params
ChainConfig *params.ChainConfig
CoinBase common.Address
BaseFee *big.Int
}
// TxConfig encapulates the readonly information of current txs for `StateDB`.
type TxConfig struct {
BlockHash common.Hash // hash of current block
TxHash common.Hash // hash of current txs
TxIndex uint // the index of current txs
LogIndex uint // the index of next log within current block
TxType uint // the index of next log within current block
}
// NewTxConfig returns a TxConfig
func NewTxConfig(blockHash, txHash common.Hash, txIndex, logIndex uint, txType uint) TxConfig {
return TxConfig{
BlockHash: blockHash,
TxHash: txHash,
TxIndex: txIndex,
LogIndex: logIndex,
TxType: txType,
}
}
// NewEmptyTxConfig construct an empty TxConfig,
// used in context where there's no txs, e.g. `eth_call`/`eth_estimateGas`.
func NewEmptyTxConfig(blockHash common.Hash) TxConfig {
return TxConfig{
BlockHash: blockHash,
TxHash: common.Hash{},
TxIndex: 0,
LogIndex: 0,
}
}