hevm-0.53.0: Symbolic EVM Evaluator
Safe HaskellSafe-Inferred
LanguageGHC2021

EVM.Types

Synopsis

Documentation

data Word512 Source #

Constructors

Word512 !Word256 !Word256 

Instances

Instances details
Data Word512 Source # 
Instance details

Defined in EVM.Types

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word512 -> c Word512 #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word512 #

toConstr :: Word512 -> Constr #

dataTypeOf :: Word512 -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Word512) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word512) #

gmapT :: (forall b. Data b => b -> b) -> Word512 -> Word512 #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word512 -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word512 -> r #

gmapQ :: (forall d. Data d => d -> u) -> Word512 -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Word512 -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word512 -> m Word512 #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word512 -> m Word512 #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word512 -> m Word512 #

Bits Word512 Source # 
Instance details

Defined in EVM.Types

FiniteBits Word512 Source # 
Instance details

Defined in EVM.Types

Bounded Word512 Source # 
Instance details

Defined in EVM.Types

Enum Word512 Source # 
Instance details

Defined in EVM.Types

Generic Word512 Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Word512 :: Type -> Type #

Methods

from :: Word512 -> Rep Word512 x #

to :: Rep Word512 x -> Word512 #

Ix Word512 Source # 
Instance details

Defined in EVM.Types

Num Word512 Source # 
Instance details

Defined in EVM.Types

Read Word512 Source # 
Instance details

Defined in EVM.Types

Integral Word512 Source # 
Instance details

Defined in EVM.Types

Real Word512 Source # 
Instance details

Defined in EVM.Types

Show Word512 Source # 
Instance details

Defined in EVM.Types

BinaryWord Word512 Source # 
Instance details

Defined in EVM.Types

Associated Types

type UnsignedWord Word512 #

type SignedWord Word512 #

DoubleWord Word512 Source # 
Instance details

Defined in EVM.Types

Associated Types

type LoWord Word512 #

type HiWord Word512 #

Eq Word512 Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Word512 -> Word512 -> Bool #

(/=) :: Word512 -> Word512 -> Bool #

Ord Word512 Source # 
Instance details

Defined in EVM.Types

Hashable Word512 Source # 
Instance details

Defined in EVM.Types

Methods

hashWithSalt :: Int -> Word512 -> Int #

hash :: Word512 -> Int #

TryFrom Word512 W256 Source # 
Instance details

Defined in EVM.Types

type Rep Word512 Source # 
Instance details

Defined in EVM.Types

type SignedWord Word512 Source # 
Instance details

Defined in EVM.Types

type UnsignedWord Word512 Source # 
Instance details

Defined in EVM.Types

type HiWord Word512 Source # 
Instance details

Defined in EVM.Types

type LoWord Word512 Source # 
Instance details

Defined in EVM.Types

data Int512 Source #

Constructors

Int512 !Int256 !Word256 

Instances

Instances details
Data Int512 Source # 
Instance details

Defined in EVM.Types

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Int512 -> c Int512 #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Int512 #

toConstr :: Int512 -> Constr #

dataTypeOf :: Int512 -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Int512) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Int512) #

gmapT :: (forall b. Data b => b -> b) -> Int512 -> Int512 #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Int512 -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Int512 -> r #

gmapQ :: (forall d. Data d => d -> u) -> Int512 -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Int512 -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Int512 -> m Int512 #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Int512 -> m Int512 #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Int512 -> m Int512 #

Bits Int512 Source # 
Instance details

Defined in EVM.Types

FiniteBits Int512 Source # 
Instance details

Defined in EVM.Types

Bounded Int512 Source # 
Instance details

Defined in EVM.Types

Enum Int512 Source # 
Instance details

Defined in EVM.Types

Generic Int512 Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Int512 :: Type -> Type #

Methods

from :: Int512 -> Rep Int512 x #

to :: Rep Int512 x -> Int512 #

Ix Int512 Source # 
Instance details

Defined in EVM.Types

Num Int512 Source # 
Instance details

Defined in EVM.Types

Read Int512 Source # 
Instance details

Defined in EVM.Types

Integral Int512 Source # 
Instance details

Defined in EVM.Types

Real Int512 Source # 
Instance details

Defined in EVM.Types

Show Int512 Source # 
Instance details

Defined in EVM.Types

BinaryWord Int512 Source # 
Instance details

Defined in EVM.Types

Associated Types

type UnsignedWord Int512 #

type SignedWord Int512 #

DoubleWord Int512 Source # 
Instance details

Defined in EVM.Types

Associated Types

type LoWord Int512 #

type HiWord Int512 #

Eq Int512 Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Int512 -> Int512 -> Bool #

(/=) :: Int512 -> Int512 -> Bool #

Ord Int512 Source # 
Instance details

Defined in EVM.Types

Hashable Int512 Source # 
Instance details

Defined in EVM.Types

Methods

hashWithSalt :: Int -> Int512 -> Int #

hash :: Int512 -> Int #

type Rep Int512 Source # 
Instance details

Defined in EVM.Types

type SignedWord Int512 Source # 
Instance details

Defined in EVM.Types

type UnsignedWord Int512 Source # 
Instance details

Defined in EVM.Types

type HiWord Int512 Source # 
Instance details

Defined in EVM.Types

type LoWord Int512 Source # 
Instance details

Defined in EVM.Types

data EType Source #

Constructors

Buf 
Storage 
Log 
EWord 
EAddr 
EContract 
Byte 
End 

data GVar (a :: EType) where Source #

Constructors

BufVar :: Int -> GVar Buf 
StoreVar :: Int -> GVar Storage 

Instances

Instances details
Show (GVar a) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> GVar a -> ShowS #

show :: GVar a -> String #

showList :: [GVar a] -> ShowS #

Eq (GVar a) Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: GVar a -> GVar a -> Bool #

(/=) :: GVar a -> GVar a -> Bool #

Ord (GVar a) Source # 
Instance details

Defined in EVM.Types

Methods

compare :: GVar a -> GVar a -> Ordering #

(<) :: GVar a -> GVar a -> Bool #

(<=) :: GVar a -> GVar a -> Bool #

(>) :: GVar a -> GVar a -> Bool #

(>=) :: GVar a -> GVar a -> Bool #

max :: GVar a -> GVar a -> GVar a #

min :: GVar a -> GVar a -> GVar a #

data Expr (a :: EType) where Source #

Expr implements an abstract representation of an EVM program

This type can give insight into the provenance of a term which is useful, both for the aesthetic purpose of printing terms in a richer way, but also to allow optimizations on the AST instead of letting the SMT solver do all the heavy lifting.

Memory, calldata, and returndata are all represented as a Buf. Semantically speaking a Buf is a byte array with of size 2^256.

Bufs have two base constructors: - AbstractBuf: all elements are fully abstract values - ConcreteBuf bs: all elements past (length bs) are zero

Bufs can be read from with: - ReadByte idx buf: read the byte at idx from buf - ReadWord idx buf: read the byte at idx from buf

Bufs can be written to with: - WriteByte idx val buf: write val to idx in buf - WriteWord idx val buf: write val to idx in buf - CopySlice srcOffset dstOffset size src dst: overwrite dstOffset -> dstOffset + size in dst with srcOffset -> srcOffset + size from src

Note that the shared usage of Buf does allow for the construction of some badly typed Expr instances (e.g. an MSTORE on top of the contents of calldata instead of some previous instance of memory), we accept this for the sake of simplifying pattern matches against a Buf expression.

Storage expressions are similar, but instead of writing regions of bytes, we write a word to a particular key in a given addresses storage. Note that as with a Buf, writes can be sequenced on top of concrete, empty and fully abstract starting states.

One important principle is that of local context: e.g. each term representing a write to a Buf Storage Logs will always contain a copy of the state that is being added to, this ensures that all context relevant to a given operation is contained within the term that represents that operation.

When dealing with Expr instances we assume that concrete expressions have been reduced to their smallest possible representation (i.e. a Lit, ConcreteBuf, or ConcreteStore). Failure to adhere to this invariant will result in your concrete term being treated as symbolic, and may produce unexpected errors. In the future we may wish to consider encoding the concreteness of a given term directly in the type of that term, since such type level shenanigans tends to complicate implementation, we skip this for now.

