You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/abi-spec.rst
+10-9Lines changed: 10 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,14 +6,14 @@
6
6
Application Binary Interface Specification
7
7
******************************************
8
8
9
-
Basic design
9
+
Basic Design
10
10
============
11
11
12
12
The Application Binary Interface is the standard way to interact with contracts in the Ethereum ecosystem, both
13
-
from outside the blockchain and for contract-to-contract interaction. Data is encoded following its type,
14
-
according to this specification.
13
+
from outside the blockchain and for contract-to-contract interaction. Data is encoded according to its type,
14
+
as described in this specification. The encoding is not self describing and thus requires a schema in order to decode.
15
15
16
-
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.
16
+
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.
17
17
18
18
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.
19
19
@@ -58,7 +58,7 @@ The following (fixed-size) array type exists:
58
58
59
59
- `<type>[M]`: a fixed-length array of the given fixed-length type.
60
60
61
-
The following non-fixed-size types exist:
61
+
The following non-fixed-size types exist:
62
62
63
63
- `bytes`: dynamic sized byte sequence.
64
64
@@ -93,6 +93,7 @@ We distinguish static and dynamic types. Static types are encoded in-place and d
93
93
* `string`
94
94
* `T[]` for any `T`
95
95
* `T[k]` for any dynamic `T` and any `k > 0`
96
+
* `(T1,...,Tk)` if any `Ti` is dynamic for `1 <= i <= k`
96
97
97
98
All other types are called "static".
98
99
@@ -181,6 +182,8 @@ Given the contract:
181
182
182
183
::
183
184
185
+
pragma solidity ^0.4.0;
186
+
184
187
contract Foo {
185
188
function bar(bytes3[2] xy) {}
186
189
function baz(uint32 x, bool y) returns (bool r) { r = x > 32 || y; }
@@ -313,6 +316,8 @@ For example,
313
316
314
317
::
315
318
319
+
pragma solidity ^0.4.0;
320
+
316
321
contract Test {
317
322
function Test(){ b = 0x12345678901234567890123456789012; }
Copy file name to clipboardExpand all lines: docs/bugs.json
+8-1Lines changed: 8 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,11 @@
1
1
[
2
+
{
3
+
"name": "ECRecoverMalformedInput",
4
+
"summary": "The ecrecover() builtin can return garbage for malformed input.",
5
+
"description": "The ecrecover precompile does not properly signal failure for malformed input (especially in the 'v' argument) and thus the Solidity function can return data that was previously present in the return area in memory.",
6
+
"fixed": "0.4.14",
7
+
"severity": "medium"
8
+
},
2
9
{
3
10
"name": "SkipEmptyStringLiteral",
4
11
"summary": "If \"\" is used in a function call, the following function arguments will not be correctly passed to the function.",
0 commit comments