From 287ec8addbe240aeef933a9b921c5c001c830c6a Mon Sep 17 00:00:00 2001 From: David Sanders Date: Tue, 24 Apr 2018 17:55:39 -0600 Subject: [PATCH 1/2] Add note about zero-tuples --- docs/abi-spec.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/abi-spec.rst b/docs/abi-spec.rst index 98301fdc48d0..b39bfda8e813 100644 --- a/docs/abi-spec.rst +++ b/docs/abi-spec.rst @@ -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``. From d72624ecb9d37bc60a170c48cc6a9cf9a0060184 Mon Sep 17 00:00:00 2001 From: David Sanders Date: Tue, 24 Apr 2018 18:17:44 -0600 Subject: [PATCH 2/2] Make index notation more consistent --- docs/abi-spec.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/abi-spec.rst b/docs/abi-spec.rst index b39bfda8e813..b0b16e286c27 100644 --- a/docs/abi-spec.rst +++ b/docs/abi-spec.rst @@ -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 @@ -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. @@ -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.