Constructors

Lit :: !W256 -> Expr EWord

Literal words

Var :: Text -> Expr EWord

Variables

GVar :: GVar a -> Expr a

variables introduced during the CSE pass

LitByte :: !Word8 -> Expr Byte 
IndexWord :: Expr EWord -> Expr EWord -> Expr Byte 
EqByte :: Expr Byte -> Expr Byte -> Expr EWord 
JoinBytes :: Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr Byte -> Expr EWord 
Partial :: [Prop] -> Traces -> PartialExec -> Expr End 
Failure :: [Prop] -> Traces -> EvmError -> Expr End 
Success :: [Prop] -> Traces -> Expr Buf -> Map (Expr EAddr) (Expr EContract) -> Expr End 
ITE :: Expr EWord -> Expr End -> Expr End -> Expr End 
Add :: Expr EWord -> Expr EWord -> Expr EWord 
Sub :: Expr EWord -> Expr EWord -> Expr EWord 
Mul :: Expr EWord -> Expr EWord -> Expr EWord 
Div :: Expr EWord -> Expr EWord -> Expr EWord 
SDiv :: Expr EWord -> Expr EWord -> Expr EWord 
Mod :: Expr EWord -> Expr EWord -> Expr EWord 
SMod :: Expr EWord -> Expr EWord -> Expr EWord 
AddMod :: Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord 
MulMod :: Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord 
Exp :: Expr EWord -> Expr EWord -> Expr EWord 
SEx :: Expr EWord -> Expr EWord -> Expr EWord 
Min :: Expr EWord -> Expr EWord -> Expr EWord 
Max :: Expr EWord -> Expr EWord -> Expr EWord 
LT :: Expr EWord -> Expr EWord -> Expr EWord 
GT :: Expr EWord -> Expr EWord -> Expr EWord 
LEq :: Expr EWord -> Expr EWord -> Expr EWord 
GEq :: Expr EWord -> Expr EWord -> Expr EWord 
SLT :: Expr EWord -> Expr EWord -> Expr EWord 
SGT :: Expr EWord -> Expr EWord -> Expr EWord 
Eq :: Expr EWord -> Expr EWord -> Expr EWord 
IsZero :: Expr EWord -> Expr EWord 
And :: Expr EWord -> Expr EWord -> Expr EWord 
Or :: Expr EWord -> Expr EWord -> Expr EWord 
Xor :: Expr EWord -> Expr EWord -> Expr EWord 
Not :: Expr EWord -> Expr EWord 
SHL :: Expr EWord -> Expr EWord -> Expr EWord 
SHR :: Expr EWord -> Expr EWord -> Expr EWord 
SAR :: Expr EWord -> Expr EWord -> Expr EWord 
Keccak :: Expr Buf -> Expr EWord 
SHA256 :: Expr Buf -> Expr EWord 
Origin :: Expr EWord 
BlockHash :: Expr EWord -> Expr EWord 
Coinbase :: Expr EWord 
Timestamp :: Expr EWord 
BlockNumber :: Expr EWord 
PrevRandao :: Expr EWord 
GasLimit :: Expr EWord 
ChainId :: Expr EWord 
BaseFee :: Expr EWord 
TxValue :: Expr EWord 
Balance :: Expr EAddr -> Expr EWord 
Gas :: Int -> Expr EWord 
CodeSize :: Expr EAddr -> Expr EWord 
CodeHash :: Expr EAddr -> Expr EWord 
LogEntry :: Expr EWord -> Expr Buf -> [Expr EWord] -> Expr Log 
C 

Fields

SymAddr :: Text -> Expr EAddr 
LitAddr :: Addr -> Expr EAddr 
WAddr :: Expr EAddr -> Expr EWord 
ConcreteStore :: Map W256 W256 -> Expr Storage 
AbstractStore :: Expr EAddr -> Maybe W256 -> Expr Storage 
SLoad :: Expr EWord -> Expr Storage -> Expr EWord 
SStore :: Expr EWord -> Expr EWord -> Expr Storage -> Expr Storage 
ConcreteBuf :: ByteString -> Expr Buf 
AbstractBuf :: Text -> Expr Buf 
ReadWord :: Expr EWord -> Expr Buf -> Expr EWord 
ReadByte :: Expr EWord -> Expr Buf -> Expr Byte 
WriteWord :: Expr EWord -> Expr EWord -> Expr Buf -> Expr Buf 
WriteByte :: Expr EWord -> Expr Byte -> Expr Buf -> Expr Buf 
CopySlice :: Expr EWord -> Expr EWord -> Expr EWord -> Expr Buf -> Expr Buf -> Expr Buf 
BufLength :: Expr Buf -> Expr EWord 

Instances

