mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Document packed ABI
This commit is contained in:
parent
6db13311dd
commit
a7592fa801
@ -442,3 +442,22 @@ would result in the JSON:
|
||||
"outputs": []
|
||||
}
|
||||
]
|
||||
|
||||
.. _abi_packed_mode:
|
||||
|
||||
Non-standard Packed Mode
|
||||
========================
|
||||
|
||||
Solidity supports a non-standard packed mode where:
|
||||
|
||||
- no :ref:`function selector <abi_function_selector>` is encoded,
|
||||
- short types are not zero padded and
|
||||
- dynamic types are encoded in-place and without the length.
|
||||
|
||||
As an example encoding ``uint1, bytes1, uint8, string`` with values ``1, 0x42, 0x2424, "Hello, world!"`` results in ::
|
||||
|
||||
0x0142242448656c6c6f2c20776f726c6421
|
||||
^^ uint1(1)
|
||||
^^ bytes1(0x42)
|
||||
^^^^ uint8(0x2424)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^ string("Hello, world!") without a length field
|
||||
|
@ -322,10 +322,10 @@ Global Variables
|
||||
- ``assert(bool condition)``: abort execution and revert state changes if condition is ``false`` (use for internal error)
|
||||
- ``require(bool condition)``: abort execution and revert state changes if condition is ``false`` (use for malformed input or error in external component)
|
||||
- ``revert()``: abort execution and revert state changes
|
||||
- ``keccak256(...) returns (bytes32)``: compute the Ethereum-SHA-3 (Keccak-256) hash of the (tightly packed) arguments
|
||||
- ``keccak256(...) returns (bytes32)``: compute the Ethereum-SHA-3 (Keccak-256) hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||
- ``sha3(...) returns (bytes32)``: an alias to ``keccak256``
|
||||
- ``sha256(...) returns (bytes32)``: compute the SHA-256 hash of the (tightly packed) arguments
|
||||
- ``ripemd160(...) returns (bytes20)``: compute the RIPEMD-160 hash of the (tightly packed) arguments
|
||||
- ``sha256(...) returns (bytes32)``: compute the SHA-256 hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||
- ``ripemd160(...) returns (bytes20)``: compute the RIPEMD-160 hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||
- ``ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address)``: recover address associated with the public key from elliptic curve signature, return zero on error
|
||||
- ``addmod(uint x, uint y, uint k) returns (uint)``: compute ``(x + y) % k`` where the addition is performed with arbitrary precision and does not wrap around at ``2**256``
|
||||
- ``mulmod(uint x, uint y, uint k) returns (uint)``: compute ``(x * y) % k`` where the multiplication is performed with arbitrary precision and does not wrap around at ``2**256``
|
||||
|
@ -116,13 +116,13 @@ Mathematical and Cryptographic Functions
|
||||
``mulmod(uint x, uint y, uint k) returns (uint)``:
|
||||
compute ``(x * y) % k`` where the multiplication is performed with arbitrary precision and does not wrap around at ``2**256``.
|
||||
``keccak256(...) returns (bytes32)``:
|
||||
compute the Ethereum-SHA-3 (Keccak-256) hash of the (tightly packed) arguments
|
||||
compute the Ethereum-SHA-3 (Keccak-256) hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||
``sha256(...) returns (bytes32)``:
|
||||
compute the SHA-256 hash of the (tightly packed) arguments
|
||||
compute the SHA-256 hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||
``sha3(...) returns (bytes32)``:
|
||||
alias to ``keccak256``
|
||||
``ripemd160(...) returns (bytes20)``:
|
||||
compute RIPEMD-160 hash of the (tightly packed) arguments
|
||||
compute RIPEMD-160 hash of the :ref:`(tightly packed) arguments <abi_packed_mode>`
|
||||
``ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address)``:
|
||||
recover the address associated with the public key from elliptic curve signature or return zero on error
|
||||
(`example usage <https://ethereum.stackexchange.com/q/1777/222>`_)
|
||||
|
Loading…
Reference in New Issue
Block a user