6.4 KiB
Application Binary Interface
Explain an ABI.
Formats
JSON String ABI (Solidity Output JSON)
The JSON ABI Format is the format that is output from the Solidity compiler.
A JSON serialized object is always a string, which represents an Array of Objects, where each Object has various properties describing the Fragment of the ABI.
The deserialied JSON string (which is a normal JavaScript Object) may also be passed into any function which accepts a JSON String ABI.
Humanb-Readable ABI
The Human-Readable ABI was
Output Formats
Each Fragment and ParamType may be output using its format
method.
utils . FragmentTypes . full => string
This is a full human-readable string, including all parameter names, any
optional modifiers (e.g. indexed
, public
, etc) and white-space
to aid in human readabiliy.
utils . FragmentTypes . minimal => string
This is similar to full
, except with no unnecessary whitespace or parameter
names. This is useful for storing a minimal string which can still fully
reconstruct the original Fragment using Fragment . from.
utils . FragmentTypes . json => string
This returns a JavaScript Object which is safe to call JSON.stringify
on to create a JSON string.
utils . FragmentTypes . sighash => string
This is a minimal output format, which is used by Solidity when computing a signature hash or an event topic hash.
Note
The sighash
format is insufficient to re-create the original Fragment,
since it discards modifiers such as indexed, anonymous, stateMutability, etc.
Fragment
An ABI is a collection of Fragments, where each fragment specifies:
- An Event
- A Function
- A Constructor
Properties
fragment . name => string
This is the name of the Event or Function. This will be null for a ConstructorFragment.
fragment . type => string
This is a string which indicates the type of the Fragment. This will be one of:
constructor
event
function
fragment . inputs => Array< ParamType >
This is an array of of each ParamType for the input parameters to the Constructor, Event of Function.
Methods
utils . Fragment . from ( objectOrString ) => Fragment
Returns a
utils . Fragment . isFragment ( object ) => boolean
Tra lal al
ConstructorFragment
Properties
fragment . gas => BigNumber
This is the gas limit that should be used during deployment. It may be null.
fragment . payable => boolean
This is whether the constructor may receive ether during deployment as an endowment (i.e. msg.value != 0).
fragment . stateMutability => string
This is the state mutability of the constructor. It can be any of:
nonpayable
payable
Methods
utils . ConstructorFragment . from ( objectOrString ) => ConstructorFragment
Tra la la...
utils . ConstructorFragment . isConstructorFragment ( object ) => boolean
Tra lal al
EventFragment
Properties
fragment . anonymous => boolean
This is whether the event is anonymous. An anonymous Event does not inject its topic hash as topic0 when creating a log.
Methods
utils . EventFragment . from ( objectOrString ) => EventFragment
Tra la la...
utils . EventFragment . isEventFragment ( object ) => boolean
Tra lal al
FunctionFragment
Properties
fragment . constant => boolean
This is whether the function is constant (i.e. does not change state). This
is true if the state mutability is pure
or view
.
fragment . stateMutability => string
This is the state mutability of the constructor. It can be any of:
nonpayable
payable
pure
view
fragment . outputs => Array< ParamType >
A list of the Function output parameters.
Method
utils . FunctionFragment . from ( objectOrString ) => FunctionFragment
Tra la la...
utils . FunctionFragment . isFunctionFragment ( object ) => boolean
Tra lal al
ParamType
The following examples will represent the Solidity parameter:
string foobar
Properties
paramType . name => string
The local parameter name. This may be null for unnamed parameters. For example,
the parameter definition string foobar
would be foobar
.
paramType . type => string
The full type of the parameter, including tuple and array symbols. This may be null
for unnamed parameters. For the above example, this would be foobar
.
paramType . basetype => string
The base type of the parameter. For primitive types (e.g. address
, uint256
, etc)
this is equal to type. For arrays, it will be the string array
and for
a tuple, it will be the string tuple
.
paramType . indexed => boolean
Whether the parameter has been marked as indexed. This only applies to parameters which are part of an EventFragment.
paramType . arrayChildren => ParamType
The type of children of the array. This is null for for any parameter wjhich is not an array.
paramType . arrayLength => number
The length of the array, or -1
for dynamic-length arrays. This is
null for parameters which is not arrays.
paramType . components => Array< ParamType >
The components of a tuple. This is null for non-tuple parameters.
Methods
Tra la la...
paramType . format ( [ outputType="sighash" ] )
Tra la la...
utils . ParamType . from ( objectOrString ) => ParamType
Tra la la...
utils . ParamType . isParamType ( object ) => boolean
Tra la la...
Content Hash: cae7aa26d26d5f02ebe0f227e25759db5d2437b4104d2950b364ced87e7c83f6