aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-07-12 21:16:23 +0800
committerGitHub <noreply@github.com>2017-07-12 21:16:23 +0800
commit91f17a366202f5cac21a5a469c682ad86fe9ede8 (patch)
tree697bd002248765fd5562c95f5f957b97374927b9
parentb7a59652f1f115490bc2cb175c3d684267067958 (diff)
parent6307a1265178007e956aa5f9980acd554f4c9efd (diff)
downloaddexon-solidity-91f17a366202f5cac21a5a469c682ad86fe9ede8.tar
dexon-solidity-91f17a366202f5cac21a5a469c682ad86fe9ede8.tar.gz
dexon-solidity-91f17a366202f5cac21a5a469c682ad86fe9ede8.tar.bz2
dexon-solidity-91f17a366202f5cac21a5a469c682ad86fe9ede8.tar.lz
dexon-solidity-91f17a366202f5cac21a5a469c682ad86fe9ede8.tar.xz
dexon-solidity-91f17a366202f5cac21a5a469c682ad86fe9ede8.tar.zst
dexon-solidity-91f17a366202f5cac21a5a469c682ad86fe9ede8.zip
Merge pull request #2560 from ethereum/abi-spec-nitpick
Nitpicking abi-spec.rst
-rw-r--r--docs/abi-spec.rst15
1 files changed, 6 insertions, 9 deletions
diff --git a/docs/abi-spec.rst b/docs/abi-spec.rst
index e39c8861..d915973d 100644
--- a/docs/abi-spec.rst
+++ b/docs/abi-spec.rst
@@ -6,14 +6,14 @@
Application Binary Interface Specification
******************************************
-Basic design
+Basic Design
============
The Application Binary Interface is the standard way to interact with contracts in the Ethereum ecosystem, both
-from outside the blockchain and for contract-to-contract interaction. Data is encoded following its type,
-according to this specification.
+from outside the blockchain and for contract-to-contract interaction. Data is encoded according to its type,
+as described in this specification. The encoding is not self describing and thus requires a schema in order to decode.
-We assume the Application Binary Interface (ABI) is strongly typed, known at compilation time and static. No introspection mechanism will be provided. We assert that all contracts will have the interface definitions of any contracts they call available at compile-time.
+We assume the interface functions of a contract are strongly typed, known at compilation time and static. No introspection mechanism will be provided. We assume that all contracts will have the interface definitions of any contracts they call available at compile-time.
This specification does not address contracts whose interface is dynamic or otherwise known only at run-time. Should these cases become important they can be adequately handled as facilities built within the Ethereum ecosystem.
@@ -58,7 +58,7 @@ The following (fixed-size) array type exists:
- `<type>[M]`: a fixed-length array of the given fixed-length type.
-The following non-fixed-size types exist:
+The following non-fixed-size types exist:
- `bytes`: dynamic sized byte sequence.
@@ -93,6 +93,7 @@ We distinguish static and dynamic types. Static types are encoded in-place and d
* `string`
* `T[]` for any `T`
* `T[k]` for any dynamic `T` and any `k > 0`
+* `(T1,...,Tk)` if any `Ti` is dynamic for `1 <= i <= k`
All other types are called "static".
@@ -334,10 +335,6 @@ would result in the JSON:
"inputs": [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"bytes32","indexed":false}],
"name":"Event2"
}, {
- "type":"event",
- "inputs": [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"bytes32","indexed":false}],
- "name":"Event2"
- }, {
"type":"function",
"inputs": [{"name":"a","type":"uint256"}],
"name":"foo",