hevm-0.50.1: Ethereum virtual machine evaluator
Safe HaskellSafe-Inferred
LanguageGHC2021

EVM.Solidity

Synopsis

Documentation

data JumpType Source #

Constructors

JumpInto 
JumpFrom 
JumpRegular 

Instances

Instances details
Generic JumpType Source # 
Instance details

Defined in EVM.Solidity

Associated Types

type Rep JumpType :: Type -> Type #

Methods

from :: JumpType -> Rep JumpType x #

to :: Rep JumpType x -> JumpType #

Show JumpType Source # 
Instance details

Defined in EVM.Solidity

Eq JumpType Source # 
Instance details

Defined in EVM.Solidity

Ord JumpType Source # 
Instance details

Defined in EVM.Solidity

type Rep JumpType Source # 
Instance details

Defined in EVM.Solidity

type Rep JumpType = D1 ('MetaData "JumpType" "EVM.Solidity" "hevm-0.50.1-inplace" 'False) (C1 ('MetaCons "JumpInto" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "JumpFrom" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JumpRegular" 'PrefixI 'False) (U1 :: Type -> Type)))

data SolcContract Source #

Instances

Instances details
Generic SolcContract Source # 
Instance details

Defined in EVM.Solidity

Associated Types

type Rep SolcContract :: Type -> Type #

Show SolcContract Source # 
Instance details

Defined in EVM.Solidity

Eq SolcContract Source # 
Instance details

Defined in EVM.Solidity

type Rep SolcContract Source # 
Instance details

Defined in EVM.Solidity

type Rep SolcContract = D1 ('MetaData "SolcContract" "EVM.Solidity" "hevm-0.50.1-inplace" 'False) (C1 ('MetaCons "SolcContract" 'PrefixI 'True) (((S1 ('MetaSel ('Just "_runtimeCodehash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 W256) :*: (S1 ('MetaSel ('Just "_creationCodehash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 W256) :*: S1 ('MetaSel ('Just "_runtimeCode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ByteString))) :*: (S1 ('MetaSel ('Just "_creationCode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ByteString) :*: (S1 ('MetaSel ('Just "_contractName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Just "_constructorInputs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [(Text, AbiType)])))) :*: ((S1 ('MetaSel ('Just "_abiMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Map Word32 Method)) :*: (S1 ('MetaSel ('Just "_eventMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Map W256 Event)) :*: S1 ('MetaSel ('Just "_errorMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Map W256 SolError)))) :*: ((S1 ('MetaSel ('Just "_immutableReferences") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Map W256 [Reference])) :*: S1 ('MetaSel ('Just "_storageLayout") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe (Map Text StorageItem)))) :*: (S1 ('MetaSel ('Just "_runtimeSrcmap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Seq SrcMap)) :*: S1 ('MetaSel ('Just "_creationSrcmap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Seq SrcMap)))))))

data StorageItem Source #

Constructors

StorageItem 

Fields

Instances

Instances details
Show StorageItem Source # 
Instance details

Defined in EVM.Solidity

Eq StorageItem Source # 
Instance details

Defined in EVM.Solidity

data SourceCache Source #

Instances

Instances details
Monoid SourceCache Source # 
Instance details

Defined in EVM.Solidity

Semigroup SourceCache Source # 
Instance details

Defined in EVM.Solidity

Generic SourceCache Source # 
Instance details

Defined in EVM.Solidity

Associated Types

type Rep SourceCache :: Type -> Type #

Show SourceCache Source # 
Instance details

Defined in EVM.Solidity

Eq SourceCache Source # 
Instance details

Defined in EVM.Solidity

type Rep SourceCache Source # 
Instance details

Defined in EVM.Solidity

type Rep SourceCache = D1 ('MetaData "SourceCache" "EVM.Solidity" "hevm-0.50.1-inplace" 'False) (C1 ('MetaCons "SourceCache" 'PrefixI 'True) (S1 ('MetaSel ('Just "_sourceFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [(Text, ByteString)]) :*: (S1 ('MetaSel ('Just "_sourceLines") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [Vector ByteString]) :*: S1 ('MetaSel ('Just "_sourceAsts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Map Text Value)))))

data SrcMap Source #

Instances

Instances details
Generic SrcMap Source # 
Instance details

Defined in EVM.Solidity

Associated Types

type Rep SrcMap :: Type -> Type #

Methods

from :: SrcMap -> Rep SrcMap x #

to :: Rep SrcMap x -> SrcMap #

Show SrcMap Source # 
Instance details

Defined in EVM.Solidity

Eq SrcMap Source # 
Instance details

Defined in EVM.Solidity

Methods

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

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

Ord SrcMap Source # 
Instance details

Defined in EVM.Solidity

type Rep SrcMap Source # 
Instance details

Defined in EVM.Solidity

type Rep SrcMap = D1 ('MetaData "SrcMap" "EVM.Solidity" "hevm-0.50.1-inplace" 'False) (C1 ('MetaCons "SM" 'PrefixI 'True) ((S1 ('MetaSel ('Just "srcMapOffset") 'SourceUnpack 'NoSourceStrictness 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "srcMapLength") 'SourceUnpack 'NoSourceStrictness 'DecidedStrict) (Rec0 Int)) :*: (S1 ('MetaSel ('Just "srcMapFile") 'SourceUnpack 'NoSourceStrictness 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "srcMapJump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 JumpType) :*: S1 ('MetaSel ('Just "srcMapModifierDepth") 'SourceUnpack 'NoSourceStrictness 'DecidedStrict) (Rec0 Int)))))

data CodeType Source #

Constructors

Creation 
Runtime 

Instances

Instances details
Show CodeType Source # 
Instance details

Defined in EVM.Solidity

Eq CodeType Source # 
Instance details

Defined in EVM.Solidity

Ord CodeType Source # 
Instance details

Defined in EVM.Solidity

data Method Source #

Instances

Instances details
Generic Method Source # 
Instance details

Defined in EVM.Solidity

Associated Types

type Rep Method :: Type -> Type #

Methods

from :: Method -> Rep Method x #

to :: Rep Method x -> Method #

Show Method Source # 
Instance details

Defined in EVM.Solidity

Eq Method Source # 
Instance details

Defined in EVM.Solidity

Methods

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

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

Ord Method Source # 
Instance details

Defined in EVM.Solidity

type Rep Method Source # 
Instance details

Defined in EVM.Solidity

data SlotType Source #

Instances

Instances details
Read SlotType Source # 
Instance details

Defined in EVM.Solidity

Show SlotType Source # 
Instance details

Defined in EVM.Solidity

Eq SlotType Source # 
Instance details

Defined in EVM.Solidity

data Reference Source #

Constructors

Reference 

Fields

Instances

Instances details
FromJSON Reference Source # 
Instance details

Defined in EVM.Solidity

Show Reference Source # 
Instance details

Defined in EVM.Solidity

Eq Reference Source # 
Instance details

Defined in EVM.Solidity

data Mutability Source #

Constructors

Pure

specified to not read blockchain state

View

specified to not modify the blockchain state

NonPayable

function does not accept Ether - the default

Payable

function accepts Ether

Instances

Instances details
Generic Mutability Source # 
Instance details

Defined in EVM.Solidity

Associated Types

type Rep Mutability :: Type -> Type #

Show Mutability Source # 
Instance details

Defined in EVM.Solidity

Eq Mutability Source # 
Instance details

Defined in EVM.Solidity

Ord Mutability Source # 
Instance details

Defined in EVM.Solidity

type Rep Mutability Source # 
Instance details

Defined in EVM.Solidity

type Rep Mutability = D1 ('MetaData "Mutability" "EVM.Solidity" "hevm-0.50.1-inplace" 'False) ((C1 ('MetaCons "Pure" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "View" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NonPayable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Payable" 'PrefixI 'False) (U1 :: Type -> Type)))

stripBytecodeMetadata :: ByteString -> ByteString Source #

When doing CREATE and passing constructor arguments, Solidity loads the argument data via the creation bytecode, since there is no "calldata" for CREATE.

This interferes with our ability to look up the current contract by codehash, so we must somehow strip away this extra suffix. Luckily we can detect the end of the actual bytecode by looking for the "metadata hash". (Not 100% correct, but works in practice.)

Actually, we strip away the entire BZZR suffix too, because as long as the codehash matches otherwise, we don't care if there is some difference there.

data Language Source #

Constructors

Solidity 
Yul 

Instances

Instances details
Show Language Source # 
Instance details

Defined in EVM.Solidity

astIdMap :: Foldable f => f Value -> Map Int Value Source #

Every node in the AST has an ID, and other nodes reference those IDs. This function recurses through the tree looking for objects with the "id" key and makes a big map from ID to value.