aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-02-23 05:42:04 +0800
committerGitHub <noreply@github.com>2018-02-23 05:42:04 +0800
commit2b62c201be166222f05acfa8422b1968f2cf924a (patch)
tree501613fa210a9c0f9e74f1f277ccb6a117d5c639 /docs
parent97d1c70491c027051feac065c827b223ce6acf11 (diff)
parentb5a3b6a4293537c843e8387ffd0b03253160dc0a (diff)
downloaddexon-solidity-2b62c201be166222f05acfa8422b1968f2cf924a.tar.gz
dexon-solidity-2b62c201be166222f05acfa8422b1968f2cf924a.tar.zst
dexon-solidity-2b62c201be166222f05acfa8422b1968f2cf924a.zip
Merge pull request #3538 from ethereum/emitEvents
emit pseudo-keyword for events.
Diffstat (limited to 'docs')
-rw-r--r--docs/contracts.rst10
-rw-r--r--docs/grammar.txt3
-rw-r--r--docs/introduction-to-smart-contracts.rst10
-rw-r--r--docs/solidity-by-example.rst18
-rw-r--r--docs/structure-of-a-contract.rst4
-rw-r--r--docs/types.rst4
6 files changed, 26 insertions, 23 deletions
diff --git a/docs/contracts.rst b/docs/contracts.rst
index 368b7819..ee203263 100644
--- a/docs/contracts.rst
+++ b/docs/contracts.rst
@@ -724,10 +724,12 @@ All non-indexed arguments will be stored in the data part of the log.
);
function deposit(bytes32 _id) public payable {
- // Any call to this function (even deeply nested) can
- // be detected from the JavaScript API by filtering
- // for `Deposit` to be called.
- Deposit(msg.sender, _id, msg.value);
+ // Events are emitted using `emit`, followed by
+ // the name of the event and the arguments
+ // (if any) in parentheses. Any such invocation
+ // (even deeply nested) can be detected from
+ // the JavaScript API by filtering for `Deposit`.
+ emit Deposit(msg.sender, _id, msg.value);
}
}
diff --git a/docs/grammar.txt b/docs/grammar.txt
index e700c946..a5c2acf3 100644
--- a/docs/grammar.txt
+++ b/docs/grammar.txt
@@ -63,7 +63,7 @@ StateMutability = 'pure' | 'constant' | 'view' | 'payable'
Block = '{' Statement* '}'
Statement = IfStatement | WhileStatement | ForStatement | Block | InlineAssemblyStatement |
( DoWhileStatement | PlaceholderStatement | Continue | Break | Return |
- Throw | SimpleStatement ) ';'
+ Throw | EmitStatement | SimpleStatement ) ';'
ExpressionStatement = Expression
IfStatement = 'if' '(' Expression ')' Statement ( 'else' Statement )?
@@ -77,6 +77,7 @@ Continue = 'continue'
Break = 'break'
Return = 'return' Expression?
Throw = 'throw'
+EmitStatement = 'emit' FunctionCall
VariableDefinition = ('var' IdentifierList | VariableDeclaration) ( '=' Expression )?
IdentifierList = '(' ( Identifier? ',' )* Identifier? ')'
diff --git a/docs/introduction-to-smart-contracts.rst b/docs/introduction-to-smart-contracts.rst
index c297a8ad..11e07292 100644
--- a/docs/introduction-to-smart-contracts.rst
+++ b/docs/introduction-to-smart-contracts.rst
@@ -80,7 +80,7 @@ registering with username and password - all you need is an Ethereum keypair.
::
- pragma solidity ^0.4.0;
+ pragma solidity ^0.4.20; // should actually be 0.4.21
contract Coin {
// The keyword "public" makes those variables
@@ -107,7 +107,7 @@ registering with username and password - all you need is an Ethereum keypair.
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
- Sent(msg.sender, receiver, amount);
+ emit Sent(msg.sender, receiver, amount);
}
}
@@ -157,10 +157,10 @@ single account.
.. index:: event
The line ``event Sent(address from, address to, uint amount);`` declares
-a so-called "event" which is fired in the last line of the function
+a so-called "event" which is emitted in the last line of the function
``send``. User interfaces (as well as server applications of course) can
-listen for those events being fired on the blockchain without much
-cost. As soon as it is fired, the listener will also receive the
+listen for those events being emitted on the blockchain without much
+cost. As soon as it is emitted, the listener will also receive the
arguments ``from``, ``to`` and ``amount``, which makes it easy to track
transactions. In order to listen for this event, you would use ::
diff --git a/docs/solidity-by-example.rst b/docs/solidity-by-example.rst
index b8e158ac..e5b44c98 100644
--- a/docs/solidity-by-example.rst
+++ b/docs/solidity-by-example.rst
@@ -214,7 +214,7 @@ activate themselves.
::
- pragma solidity ^0.4.11;
+ pragma solidity ^0.4.20; // should actually be 0.4.21
contract SimpleAuction {
// Parameters of the auction. Times are either
@@ -282,7 +282,7 @@ activate themselves.
}
highestBidder = msg.sender;
highestBid = msg.value;
- HighestBidIncreased(msg.sender, msg.value);
+ emit HighestBidIncreased(msg.sender, msg.value);
}
/// Withdraw a bid that was overbid.
@@ -325,7 +325,7 @@ activate themselves.
// 2. Effects
ended = true;
- AuctionEnded(highestBidder, highestBid);
+ emit AuctionEnded(highestBidder, highestBid);
// 3. Interaction
beneficiary.transfer(highestBid);
@@ -371,7 +371,7 @@ high or low invalid bids.
::
- pragma solidity ^0.4.11;
+ pragma solidity ^0.4.20; // should actually be 0.4.21
contract BlindAuction {
struct Bid {
@@ -509,7 +509,7 @@ high or low invalid bids.
onlyAfter(revealEnd)
{
require(!ended);
- AuctionEnded(highestBidder, highestBid);
+ emit AuctionEnded(highestBidder, highestBid);
ended = true;
beneficiary.transfer(highestBid);
}
@@ -524,7 +524,7 @@ Safe Remote Purchase
::
- pragma solidity ^0.4.11;
+ pragma solidity ^0.4.20; // should actually be 0.4.21
contract Purchase {
uint public value;
@@ -574,7 +574,7 @@ Safe Remote Purchase
onlySeller
inState(State.Created)
{
- Aborted();
+ emit Aborted();
state = State.Inactive;
seller.transfer(this.balance);
}
@@ -589,7 +589,7 @@ Safe Remote Purchase
condition(msg.value == (2 * value))
payable
{
- PurchaseConfirmed();
+ emit PurchaseConfirmed();
buyer = msg.sender;
state = State.Locked;
}
@@ -601,7 +601,7 @@ Safe Remote Purchase
onlyBuyer
inState(State.Locked)
{
- ItemReceived();
+ emit ItemReceived();
// It is important to change the state first because
// otherwise, the contracts called using `send` below
// can call in again here.
diff --git a/docs/structure-of-a-contract.rst b/docs/structure-of-a-contract.rst
index a9a7ed52..4a0873df 100644
--- a/docs/structure-of-a-contract.rst
+++ b/docs/structure-of-a-contract.rst
@@ -86,14 +86,14 @@ Events are convenience interfaces with the EVM logging facilities.
::
- pragma solidity ^0.4.0;
+ pragma solidity ^0.4.20; // should actually be 0.4.21
contract SimpleAuction {
event HighestBidIncreased(address bidder, uint amount); // Event
function bid() public payable {
// ...
- HighestBidIncreased(msg.sender, msg.value); // Triggering event
+ emit HighestBidIncreased(msg.sender, msg.value); // Triggering event
}
}
diff --git a/docs/types.rst b/docs/types.rst
index 55eaa69a..3611bc3e 100644
--- a/docs/types.rst
+++ b/docs/types.rst
@@ -470,7 +470,7 @@ Example that shows how to use internal function types::
Another example that uses external function types::
- pragma solidity ^0.4.11;
+ pragma solidity ^0.4.20; // should actually be 0.4.21
contract Oracle {
struct Request {
@@ -481,7 +481,7 @@ Another example that uses external function types::
event NewRequest(uint);
function query(bytes data, function(bytes memory) external callback) public {
requests.push(Request(data, callback));
- NewRequest(requests.length - 1);
+ emit NewRequest(requests.length - 1);
}
function reply(uint requestID, bytes response) public {
// Here goes the check that the reply comes from a trusted source