Instances details
Monoid (Expr 'Buf) Source # 
Instance details

Defined in EVM.Expr

Methods

mempty :: Expr 'Buf #

mappend :: Expr 'Buf -> Expr 'Buf -> Expr 'Buf #

mconcat :: [Expr 'Buf] -> Expr 'Buf #

Semigroup (Expr 'Buf) Source # 
Instance details

Defined in EVM.Expr

Methods

(<>) :: Expr 'Buf -> Expr 'Buf -> Expr 'Buf #

sconcat :: NonEmpty (Expr 'Buf) -> Expr 'Buf #

stimes :: Integral b => b -> Expr 'Buf -> Expr 'Buf #

Show (Expr a) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Expr a -> ShowS #

show :: Expr a -> String #

showList :: [Expr a] -> ShowS #

Eq (Expr a) Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Expr a -> Expr a -> Bool #

(/=) :: Expr a -> Expr a -> Bool #

Ord (Expr a) Source # 
Instance details

Defined in EVM.Types

Methods

compare :: Expr a -> Expr a -> Ordering #

(<) :: Expr a -> Expr a -> Bool #

(<=) :: Expr a -> Expr a -> Bool #

(>) :: Expr a -> Expr a -> Bool #

(>=) :: Expr a -> Expr a -> Bool #

max :: Expr a -> Expr a -> Expr a #

min :: Expr a -> Expr a -> Expr a #

TraversableTerm (Expr a) Source # 
Instance details

Defined in EVM.Traversals

Methods

mapTerm :: (forall (b :: EType). Expr b -> Expr b) -> Expr a -> Expr a Source #

foldTerm :: Monoid c => (forall (b :: EType). Expr b -> c) -> c -> Expr a -> c Source #

data SomeExpr Source #

Constructors

forall a.Typeable a => SomeExpr (Expr a) 

Instances

Instances details
Show SomeExpr Source # 
Instance details

Defined in EVM.Types

Eq SomeExpr Source # 
Instance details

Defined in EVM.Types

Ord SomeExpr Source # 
Instance details

Defined in EVM.Types

toNum :: Typeable a => Expr a -> Int Source #

data Prop where Source #

Constructors

PEq :: forall a. Typeable a => Expr a -> Expr a -> Prop 
PLT :: Expr EWord -> Expr EWord -> Prop 
PGT :: Expr EWord -> Expr EWord -> Prop 
PGEq :: Expr EWord -> Expr EWord -> Prop 
PLEq :: Expr EWord -> Expr EWord -> Prop 
PNeg :: Prop -> Prop 
PAnd :: Prop -> Prop -> Prop 
POr :: Prop -> Prop -> Prop 
PImpl :: Prop -> Prop -> Prop 
PBool :: Bool -> Prop 

Instances

Instances details
Show Prop Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Prop -> ShowS #

show :: Prop -> String #

showList :: [Prop] -> ShowS #

Eq Prop Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Prop -> Prop -> Bool #

(/=) :: Prop -> Prop -> Bool #

Ord Prop Source # 
Instance details

Defined in EVM.Types

Methods

compare :: Prop -> Prop -> Ordering #

(<) :: Prop -> Prop -> Bool #

(<=) :: Prop -> Prop -> Bool #

(>) :: Prop -> Prop -> Bool #

(>=) :: Prop -> Prop -> Bool #

max :: Prop -> Prop -> Prop #

min :: Prop -> Prop -> Prop #

TraversableTerm Prop Source # 
Instance details

Defined in EVM.Traversals

Methods

mapTerm :: (forall (b :: EType). Expr b -> Expr b) -> Prop -> Prop Source #

foldTerm :: Monoid c => (forall (b :: EType). Expr b -> c) -> c -> Prop -> c Source #

(.&&) :: Prop -> Prop -> Prop infixr 3 Source #

(.||) :: Prop -> Prop -> Prop infixr 2 Source #

(.<) :: Expr EWord -> Expr EWord -> Prop infix 4 Source #

(.<=) :: Expr EWord -> Expr EWord -> Prop infix 4 Source #

(.>) :: Expr EWord -> Expr EWord -> Prop infix 4 Source #

(.>=) :: Expr EWord -> Expr EWord -> Prop infix 4 Source #

(.==) :: Typeable a => Expr a -> Expr a -> Prop infix 4 Source #

(./=) :: Typeable a => Expr a -> Expr a -> Prop infix 4 Source #

por :: [Prop] -> Prop Source #

data PartialExec Source #

Sometimes we can only partially execute a given program

Constructors

UnexpectedSymbolicArg 

Fields

MaxIterationsReached 

Fields

JumpIntoSymbolicCode 

Fields

data Effect t s where Source #

Effect types used by the vm implementation for side effects & control flow

Constructors

Query :: Query t s -> Effect t s 
Choose :: Choose s -> Effect Symbolic s 

Instances

Instances details
Show (Effect t s) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Effect t s -> ShowS #

show :: Effect t s -> String #

showList :: [Effect t s] -> ShowS #

data Query t s where Source #

Queries halt execution until resolved through RPC calls or SMT queries

Constructors

PleaseFetchContract :: Addr -> BaseState -> (Contract -> EVM t s ()) -> Query t s 
PleaseFetchSlot :: Addr -> W256 -> (W256 -> EVM t s ()) -> Query t s 
PleaseAskSMT :: Expr EWord -> [Prop] -> (BranchCondition -> EVM Symbolic s ()) -> Query Symbolic s 
PleaseDoFFI :: [String] -> (ByteString -> EVM t s ()) -> Query t s 

Instances

Instances details
Show (Query t s) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Query t s -> ShowS #

show :: Query t s -> String #

showList :: [Query t s] -> ShowS #

data Choose s where Source #

Execution could proceed down one of two branches

Constructors

PleaseChoosePath :: Expr EWord -> (Bool -> EVM Symbolic s ()) -> Choose s 

Instances

Instances details
Show (Choose s) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Choose s -> ShowS #

show :: Choose s -> String #

showList :: [Choose s] -> ShowS #

data BranchCondition Source #

The possible return values of a SMT query

Constructors

Case Bool 
Unknown 

Instances

Instances details
Show BranchCondition Source # 
Instance details

Defined in EVM.Types

data VMResult (t :: VMType) s where Source #

The possible result states of a VM

Constructors

Unfinished 

Fields

VMFailure 

Fields

VMSuccess 

Fields

HandleEffect 

Fields

  • :: Effect t s
     
  • -> VMResult t s

    An effect must be handled for execution to continue

Instances

Instances details
Show (VMResult t s) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> VMResult t s -> ShowS #

show :: VMResult t s -> String #

showList :: [VMResult t s] -> ShowS #

data VMType Source #

Constructors

Symbolic 
Concrete 

type family Gas (t :: VMType) = r | r -> t where ... Source #

Equations

Gas Symbolic = () 
Gas Concrete = Word64 

data VM (t :: VMType) s Source #

The state of a stepwise EVM execution

Constructors

VM 

Fields

Instances

Instances details
(k ~ A_Lens, a ~ Block, b ~ Block) => LabelOptic "block" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ Gas t, b ~ Gas t) => LabelOptic "burned" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ Cache, b ~ Cache) => LabelOptic "cache" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ RuntimeConfig, b ~ RuntimeConfig) => LabelOptic "config" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ [Prop], b ~ [Prop]) => LabelOptic "constraints" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ Int, b ~ Int) => LabelOptic "currentFork" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ Env, b ~ Env) => LabelOptic "env" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ Seq ForkState, b ~ Seq ForkState) => LabelOptic "forks" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ [Frame t s], b ~ [Frame t s]) => LabelOptic "frames" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ Map CodeLocation (Int, [Expr 'EWord]), b ~ Map CodeLocation (Int, [Expr 'EWord])) => LabelOptic "iterations" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ [Expr 'Log], b ~ [Expr 'Log]) => LabelOptic "logs" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ Maybe (VMResult t s), b ~ Maybe (VMResult t s)) => LabelOptic "result" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ FrameState t s, b ~ FrameState t s) => LabelOptic "state" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ TreePos Empty Trace, b ~ TreePos Empty Trace) => LabelOptic "traces" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

(k ~ A_Lens, a ~ TxState, b ~ TxState) => LabelOptic "tx" k (VM t s) (VM t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VM t s) (VM t s) a b #

Generic (VM t s) Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep (VM t s) :: Type -> Type #

Methods

from :: VM t s -> Rep (VM t s) x #

to :: Rep (VM t s) x -> VM t s #

Show (VM 'Concrete s) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> VM 'Concrete s -> ShowS #

show :: VM 'Concrete s -> String #

showList :: [VM 'Concrete s] -> ShowS #

Show (VM 'Symbolic s) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> VM 'Symbolic s -> ShowS #

show :: VM 'Symbolic s -> String #

showList :: [VM 'Symbolic s] -> ShowS #

type Rep (VM t s) Source # 
Instance details

Defined in EVM.Types

type Rep (VM t s) = D1 ('MetaData "VM" "EVM.Types" "hevm-0.53.0-inplace" 'False) (C1 ('MetaCons "VM" 'PrefixI 'True) (((S1 ('MetaSel ('Just "result") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (VMResult t s))) :*: (S1 ('MetaSel ('Just "state") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (FrameState t s)) :*: S1 ('MetaSel ('Just "frames") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Frame t s]))) :*: ((S1 ('MetaSel ('Just "env") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Env) :*: S1 ('MetaSel ('Just "block") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Block)) :*: (S1 ('MetaSel ('Just "tx") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TxState) :*: S1 ('MetaSel ('Just "logs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Expr 'Log])))) :*: (((S1 ('MetaSel ('Just "traces") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TreePos Empty Trace)) :*: S1 ('MetaSel ('Just "cache") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cache)) :*: (S1 ('MetaSel ('Just "burned") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Gas t)) :*: S1 ('MetaSel ('Just "iterations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map CodeLocation (Int, [Expr 'EWord]))))) :*: ((S1 ('MetaSel ('Just "constraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Prop]) :*: S1 ('MetaSel ('Just "config") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RuntimeConfig)) :*: (S1 ('MetaSel ('Just "forks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq ForkState)) :*: S1 ('MetaSel ('Just "currentFork") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))))

data ForkState Source #

Constructors

ForkState 

Fields

Instances

Instances details
Generic ForkState Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep ForkState :: Type -> Type #

Show ForkState Source # 
Instance details

Defined in EVM.Types

type Rep ForkState Source # 
Instance details

Defined in EVM.Types

type EVM (t :: VMType) s a = StateT (VM t s) (ST s) a Source #

Alias for the type of e.g. exec1.

data BaseState Source #

The VM base state (i.e. should new contracts be created with abstract balance / storage?)

Constructors

EmptyBase 
AbstractBase 

Instances

Instances details
Show BaseState Source # 
Instance details

Defined in EVM.Types

data RuntimeConfig Source #

Configuration options that need to be consulted at runtime

Instances

Instances details
Show RuntimeConfig Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "allowFFI" k RuntimeConfig RuntimeConfig a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ BaseState, b ~ BaseState) => LabelOptic "baseState" k RuntimeConfig RuntimeConfig a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Maybe (Expr 'EAddr), b ~ Maybe (Expr 'EAddr)) => LabelOptic "overrideCaller" k RuntimeConfig RuntimeConfig a b Source # 
Instance details

Defined in EVM.Types

data Frame (t :: VMType) s Source #

An entry in the VM's "call/create stack"

Constructors

Frame 

Instances

Instances details
(k ~ A_Lens, a ~ FrameContext, b ~ FrameContext) => LabelOptic "context" k (Frame t s) (Frame t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (Frame t s) (Frame t s) a b #

(k ~ A_Lens, a ~ FrameState t1 s1, b ~ FrameState t2 s2) => LabelOptic "state" k (Frame t1 s1) (Frame t2 s2) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (Frame t1 s1) (Frame t2 s2) a b #

Show (Frame 'Concrete s) Source # 
Instance details

Defined in EVM.Types

Show (Frame 'Symbolic s) Source # 
Instance details

Defined in EVM.Types

data FrameContext Source #

Call/create info

Instances

Instances details
Generic FrameContext Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep FrameContext :: Type -> Type #

Show FrameContext Source # 
Instance details

Defined in EVM.Types

Eq FrameContext Source # 
Instance details

Defined in EVM.Types

Ord FrameContext Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Maybe W256, b ~ Maybe W256) => LabelOptic "abi" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "address" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Expr 'Buf, b ~ Expr 'Buf) => LabelOptic "calldata" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Map (Expr 'EAddr) Contract, b ~ Map (Expr 'EAddr) Contract) => LabelOptic "callreversion" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "codehash" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "context" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Map (Expr 'EAddr) Contract, b ~ Map (Expr 'EAddr) Contract) => LabelOptic "createreversion" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "offset" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "size" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ SubState, b ~ SubState) => LabelOptic "subState" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ SubState, b ~ SubState) => LabelOptic "substate" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

