Builtin methods
Global methods
These methods are available on all types.
any.format() -> string
Returns a human-readable (when possible) representation of the value. See the format function for more details.
string methods
string.length -> uint256
Returns the length of the string.
>> "foo".length
3
string.concat(string other) -> string
Concatenates two strings.
>> "foo".concat("bar")
"foobar"
bytes methods
bytes.length -> uint256
Returns the length of the bytes.
bytes.concat(bytes other) -> bytes
Concatenates two byte arrays.
array methods
array.length -> uint256
Returns the length of the array.
array.map(function f) -> array
Applies the function f to each element of the array and returns a new array with the results.
>> function double(x) { return x * 2; }
>> [1, 2, 3].map(double)
[2, 4, 6]
array.filter(function p) -> array
Applies the predicate p to each element and only includes the elements for which the predicate returns true.
>> function isEven(x) { return x % 2 == 0; }
>> [1, 2, 3, 4, 5].filter(isEven)
[2, 4]
array.concat(array other) -> array
Concatenates two arrays.
>> [1, 2].concat([3, 4])
[1, 2, 3, 4]
tuple methods
tuple[uint256 index] -> any
Returns the element at the given index.
tuple.length -> uint256
Returns the length of the tuple.
tuple.map(function f) -> array
Applies the function f to each element of the tuple and returns a new tuple with the results.
address methods
address.balance -> uint256
Returns the balance of the address.
num (uint* and int*) methods
num.mul(num other) -> num | num.mul(num other, uint8 decimals) -> num
Multiplies two scaled numbers. By default, the number are assumed to have 18 decimals. The second argument can be used to specify the number of decimals.
>> 2e18.mul(3e18)
6000000000000000000
num.div(num other) -> num | num.div(num other, uint8 decimals) -> num
Divides two scaled numbers using similar logic to mul.
Transaction properties and methods
tx.from -> address
Returns the address that signed the transaction.
>> tx = Transaction(0xfb89e2333b81f2751eedaf2aeffb787917d42ea6ea7c5afd4d45371f3f1b8079)
>> tx.from
0x35641673A0Ce64F644Ad2f395be19668A06A5616
tx.to -> address | null
Returns the recipient address of the transaction, or null if the transaction is a contract creation.
>> tx = Transaction(0xfb89e2333b81f2751eedaf2aeffb787917d42ea6ea7c5afd4d45371f3f1b8079)
>> tx.to
0xe07F9D810a48ab5c3c914BA3cA53AF14E4491e8A
tx.input -> bytes
Returns the input data (calldata) of the transaction.
>> tx = Transaction(0xfb89e2333b81f2751eedaf2aeffb787917d42ea6ea7c5afd4d45371f3f1b8079)
>> tx.input
0xa9059cbb000000000000000000000000789f8f7b547183ab8e99a5e0e6d567e90e0eb03b0000000000000000000000000000000000000000000000000de0b6b3a7640000
Transaction.getReceipt() -> Receipt | Transaction.getReceipt(uint256 timeout) -> Receipt
Returns the receipt of the transaction.
The function will wait for the transaction for up to timeout seconds, or 30 seconds by default.
>> tx = Transaction(0xfb89e2333b81f2751eedaf2aeffb787917d42ea6ea7c5afd4d45371f3f1b8079)
>> tx.getReceipt()
Receipt { txHash: 0xfb89e2333b81f2751eedaf2aeffb787917d42ea6ea7c5afd4d45371f3f1b8079, blockHash: 0xd82cbdd9aba2827815d8db2e0665b1f54e6decc4f59042e53344f6562301e55b, blockNumber: 18735365, status: true, gasUsed: 54017, gasPrice: 71885095452, logs: [Log { address: 0xe07F9D810a48ab5c3c914BA3cA53AF14E4491e8A, topics: [0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x00000000000000000000000035641673a0ce64f644ad2f395be19668a06a5616, 0x0000000000000000000000009748a9de5a2d81e96c2070f7f0d1d128bbb4d3c4], data: 0x00000000000000000000000000000000000000000000007b1638669932a6793d, args: Transfer { from: 0x35641673A0Ce64F644Ad2f395be19668A06A5616, to: 0x9748a9dE5A2D81e96C2070f7F0D1d128BbB4d3c4, value: 2270550663541970860349 } }] }
The receipt is a named tuple with the following fields:
txHash(bytes32): the hash of the transaction.blockHash(bytes32): the hash of the block containing the transaction.blockNumber(uint256): the number of the block containing the transaction.status(bool): the status of the transaction.gasUsed(uint256): the amount of gas used by the transaction.gasPrice(uint256): the gas price of the transaction.logs(NamedTuple[]): the logs of the transaction.
Logs is an array of named tuples with the following fields:
address(address): the address of the contract that emitted the log.topics(bytes32[]): the topics of the log.data(bytes): the data of the log.args(NamedTuple): the decoded arguments of the log, if the event is known (present in one of the loaded ABIs).
Contract static methods
These methods are available on the contracts themselves, not on their instances.
Contract.decode(bytes data) -> (string, tuple)
Decodes the ABI-encoded data into a tuple. The first element of the tuple is the function signature, and the second element is the decoded arguments.
>> ERC20.decode(0xa9059cbb000000000000000000000000789f8f7b547183ab8e99a5e0e6d567e90e0eb03b0000000000000000000000000000000000000000000000056bc75e2d63100000)
("transfer(address,uint256)", (0x789f8F7B547183Ab8E99A5e0E6D567E90e0EB03B, 100000000000000000000))
Event static methods
Event.selector -> bytes32
Returns the selector (aka topic0) of the given event
num (uint* and int*) static methods
type(num).max -> num
Returns the maximum value of the type.
>> type(uint8).max
255
type(num).min -> num
Returns the minimum value of the type.
>> type(int8).min
-128