mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-20 13:44:31 +00:00
* chore: `golangci-lint` CI workflow
* fix: make `golangci-lint` happy
* chore: bump `actions/{checkout,setup-go}` versions
* chore: overhaul `.golanci.yml` config
* fix: all linter issues
* chore: exclude non-libevm linters + change deprecated option
* fix: add overflow check in example
* fix: try again; different local version?
* chore: this is trying my patience
* chore: enable `gci` and fix ordering
* chore: mark `ethclient/gethclient` test as flaky
* chore: mark `eth/catalyst` test as flaky
53 lines
1.6 KiB
Go
53 lines
1.6 KiB
Go
package libevm
|
|
|
|
import (
|
|
"github.com/holiman/uint256"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
)
|
|
|
|
// PrecompiledContract is an exact copy of vm.PrecompiledContract, mirrored here
|
|
// for instances where importing that package would result in a circular
|
|
// dependency.
|
|
type PrecompiledContract interface {
|
|
RequiredGas(input []byte) uint64
|
|
Run(input []byte) ([]byte, error)
|
|
}
|
|
|
|
// StateReader is a subset of vm.StateDB, exposing only methods that read from
|
|
// but do not modify state. See method comments in vm.StateDB, which aren't
|
|
// copied here as they risk becoming outdated.
|
|
type StateReader interface {
|
|
GetBalance(common.Address) *uint256.Int
|
|
GetNonce(common.Address) uint64
|
|
|
|
GetCodeHash(common.Address) common.Hash
|
|
GetCode(common.Address) []byte
|
|
GetCodeSize(common.Address) int
|
|
|
|
GetRefund() uint64
|
|
|
|
GetCommittedState(common.Address, common.Hash) common.Hash
|
|
GetState(common.Address, common.Hash) common.Hash
|
|
|
|
GetTransientState(addr common.Address, key common.Hash) common.Hash
|
|
|
|
HasSelfDestructed(common.Address) bool
|
|
|
|
Exist(common.Address) bool
|
|
Empty(common.Address) bool
|
|
|
|
AddressInAccessList(addr common.Address) bool
|
|
SlotInAccessList(addr common.Address, slot common.Hash) (addressOk bool, slotOk bool)
|
|
}
|
|
|
|
// AddressContext carries addresses available to contexts such as calls and
|
|
// contract creation.
|
|
//
|
|
// With respect to contract creation, the Self address MAY be the predicted
|
|
// address of the contract about to be deployed, which may not exist yet.
|
|
type AddressContext struct {
|
|
Origin common.Address // equivalent to vm.ORIGIN op code
|
|
Caller common.Address // equivalent to vm.CALLER op code
|
|
Self common.Address // equivalent to vm.ADDRESS op code
|
|
}
|