aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-12-19 19:37:34 +0800
committerGitHub <noreply@github.com>2017-12-19 19:37:34 +0800
commit2d800e67e4ef225549b6804b4e5dc344277c7cf4 (patch)
tree56330393afb838111c54d7f1a52a9a96a12d68bd
parentb3fb73f53f69372754a7cb70b8589018d5bab5b6 (diff)
parent75dd416c6e84209f2d5fe8657a83d9e3e799fe7a (diff)
downloaddexon-solidity-2d800e67e4ef225549b6804b4e5dc344277c7cf4.tar.gz
dexon-solidity-2d800e67e4ef225549b6804b4e5dc344277c7cf4.tar.zst
dexon-solidity-2d800e67e4ef225549b6804b4e5dc344277c7cf4.zip
Merge pull request #3347 from swaldman/develop
[Docs] Include explanation of how indexed dynamic-length event args are encoded
-rw-r--r--docs/abi-spec.rst2
1 files changed, 2 insertions, 0 deletions
diff --git a/docs/abi-spec.rst b/docs/abi-spec.rst
index e106d98b..b81e35a6 100644
--- a/docs/abi-spec.rst
+++ b/docs/abi-spec.rst
@@ -288,6 +288,8 @@ In effect, a log entry using this ABI is described as:
- ``topics[n]``: ``EVENT_INDEXED_ARGS[n - 1]`` (``EVENT_INDEXED_ARGS`` is the series of ``EVENT_ARGS`` that are indexed);
- ``data``: ``abi_serialise(EVENT_NON_INDEXED_ARGS)`` (``EVENT_NON_INDEXED_ARGS`` is the series of ``EVENT_ARGS`` that are not indexed, ``abi_serialise`` is the ABI serialisation function used for returning a series of typed values from a function, as described above).
+For all fixed-length Solidity types, the ``EVENT_INDEXED_ARGS`` array contains the 32-byte encoded value directly. However, for *types of dynamic length*, which include ``string``, ``bytes``, and arrays, ``EVENT_INDEXED_ARGS`` will contain the *Keccak hash* of the encoded value, rather than the encoded value directly. This allows applications to efficiently query for values of dynamic-length types (by setting the hash of the encoded value as the topic), but leaves applications unable to decode indexed values they have not queried for. For dynamic-length types, application developers face a trade-off between fast search for predetermined values (if the argument is indexed) and legibility of arbitrary values (which requires that the arguments not be indexed). Developers may overcome this tradeoff and achieve both efficient search and arbitrary legibility by defining events with two arguments — one indexed, one not — intended to hold the same value.
+
JSON
====