ethers.js/docs/api/utils/abi/README.md
2020-02-02 00:53:22 -05:00

399 lines
6.4 KiB
Markdown

-----
Documentation: [html](https://docs-beta.ethers.io/)
-----
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](https://solidity.readthedocs.io/en/v0.6.0/using-the-compiler.html#output-description).
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
[article](https://blog.ricmoo.com/human-readable-contract-abis-in-ethers-js-141902f4d917)
### 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](../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