(k ~ An_AffineTraversal, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "target" k FrameContext FrameContext a b Source # 
Instance details

Defined in EVM.Types

type Rep FrameContext Source # 
Instance details

Defined in EVM.Types

type Rep FrameContext = D1 ('MetaData "FrameContext" "EVM.Types" "hevm-0.53.0-inplace" 'False) (C1 ('MetaCons "CreationContext" 'PrefixI 'True) ((S1 ('MetaSel ('Just "address") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EAddr)) :*: S1 ('MetaSel ('Just "codehash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EWord))) :*: (S1 ('MetaSel ('Just "createreversion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Expr 'EAddr) Contract)) :*: S1 ('MetaSel ('Just "substate") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SubState))) :+: C1 ('MetaCons "CallContext" 'PrefixI 'True) (((S1 ('MetaSel ('Just "target") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EAddr)) :*: S1 ('MetaSel ('Just "context") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EAddr))) :*: (S1 ('MetaSel ('Just "offset") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EWord)) :*: S1 ('MetaSel ('Just "size") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EWord)))) :*: ((S1 ('MetaSel ('Just "codehash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EWord)) :*: S1 ('MetaSel ('Just "abi") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe W256))) :*: (S1 ('MetaSel ('Just "calldata") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'Buf)) :*: (S1 ('MetaSel ('Just "callreversion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Expr 'EAddr) Contract)) :*: S1 ('MetaSel ('Just "subState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SubState))))))

data SubState Source #

The "accrued substate" across a transaction

Instances

Instances details
Show SubState Source # 
Instance details

Defined in EVM.Types

Eq SubState Source # 
Instance details

Defined in EVM.Types

Ord SubState Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Set (Expr 'EAddr), b ~ Set (Expr 'EAddr)) => LabelOptic "accessedAddresses" k SubState SubState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Set (Expr 'EAddr, W256), b ~ Set (Expr 'EAddr, W256)) => LabelOptic "accessedStorageKeys" k SubState SubState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ [(Expr 'EAddr, Word64)], b ~ [(Expr 'EAddr, Word64)]) => LabelOptic "refunds" k SubState SubState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ [Expr 'EAddr], b ~ [Expr 'EAddr]) => LabelOptic "selfdestructs" k SubState SubState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ [Expr 'EAddr], b ~ [Expr 'EAddr]) => LabelOptic "touchedAccounts" k SubState SubState a b Source # 
Instance details

Defined in EVM.Types

data FrameState (t :: VMType) s Source #

The "registers" of the VM along with memory and data stack

Instances

Instances details
(k ~ A_Lens, a ~ Expr 'Buf, b ~ Expr 'Buf) => LabelOptic "calldata" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "caller" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "callvalue" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ ContractCode, b ~ ContractCode) => LabelOptic "code" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "codeContract" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "contract" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Gas t1, b ~ Gas t2) => LabelOptic "gas" k (FrameState t1 s) (FrameState t2 s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t1 s) (FrameState t2 s) a b #

(k ~ A_Lens, a ~ Memory s1, b ~ Memory s2) => LabelOptic "memory" k (FrameState t s1) (FrameState t s2) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s1) (FrameState t s2) a b #

(k ~ A_Lens, a ~ Word64, b ~ Word64) => LabelOptic "memorySize" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Int, b ~ Int) => LabelOptic "pc" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Expr 'Buf, b ~ Expr 'Buf) => LabelOptic "returndata" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ [Expr 'EWord], b ~ [Expr 'EWord]) => LabelOptic "stack" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "static" k (FrameState t s) (FrameState t s) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (FrameState t s) (FrameState t s) a b #

Generic (FrameState t s) Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep (FrameState t s) :: Type -> Type #

Methods

from :: FrameState t s -> Rep (FrameState t s) x #

to :: Rep (FrameState t s) x -> FrameState t s #

Show (FrameState 'Concrete s) Source # 
Instance details

Defined in EVM.Types

Show (FrameState 'Symbolic s) Source # 
Instance details

Defined in EVM.Types

type Rep (FrameState t s) Source # 
Instance details

Defined in EVM.Types

type Rep (FrameState t s) = D1 ('MetaData "FrameState" "EVM.Types" "hevm-0.53.0-inplace" 'False) (C1 ('MetaCons "FrameState" 'PrefixI 'True) (((S1 ('MetaSel ('Just "contract") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EAddr)) :*: (S1 ('MetaSel ('Just "codeContract") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EAddr)) :*: S1 ('MetaSel ('Just "code") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ContractCode))) :*: (S1 ('MetaSel ('Just "pc") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "stack") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Expr 'EWord]) :*: S1 ('MetaSel ('Just "memory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Memory s))))) :*: ((S1 ('MetaSel ('Just "memorySize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: (S1 ('MetaSel ('Just "calldata") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'Buf)) :*: S1 ('MetaSel ('Just "callvalue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EWord)))) :*: ((S1 ('MetaSel ('Just "caller") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'EAddr)) :*: S1 ('MetaSel ('Just "gas") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Gas t))) :*: (S1 ('MetaSel ('Just "returndata") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr 'Buf)) :*: S1 ('MetaSel ('Just "static") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))))

data Memory s Source #

Instances

Instances details
Show (Memory s) Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Memory s -> ShowS #

show :: Memory s -> String #

showList :: [Memory s] -> ShowS #

data TxState Source #

The state that spans a whole transaction

Instances

Instances details
Show TxState Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Word64, b ~ Word64) => LabelOptic "gaslimit" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "gasprice" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "isCreate" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "origin" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "priorityFee" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ SubState, b ~ SubState) => LabelOptic "substate" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "toAddr" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Map (Expr 'EAddr) Contract, b ~ Map (Expr 'EAddr) Contract) => LabelOptic "txReversion" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "value" k TxState TxState a b Source # 
Instance details

Defined in EVM.Types

data Env Source #

Various environmental data

Instances

Instances details
Generic Env Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Env :: Type -> Type #

Methods

from :: Env -> Rep Env x #

to :: Rep Env x -> Env #

Show Env Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Env -> ShowS #

show :: Env -> String #

showList :: [Env] -> ShowS #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "chainId" k Env Env a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Env Env a b #

(k ~ A_Lens, a ~ Map (Expr 'EAddr) Contract, b ~ Map (Expr 'EAddr) Contract) => LabelOptic "contracts" k Env Env a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Env Env a b #

(k ~ A_Lens, a ~ Int, b ~ Int) => LabelOptic "freshAddresses" k Env Env a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Env Env a b #

(k ~ A_Lens, a ~ Int, b ~ Int) => LabelOptic "freshGasVals" k Env Env a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Env Env a b #

type Rep Env Source # 
Instance details

Defined in EVM.Types

data Block Source #

Data about the block

Instances

Instances details
Generic Block Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Block :: Type -> Type #

Methods

from :: Block -> Rep Block x #

to :: Rep Block x -> Block #

Show Block Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Block -> ShowS #

show :: Block -> String #

showList :: [Block] -> ShowS #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "baseFee" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "coinbase" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

(k ~ A_Lens, a ~ Word64, b ~ Word64) => LabelOptic "gaslimit" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "maxCodeSize" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "number" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "prevRandao" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

(k ~ A_Lens, a ~ FeeSchedule Word64, b ~ FeeSchedule Word64) => LabelOptic "schedule" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "timestamp" k Block Block a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Block Block a b #

type Rep Block Source # 
Instance details

Defined in EVM.Types

data Contract Source #

Full contract state

Instances

Instances details
Show Contract Source # 
Instance details

Defined in EVM.Types

Eq Contract Source # 
Instance details

Defined in EVM.Types

Ord Contract Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "balance" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ ContractCode, b ~ ContractCode) => LabelOptic "code" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Vector (Int, Op), b ~ Vector (Int, Op)) => LabelOptic "codeOps" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "codehash" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "external" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Maybe W64, b ~ Maybe W64) => LabelOptic "nonce" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Vector Int, b ~ Vector Int) => LabelOptic "opIxMap" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'Storage, b ~ Expr 'Storage) => LabelOptic "origStorage" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

