hevm-0.50.2: Ethereum virtual machine 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 #

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

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

type Rep W256 Source # 
Instance details

Defined in EVM.Types

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

data EType Source #

Expr implements an abstract respresentation 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

Buf 
Storage 
Log 
EWord 
Byte 
End 

data Error Source #

Instances

Instances details
Show Error Source # 
Instance details

Defined in EVM.Types

Methods

showsPrec :: Int -> Error -> ShowS #

show :: Error -> String #

showList :: [Error] -> ShowS #

Eq Error Source # 
Instance details

Defined in EVM.Types

Methods

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

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

Ord Error Source # 
Instance details

Defined in EVM.Types

Methods

compare :: Error -> Error -> Ordering #

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

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

(>) :: Error -> Error -> Bool #

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

max :: Error -> Error -> Error #

min :: Error -> Error -> Error #

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 #

Constructors

Lit :: W256 -> Expr EWord 
Var :: Text -> Expr EWord 
GVar :: GVar a -> Expr a 
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 
Revert :: [Prop] -> Expr Buf -> Expr End 
Failure :: [Prop] -> Error -> Expr End 
Return :: [Prop] -> Expr Buf -> Expr Storage -> 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 
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 
CallValue :: Int -> Expr EWord 
Caller :: Int -> Expr EWord 
Address :: Int -> Expr EWord 
Balance :: Int -> Int -> Expr EWord -> Expr EWord 
SelfBalance :: Int -> Int -> Expr EWord 
Gas :: Int -> Int -> Expr EWord 
CodeSize :: Expr EWord -> Expr EWord 
ExtCodeHash :: Expr EWord -> Expr EWord 
LogEntry :: Expr EWord -> Expr Buf -> [Expr EWord] -> Expr Log 
Create :: Expr EWord -> Expr EWord -> Expr EWord -> Expr Buf -> [Expr Log] -> Expr Storage -> Expr EWord 
Create2 :: Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr Buf -> [Expr Log] -> Expr Storage -> Expr EWord 
Call :: Expr EWord -> Maybe (Expr EWord) -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> [Expr Log] -> Expr Storage -> Expr EWord 
CallCode :: Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> [Expr Log] -> Expr Storage -> Expr EWord 
DelegeateCall :: Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> Expr EWord -> [Expr Log] -> Expr Storage -> Expr EWord 
EmptyStore :: Expr Storage 
ConcreteStore :: Map W256 (Map W256 W256) -> Expr Storage 
AbstractStore :: Expr Storage 
SLoad :: Expr EWord -> Expr EWord -> Expr Storage -> Expr EWord 
SStore :: Expr EWord -> 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 #

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 
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 #

(.&&) :: 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 #

newtype ByteStringS Source #

Constructors

ByteStringS ByteString 

Instances

Instances details
ToJSON ByteStringS Source # 
Instance details

Defined in EVM.Types

Show ByteStringS Source # 
Instance details

Defined in EVM.Types

Eq ByteStringS Source # 
Instance details

Defined in EVM.Types

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

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

type Rep Addr Source # 
Instance details

Defined in EVM.Types

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

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

num :: (Integral a, Num b) => a -> b Source #

padLeft' :: Int -> Vector (Expr Byte) -> Vector (Expr Byte) Source #

Right padding / truncating truncpad :: Int -> [SWord 8] -> [SWord 8] truncpad n xs = if m > n then take n xs else mappend xs (replicate (n - m) 0) where m = length xs

byteAt :: (Bits a, Bits b, Integral a, Num b) => a -> Int -> b Source #

newtype Nibble Source #

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

type Rep Nibble Source # 
Instance details

Defined in EVM.Types

type Rep Nibble = D1 ('MetaData "Nibble" "EVM.Types" "hevm-0.50.2-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 #