Versions in this module Expand all Collapse all v5 v5.0.3 Oct 31, 2023 v5.0.2 Apr 4, 2023 v5.0.1 Dec 7, 2022 v5.0.0 Nov 3, 2022 Changes in this version + const DUP1 + const DUP10 + const DUP11 + const DUP12 + const DUP13 + const DUP14 + const DUP15 + const DUP16 + const DUP2 + const DUP3 + const DUP4 + const DUP5 + const DUP6 + const DUP7 + const DUP8 + const DUP9 + const GasExtStep + const GasFastStep + const GasFastestStep + const GasMidStep + const GasQuickStep + const GasSlowStep + const SWAP1 + const SWAP10 + const SWAP11 + const SWAP12 + const SWAP13 + const SWAP14 + const SWAP15 + const SWAP16 + const SWAP2 + const SWAP3 + const SWAP4 + const SWAP5 + const SWAP6 + const SWAP7 + const SWAP8 + const SWAP9 + var ErrCodeStoreOutOfGas = errors.New("contract creation code storage out of gas") + var ErrContractAddressCollision = errors.New("contract address collision") + var ErrDataError = errors.New("data error") + var ErrDepth = errors.New("max call depth exceeded") + var ErrExecutionReverted = errors.New("execution reverted") + var ErrFcInvalidSendAssetFlag = errors.New("invalid send asset flag") + var ErrForbidCallByContract = errors.New("forbid call by contract") + var ErrForbidDelegateCall = errors.New("forbid delegate call") + var ErrGasUintOverflow = errors.New("gas uint64 overflow") + var ErrInsufficientBalance = errors.New("insufficient balance for transfer") + var ErrInvalidCode = errors.New("invalid code: must not begin with 0xef") + var ErrInvalidJump = errors.New("invalid jump destination") + var ErrMaxCodeSizeExceeded = errors.New("max code size exceeded") + var ErrMustCallByContract = errors.New("must call by contract") + var ErrNotEnoughBalance = errors.New("not enough balance") + var ErrOutOfGas = errors.New("out of gas") + var ErrReturnDataOutOfBounds = errors.New("return data out of bounds") + var ErrToAddressMustBeContract = errors.New("receiver address must be contract") + var ErrUnknownFunc = errors.New("unknown func type") + var ErrValueOverflow = errors.New("value overflow") + var ErrWriteProtection = errors.New("write protection") + var ErrWrongLenOfInput = errors.New("wrong length of input") + var ErrWrongTimeRange = errors.New("wrong time range") + var FSNContractAddress = common.HexToAddress("0x9999999999999999999999999999999999999999") + var PrecompiledAddressesBerlin []common.Address + var PrecompiledAddressesByzantium []common.Address + var PrecompiledAddressesHomestead []common.Address + var PrecompiledAddressesIstanbul []common.Address + var PrecompiledContractsBerlin = map[common.Address]PrecompiledContract + var PrecompiledContractsByzantium = map[common.Address]PrecompiledContract + var PrecompiledContractsHomestead = map[common.Address]PrecompiledContract + var PrecompiledContractsIstanbul = map[common.Address]PrecompiledContract + func ActivateableEips() []string + func ActivePrecompiles(rules params.Rules) []common.Address + func EnableEIP(eipNum int, jt *JumpTable) error + func NoopCanTransfer(db StateDB, from common.Address, balance *big.Int) bool + func NoopTransfer(db StateDB, from, to common.Address, amount *big.Int) + func RunPrecompiledContract(p PrecompiledContract, input []byte, suppliedGas uint64) (ret []byte, remainingGas uint64, err error) + func ValidEip(eipNum int) bool + type AccountRef common.Address + func (ar AccountRef) Address() common.Address + type BlockContext struct + BaseFee *big.Int + BlockNumber *big.Int + CanTransfer CanTransferFunc + CanTransferTimeLock CanTransferTimeLockFunc + Coinbase common.Address + Difficulty *big.Int + GasLimit uint64 + GetHash GetHashFunc + MixDigest common.Hash + ParentTime *big.Int + Time *big.Int + Transfer TransferFunc + TransferTimeLock TransferTimeLockFunc + type CallContext interface + Call func(env *EVM, me ContractRef, addr common.Address, data []byte, ...) ([]byte, error) + CallCode func(env *EVM, me ContractRef, addr common.Address, data []byte, ...) ([]byte, error) + Create func(env *EVM, me ContractRef, data []byte, gas, value *big.Int) ([]byte, common.Address, error) + DelegateCall func(env *EVM, me ContractRef, addr common.Address, data []byte, gas *big.Int) ([]byte, error) + type CanTransferFunc func(StateDB, common.Address, *big.Int) bool + type CanTransferTimeLockFunc func(db StateDB, addr common.Address, p *common.TransferTimeLockParam) bool + type Config struct + Debug bool + EnablePreimageRecording bool + ExtraEips []int + JumpTable *JumpTable + NoBaseFee bool + Tracer EVMLogger + type Contract struct + CallerAddress common.Address + Code []byte + CodeAddr *common.Address + CodeHash common.Hash + Gas uint64 + Input []byte + func NewContract(caller ContractRef, object ContractRef, value *big.Int, gas uint64) *Contract + func (c *Contract) Address() common.Address + func (c *Contract) AsDelegate() *Contract + func (c *Contract) Caller() common.Address + func (c *Contract) GetOp(n uint64) OpCode + func (c *Contract) SetCallCode(addr *common.Address, hash common.Hash, code []byte) + func (c *Contract) SetCodeOptionalHash(addr *common.Address, codeAndHash *codeAndHash) + func (c *Contract) UseGas(gas uint64) (ok bool) + func (c *Contract) Value() *big.Int + type ContractRef interface + Address func() common.Address + type EVM struct + Config Config + Context BlockContext + StateDB StateDB + func NewEVM(blockCtx BlockContext, txCtx TxContext, statedb StateDB, ...) *EVM + func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas uint64, ...) (ret []byte, leftOverGas uint64, err error) + func (evm *EVM) CallCode(caller ContractRef, addr common.Address, input []byte, gas uint64, ...) (ret []byte, leftOverGas uint64, err error) + func (evm *EVM) Cancel() + func (evm *EVM) Cancelled() bool + func (evm *EVM) ChainConfig() *params.ChainConfig + func (evm *EVM) Create(caller ContractRef, code []byte, gas uint64, value *big.Int) (ret []byte, contractAddr common.Address, leftOverGas uint64, err error) + func (evm *EVM) Create2(caller ContractRef, code []byte, gas uint64, endowment *big.Int, ...) (ret []byte, contractAddr common.Address, leftOverGas uint64, err error) + func (evm *EVM) DelegateCall(caller ContractRef, addr common.Address, input []byte, gas uint64) (ret []byte, leftOverGas uint64, err error) + func (evm *EVM) Interpreter() *EVMInterpreter + func (evm *EVM) Reset(txCtx TxContext, statedb StateDB) + func (evm *EVM) StaticCall(caller ContractRef, addr common.Address, input []byte, gas uint64) (ret []byte, leftOverGas uint64, err error) + type EVMInterpreter struct + func NewEVMInterpreter(evm *EVM, cfg Config) *EVMInterpreter + func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) (ret []byte, err error) + type EVMLogger interface + CaptureEnd func(output []byte, gasUsed uint64, t time.Duration, err error) + CaptureEnter func(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, ...) + CaptureExit func(output []byte, gasUsed uint64, err error) + CaptureFault func(pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, depth int, ...) + CaptureStart func(env *EVM, from common.Address, to common.Address, create bool, input []byte, ...) + CaptureState func(pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, ...) + type ErrInvalidOpCode struct + func (e *ErrInvalidOpCode) Error() string + type ErrStackOverflow struct + func (e *ErrStackOverflow) Error() string + type ErrStackUnderflow struct + func (e *ErrStackUnderflow) Error() string + type FSNContract struct + func NewFSNContract(evm *EVM, from common.Address, parentContract bool) *FSNContract + func (c *FSNContract) RequiredGas(input []byte) uint64 + func (c *FSNContract) Run(input []byte) (ret []byte, err error) + type FcFuncType uint8 + const FcSendAsset + const FcUnknownFunc + func (f FcFuncType) Name() string + type FcParams struct + type GetHashFunc func(uint64) common.Hash + type JumpTable [256]*operation + type Memory struct + func NewMemory() *Memory + func (m *Memory) Data() []byte + func (m *Memory) GetCopy(offset, size int64) (cpy []byte) + func (m *Memory) GetPtr(offset, size int64) []byte + func (m *Memory) Len() int + func (m *Memory) Print() + func (m *Memory) Resize(size uint64) + func (m *Memory) Set(offset, size uint64, value []byte) + func (m *Memory) Set32(offset uint64, val *uint256.Int) + type NoopEVMCallContext struct + func (NoopEVMCallContext) Call(caller ContractRef, addr common.Address, data []byte, gas, value *big.Int) ([]byte, error) + func (NoopEVMCallContext) CallCode(caller ContractRef, addr common.Address, data []byte, gas, value *big.Int) ([]byte, error) + func (NoopEVMCallContext) Create(caller ContractRef, data []byte, gas, value *big.Int) ([]byte, common.Address, error) + func (NoopEVMCallContext) DelegateCall(me ContractRef, addr common.Address, data []byte, gas *big.Int) ([]byte, error) + type NoopStateDB struct + func (NoopStateDB) AddBalance(common.Address, *big.Int) + func (NoopStateDB) AddLog(*types.Log) + func (NoopStateDB) AddPreimage(common.Hash, []byte) + func (NoopStateDB) AddRefund(uint64) + func (NoopStateDB) CreateAccount(common.Address) + func (NoopStateDB) Empty(common.Address) bool + func (NoopStateDB) Exist(common.Address) bool + func (NoopStateDB) ForEachStorage(common.Address, func(common.Hash, common.Hash) bool) + func (NoopStateDB) GetBalance(common.Address) *big.Int + func (NoopStateDB) GetCode(common.Address) []byte + func (NoopStateDB) GetCodeHash(common.Address) common.Hash + func (NoopStateDB) GetCodeSize(common.Address) int + func (NoopStateDB) GetNonce(common.Address) uint64 + func (NoopStateDB) GetRefund() uint64 + func (NoopStateDB) GetState(common.Address, common.Hash) common.Hash + func (NoopStateDB) HasSuicided(common.Address) bool + func (NoopStateDB) RevertToSnapshot(int) + func (NoopStateDB) SetCode(common.Address, []byte) + func (NoopStateDB) SetNonce(common.Address, uint64) + func (NoopStateDB) SetState(common.Address, common.Hash, common.Hash) + func (NoopStateDB) Snapshot() int + func (NoopStateDB) SubBalance(common.Address, *big.Int) + func (NoopStateDB) Suicide(common.Address) bool + type OpCode byte + const ADD + const ADDMOD + const ADDRESS + const AND + const BALANCE + const BASEFEE + const BLOCKHASH + const BYTE + const CALL + const CALLCODE + const CALLDATACOPY + const CALLDATALOAD + const CALLDATASIZE + const CALLER + const CALLVALUE + const CHAINID + const CODECOPY + const CODESIZE + const COINBASE + const CREATE + const CREATE2 + const DELEGATECALL + const DIFFICULTY + const DIV + const EQ + const EXP + const EXTCODECOPY + const EXTCODEHASH + const EXTCODESIZE + const GAS + const GASLIMIT + const GASPRICE + const GT + const INVALID + const ISZERO + const JUMP + const JUMPDEST + const JUMPI + const KECCAK256 + const LOG0 + const LOG1 + const LOG2 + const LOG3 + const LOG4 + const LT + const MLOAD + const MOD + const MSIZE + const MSTORE + const MSTORE8 + const MUL + const MULMOD + const NOT + const NUMBER + const OR + const ORIGIN + const PC + const POP + const PUSH1 + const PUSH10 + const PUSH11 + const PUSH12 + const PUSH13 + const PUSH14 + const PUSH15 + const PUSH16 + const PUSH17 + const PUSH18 + const PUSH19 + const PUSH2 + const PUSH20 + const PUSH21 + const PUSH22 + const PUSH23 + const PUSH24 + const PUSH25 + const PUSH26 + const PUSH27 + const PUSH28 + const PUSH29 + const PUSH3 + const PUSH30 + const PUSH31 + const PUSH32 + const PUSH4 + const PUSH5 + const PUSH6 + const PUSH7 + const PUSH8 + const PUSH9 + const RETURN + const RETURNDATACOPY + const RETURNDATASIZE + const REVERT + const SAR + const SDIV + const SELFBALANCE + const SELFDESTRUCT + const SGT + const SHL + const SHR + const SIGNEXTEND + const SLOAD + const SLT + const SMOD + const SSTORE + const STATICCALL + const STOP + const SUB + const TIMESTAMP + const XOR + func StringToOp(str string) OpCode + func (op OpCode) IsPush() bool + func (op OpCode) String() string + type PrecompiledContract interface + RequiredGas func(input []byte) uint64 + Run func(input []byte) ([]byte, error) + type ScopeContext struct + Contract *Contract + Memory *Memory + Stack *Stack + type Stack struct + func (st *Stack) Back(n int) *uint256.Int + func (st *Stack) Data() []uint256.Int + func (st *Stack) Print() + type StateDB interface + AddAddressToAccessList func(addr common.Address) + AddBalance func(common.Address, common.Hash, *big.Int) + AddLog func(*types.Log) + AddMultiSwap func(swap common.MultiSwap) error + AddPreimage func(common.Hash, []byte) + AddRefund func(uint64) + AddReport func(report []byte) error + AddSlotToAccessList func(addr common.Address, slot common.Hash) + AddSwap func(swap common.Swap) error + AddTicket func(common.Ticket) error + AddTimeLockBalance func(common.Address, common.Hash, *common.TimeLock, uint64) + AddressInAccessList func(addr common.Address) bool + AllTickets func() (common.TicketsDataSlice, error) + CreateAccount func(common.Address) + Empty func(common.Address) bool + Exist func(common.Address) bool + ForEachStorage func(common.Address, func(common.Hash, common.Hash) bool) + GenAsset func(common.Asset) error + GenNotation func(common.Address) error + GetAsset func(assetID common.Hash) (common.Asset, error) + GetBalance func(common.Hash, common.Address) *big.Int + GetCode func(common.Address) []byte + GetCodeHash func(common.Address) common.Hash + GetCodeSize func(common.Address) int + GetCommittedState func(common.Address, common.Hash) common.Hash + GetMultiSwap func(swapID common.Hash) (common.MultiSwap, error) + GetNonce func(common.Address) uint64 + GetNotation func(common.Address) uint64 + GetRefund func() uint64 + GetState func(common.Address, common.Hash) common.Hash + GetSwap func(swapID common.Hash) (common.Swap, error) + GetTicket func(id common.Hash) (*common.Ticket, error) + GetTimeLockBalance func(common.Hash, common.Address) *common.TimeLock + HasSuicided func(common.Address) bool + IsReportExist func(report []byte) bool + IsTicketExist func(id common.Hash) bool + PrepareAccessList func(sender common.Address, dest *common.Address, precompiles []common.Address, ...) + ProcessMatureFSN func(addr common.Address, timestamp, blockNbr uint64) + RemoveMultiSwap func(id common.Hash) error + RemoveSwap func(id common.Hash) error + RemoveTicket func(id common.Hash) error + RevertToSnapshot func(int) + SetCode func(common.Address, []byte) + SetNonce func(common.Address, uint64) + SetState func(common.Address, common.Hash, common.Hash) + SetTimeLockBalance func(common.Address, common.Hash, *common.TimeLock) + SlotInAccessList func(addr common.Address, slot common.Hash) (addressOk bool, slotOk bool) + Snapshot func() int + SubBalance func(common.Address, common.Hash, *big.Int) + SubRefund func(uint64) + SubTimeLockBalance func(common.Address, common.Hash, *common.TimeLock, uint64) + Suicide func(common.Address) bool + TransferNotation func(notation uint64, from common.Address, to common.Address) error + UpdateAsset func(common.Asset) error + UpdateMultiSwap func(swap common.MultiSwap) error + UpdateSwap func(swap common.Swap) error + type TransferFunc func(StateDB, common.Address, common.Address, *big.Int) + type TransferTimeLockFunc func(db StateDB, sender, recipient common.Address, p *common.TransferTimeLockParam) + type TxContext struct + GasPrice *big.Int + Origin common.Address Other modules containing this package github.com/FusionFoundation/efsn github.com/FusionFoundation/efsn/v4