(k ~ A_Lens, a ~ Expr 'Storage, b ~ Expr 'Storage) => LabelOptic "storage" k Contract Contract a b Source # 
Instance details

Defined in EVM.Types

class VMOps (t :: VMType) where Source #

Methods

burn' :: Gas t -> EVM t s () -> EVM t s () Source #

burnExp :: Expr EWord -> EVM t s () -> EVM t s () Source #

burnSha3 :: Expr EWord -> EVM t s () -> EVM t s () Source #

burnCalldatacopy :: Expr EWord -> EVM t s () -> EVM t s () Source #

burnCodecopy :: Expr EWord -> EVM t s () -> EVM t s () Source #

burnExtcodecopy :: Expr EAddr -> Expr EWord -> EVM t s () -> EVM t s () Source #

burnReturndatacopy :: Expr EWord -> EVM t s () -> EVM t s () Source #

burnLog :: Expr EWord -> Word8 -> EVM t s () -> EVM t s () Source #

initialGas :: Gas t Source #

ensureGas :: Word64 -> EVM t s () -> EVM t s () Source #

gasTryFrom :: Expr EWord -> Either () (Gas t) Source #

costOfCreate :: FeeSchedule Word64 -> Gas t -> Expr EWord -> Bool -> (Gas t, Gas t) Source #

costOfCall :: FeeSchedule Word64 -> Bool -> Expr EWord -> Gas t -> Gas t -> Expr EAddr -> (Word64 -> Word64 -> EVM t s ()) -> EVM t s () Source #

reclaimRemainingGasAllowance :: VM t s -> EVM t s () Source #

payRefunds :: EVM t s () Source #

pushGas :: EVM t s () Source #

enoughGas :: Word64 -> Gas t -> Bool Source #

subGas :: Gas t -> Word64 -> Gas t Source #

toGas :: Word64 -> Gas t Source #

whenSymbolicElse :: EVM t s a -> EVM t s a -> EVM t s a Source #

partial :: PartialExec -> EVM t s () Source #

branch :: Expr EWord -> (Bool -> EVM t s ()) -> EVM t s () Source #

Instances

Instances details
VMOps 'Concrete Source # 
Instance details

Defined in EVM

Methods

burn' :: Gas 'Concrete -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

burnExp :: Expr 'EWord -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

burnSha3 :: Expr 'EWord -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

burnCalldatacopy :: Expr 'EWord -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

burnCodecopy :: Expr 'EWord -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

burnExtcodecopy :: Expr 'EAddr -> Expr 'EWord -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

burnReturndatacopy :: Expr 'EWord -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

burnLog :: Expr 'EWord -> Word8 -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

initialGas :: Gas 'Concrete Source #

ensureGas :: Word64 -> EVM 'Concrete s () -> EVM 'Concrete s () Source #

gasTryFrom :: Expr 'EWord -> Either () (Gas 'Concrete) Source #

costOfCreate :: FeeSchedule Word64 -> Gas 'Concrete -> Expr 'EWord -> Bool -> (Gas 'Concrete, Gas 'Concrete) Source #

costOfCall :: FeeSchedule Word64 -> Bool -> Expr 'EWord -> Gas 'Concrete -> Gas 'Concrete -> Expr 'EAddr -> (Word64 -> Word64 -> EVM 'Concrete s ()) -> EVM 'Concrete s () Source #

reclaimRemainingGasAllowance :: VM 'Concrete s -> EVM 'Concrete s () Source #

payRefunds :: EVM 'Concrete s () Source #

pushGas :: EVM 'Concrete s () Source #

enoughGas :: Word64 -> Gas 'Concrete -> Bool Source #

subGas :: Gas 'Concrete -> Word64 -> Gas 'Concrete Source #

toGas :: Word64 -> Gas 'Concrete Source #

whenSymbolicElse :: EVM 'Concrete s a -> EVM 'Concrete s a -> EVM 'Concrete s a Source #

partial :: PartialExec -> EVM 'Concrete s () Source #

branch :: Expr 'EWord -> (Bool -> EVM 'Concrete s ()) -> EVM 'Concrete s () Source #

VMOps 'Symbolic Source # 
Instance details

Defined in EVM

Methods

burn' :: Gas 'Symbolic -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

burnExp :: Expr 'EWord -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

burnSha3 :: Expr 'EWord -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

burnCalldatacopy :: Expr 'EWord -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

burnCodecopy :: Expr 'EWord -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

burnExtcodecopy :: Expr 'EAddr -> Expr 'EWord -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

burnReturndatacopy :: Expr 'EWord -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

burnLog :: Expr 'EWord -> Word8 -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

initialGas :: Gas 'Symbolic Source #

ensureGas :: Word64 -> EVM 'Symbolic s () -> EVM 'Symbolic s () Source #

gasTryFrom :: Expr 'EWord -> Either () (Gas 'Symbolic) Source #

costOfCreate :: FeeSchedule Word64 -> Gas 'Symbolic -> Expr 'EWord -> Bool -> (Gas 'Symbolic, Gas 'Symbolic) Source #

costOfCall :: FeeSchedule Word64 -> Bool -> Expr 'EWord -> Gas 'Symbolic -> Gas 'Symbolic -> Expr 'EAddr -> (Word64 -> Word64 -> EVM 'Symbolic s ()) -> EVM 'Symbolic s () Source #

reclaimRemainingGasAllowance :: VM 'Symbolic s -> EVM 'Symbolic s () Source #

payRefunds :: EVM 'Symbolic s () Source #

pushGas :: EVM 'Symbolic s () Source #

enoughGas :: Word64 -> Gas 'Symbolic -> Bool Source #

subGas :: Gas 'Symbolic -> Word64 -> Gas 'Symbolic Source #

toGas :: Word64 -> Gas 'Symbolic Source #

whenSymbolicElse :: EVM 'Symbolic s a -> EVM 'Symbolic s a -> EVM 'Symbolic s a Source #

partial :: PartialExec -> EVM 'Symbolic s () Source #

branch :: Expr 'EWord -> (Bool -> EVM 'Symbolic s ()) -> EVM 'Symbolic s () Source #

type CodeLocation = (Expr EAddr, Int) Source #

A unique id for a given pc

data Cache Source #

The cache is data that can be persisted for efficiency: any expensive query that is constant at least within a block.

Constructors

Cache 

Instances

Instances details
Monoid Cache Source # 
Instance details

Defined in EVM.Types

Methods

mempty :: Cache #

mappend :: Cache -> Cache -> Cache #

mconcat :: [Cache] -> Cache #

Semigroup Cache Source # 
Instance details

