mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Update abi-spec.rst
Rearranged the calldata encoding explanations for the example functions so they are more easy to understand since they now visually match the order the functions are declared: Foo.bar() Foo.baz() Foo.sam() Maybe I'm smolbrain but it was confusing to reference the functions when they are declared in a different order than they are explained. I kept imagining calldata encoding layouts for bar() even though the example I was looking at discussed baz() instead. Minor change but makes a big difference for less experienced calldataooors like me.
This commit is contained in:
parent
3edf91adc8
commit
f121e7e9dd
@ -252,7 +252,21 @@ Given the contract:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Thus, for our ``Foo`` example if we wanted to call ``baz`` with the parameters ``69`` and
|
Thus, for our ``Foo`` example, if we wanted to call ``bar`` with the argument ``["abc", "def"]``, we would pass 68 bytes total, broken down into:
|
||||||
|
|
||||||
|
- ``0xfce353f6``: the Method ID. This is derived from the signature ``bar(bytes3[2])``.
|
||||||
|
- ``0x6162630000000000000000000000000000000000000000000000000000000000``: the first part of the first
|
||||||
|
parameter, a ``bytes3`` value ``"abc"`` (left-aligned).
|
||||||
|
- ``0x6465660000000000000000000000000000000000000000000000000000000000``: the second part of the first
|
||||||
|
parameter, a ``bytes3`` value ``"def"`` (left-aligned).
|
||||||
|
|
||||||
|
In total:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
0xfce353f661626300000000000000000000000000000000000000000000000000000000006465660000000000000000000000000000000000000000000000000000000000
|
||||||
|
|
||||||
|
If we wanted to call ``baz`` with the parameters ``69`` and
|
||||||
``true``, we would pass 68 bytes total, which can be broken down into:
|
``true``, we would pass 68 bytes total, which can be broken down into:
|
||||||
|
|
||||||
- ``0xcdcd77c0``: the Method ID. This is derived as the first 4 bytes of the Keccak hash of
|
- ``0xcdcd77c0``: the Method ID. This is derived as the first 4 bytes of the Keccak hash of
|
||||||
@ -271,20 +285,6 @@ In total:
|
|||||||
It returns a single ``bool``. If, for example, it were to return ``false``, its output would be
|
It returns a single ``bool``. If, for example, it were to return ``false``, its output would be
|
||||||
the single byte array ``0x0000000000000000000000000000000000000000000000000000000000000000``, a single bool.
|
the single byte array ``0x0000000000000000000000000000000000000000000000000000000000000000``, a single bool.
|
||||||
|
|
||||||
If we wanted to call ``bar`` with the argument ``["abc", "def"]``, we would pass 68 bytes total, broken down into:
|
|
||||||
|
|
||||||
- ``0xfce353f6``: the Method ID. This is derived from the signature ``bar(bytes3[2])``.
|
|
||||||
- ``0x6162630000000000000000000000000000000000000000000000000000000000``: the first part of the first
|
|
||||||
parameter, a ``bytes3`` value ``"abc"`` (left-aligned).
|
|
||||||
- ``0x6465660000000000000000000000000000000000000000000000000000000000``: the second part of the first
|
|
||||||
parameter, a ``bytes3`` value ``"def"`` (left-aligned).
|
|
||||||
|
|
||||||
In total:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
0xfce353f661626300000000000000000000000000000000000000000000000000000000006465660000000000000000000000000000000000000000000000000000000000
|
|
||||||
|
|
||||||
If we wanted to call ``sam`` with the arguments ``"dave"``, ``true`` and ``[1,2,3]``, we would
|
If we wanted to call ``sam`` with the arguments ``"dave"``, ``true`` and ``[1,2,3]``, we would
|
||||||
pass 292 bytes total, broken down into:
|
pass 292 bytes total, broken down into:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user