laconicd-deprecated/x/evm/statedb/config.go
Federico Kunze Küllmer 286f919709
chore(evm): cleanup EVM files (#1582)
* chore(evm): cleanup EVM files

* move EVMConfig
2022-12-30 13:20:14 +01:00

63 lines
2.0 KiB
Go

// Copyright 2021 Evmos Foundation
// This file is part of Evmos' Ethermint library.
//
// The Ethermint library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The Ethermint library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
package statedb
import (
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/params"
"github.com/evmos/ethermint/x/evm/types"
)
// TxConfig encapulates the readonly information of current tx for `StateDB`.
type TxConfig struct {
BlockHash common.Hash // hash of current block
TxHash common.Hash // hash of current tx
TxIndex uint // the index of current transaction
LogIndex uint // the index of next log within current block
}
// NewTxConfig returns a TxConfig
func NewTxConfig(bhash, thash common.Hash, txIndex, logIndex uint) TxConfig {
return TxConfig{
BlockHash: bhash,
TxHash: thash,
TxIndex: txIndex,
LogIndex: logIndex,
}
}
// NewEmptyTxConfig construct an empty TxConfig,
// used in context where there's no transaction, e.g. `eth_call`/`eth_estimateGas`.
func NewEmptyTxConfig(bhash common.Hash) TxConfig {
return TxConfig{
BlockHash: bhash,
TxHash: common.Hash{},
TxIndex: 0,
LogIndex: 0,
}
}
// 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 types.Params
ChainConfig *params.ChainConfig
CoinBase common.Address
BaseFee *big.Int
}