diff options
author | chriseth <chris@ethereum.org> | 2016-08-26 23:01:38 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-26 23:01:38 +0800 |
commit | 83160d56f3827fce5394339937ffc9c588a3633e (patch) | |
tree | 69ef5d43658dcdf6e946a5c6c33ba4b22992ef9f /docs/contracts.rst | |
parent | d209e65b1d9ce3f49821970e96e027ba5243e386 (diff) | |
parent | 8c3b1334ae600f3995618556b59f6233b665ce33 (diff) | |
download | dexon-solidity-83160d56f3827fce5394339937ffc9c588a3633e.tar.gz dexon-solidity-83160d56f3827fce5394339937ffc9c588a3633e.tar.zst dexon-solidity-83160d56f3827fce5394339937ffc9c588a3633e.zip |
Merge pull request #953 from Denton-L/fallback-stuff
Write about what fallback functions cannot do
Diffstat (limited to 'docs/contracts.rst')
-rw-r--r-- | docs/contracts.rst | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/docs/contracts.rst b/docs/contracts.rst index 85592f5d..dfdcaf18 100644 --- a/docs/contracts.rst +++ b/docs/contracts.rst @@ -211,18 +211,18 @@ storage and is not able to call ``f``. Contract ``E`` is derived from ``C`` and contract D { function readData() { - C c = new C(); - local = c.f(7); // error: member "f" is not visible - c.setData(3); - uint local = c.getData(); - local = c.compute(3,5); // error: member "compute" is not visible - } + C c = new C(); + local = c.f(7); // error: member "f" is not visible + c.setData(3); + uint local = c.getData(); + local = c.compute(3,5); // error: member "compute" is not visible + } } contract E is C { function g() { - C c = new C(); - uint val = compute(3,5); // acces to internal member (from derivated to parent contract) + C c = new C(); + uint val = compute(3,5); // acces to internal member (from derivated to parent contract) } } @@ -244,12 +244,12 @@ be done at declaration. contract C { uint public data = 42; } - + contract Caller { - C c = new C(); - function f() { - uint local = c.data(); - } + C c = new C(); + function f() { + uint local = c.data(); + } } The accessor functions have external visibility. If the @@ -260,11 +260,11 @@ it is evaluated as state variable and if it is accessed externally :: contract C { - uint public data; - function x() { - data = 3; // internal access - uint val = this.data(); // external access - } + uint public data; + function x() { + data = 3; // internal access + uint val = this.data(); // external access + } } The next example is a bit more complex: @@ -435,6 +435,15 @@ Ether (without data). In such a context, there is very little gas available to the function call (to be precise, 2300 gas), so it is important to make fallback functions as cheap as possible. +In particular, the following operations will consume more gas than the stipend provided to a fallback function: + +- Writing to storage +- Creating a contract +- Calling an external function which consumes a large amount of gas +- Sending Ether + +Please ensure you test your fallback function thoroughly to ensure the execution cost is less than 2300 gas before deploying a contract. + :: contract Test { |