Defined in EVM.Types

Methods

(<>) :: Cache -> Cache -> Cache #

sconcat :: NonEmpty Cache -> Cache #

stimes :: Integral b => b -> Cache -> Cache #

Generic Cache Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Cache :: Type -> Type #

Methods

from :: Cache -> Rep Cache x #

to :: Rep Cache x -> Cache #

Show Cache Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Cache -> ShowS #

show :: Cache -> String #

showList :: [Cache] -> ShowS #

(k ~ A_Lens, a ~ Map Addr Contract, b ~ Map Addr Contract) => LabelOptic "fetched" k Cache Cache a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Cache Cache a b #

(k ~ A_Lens, a ~ Map (CodeLocation, Int) Bool, b ~ Map (CodeLocation, Int) Bool) => LabelOptic "path" k Cache Cache a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Cache Cache a b #

type Rep Cache Source # 
Instance details

Defined in EVM.Types

type Rep Cache = D1 ('MetaData "Cache" "EVM.Types" "hevm-0.53.0-inplace" 'False) (C1 ('MetaCons "Cache" 'PrefixI 'True) (S1 ('MetaSel ('Just "fetched") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Addr Contract)) :*: S1 ('MetaSel ('Just "path") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (CodeLocation, Int) Bool))))

data ContractCode Source #

A contract is either in creation (running its "constructor") or post-creation, and code in these two modes is treated differently by instructions like EXTCODEHASH, so we distinguish these two code types.

The definition follows the structure of code output by solc. We need to use some heuristics here to deal with symbolic data regions that may be present in the bytecode since the fully abstract case is impractical:

  • initcode has concrete code, followed by an abstract data "section"
  • runtimecode has a fixed length, but may contain fixed size symbolic regions (due to immutable)

hopefully we do not have to deal with dynamic immutable before we get a real data section...

Constructors

UnknownCode (Expr EAddr)

Fully abstract code, keyed on an address to give consistent results for e.g. extcodehash

InitCode ByteString (Expr Buf)

Constructor code, during contract creation

RuntimeCode RuntimeCode

Instance code, after contract creation

data RuntimeCode Source #

We have two variants here to optimize the fully concrete case. ConcreteRuntimeCode just wraps a ByteString SymbolicRuntimeCode is a fixed length vector of potentially symbolic bytes, which lets us handle symbolic pushdata (e.g. from immutable variables in solidity).

data Trace Source #

Constructors

Trace 

Instances

Instances details
Generic Trace Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Trace :: Type -> Type #

Methods

from :: Trace -> Rep Trace x #

to :: Rep Trace x -> Trace #

Show Trace Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Trace -> ShowS #

show :: Trace -> String #

showList :: [Trace] -> ShowS #

Eq Trace Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Trace -> Trace -> Bool #

(/=) :: Trace -> Trace -> Bool #

Ord Trace Source # 
Instance details

Defined in EVM.Types

Methods

compare :: Trace -> Trace -> Ordering #

(<) :: Trace -> Trace -> Bool #

(<=) :: Trace -> Trace -> Bool #

(>) :: Trace -> Trace -> Bool #

(>=) :: Trace -> Trace -> Bool #

max :: Trace -> Trace -> Trace #

min :: Trace -> Trace -> Trace #

(k ~ A_Lens, a ~ Contract, b ~ Contract) => LabelOptic "contract" k Trace Trace a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Trace Trace a b #

(k ~ A_Lens, a ~ Int, b ~ Int) => LabelOptic "opIx" k Trace Trace a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Trace Trace a b #

(k ~ A_Lens, a ~ TraceData, b ~ TraceData) => LabelOptic "tracedata" k Trace Trace a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx Trace Trace a b #

type Rep Trace Source # 
Instance details

Defined in EVM.Types

data TraceData Source #

Instances

Instances details
Generic TraceData Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep TraceData :: Type -> Type #

Show TraceData Source # 
Instance details

Defined in EVM.Types

Eq TraceData Source # 
Instance details

Defined in EVM.Types

Ord TraceData Source # 
Instance details

Defined in EVM.Types

type Rep TraceData Source # 
Instance details

Defined in EVM.Types

data Traces Source #

Wrapper type containing vm traces and the context needed to pretty print them properly

Constructors

Traces 

Instances

Instances details
Monoid Traces Source # 
Instance details

Defined in EVM.Types

Semigroup Traces Source # 
Instance details

Defined in EVM.Types

Generic Traces Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Traces :: Type -> Type #

Methods

from :: Traces -> Rep Traces x #

to :: Rep Traces x -> Traces #

Show Traces Source # 
Instance details

Defined in EVM.Types

Eq Traces Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Traces -> Traces -> Bool #

(/=) :: Traces -> Traces -> Bool #

Ord Traces Source # 
Instance details

Defined in EVM.Types

type Rep Traces Source # 
Instance details

Defined in EVM.Types

type Rep Traces = D1 ('MetaData "Traces" "EVM.Types" "hevm-0.53.0-inplace" 'False) (C1 ('MetaCons "Traces" 'PrefixI 'True) (S1 ('MetaSel ('Just "traces") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Forest Trace)) :*: S1 ('MetaSel ('Just "contracts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Expr 'EAddr) Contract))))

data VMOpts (t :: VMType) Source #

A specification for an initial VM state

Instances

Instances details
(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "address" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "allowFFI" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "baseFee" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ BaseState, b ~ BaseState) => LabelOptic "baseState" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Word64, b ~ Word64) => LabelOptic "blockGaslimit" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ (Expr 'Buf, [Prop]), b ~ (Expr 'Buf, [Prop])) => LabelOptic "calldata" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "caller" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "chainId" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "coinbase" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Contract, b ~ Contract) => LabelOptic "contract" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "create" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Gas t1, b ~ Gas t2) => LabelOptic "gas" k (VMOpts t1) (VMOpts t2) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t1) (VMOpts t2) a b #

(k ~ A_Lens, a ~ Word64, b ~ Word64) => LabelOptic "gaslimit" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "gasprice" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "maxCodeSize" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "number" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Expr 'EAddr, b ~ Expr 'EAddr) => LabelOptic "origin" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ [(Expr 'EAddr, Contract)], b ~ [(Expr 'EAddr, Contract)]) => LabelOptic "otherContracts" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "prevRandao" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ W256, b ~ W256) => LabelOptic "priorityFee" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ FeeSchedule Word64, b ~ FeeSchedule Word64) => LabelOptic "schedule" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "timestamp" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Map (Expr 'EAddr) [W256], b ~ Map (Expr 'EAddr) [W256]) => LabelOptic "txAccessList" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

(k ~ A_Lens, a ~ Expr 'EWord, b ~ Expr 'EWord) => LabelOptic "value" k (VMOpts t) (VMOpts t) a b Source # 
Instance details

Defined in EVM.Types

Methods

labelOptic :: Optic k NoIx (VMOpts t) (VMOpts t) a b #

