From c276086f3fcce0317abd45452d74c18aa0522ed9 Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Thu, 25 Aug 2016 15:43:04 -0400 Subject: Write about what fallback functions cannot do --- docs/contracts.rst | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'docs/contracts.rst') diff --git a/docs/contracts.rst b/docs/contracts.rst index e9fc4526..b257dcbb 100644 --- a/docs/contracts.rst +++ b/docs/contracts.rst @@ -434,6 +434,14 @@ 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 + +Please ensure you test your fallback function thoroughly to ensure the execution cost is less than 2300 gas before deploying a contract. + :: contract Test { -- cgit From f5989fb5e0c429c822c0715e6f52da310ddc31a1 Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Thu, 25 Aug 2016 15:44:16 -0400 Subject: Correct spacing --- docs/contracts.rst | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'docs/contracts.rst') diff --git a/docs/contracts.rst b/docs/contracts.rst index b257dcbb..54bd7d55 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: -- cgit From 8c3b1334ae600f3995618556b59f6233b665ce33 Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Fri, 26 Aug 2016 10:31:57 -0400 Subject: Add "Sending Ether" --- docs/contracts.rst | 1 + 1 file changed, 1 insertion(+) (limited to 'docs/contracts.rst') diff --git a/docs/contracts.rst b/docs/contracts.rst index 54bd7d55..90712d74 100644 --- a/docs/contracts.rst +++ b/docs/contracts.rst @@ -439,6 +439,7 @@ In particular, the following operations will consume more gas than the stipend p - 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. -- cgit