Skip to content

Commit

Permalink
Merge pull request ethereum#3992 from davesque/improve-abi-spec
Browse files Browse the repository at this point in the history
A couple of ABI spec improvements
  • Loading branch information
chriseth authored May 2, 2018
2 parents dc18cde + d72624e commit 451e8ed
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions docs/abi-spec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ of them inside parentheses, separated by commas:

- ``(T1,T2,...,Tn)``: tuple consisting of the types ``T1``, ..., ``Tn``, ``n >= 0``

It is possible to form tuples of tuples, arrays of tuples and so on.
It is possible to form tuples of tuples, arrays of tuples and so on. It is also possible to form zero-tuples (where ``n == 0``).

.. note::
Solidity supports all the types presented above with the same names with the exception of tuples. The ABI tuple type is utilised for encoding Solidity ``structs``.
Expand Down Expand Up @@ -117,7 +117,7 @@ on the type of ``X`` being

- ``(T1,...,Tk)`` for ``k >= 0`` and any types ``T1``, ..., ``Tk``

``enc(X) = head(X(1)) ... head(X(k-1)) tail(X(0)) ... tail(X(k-1))``
``enc(X) = head(X(1)) ... head(X(k)) tail(X(1)) ... tail(X(k))``

where ``X(i)`` is the ``ith`` component of the value, and
``head`` and ``tail`` are defined for ``Ti`` being a static type as
Expand All @@ -126,7 +126,7 @@ on the type of ``X`` being

and as

``head(X(i)) = enc(len(head(X(0)) ... head(X(k-1)) tail(X(0)) ... tail(X(i-1))))``
``head(X(i)) = enc(len( head(X(1)) ... head(X(k)) tail(X(1)) ... tail(X(i-1)) ))``
``tail(X(i)) = enc(X(i))``

otherwise, i.e. if ``Ti`` is a dynamic type.
Expand All @@ -137,7 +137,7 @@ on the type of ``X`` being

- ``T[k]`` for any ``T`` and ``k``:

``enc(X) = enc((X[0], ..., X[k-1]))``
``enc(X) = enc((X[1], ..., X[k]))``

i.e. it is encoded as if it were a tuple with ``k`` elements
of the same type.
Expand Down

0 comments on commit 451e8ed

Please sign in to comment.