Show (VMOpts 'Concrete) Source # 
Instance details

Defined in EVM.Types

Show (VMOpts 'Symbolic) Source # 
Instance details

Defined in EVM.Types

data GenericOp a Source #

Instances

Instances details
Functor GenericOp Source # 
Instance details

Defined in EVM.Types

Methods

fmap :: (a -> b) -> GenericOp a -> GenericOp b #

(<$) :: a -> GenericOp b -> GenericOp a #

Show a => Show (GenericOp a) Source # 
Instance details

Defined in EVM.Types

Eq a => Eq (GenericOp a) Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: GenericOp a -> GenericOp a -> Bool #

(/=) :: GenericOp a -> GenericOp a -> Bool #

Ord a => Ord (GenericOp a) Source # 
Instance details

Defined in EVM.Types

newtype FunctionSelector Source #

Instances

Instances details
Bits FunctionSelector Source # 
Instance details

Defined in EVM.Types

Enum FunctionSelector Source # 
Instance details

Defined in EVM.Types

Num FunctionSelector Source # 
Instance details

Defined in EVM.Types

Integral FunctionSelector Source # 
Instance details

Defined in EVM.Types

Real FunctionSelector Source # 
Instance details

Defined in EVM.Types

Show FunctionSelector Source # 
Instance details

Defined in EVM.Types

Eq FunctionSelector Source # 
Instance details

Defined in EVM.Types

Ord FunctionSelector Source # 
Instance details

Defined in EVM.Types

TryFrom W256 FunctionSelector Source # 
Instance details

Defined in EVM.Types

newtype ByteStringS Source #

Constructors

ByteStringS ByteString 

Instances

Instances details
FromJSON ByteStringS Source # 
Instance details

Defined in EVM.Types

ToJSON ByteStringS Source # 
Instance details

Defined in EVM.Types

Generic ByteStringS Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep ByteStringS :: Type -> Type #

Show ByteStringS Source # 
Instance details

Defined in EVM.Types

Eq ByteStringS Source # 
Instance details

Defined in EVM.Types

type Rep ByteStringS Source # 
Instance details

Defined in EVM.Types

type Rep ByteStringS = D1 ('MetaData "ByteStringS" "EVM.Types" "hevm-0.53.0-inplace" 'True) (C1 ('MetaCons "ByteStringS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

newtype W256 Source #

Constructors

W256 Word256 

Instances

Instances details
FromJSON W256 Source # 
Instance details

Defined in EVM.Types

FromJSONKey W256 Source # 
Instance details

Defined in EVM.Types

ToJSON W256 Source # 
Instance details

Defined in EVM.Types

Bits W256 Source # 
Instance details

Defined in EVM.Types

FiniteBits W256 Source # 
Instance details

Defined in EVM.Types

Bounded W256 Source # 
Instance details

Defined in EVM.Types

Enum W256 Source # 
Instance details

Defined in EVM.Types

Methods

succ :: W256 -> W256 #

pred :: W256 -> W256 #

toEnum :: Int -> W256 #

fromEnum :: W256 -> Int #

enumFrom :: W256 -> [W256] #

enumFromThen :: W256 -> W256 -> [W256] #

enumFromTo :: W256 -> W256 -> [W256] #

enumFromThenTo :: W256 -> W256 -> W256 -> [W256] #

Generic W256 Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep W256 :: Type -> Type #

Methods

from :: W256 -> Rep W256 x #

to :: Rep W256 x -> W256 #

Num W256 Source # 
Instance details

Defined in EVM.Types

Methods

(+) :: W256 -> W256 -> W256 #

(-) :: W256 -> W256 -> W256 #

(*) :: W256 -> W256 -> W256 #

negate :: W256 -> W256 #

abs :: W256 -> W256 #

signum :: W256 -> W256 #

fromInteger :: Integer -> W256 #

Read W256 Source # 
Instance details

Defined in EVM.Types

Integral W256 Source # 
Instance details

Defined in EVM.Types

Methods

quot :: W256 -> W256 -> W256 #

rem :: W256 -> W256 -> W256 #

div :: W256 -> W256 -> W256 #

mod :: W256 -> W256 -> W256 #

quotRem :: W256 -> W256 -> (W256, W256) #

divMod :: W256 -> W256 -> (W256, W256) #

toInteger :: W256 -> Integer #

Real W256 Source # 
Instance details

Defined in EVM.Types

Methods

toRational :: W256 -> Rational #

Show W256 Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> W256 -> ShowS #

show :: W256 -> String #

showList :: [W256] -> ShowS #

Eq W256 Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: W256 -> W256 -> Bool #

(/=) :: W256 -> W256 -> Bool #

Ord W256 Source # 
Instance details

Defined in EVM.Types

Methods

compare :: W256 -> W256 -> Ordering #

(<) :: W256 -> W256 -> Bool #

(<=) :: W256 -> W256 -> Bool #

(>) :: W256 -> W256 -> Bool #

(>=) :: W256 -> W256 -> Bool #

max :: W256 -> W256 -> W256 #

min :: W256 -> W256 -> W256 #

ToRPC W256 Source # 
Instance details

Defined in EVM.Fetch

Methods

toRPC :: W256 -> Value Source #

ParseField W256 Source # 
Instance details

Defined in EVM.Types

ParseFields W256 Source # 
Instance details

Defined in EVM.Types

ParseRecord W256 Source # 
Instance details

Defined in EVM.Types

From Word32 W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: Word32 -> W256 #

From Word64 W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: Word64 -> W256 #

From Word8 W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: Word8 -> W256 #

From Word256 W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: Word256 -> W256 #

From Addr W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: Addr -> W256 #

From W256 Integer Source # 
Instance details

Defined in EVM.Types

Methods

from :: W256 -> Integer #

From W64 W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: W64 -> W256 #

TryFrom Int256 W256 Source # 
Instance details

Defined in EVM.Types

TryFrom W256 Int64 Source # 
Instance details

Defined in EVM.Types

TryFrom W256 Word32 Source # 
Instance details

Defined in EVM.Types

TryFrom W256 Word64 Source # 
Instance details

Defined in EVM.Types

TryFrom W256 Word8 Source # 
Instance details

Defined in EVM.Types

TryFrom W256 Int256 Source # 
Instance details

Defined in EVM.Types

TryFrom W256 Addr Source # 
Instance details

Defined in EVM.Types

TryFrom W256 FunctionSelector Source # 
Instance details

Defined in EVM.Types

TryFrom W256 W64 Source # 
Instance details

Defined in EVM.Types

TryFrom W256 Int Source # 
Instance details

Defined in EVM.Types

TryFrom Word512 W256 Source # 
Instance details

Defined in EVM.Types

TryFrom Integer W256 Source # 
Instance details

Defined in EVM.Types

TryFrom Int W256 Source # 
Instance details

Defined in EVM.Types

type Rep W256 Source # 
Instance details

Defined in EVM.Types

type Rep W256 = D1 ('MetaData "W256" "EVM.Types" "hevm-0.53.0-inplace" 'True) (C1 ('MetaCons "W256" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word256)))

newtype W64 Source #

Constructors

W64 Word64 

Instances

Instances details
FromJSON W64 Source # 
Instance details

Defined in EVM.Types

ToJSON W64 Source # 
Instance details

Defined in EVM.Types

Bits W64 Source # 
Instance details

Defined in EVM.Types

Methods

(.&.) :: W64 -> W64 -> W64 #

(.|.) :: W64 -> W64 -> W64 #

xor :: W64 -> W64 -> W64 #

complement :: W64 -> W64 #

shift :: W64 -> Int -> W64 #

rotate :: W64 -> Int -> W64 #

zeroBits :: W64 #

bit :: Int -> W64 #

setBit :: W64 -> Int -> W64 #

clearBit :: W64 -> Int -> W64 #

complementBit :: W64 -> Int -> W64 #

testBit :: W64 -> Int -> Bool #

bitSizeMaybe :: W64 -> Maybe Int #

bitSize :: W64 -> Int #

isSigned :: W64 -> Bool #

shiftL :: W64 -> Int -> W64 #

unsafeShiftL :: W64 -> Int -> W64 #

shiftR :: W64 -> Int -> W64 #

unsafeShiftR :: W64 -> Int -> W64 #

rotateL :: W64 -> Int -> W64 #

rotateR :: W64 -> Int -> W64 #

popCount :: W64 -> Int #

FiniteBits W64 Source # 
Instance details

Defined in EVM.Types

Bounded W64 Source # 
Instance details

Defined in EVM.Types

Methods

minBound :: W64 #

maxBound :: W64 #

Enum W64 Source # 
Instance details

Defined in EVM.Types

Methods

succ :: W64 -> W64 #

pred :: W64 -> W64 #

toEnum :: Int -> W64 #

fromEnum :: W64 -> Int #

enumFrom :: W64 -> [W64] #

enumFromThen :: W64 -> W64 -> [W64] #

enumFromTo :: W64 -> W64 -> [W64] #

enumFromThenTo :: W64 -> W64 -> W64 -> [W64] #

Generic W64 Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep W64 :: Type -> Type #

Methods

from :: W64 -> Rep W64 x #

to :: Rep W64 x -> W64 #

Num W64 Source # 
Instance details

Defined in EVM.Types

Methods

(+) :: W64 -> W64 -> W64 #

(-) :: W64 -> W64 -> W64 #

(*) :: W64 -> W64 -> W64 #

negate :: W64 -> W64 #

abs :: W64 -> W64 #

signum :: W64 -> W64 #

fromInteger :: Integer -> W64 #

Read W64 Source # 
Instance details

Defined in EVM.Types

Integral W64 Source # 
Instance details

Defined in EVM.Types

Methods

quot :: W64 -> W64 -> W64 #

rem :: W64 -> W64 -> W64 #

div :: W64 -> W64 -> W64 #

mod :: W64 -> W64 -> W64 #

quotRem :: W64 -> W64 -> (W64, W64) #

divMod :: W64 -> W64 -> (W64, W64) #

toInteger :: W64 -> Integer #

Real W64 Source # 
Instance details

Defined in EVM.Types

Methods

toRational :: W64 -> Rational #

Show W64 Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> W64 -> ShowS #

show :: W64 -> String #

showList :: [W64] -> ShowS #

Eq W64 Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: W64 -> W64 -> Bool #

(/=) :: W64 -> W64 -> Bool #

Ord W64 Source # 
Instance details

Defined in EVM.Types

Methods

compare :: W64 -> W64 -> Ordering #

(<) :: W64 -> W64 -> Bool #

(<=) :: W64 -> W64 -> Bool #

(>) :: W64 -> W64 -> Bool #

(>=) :: W64 -> W64 -> Bool #

max :: W64 -> W64 -> W64 #

min :: W64 -> W64 -> W64 #

From W64 W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: W64 -> W256 #

TryFrom W256 W64 Source # 
Instance details

Defined in EVM.Types

type Rep W64 Source # 
Instance details

Defined in EVM.Types

type Rep W64 = D1 ('MetaData "W64" "EVM.Types" "hevm-0.53.0-inplace" 'True) (C1 ('MetaCons "W64" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))

newtype Addr Source #

Constructors

Addr 

Instances

Instances details
FromJSON Addr Source # 
Instance details

Defined in EVM.Types

FromJSONKey Addr Source # 
Instance details

Defined in EVM.Types

ToJSON Addr Source # 
Instance details

Defined in EVM.Types

ToJSONKey Addr Source # 
Instance details

Defined in EVM.Types

Bits Addr Source # 
Instance details

Defined in EVM.Types

FiniteBits Addr Source # 
Instance details

Defined in EVM.Types

Enum Addr Source # 
Instance details

Defined in EVM.Types

Methods

succ :: Addr -> Addr #

pred :: Addr -> Addr #

toEnum :: Int -> Addr #

fromEnum :: Addr -> Int #

enumFrom :: Addr -> [Addr] #

enumFromThen :: Addr -> Addr -> [Addr] #

enumFromTo :: Addr -> Addr -> [Addr] #

enumFromThenTo :: Addr -> Addr -> Addr -> [Addr] #

Generic Addr Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Addr :: Type -> Type #

Methods

from :: Addr -> Rep Addr x #

to :: Rep Addr x -> Addr #

Num Addr Source # 
Instance details

Defined in EVM.Types

Methods

(+) :: Addr -> Addr -> Addr #

(-) :: Addr -> Addr -> Addr #

(*) :: Addr -> Addr -> Addr #

negate :: Addr -> Addr #

abs :: Addr -> Addr #

signum :: Addr -> Addr #

fromInteger :: Integer -> Addr #

Read Addr Source # 
Instance details

Defined in EVM.Types

Integral Addr Source # 
Instance details

Defined in EVM.Types

Methods

quot :: Addr -> Addr -> Addr #

rem :: Addr -> Addr -> Addr #

div :: Addr -> Addr -> Addr #

mod :: Addr -> Addr -> Addr #

quotRem :: Addr -> Addr -> (Addr, Addr) #

divMod :: Addr -> Addr -> (Addr, Addr) #

toInteger :: Addr -> Integer #

Real Addr Source # 
Instance details

Defined in EVM.Types

Methods

toRational :: Addr -> Rational #

Show Addr Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Addr -> ShowS #

show :: Addr -> String #

showList :: [Addr] -> ShowS #

Eq Addr Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Addr -> Addr -> Bool #

(/=) :: Addr -> Addr -> Bool #

Ord Addr Source # 
Instance details

Defined in EVM.Types

Methods

compare :: Addr -> Addr -> Ordering #

(<) :: Addr -> Addr -> Bool #

(<=) :: Addr -> Addr -> Bool #

(>) :: Addr -> Addr -> Bool #

(>=) :: Addr -> Addr -> Bool #

max :: Addr -> Addr -> Addr #

min :: Addr -> Addr -> Addr #

ToRPC Addr Source # 
Instance details

Defined in EVM.Fetch

Methods

toRPC :: Addr -> Value Source #

ParseField Addr Source # 
Instance details

Defined in EVM.Types

ParseFields Addr Source # 
Instance details

Defined in EVM.Types

ParseRecord Addr Source # 
Instance details

Defined in EVM.Types

From Addr W256 Source # 
Instance details

Defined in EVM.Types

Methods

from :: Addr -> W256 #

From Addr Integer Source # 
Instance details

Defined in EVM.Types

Methods

from :: Addr -> Integer #

TryFrom W256 Addr Source # 
Instance details

Defined in EVM.Types

TryFrom Integer Addr Source # 
Instance details

Defined in EVM.Types

type Rep Addr Source # 
Instance details

Defined in EVM.Types

type Rep Addr = D1 ('MetaData "Addr" "EVM.Types" "hevm-0.53.0-inplace" 'True) (C1 ('MetaCons "Addr" 'PrefixI 'True) (S1 ('MetaSel ('Just "addressWord160") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word160)))

newtype Nibble Source #

A four bit value

Constructors

Nibble Word8 

Instances

Instances details
Bounded Nibble Source # 
Instance details

Defined in EVM.Types

Enum Nibble Source # 
Instance details

Defined in EVM.Types

Generic Nibble Source # 
Instance details

Defined in EVM.Types

Associated Types

type Rep Nibble :: Type -> Type #

Methods

from :: Nibble -> Rep Nibble x #

to :: Rep Nibble x -> Nibble #

Num Nibble Source # 
Instance details

Defined in EVM.Types

Integral Nibble Source # 
Instance details

Defined in EVM.Types

Real Nibble Source # 
Instance details

Defined in EVM.Types

Show Nibble Source # 
Instance details

Defined in EVM.Types

Eq Nibble Source # 
Instance details

Defined in EVM.Types

Methods

(==) :: Nibble -> Nibble -> Bool #

(/=) :: Nibble -> Nibble -> Bool #

Ord Nibble Source # 
Instance details

Defined in EVM.Types

From Nibble Int Source # 
Instance details

Defined in EVM.Types

Methods

from :: Nibble -> Int #

type Rep Nibble Source # 
Instance details

Defined in EVM.Types

type Rep Nibble = D1 ('MetaData "Nibble" "EVM.Types" "hevm-0.53.0-inplace" 'True) (C1 ('MetaCons "Nibble" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))

concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b] Source #

readNull :: Read a => a -> String -> a Source #

paddedShowHex :: (Show a, Integral a) => Int -> a -> String Source #

paddedShowHex displays a number in hexadecimal and pads the number with 0 so that it has a minimum length of w.

untilFixpoint :: Eq a => (a -> a) -> a -> a Source #

Orphan instances

From Word32 ByteString Source # 
Instance details

Methods

from :: Word32 -> ByteString #

From Word32 Word256 Source # 
Instance details

Methods

from :: Word32 -> Word256 #

From Word8 Word256 Source # 
Instance details

Methods

from :: Word8 -> Word256 #

From Int256 Integer Source # 
Instance details

Methods

from :: Int256 -> Integer #

From Word256 Integer Source # 
Instance details

Methods

from :: Word256 -> Integer #

TryFrom Word160 Word8 Source # 
Instance details

TryFrom Word256 Word32 Source # 
Instance details

TryFrom Word256 Word8 Source # 
Instance details

TryFrom Word256 Int256 Source # 
Instance details

TryFrom Word256 Int Source # 
Instance details

TryFrom Int Word256 Source # 
Instance details