Merge pull request #4269 from ethereum/require-emit

[BREAKING] Remove non-0.5.0 warning for emit keyword (make it mandatory)
This commit is contained in:
chriseth 2018-06-27 12:04:49 +02:00 committed by GitHub
commit b67dfa154c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
56 changed files with 185 additions and 278 deletions

View File

@ -443,7 +443,7 @@ For example,
function Test() public { b = 0x12345678901234567890123456789012; } function Test() public { b = 0x12345678901234567890123456789012; }
event Event(uint indexed a, bytes32 b); event Event(uint indexed a, bytes32 b);
event Event2(uint indexed a, bytes32 b); event Event2(uint indexed a, bytes32 b);
function foo(uint a) public { Event(a, b); } function foo(uint a) public { emit Event(a, b); }
bytes32 b; bytes32 b;
} }

View File

@ -1712,12 +1712,7 @@ bool TypeChecker::visit(FunctionCall const& _functionCall)
m_errorReporter.typeError(_functionCall.location(), "\"suicide\" has been deprecated in favour of \"selfdestruct\""); m_errorReporter.typeError(_functionCall.location(), "\"suicide\" has been deprecated in favour of \"selfdestruct\"");
} }
if (!m_insideEmitStatement && functionType->kind() == FunctionType::Kind::Event) if (!m_insideEmitStatement && functionType->kind() == FunctionType::Kind::Event)
{ m_errorReporter.typeError(_functionCall.location(), "Event invocations have to be prefixed by \"emit\".");
if (m_scope->sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050))
m_errorReporter.typeError(_functionCall.location(), "Event invocations have to be prefixed by \"emit\".");
else
m_errorReporter.warning(_functionCall.location(), "Invoking events without \"emit\" prefix is deprecated.");
}
TypePointers parameterTypes = functionType->parameterTypes(); TypePointers parameterTypes = functionType->parameterTypes();

View File

@ -23,6 +23,6 @@ contract Factory {
{ {
isInstantiation[instantiation] = true; isInstantiation[instantiation] = true;
instantiations[msg.sender].push(instantiation); instantiations[msg.sender].push(instantiation);
ContractInstantiation(msg.sender, instantiation); emit ContractInstantiation(msg.sender, instantiation);
} }
} }

View File

@ -93,7 +93,7 @@ contract MultiSigWallet {
payable payable
{ {
if (msg.value > 0) if (msg.value > 0)
Deposit(msg.sender, msg.value); emit Deposit(msg.sender, msg.value);
} }
/* /*
@ -126,7 +126,7 @@ contract MultiSigWallet {
{ {
isOwner[owner] = true; isOwner[owner] = true;
owners.push(owner); owners.push(owner);
OwnerAddition(owner); emit OwnerAddition(owner);
} }
/// @dev Allows to remove an owner. Transaction has to be sent by wallet. /// @dev Allows to remove an owner. Transaction has to be sent by wallet.
@ -145,7 +145,7 @@ contract MultiSigWallet {
owners.length -= 1; owners.length -= 1;
if (required > owners.length) if (required > owners.length)
changeRequirement(owners.length); changeRequirement(owners.length);
OwnerRemoval(owner); emit OwnerRemoval(owner);
} }
/// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet. /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.
@ -164,8 +164,8 @@ contract MultiSigWallet {
} }
isOwner[owner] = false; isOwner[owner] = false;
isOwner[newOwner] = true; isOwner[newOwner] = true;
OwnerRemoval(owner); emit OwnerRemoval(owner);
OwnerAddition(newOwner); emit OwnerAddition(newOwner);
} }
/// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet. /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.
@ -176,7 +176,7 @@ contract MultiSigWallet {
validRequirement(owners.length, _required) validRequirement(owners.length, _required)
{ {
required = _required; required = _required;
RequirementChange(_required); emit RequirementChange(_required);
} }
/// @dev Allows an owner to submit and confirm a transaction. /// @dev Allows an owner to submit and confirm a transaction.
@ -201,7 +201,7 @@ contract MultiSigWallet {
notConfirmed(transactionId, msg.sender) notConfirmed(transactionId, msg.sender)
{ {
confirmations[transactionId][msg.sender] = true; confirmations[transactionId][msg.sender] = true;
Confirmation(msg.sender, transactionId); emit Confirmation(msg.sender, transactionId);
executeTransaction(transactionId); executeTransaction(transactionId);
} }
@ -214,7 +214,7 @@ contract MultiSigWallet {
notExecuted(transactionId) notExecuted(transactionId)
{ {
confirmations[transactionId][msg.sender] = false; confirmations[transactionId][msg.sender] = false;
Revocation(msg.sender, transactionId); emit Revocation(msg.sender, transactionId);
} }
/// @dev Allows anyone to execute a confirmed transaction. /// @dev Allows anyone to execute a confirmed transaction.
@ -227,9 +227,9 @@ contract MultiSigWallet {
Transaction tx = transactions[transactionId]; Transaction tx = transactions[transactionId];
tx.executed = true; tx.executed = true;
if (tx.destination.call.value(tx.value)(tx.data)) if (tx.destination.call.value(tx.value)(tx.data))
Execution(transactionId); emit Execution(transactionId);
else { else {
ExecutionFailure(transactionId); emit ExecutionFailure(transactionId);
tx.executed = false; tx.executed = false;
} }
} }
@ -273,7 +273,7 @@ contract MultiSigWallet {
executed: false executed: false
}); });
transactionCount += 1; transactionCount += 1;
Submission(transactionId); emit Submission(transactionId);
} }
/* /*

View File

@ -33,7 +33,7 @@ contract MultiSigWalletWithDailyLimit is MultiSigWallet {
onlyWallet onlyWallet
{ {
dailyLimit = _dailyLimit; dailyLimit = _dailyLimit;
DailyLimitChange(_dailyLimit); emit DailyLimitChange(_dailyLimit);
} }
/// @dev Allows anyone to execute a confirmed transaction or ether withdraws until daily limit is reached. /// @dev Allows anyone to execute a confirmed transaction or ether withdraws until daily limit is reached.
@ -49,9 +49,9 @@ contract MultiSigWalletWithDailyLimit is MultiSigWallet {
if (!confirmed) if (!confirmed)
spentToday += tx.value; spentToday += tx.value;
if (tx.destination.call.value(tx.value)(tx.data)) if (tx.destination.call.value(tx.value)(tx.data))
Execution(transactionId); emit Execution(transactionId);
else { else {
ExecutionFailure(transactionId); emit ExecutionFailure(transactionId);
tx.executed = false; tx.executed = false;
if (!confirmed) if (!confirmed)
spentToday -= tx.value; spentToday -= tx.value;

View File

@ -31,7 +31,7 @@ contract TestToken {
} }
balances[msg.sender] -= _value; balances[msg.sender] -= _value;
balances[_to] += _value; balances[_to] += _value;
Transfer(msg.sender, _to, _value); emit Transfer(msg.sender, _to, _value);
return true; return true;
} }
@ -45,7 +45,7 @@ contract TestToken {
balances[_to] += _value; balances[_to] += _value;
balances[_from] -= _value; balances[_from] -= _value;
allowed[_from][msg.sender] -= _value; allowed[_from][msg.sender] -= _value;
Transfer(_from, _to, _value); emit Transfer(_from, _to, _value);
return true; return true;
} }
@ -54,7 +54,7 @@ contract TestToken {
returns (bool success) returns (bool success)
{ {
allowed[msg.sender][_spender] = _value; allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value); emit Approval(msg.sender, _spender, _value);
return true; return true;
} }

View File

@ -337,7 +337,7 @@ contract ico is safeMath {
token(tokenAddr).mint(affilateAddress, extra); token(tokenAddr).mint(affilateAddress, extra);
} }
checkPremium(beneficiaryAddress); checkPremium(beneficiaryAddress);
EICO(beneficiaryAddress, _reward, affilateAddress, extra); emit EICO(beneficiaryAddress, _reward, affilateAddress, extra);
return true; return true;
} }

View File

@ -63,7 +63,7 @@ contract premium is module, safeMath {
for ( uint256 a=0 ; a<genesisAddr.length ; a++ ) { for ( uint256 a=0 ; a<genesisAddr.length ; a++ ) {
genesis[genesisAddr[a]] = true; genesis[genesisAddr[a]] = true;
require( db.increase(genesisAddr[a], genesisValue[a]) ); require( db.increase(genesisAddr[a], genesisValue[a]) );
Mint(genesisAddr[a], genesisValue[a]); emit Mint(genesisAddr[a], genesisValue[a]);
} }
} }
} }
@ -137,7 +137,7 @@ contract premium is module, safeMath {
require( msg.sender != spender ); require( msg.sender != spender );
require( db.balanceOf(msg.sender) >= amount ); require( db.balanceOf(msg.sender) >= amount );
require( db.setAllowance(msg.sender, spender, amount, nonce) ); require( db.setAllowance(msg.sender, spender, amount, nonce) );
Approval(msg.sender, spender, amount); emit Approval(msg.sender, spender, amount);
} }
function allowance(address owner, address spender) constant returns (uint256 remaining, uint256 nonce) { function allowance(address owner, address spender) constant returns (uint256 remaining, uint256 nonce) {
@ -178,7 +178,7 @@ contract premium is module, safeMath {
} else { } else {
_transfer(msg.sender, to, amount); _transfer(msg.sender, to, amount);
} }
Transfer(msg.sender, to, amount, _data); emit Transfer(msg.sender, to, amount, _data);
return true; return true;
} }
@ -207,7 +207,7 @@ contract premium is module, safeMath {
_reamining = safeSub(_reamining, amount); _reamining = safeSub(_reamining, amount);
_nonce = safeAdd(_nonce, 1); _nonce = safeAdd(_nonce, 1);
require( db.setAllowance(from, msg.sender, _reamining, _nonce) ); require( db.setAllowance(from, msg.sender, _reamining, _nonce) );
AllowanceUsed(msg.sender, from, amount); emit AllowanceUsed(msg.sender, from, amount);
} }
bytes memory _data; bytes memory _data;
if ( isContract(to) ) { if ( isContract(to) ) {
@ -215,7 +215,7 @@ contract premium is module, safeMath {
} else { } else {
_transfer( from, to, amount); _transfer( from, to, amount);
} }
Transfer(from, to, amount, _data); emit Transfer(from, to, amount, _data);
return true; return true;
} }
@ -242,7 +242,7 @@ contract premium is module, safeMath {
} else { } else {
_transfer( msg.sender, to, amount); _transfer( msg.sender, to, amount);
} }
Transfer(msg.sender, to, amount, extraData); emit Transfer(msg.sender, to, amount, extraData);
return true; return true;
} }
@ -301,7 +301,7 @@ contract premium is module, safeMath {
@value Amount @value Amount
*/ */
require( db.increase(owner, value) ); require( db.increase(owner, value) );
Mint(owner, value); emit Mint(owner, value);
} }
function isContract(address addr) internal returns (bool success) { function isContract(address addr) internal returns (bool success) {

View File

@ -268,7 +268,7 @@ contract provider is module, safeMath, announcementTypes {
} else { } else {
delete providers[msg.sender].data[currHeight].supply[currentSchellingRound]; delete providers[msg.sender].data[currHeight].supply[currentSchellingRound];
} }
EProviderOpen(msg.sender, currHeight); emit EProviderOpen(msg.sender, currHeight);
} }
function setProviderDetails(address addr, string website, string country, string info, uint8 rate, address admin) isReady external { function setProviderDetails(address addr, string website, string country, string info, uint8 rate, address admin) isReady external {
/* /*
@ -297,7 +297,7 @@ contract provider is module, safeMath, announcementTypes {
providers[addr].data[currHeight].country = country; providers[addr].data[currHeight].country = country;
providers[addr].data[currHeight].info = info; providers[addr].data[currHeight].info = info;
providers[addr].data[currHeight].currentRate = rate; providers[addr].data[currHeight].currentRate = rate;
EProviderDetailsChanged(addr, currHeight, website, country, info, rate, admin); emit EProviderDetailsChanged(addr, currHeight, website, country, info, rate, admin);
} }
function getProviderInfo(address addr, uint256 height) public constant returns (string name, string website, string country, string info, uint256 create) { function getProviderInfo(address addr, uint256 height) public constant returns (string name, string website, string country, string info, uint256 create) {
/* /*
@ -367,7 +367,7 @@ contract provider is module, safeMath, announcementTypes {
providers[msg.sender].data[currHeight].valid = false; providers[msg.sender].data[currHeight].valid = false;
providers[msg.sender].data[currHeight].close = currentSchellingRound; providers[msg.sender].data[currHeight].close = currentSchellingRound;
setRightForInterest(getProviderCurrentSupply(msg.sender), 0, providers[msg.sender].data[currHeight].priv); setRightForInterest(getProviderCurrentSupply(msg.sender), 0, providers[msg.sender].data[currHeight].priv);
EProviderClose(msg.sender, currHeight); emit EProviderClose(msg.sender, currHeight);
} }
function allowUsers(address provider, address[] addr) isReady external { function allowUsers(address provider, address[] addr) isReady external {
/* /*
@ -437,7 +437,7 @@ contract provider is module, safeMath, announcementTypes {
clients[msg.sender].paidUpTo = currentSchellingRound; clients[msg.sender].paidUpTo = currentSchellingRound;
clients[msg.sender].lastRate = providers[provider].data[currHeight].currentRate; clients[msg.sender].lastRate = providers[provider].data[currHeight].currentRate;
clients[msg.sender].providerConnected = now; clients[msg.sender].providerConnected = now;
ENewClient(msg.sender, provider, currHeight, bal); emit ENewClient(msg.sender, provider, currHeight, bal);
} }
function partProvider() isReady external { function partProvider() isReady external {
/* /*
@ -467,7 +467,7 @@ contract provider is module, safeMath, announcementTypes {
delete clients[msg.sender].paidUpTo; delete clients[msg.sender].paidUpTo;
delete clients[msg.sender].lastRate; delete clients[msg.sender].lastRate;
delete clients[msg.sender].providerConnected; delete clients[msg.sender].providerConnected;
EClientLost(msg.sender, provider, currHeight, bal); emit EClientLost(msg.sender, provider, currHeight, bal);
} }
function checkReward(address addr) public constant returns (uint256 reward) { function checkReward(address addr) public constant returns (uint256 reward) {
/* /*
@ -522,7 +522,7 @@ contract provider is module, safeMath, announcementTypes {
if ( providerReward > 0 ) { if ( providerReward > 0 ) {
require( moduleHandler(moduleHandlerAddress).transfer(address(this), provider, providerReward, false) ); require( moduleHandler(moduleHandlerAddress).transfer(address(this), provider, providerReward, false) );
} }
EReward(msg.sender, provider, clientReward, providerReward); emit EReward(msg.sender, provider, clientReward, providerReward);
} }
function getClientReward(uint256 limit) internal returns (uint256 reward) { function getClientReward(uint256 limit) internal returns (uint256 reward) {
/* /*

View File

@ -148,7 +148,7 @@ contract publisher is announcementTypes, module, safeMath {
announcements[announcementsLength]._str = _str; announcements[announcementsLength]._str = _str;
announcements[announcementsLength]._uint = _uint; announcements[announcementsLength]._uint = _uint;
announcements[announcementsLength]._addr = _addr; announcements[announcementsLength]._addr = _addr;
ENewAnnouncement(announcementsLength, Type); emit ENewAnnouncement(announcementsLength, Type);
} }
function closeAnnouncement(uint256 id) onlyOwner external { function closeAnnouncement(uint256 id) onlyOwner external {
@ -238,7 +238,7 @@ contract publisher is announcementTypes, module, safeMath {
opponents[msg.sender].push(id); opponents[msg.sender].push(id);
} }
announcements[id].oppositionWeight += _balance; announcements[id].oppositionWeight += _balance;
EOppositeAnnouncement(id, msg.sender, _balance); emit EOppositeAnnouncement(id, msg.sender, _balance);
} }
function invalidateAnnouncement(uint256 id) onlyOwner external { function invalidateAnnouncement(uint256 id) onlyOwner external {
@ -250,7 +250,7 @@ contract publisher is announcementTypes, module, safeMath {
require( announcements[id].open ); require( announcements[id].open );
announcements[id].end = block.number; announcements[id].end = block.number;
announcements[id].open = false; announcements[id].open = false;
EInvalidateAnnouncement(id); emit EInvalidateAnnouncement(id);
} }
modifier onlyOwner() { modifier onlyOwner() {

View File

@ -78,7 +78,7 @@ contract token is safeMath, module, announcementTypes {
genesis[genesisAddr[a]] = true; genesis[genesisAddr[a]] = true;
require( db.increase(genesisAddr[a], genesisValue[a]) ); require( db.increase(genesisAddr[a], genesisValue[a]) );
if ( ! genesisAddr[a].send(0.2 ether) ) {} if ( ! genesisAddr[a].send(0.2 ether) ) {}
Mint(genesisAddr[a], genesisValue[a]); emit Mint(genesisAddr[a], genesisValue[a]);
} }
} }
} }
@ -152,7 +152,7 @@ contract token is safeMath, module, announcementTypes {
require( msg.sender != spender ); require( msg.sender != spender );
require( db.balanceOf(msg.sender) >= amount ); require( db.balanceOf(msg.sender) >= amount );
require( db.setAllowance(msg.sender, spender, amount, nonce) ); require( db.setAllowance(msg.sender, spender, amount, nonce) );
Approval(msg.sender, spender, amount); emit Approval(msg.sender, spender, amount);
} }
function allowance(address owner, address spender) constant returns (uint256 remaining, uint256 nonce) { function allowance(address owner, address spender) constant returns (uint256 remaining, uint256 nonce) {
@ -193,7 +193,7 @@ contract token is safeMath, module, announcementTypes {
} else { } else {
_transfer( msg.sender, to, amount, true); _transfer( msg.sender, to, amount, true);
} }
Transfer(msg.sender, to, amount, _data); emit Transfer(msg.sender, to, amount, _data);
return true; return true;
} }
@ -222,7 +222,7 @@ contract token is safeMath, module, announcementTypes {
_reamining = safeSub(_reamining, amount); _reamining = safeSub(_reamining, amount);
_nonce = safeAdd(_nonce, 1); _nonce = safeAdd(_nonce, 1);
require( db.setAllowance(from, msg.sender, _reamining, _nonce) ); require( db.setAllowance(from, msg.sender, _reamining, _nonce) );
AllowanceUsed(msg.sender, from, amount); emit AllowanceUsed(msg.sender, from, amount);
} }
bytes memory _data; bytes memory _data;
if ( isContract(to) ) { if ( isContract(to) ) {
@ -230,7 +230,7 @@ contract token is safeMath, module, announcementTypes {
} else { } else {
_transfer( from, to, amount, true); _transfer( from, to, amount, true);
} }
Transfer(from, to, amount, _data); emit Transfer(from, to, amount, _data);
return true; return true;
} }
@ -256,7 +256,7 @@ contract token is safeMath, module, announcementTypes {
bytes memory _data; bytes memory _data;
require( super.isModuleHandler(msg.sender) ); require( super.isModuleHandler(msg.sender) );
_transfer( from, to, amount, fee); _transfer( from, to, amount, fee);
Transfer(from, to, amount, _data); emit Transfer(from, to, amount, _data);
return true; return true;
} }
@ -284,7 +284,7 @@ contract token is safeMath, module, announcementTypes {
} else { } else {
_transfer( msg.sender, to, amount, true); _transfer( msg.sender, to, amount, true);
} }
Transfer(msg.sender, to, amount, extraData); emit Transfer(msg.sender, to, amount, extraData);
return true; return true;
} }
@ -379,7 +379,7 @@ contract token is safeMath, module, announcementTypes {
require( db.increase(_schellingAddr, _forSchelling) ); require( db.increase(_schellingAddr, _forSchelling) );
_burn(owner, _forBurn); _burn(owner, _forBurn);
bytes memory _data; bytes memory _data;
Transfer(owner, _schellingAddr, _forSchelling, _data); emit Transfer(owner, _schellingAddr, _forSchelling, _data);
require( moduleHandler(moduleHandlerAddress).broadcastTransfer(owner, _schellingAddr, _forSchelling) ); require( moduleHandler(moduleHandlerAddress).broadcastTransfer(owner, _schellingAddr, _forSchelling) );
} else { } else {
_burn(owner, _fee); _burn(owner, _fee);
@ -428,7 +428,7 @@ contract token is safeMath, module, announcementTypes {
if ( isICO ) { if ( isICO ) {
require( ico(icoAddr).setInterestDB(owner, db.balanceOf(owner)) ); require( ico(icoAddr).setInterestDB(owner, db.balanceOf(owner)) );
} }
Mint(owner, value); emit Mint(owner, value);
} }
function burn(address owner, uint256 value) isReady external returns (bool success) { function burn(address owner, uint256 value) isReady external returns (bool success) {
@ -454,7 +454,7 @@ contract token is safeMath, module, announcementTypes {
*/ */
require( db.decrease(owner, value) ); require( db.decrease(owner, value) );
require( moduleHandler(moduleHandlerAddress).broadcastTransfer(owner, address(0x00), value) ); require( moduleHandler(moduleHandlerAddress).broadcastTransfer(owner, address(0x00), value) );
Burn(owner, value); emit Burn(owner, value);
} }
function isContract(address addr) internal returns (bool success) { function isContract(address addr) internal returns (bool success) {

View File

@ -38,7 +38,7 @@ contract CategoricalEvent is Event {
outcomeTokens[uint(outcome)].revoke(msg.sender, winnings); outcomeTokens[uint(outcome)].revoke(msg.sender, winnings);
// Payout winnings // Payout winnings
require(collateralToken.transfer(msg.sender, winnings)); require(collateralToken.transfer(msg.sender, winnings));
WinningsRedemption(msg.sender, winnings); emit WinningsRedemption(msg.sender, winnings);
} }
/// @dev Calculates and returns event hash /// @dev Calculates and returns event hash

View File

@ -44,7 +44,7 @@ contract Event {
for (uint8 i = 0; i < outcomeCount; i++) { for (uint8 i = 0; i < outcomeCount; i++) {
OutcomeToken outcomeToken = new OutcomeToken(); OutcomeToken outcomeToken = new OutcomeToken();
outcomeTokens.push(outcomeToken); outcomeTokens.push(outcomeToken);
OutcomeTokenCreation(outcomeToken, i); emit OutcomeTokenCreation(outcomeToken, i);
} }
} }
@ -58,7 +58,7 @@ contract Event {
// Issue new outcome tokens to sender // Issue new outcome tokens to sender
for (uint8 i = 0; i < outcomeTokens.length; i++) for (uint8 i = 0; i < outcomeTokens.length; i++)
outcomeTokens[i].issue(msg.sender, collateralTokenCount); outcomeTokens[i].issue(msg.sender, collateralTokenCount);
OutcomeTokenSetIssuance(msg.sender, collateralTokenCount); emit OutcomeTokenSetIssuance(msg.sender, collateralTokenCount);
} }
/// @dev Sells equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1 /// @dev Sells equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1
@ -71,7 +71,7 @@ contract Event {
outcomeTokens[i].revoke(msg.sender, outcomeTokenCount); outcomeTokens[i].revoke(msg.sender, outcomeTokenCount);
// Transfer collateral tokens to sender // Transfer collateral tokens to sender
require(collateralToken.transfer(msg.sender, outcomeTokenCount)); require(collateralToken.transfer(msg.sender, outcomeTokenCount));
OutcomeTokenSetRevocation(msg.sender, outcomeTokenCount); emit OutcomeTokenSetRevocation(msg.sender, outcomeTokenCount);
} }
/// @dev Sets winning event outcome /// @dev Sets winning event outcome
@ -83,7 +83,7 @@ contract Event {
// Set winning outcome // Set winning outcome
outcome = oracle.getOutcome(); outcome = oracle.getOutcome();
isOutcomeSet = true; isOutcomeSet = true;
OutcomeAssignment(outcome); emit OutcomeAssignment(outcome);
} }
/// @dev Returns outcome count /// @dev Returns outcome count

View File

@ -45,7 +45,7 @@ contract EventFactory {
outcomeCount outcomeCount
); );
categoricalEvents[eventHash] = eventContract; categoricalEvents[eventHash] = eventContract;
CategoricalEventCreation(msg.sender, eventContract, collateralToken, oracle, outcomeCount); emit CategoricalEventCreation(msg.sender, eventContract, collateralToken, oracle, outcomeCount);
} }
/// @dev Creates a new scalar event and adds it to the event mapping /// @dev Creates a new scalar event and adds it to the event mapping
@ -74,6 +74,6 @@ contract EventFactory {
upperBound upperBound
); );
scalarEvents[eventHash] = eventContract; scalarEvents[eventHash] = eventContract;
ScalarEventCreation(msg.sender, eventContract, collateralToken, oracle, lowerBound, upperBound); emit ScalarEventCreation(msg.sender, eventContract, collateralToken, oracle, lowerBound, upperBound);
} }
} }

View File

@ -72,7 +72,7 @@ contract ScalarEvent is Event {
outcomeTokens[LONG].revoke(msg.sender, longOutcomeTokenCount); outcomeTokens[LONG].revoke(msg.sender, longOutcomeTokenCount);
// Payout winnings to sender // Payout winnings to sender
require(collateralToken.transfer(msg.sender, winnings)); require(collateralToken.transfer(msg.sender, winnings));
WinningsRedemption(msg.sender, winnings); emit WinningsRedemption(msg.sender, winnings);
} }
/// @dev Calculates and returns event hash /// @dev Calculates and returns event hash

View File

@ -111,7 +111,7 @@ contract Campaign {
contributions[msg.sender] = contributions[msg.sender].add(amount); contributions[msg.sender] = contributions[msg.sender].add(amount);
if (amount == maxAmount) if (amount == maxAmount)
stage = Stages.AuctionSuccessful; stage = Stages.AuctionSuccessful;
CampaignFunding(msg.sender, amount); emit CampaignFunding(msg.sender, amount);
} }
/// @dev Withdraws refund amount /// @dev Withdraws refund amount
@ -126,7 +126,7 @@ contract Campaign {
contributions[msg.sender] = 0; contributions[msg.sender] = 0;
// Refund collateral tokens // Refund collateral tokens
require(eventContract.collateralToken().transfer(msg.sender, refundAmount)); require(eventContract.collateralToken().transfer(msg.sender, refundAmount));
CampaignRefund(msg.sender, refundAmount); emit CampaignRefund(msg.sender, refundAmount);
} }
/// @dev Allows to create market after successful funding /// @dev Allows to create market after successful funding
@ -141,7 +141,7 @@ contract Campaign {
require(eventContract.collateralToken().approve(market, funding)); require(eventContract.collateralToken().approve(market, funding));
market.fund(funding); market.fund(funding);
stage = Stages.MarketCreated; stage = Stages.MarketCreated;
MarketCreation(market); emit MarketCreation(market);
return market; return market;
} }
@ -158,7 +158,7 @@ contract Campaign {
eventContract.redeemWinnings(); eventContract.redeemWinnings();
finalBalance = eventContract.collateralToken().balanceOf(this); finalBalance = eventContract.collateralToken().balanceOf(this);
stage = Stages.MarketClosed; stage = Stages.MarketClosed;
MarketClosing(); emit MarketClosing();
} }
/// @dev Allows to withdraw fees from campaign contract to contributor /// @dev Allows to withdraw fees from campaign contract to contributor
@ -172,6 +172,6 @@ contract Campaign {
contributions[msg.sender] = 0; contributions[msg.sender] = 0;
// Send fee share to contributor // Send fee share to contributor
require(eventContract.collateralToken().transfer(msg.sender, fees)); require(eventContract.collateralToken().transfer(msg.sender, fees));
FeeWithdrawal(msg.sender, fees); emit FeeWithdrawal(msg.sender, fees);
} }
} }

View File

@ -34,6 +34,6 @@ contract CampaignFactory {
returns (Campaign campaign) returns (Campaign campaign)
{ {
campaign = new Campaign(eventContract, marketFactory, marketMaker, fee, funding, deadline); campaign = new Campaign(eventContract, marketFactory, marketMaker, fee, funding, deadline);
CampaignCreation(msg.sender, campaign, eventContract, marketFactory, marketMaker, fee, funding, deadline); emit CampaignCreation(msg.sender, campaign, eventContract, marketFactory, marketMaker, fee, funding, deadline);
} }
} }

View File

@ -65,7 +65,7 @@ contract StandardMarket is Market {
eventContract.buyAllOutcomes(_funding); eventContract.buyAllOutcomes(_funding);
funding = _funding; funding = _funding;
stage = Stages.MarketFunded; stage = Stages.MarketFunded;
MarketFunding(funding); emit MarketFunding(funding);
} }
/// @dev Allows market creator to close the markets by transferring all remaining outcome tokens to the creator /// @dev Allows market creator to close the markets by transferring all remaining outcome tokens to the creator
@ -78,7 +78,7 @@ contract StandardMarket is Market {
for (uint8 i = 0; i < outcomeCount; i++) for (uint8 i = 0; i < outcomeCount; i++)
require(eventContract.outcomeTokens(i).transfer(creator, eventContract.outcomeTokens(i).balanceOf(this))); require(eventContract.outcomeTokens(i).transfer(creator, eventContract.outcomeTokens(i).balanceOf(this)));
stage = Stages.MarketClosed; stage = Stages.MarketClosed;
MarketClosing(); emit MarketClosing();
} }
/// @dev Allows market creator to withdraw fees generated by trades /// @dev Allows market creator to withdraw fees generated by trades
@ -91,7 +91,7 @@ contract StandardMarket is Market {
fees = eventContract.collateralToken().balanceOf(this); fees = eventContract.collateralToken().balanceOf(this);
// Transfer fees // Transfer fees
require(eventContract.collateralToken().transfer(creator, fees)); require(eventContract.collateralToken().transfer(creator, fees));
FeeWithdrawal(fees); emit FeeWithdrawal(fees);
} }
/// @dev Allows to buy outcome tokens from market maker /// @dev Allows to buy outcome tokens from market maker
@ -121,7 +121,7 @@ contract StandardMarket is Market {
// Add outcome token count to market maker net balance // Add outcome token count to market maker net balance
require(int(outcomeTokenCount) >= 0); require(int(outcomeTokenCount) >= 0);
netOutcomeTokensSold[outcomeTokenIndex] = netOutcomeTokensSold[outcomeTokenIndex].add(int(outcomeTokenCount)); netOutcomeTokensSold[outcomeTokenIndex] = netOutcomeTokensSold[outcomeTokenIndex].add(int(outcomeTokenCount));
OutcomeTokenPurchase(msg.sender, outcomeTokenIndex, outcomeTokenCount, cost); emit OutcomeTokenPurchase(msg.sender, outcomeTokenIndex, outcomeTokenCount, cost);
} }
/// @dev Allows to sell outcome tokens to market maker /// @dev Allows to sell outcome tokens to market maker
@ -150,7 +150,7 @@ contract StandardMarket is Market {
// Subtract outcome token count from market maker net balance // Subtract outcome token count from market maker net balance
require(int(outcomeTokenCount) >= 0); require(int(outcomeTokenCount) >= 0);
netOutcomeTokensSold[outcomeTokenIndex] = netOutcomeTokensSold[outcomeTokenIndex].sub(int(outcomeTokenCount)); netOutcomeTokensSold[outcomeTokenIndex] = netOutcomeTokensSold[outcomeTokenIndex].sub(int(outcomeTokenCount));
OutcomeTokenSale(msg.sender, outcomeTokenIndex, outcomeTokenCount, profit); emit OutcomeTokenSale(msg.sender, outcomeTokenIndex, outcomeTokenCount, profit);
} }
/// @dev Buys all outcomes, then sells all shares of selected outcome which were bought, keeping /// @dev Buys all outcomes, then sells all shares of selected outcome which were bought, keeping
@ -178,7 +178,7 @@ contract StandardMarket is Market {
require(eventContract.outcomeTokens(i).transfer(msg.sender, outcomeTokenCount)); require(eventContract.outcomeTokens(i).transfer(msg.sender, outcomeTokenCount));
// Send change back to buyer // Send change back to buyer
require(eventContract.collateralToken().transfer(msg.sender, profit)); require(eventContract.collateralToken().transfer(msg.sender, profit));
OutcomeTokenShortSale(msg.sender, outcomeTokenIndex, outcomeTokenCount, cost); emit OutcomeTokenShortSale(msg.sender, outcomeTokenIndex, outcomeTokenCount, cost);
} }
/// @dev Calculates fee to be paid to market maker /// @dev Calculates fee to be paid to market maker

View File

@ -20,6 +20,6 @@ contract StandardMarketFactory is MarketFactory {
returns (Market market) returns (Market market)
{ {
market = new StandardMarket(msg.sender, eventContract, marketMaker, fee); market = new StandardMarket(msg.sender, eventContract, marketMaker, fee);
MarketCreation(msg.sender, market, eventContract, marketMaker, fee); emit MarketCreation(msg.sender, market, eventContract, marketMaker, fee);
} }
} }

View File

@ -52,7 +52,7 @@ contract CentralizedOracle is Oracle {
// Result is not set yet // Result is not set yet
require(!isSet); require(!isSet);
owner = newOwner; owner = newOwner;
OwnerReplacement(newOwner); emit OwnerReplacement(newOwner);
} }
/// @dev Sets event outcome /// @dev Sets event outcome
@ -65,7 +65,7 @@ contract CentralizedOracle is Oracle {
require(!isSet); require(!isSet);
isSet = true; isSet = true;
outcome = _outcome; outcome = _outcome;
OutcomeAssignment(_outcome); emit OutcomeAssignment(_outcome);
} }
/// @dev Returns if winning outcome is set /// @dev Returns if winning outcome is set

View File

@ -22,6 +22,6 @@ contract CentralizedOracleFactory {
returns (CentralizedOracle centralizedOracle) returns (CentralizedOracle centralizedOracle)
{ {
centralizedOracle = new CentralizedOracle(msg.sender, ipfsHash); centralizedOracle = new CentralizedOracle(msg.sender, ipfsHash);
CentralizedOracleCreation(msg.sender, centralizedOracle, ipfsHash); emit CentralizedOracleCreation(msg.sender, centralizedOracle, ipfsHash);
} }
} }

View File

@ -37,7 +37,7 @@ contract DifficultyOracle is Oracle {
// Block number was reached and outcome was not set yet // Block number was reached and outcome was not set yet
require(block.number >= blockNumber && difficulty == 0); require(block.number >= blockNumber && difficulty == 0);
difficulty = block.difficulty; difficulty = block.difficulty;
OutcomeAssignment(difficulty); emit OutcomeAssignment(difficulty);
} }
/// @dev Returns if difficulty is set /// @dev Returns if difficulty is set

View File

@ -22,6 +22,6 @@ contract DifficultyOracleFactory {
returns (DifficultyOracle difficultyOracle) returns (DifficultyOracle difficultyOracle)
{ {
difficultyOracle = new DifficultyOracle(blockNumber); difficultyOracle = new DifficultyOracle(blockNumber);
DifficultyOracleCreation(msg.sender, difficultyOracle, blockNumber); emit DifficultyOracleCreation(msg.sender, difficultyOracle, blockNumber);
} }
} }

View File

@ -105,7 +105,7 @@ contract FutarchyOracle is Oracle {
require(market.eventContract().collateralToken().approve(market, funding)); require(market.eventContract().collateralToken().approve(market, funding));
market.fund(funding); market.fund(funding);
} }
FutarchyFunding(funding); emit FutarchyFunding(funding);
} }
/// @dev Closes market for winning outcome and redeems winnings and sends all collateral tokens to creator /// @dev Closes market for winning outcome and redeems winnings and sends all collateral tokens to creator
@ -123,7 +123,7 @@ contract FutarchyOracle is Oracle {
// Redeem collateral token for winning outcome tokens and transfer collateral tokens to creator // Redeem collateral token for winning outcome tokens and transfer collateral tokens to creator
categoricalEvent.redeemWinnings(); categoricalEvent.redeemWinnings();
require(categoricalEvent.collateralToken().transfer(creator, categoricalEvent.collateralToken().balanceOf(this))); require(categoricalEvent.collateralToken().transfer(creator, categoricalEvent.collateralToken().balanceOf(this)));
FutarchyClosing(); emit FutarchyClosing();
} }
/// @dev Allows to set the oracle outcome based on the market with largest long position /// @dev Allows to set the oracle outcome based on the market with largest long position
@ -144,7 +144,7 @@ contract FutarchyOracle is Oracle {
} }
winningMarketIndex = highestIndex; winningMarketIndex = highestIndex;
isSet = true; isSet = true;
OutcomeAssignment(winningMarketIndex); emit OutcomeAssignment(winningMarketIndex);
} }
/// @dev Returns if winning outcome is set /// @dev Returns if winning outcome is set

View File

@ -78,7 +78,7 @@ contract FutarchyOracleFactory {
fee, fee,
deadline deadline
); );
FutarchyOracleCreation( emit FutarchyOracleCreation(
msg.sender, msg.sender,
futarchyOracle, futarchyOracle,
collateralToken, collateralToken,

View File

@ -22,6 +22,6 @@ contract MajorityOracleFactory {
returns (MajorityOracle majorityOracle) returns (MajorityOracle majorityOracle)
{ {
majorityOracle = new MajorityOracle(oracles); majorityOracle = new MajorityOracle(oracles);
MajorityOracleCreation(msg.sender, majorityOracle, oracles); emit MajorityOracleCreation(msg.sender, majorityOracle, oracles);
} }
} }

View File

@ -61,7 +61,7 @@ contract SignedMessageOracle is Oracle {
&& signer == ecrecover(keccak256(descriptionHash, newSigner, _nonce), v, r, s)); && signer == ecrecover(keccak256(descriptionHash, newSigner, _nonce), v, r, s));
nonce = _nonce; nonce = _nonce;
signer = newSigner; signer = newSigner;
SignerReplacement(newSigner); emit SignerReplacement(newSigner);
} }
/// @dev Sets outcome based on signed message /// @dev Sets outcome based on signed message
@ -77,7 +77,7 @@ contract SignedMessageOracle is Oracle {
&& signer == ecrecover(keccak256(descriptionHash, _outcome), v, r, s)); && signer == ecrecover(keccak256(descriptionHash, _outcome), v, r, s));
isSet = true; isSet = true;
outcome = _outcome; outcome = _outcome;
OutcomeAssignment(_outcome); emit OutcomeAssignment(_outcome);
} }
/// @dev Returns if winning outcome /// @dev Returns if winning outcome

View File

@ -26,6 +26,6 @@ contract SignedMessageOracleFactory {
{ {
signedMessageOracle = new SignedMessageOracle(descriptionHash, v, r, s); signedMessageOracle = new SignedMessageOracle(descriptionHash, v, r, s);
address oracle = ecrecover(descriptionHash, v, r, s); address oracle = ecrecover(descriptionHash, v, r, s);
SignedMessageOracleCreation(msg.sender, signedMessageOracle, oracle); emit SignedMessageOracleCreation(msg.sender, signedMessageOracle, oracle);
} }
} }

View File

@ -81,7 +81,7 @@ contract UltimateOracle is Oracle {
&& forwardedOracle.isOutcomeSet()); && forwardedOracle.isOutcomeSet());
forwardedOutcome = forwardedOracle.getOutcome(); forwardedOutcome = forwardedOracle.getOutcome();
forwardedOutcomeSetTimestamp = now; forwardedOutcomeSetTimestamp = now;
ForwardedOracleOutcomeAssignment(forwardedOutcome); emit ForwardedOracleOutcomeAssignment(forwardedOutcome);
} }
/// @dev Allows to challenge the oracle outcome /// @dev Allows to challenge the oracle outcome
@ -98,7 +98,7 @@ contract UltimateOracle is Oracle {
totalAmount = challengeAmount; totalAmount = challengeAmount;
frontRunner = _outcome; frontRunner = _outcome;
frontRunnerSetTimestamp = now; frontRunnerSetTimestamp = now;
OutcomeChallenge(msg.sender, _outcome); emit OutcomeChallenge(msg.sender, _outcome);
} }
/// @dev Allows to challenge the oracle outcome /// @dev Allows to challenge the oracle outcome
@ -122,7 +122,7 @@ contract UltimateOracle is Oracle {
frontRunner = _outcome; frontRunner = _outcome;
frontRunnerSetTimestamp = now; frontRunnerSetTimestamp = now;
} }
OutcomeVote(msg.sender, _outcome, amount); emit OutcomeVote(msg.sender, _outcome, amount);
} }
/// @dev Withdraws winnings for user /// @dev Withdraws winnings for user
@ -137,7 +137,7 @@ contract UltimateOracle is Oracle {
outcomeAmounts[msg.sender][frontRunner] = 0; outcomeAmounts[msg.sender][frontRunner] = 0;
// Transfer earnings to contributor // Transfer earnings to contributor
require(collateralToken.transfer(msg.sender, amount)); require(collateralToken.transfer(msg.sender, amount));
Withdrawal(msg.sender, amount); emit Withdrawal(msg.sender, amount);
} }
/// @dev Checks if time to challenge the outcome is over /// @dev Checks if time to challenge the outcome is over

View File

@ -50,7 +50,7 @@ contract UltimateOracleFactory {
challengeAmount, challengeAmount,
frontRunnerPeriod frontRunnerPeriod
); );
UltimateOracleCreation( emit UltimateOracleCreation(
msg.sender, msg.sender,
ultimateOracle, ultimateOracle,
oracle, oracle,

View File

@ -30,7 +30,7 @@ contract EtherToken is StandardToken {
{ {
balances[msg.sender] = balances[msg.sender].add(msg.value); balances[msg.sender] = balances[msg.sender].add(msg.value);
totalTokens = totalTokens.add(msg.value); totalTokens = totalTokens.add(msg.value);
Deposit(msg.sender, msg.value); emit Deposit(msg.sender, msg.value);
} }
/// @dev Sells tokens in exchange for Ether, exchanging them 1:1 /// @dev Sells tokens in exchange for Ether, exchanging them 1:1
@ -42,6 +42,6 @@ contract EtherToken is StandardToken {
balances[msg.sender] = balances[msg.sender].sub(value); balances[msg.sender] = balances[msg.sender].sub(value);
totalTokens = totalTokens.sub(value); totalTokens = totalTokens.sub(value);
msg.sender.transfer(value); msg.sender.transfer(value);
Withdrawal(msg.sender, value); emit Withdrawal(msg.sender, value);
} }
} }

View File

@ -46,7 +46,7 @@ contract OutcomeToken is StandardToken {
{ {
balances[_for] = balances[_for].add(outcomeTokenCount); balances[_for] = balances[_for].add(outcomeTokenCount);
totalTokens = totalTokens.add(outcomeTokenCount); totalTokens = totalTokens.add(outcomeTokenCount);
Issuance(_for, outcomeTokenCount); emit Issuance(_for, outcomeTokenCount);
} }
/// @dev Events contract revokes tokens for address. Returns success /// @dev Events contract revokes tokens for address. Returns success
@ -58,6 +58,6 @@ contract OutcomeToken is StandardToken {
{ {
balances[_for] = balances[_for].sub(outcomeTokenCount); balances[_for] = balances[_for].sub(outcomeTokenCount);
totalTokens = totalTokens.sub(outcomeTokenCount); totalTokens = totalTokens.sub(outcomeTokenCount);
Revocation(_for, outcomeTokenCount); emit Revocation(_for, outcomeTokenCount);
} }
} }

View File

@ -30,7 +30,7 @@ contract StandardToken is Token {
return false; return false;
balances[msg.sender] -= value; balances[msg.sender] -= value;
balances[to] += value; balances[to] += value;
Transfer(msg.sender, to, value); emit Transfer(msg.sender, to, value);
return true; return true;
} }
@ -50,7 +50,7 @@ contract StandardToken is Token {
balances[from] -= value; balances[from] -= value;
allowances[from][msg.sender] -= value; allowances[from][msg.sender] -= value;
balances[to] += value; balances[to] += value;
Transfer(from, to, value); emit Transfer(from, to, value);
return true; return true;
} }
@ -63,7 +63,7 @@ contract StandardToken is Token {
returns (bool) returns (bool)
{ {
allowances[msg.sender][spender] = value; allowances[msg.sender][spender] = value;
Approval(msg.sender, spender, value); emit Approval(msg.sender, spender, value);
return true; return true;
} }

View File

@ -179,7 +179,7 @@ contract MilestoneTracker {
) onlyRecipient campaignNotCanceled { ) onlyRecipient campaignNotCanceled {
proposedMilestones = _newMilestones; proposedMilestones = _newMilestones;
changingMilestones = true; changingMilestones = true;
NewMilestoneListProposed(); emit NewMilestoneListProposed();
} }
@ -192,7 +192,7 @@ contract MilestoneTracker {
function unproposeMilestones() onlyRecipient campaignNotCanceled { function unproposeMilestones() onlyRecipient campaignNotCanceled {
delete proposedMilestones; delete proposedMilestones;
changingMilestones = false; changingMilestones = false;
NewMilestoneListUnproposed(); emit NewMilestoneListUnproposed();
} }
/// @notice `onlyDonor` Approves the proposed milestone list /// @notice `onlyDonor` Approves the proposed milestone list
@ -249,7 +249,7 @@ contract MilestoneTracker {
delete proposedMilestones; delete proposedMilestones;
changingMilestones = false; changingMilestones = false;
NewMilestoneListAccepted(); emit NewMilestoneListAccepted();
} }
/// @notice `onlyRecipientOrLeadLink`Marks a milestone as DONE and /// @notice `onlyRecipientOrLeadLink`Marks a milestone as DONE and
@ -268,7 +268,7 @@ contract MilestoneTracker {
if (now > milestone.maxCompletionDate) throw; if (now > milestone.maxCompletionDate) throw;
milestone.status = MilestoneStatus.Completed; milestone.status = MilestoneStatus.Completed;
milestone.doneTime = now; milestone.doneTime = now;
ProposalStatusChanged(_idMilestone, milestone.status); emit ProposalStatusChanged(_idMilestone, milestone.status);
} }
/// @notice `onlyReviewer` Approves a specific milestone /// @notice `onlyReviewer` Approves a specific milestone
@ -297,7 +297,7 @@ contract MilestoneTracker {
(milestone.status != MilestoneStatus.Completed)) throw; (milestone.status != MilestoneStatus.Completed)) throw;
milestone.status = MilestoneStatus.AcceptedAndInProgress; milestone.status = MilestoneStatus.AcceptedAndInProgress;
ProposalStatusChanged(_idMilestone, milestone.status); emit ProposalStatusChanged(_idMilestone, milestone.status);
} }
/// @notice `onlyRecipientOrLeadLink` Sends the milestone payment as /// @notice `onlyRecipientOrLeadLink` Sends the milestone payment as
@ -330,7 +330,7 @@ contract MilestoneTracker {
throw; throw;
milestone.status = MilestoneStatus.Canceled; milestone.status = MilestoneStatus.Canceled;
ProposalStatusChanged(_idMilestone, milestone.status); emit ProposalStatusChanged(_idMilestone, milestone.status);
} }
/// @notice `onlyArbitrator` Forces a milestone to be paid out as long as it /// @notice `onlyArbitrator` Forces a milestone to be paid out as long as it
@ -350,7 +350,7 @@ contract MilestoneTracker {
/// milestones. /// milestones.
function arbitrateCancelCampaign() onlyArbitrator campaignNotCanceled { function arbitrateCancelCampaign() onlyArbitrator campaignNotCanceled {
campaignCanceled = true; campaignCanceled = true;
CampaignCanceled(); emit CampaignCanceled();
} }
// @dev This internal function is executed when the milestone is paid out // @dev This internal function is executed when the milestone is paid out
@ -362,6 +362,6 @@ contract MilestoneTracker {
milestone.status = MilestoneStatus.AuthorizedForPayment; milestone.status = MilestoneStatus.AuthorizedForPayment;
if (!milestone.paymentSource.call.value(0)(milestone.payData)) if (!milestone.paymentSource.call.value(0)(milestone.payData))
throw; throw;
ProposalStatusChanged(_idMilestone, milestone.status); emit ProposalStatusChanged(_idMilestone, milestone.status);
} }
} }

View File

@ -32,7 +32,7 @@ contract Bounty is PullPayment, Destructible {
function createTarget() returns(Target) { function createTarget() returns(Target) {
Target target = Target(deployContract()); Target target = Target(deployContract());
researchers[target] = msg.sender; researchers[target] = msg.sender;
TargetCreated(target); emit TargetCreated(target);
return target; return target;
} }

View File

@ -42,7 +42,7 @@ contract MultisigWallet is Multisig, Shareable, DayLimit {
function() payable { function() payable {
// just being sent some cash? // just being sent some cash?
if (msg.value > 0) if (msg.value > 0)
Deposit(msg.sender, msg.value); emit Deposit(msg.sender, msg.value);
} }
/** /**
@ -58,7 +58,7 @@ contract MultisigWallet is Multisig, Shareable, DayLimit {
function execute(address _to, uint256 _value, bytes _data) external onlyOwner returns (bytes32 _r) { function execute(address _to, uint256 _value, bytes _data) external onlyOwner returns (bytes32 _r) {
// first, take the opportunity to check that we're under the daily limit. // first, take the opportunity to check that we're under the daily limit.
if (underLimit(_value)) { if (underLimit(_value)) {
SingleTransact(msg.sender, _value, _to, _data); emit SingleTransact(msg.sender, _value, _to, _data);
// yes - just execute the call. // yes - just execute the call.
if (!_to.call.value(_value)(_data)) { if (!_to.call.value(_value)(_data)) {
throw; throw;
@ -71,7 +71,7 @@ contract MultisigWallet is Multisig, Shareable, DayLimit {
txs[_r].to = _to; txs[_r].to = _to;
txs[_r].value = _value; txs[_r].value = _value;
txs[_r].data = _data; txs[_r].data = _data;
ConfirmationNeeded(_r, msg.sender, _value, _to, _data); emit ConfirmationNeeded(_r, msg.sender, _value, _to, _data);
} }
} }
@ -85,7 +85,7 @@ contract MultisigWallet is Multisig, Shareable, DayLimit {
if (!txs[_h].to.call.value(txs[_h].value)(txs[_h].data)) { if (!txs[_h].to.call.value(txs[_h].value)(txs[_h].data)) {
throw; throw;
} }
MultiTransact(msg.sender, _h, txs[_h].value, txs[_h].to, txs[_h].data); emit MultiTransact(msg.sender, _h, txs[_h].value, txs[_h].to, txs[_h].data);
delete txs[_h]; delete txs[_h];
return true; return true;
} }

View File

@ -80,7 +80,7 @@ contract Crowdsale {
weiRaised = updatedWeiRaised; weiRaised = updatedWeiRaised;
token.mint(beneficiary, tokens); token.mint(beneficiary, tokens);
TokenPurchase(msg.sender, beneficiary, weiAmount, tokens); emit TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);
forwardFunds(); forwardFunds();
} }

View File

@ -23,7 +23,7 @@ contract FinalizableCrowdsale is Crowdsale, Ownable {
require(hasEnded()); require(hasEnded());
finalization(); finalization();
Finalized(); emit Finalized();
isFinalized = true; isFinalized = true;
} }

View File

@ -36,14 +36,14 @@ contract RefundVault is Ownable {
function close() onlyOwner { function close() onlyOwner {
require(state == State.Active); require(state == State.Active);
state = State.Closed; state = State.Closed;
Closed(); emit Closed();
wallet.transfer(this.balance); wallet.transfer(this.balance);
} }
function enableRefunds() onlyOwner { function enableRefunds() onlyOwner {
require(state == State.Active); require(state == State.Active);
state = State.Refunding; state = State.Refunding;
RefundsEnabled(); emit RefundsEnabled();
} }
function refund(address investor) { function refund(address investor) {
@ -51,6 +51,6 @@ contract RefundVault is Ownable {
uint256 depositedValue = deposited[investor]; uint256 depositedValue = deposited[investor];
deposited[investor] = 0; deposited[investor] = 0;
investor.transfer(depositedValue); investor.transfer(depositedValue);
Refunded(investor, depositedValue); emit Refunded(investor, depositedValue);
} }
} }

View File

@ -36,7 +36,7 @@ contract Pausable is Ownable {
*/ */
function pause() onlyOwner whenNotPaused returns (bool) { function pause() onlyOwner whenNotPaused returns (bool) {
paused = true; paused = true;
Pause(); emit Pause();
return true; return true;
} }
@ -45,7 +45,7 @@ contract Pausable is Ownable {
*/ */
function unpause() onlyOwner whenPaused returns (bool) { function unpause() onlyOwner whenPaused returns (bool) {
paused = false; paused = false;
Unpause(); emit Unpause();
return true; return true;
} }
} }

View File

@ -87,7 +87,7 @@ contract Shareable {
if (pending.ownersDone & ownerIndexBit > 0) { if (pending.ownersDone & ownerIndexBit > 0) {
pending.yetNeeded++; pending.yetNeeded++;
pending.ownersDone -= ownerIndexBit; pending.ownersDone -= ownerIndexBit;
Revoke(msg.sender, _operation); emit Revoke(msg.sender, _operation);
} }
} }
@ -156,7 +156,7 @@ contract Shareable {
uint256 ownerIndexBit = 2**index; uint256 ownerIndexBit = 2**index;
// make sure we (the message sender) haven't confirmed this operation previously. // make sure we (the message sender) haven't confirmed this operation previously.
if (pending.ownersDone & ownerIndexBit == 0) { if (pending.ownersDone & ownerIndexBit == 0) {
Confirmation(msg.sender, _operation); emit Confirmation(msg.sender, _operation);
// ok - check if count is enough to go ahead. // ok - check if count is enough to go ahead.
if (pending.yetNeeded <= 1) { if (pending.yetNeeded <= 1) {
// enough confirmations: reset and run interior. // enough confirmations: reset and run interior.

View File

@ -22,7 +22,7 @@ contract BasicToken is ERC20Basic {
function transfer(address _to, uint256 _value) { function transfer(address _to, uint256 _value) {
balances[msg.sender] = balances[msg.sender].sub(_value); balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value); balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value); emit Transfer(msg.sender, _to, _value);
} }
/** /**

View File

@ -34,7 +34,7 @@ contract MintableToken is StandardToken, Ownable {
function mint(address _to, uint256 _amount) onlyOwner canMint returns (bool) { function mint(address _to, uint256 _amount) onlyOwner canMint returns (bool) {
totalSupply = totalSupply.add(_amount); totalSupply = totalSupply.add(_amount);
balances[_to] = balances[_to].add(_amount); balances[_to] = balances[_to].add(_amount);
Mint(_to, _amount); emit Mint(_to, _amount);
return true; return true;
} }
@ -44,7 +44,7 @@ contract MintableToken is StandardToken, Ownable {
*/ */
function finishMinting() onlyOwner returns (bool) { function finishMinting() onlyOwner returns (bool) {
mintingFinished = true; mintingFinished = true;
MintFinished(); emit MintFinished();
return true; return true;
} }
} }

View File

@ -32,7 +32,7 @@ contract StandardToken is ERC20, BasicToken {
balances[_to] = balances[_to].add(_value); balances[_to] = balances[_to].add(_value);
balances[_from] = balances[_from].sub(_value); balances[_from] = balances[_from].sub(_value);
allowed[_from][msg.sender] = _allowance.sub(_value); allowed[_from][msg.sender] = _allowance.sub(_value);
Transfer(_from, _to, _value); emit Transfer(_from, _to, _value);
} }
/** /**
@ -49,7 +49,7 @@ contract StandardToken is ERC20, BasicToken {
if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw; if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;
allowed[msg.sender][_spender] = _value; allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value); emit Approval(msg.sender, _spender, _value);
} }
/** /**

View File

@ -65,7 +65,7 @@ contract VestedToken is StandardToken, LimitedTransferToken {
transfer(_to, _value); transfer(_to, _value);
NewTokenGrant(msg.sender, _to, _value, count - 1); emit NewTokenGrant(msg.sender, _to, _value, count - 1);
} }
/** /**
@ -96,7 +96,7 @@ contract VestedToken is StandardToken, LimitedTransferToken {
balances[receiver] = balances[receiver].add(nonVested); balances[receiver] = balances[receiver].add(nonVested);
balances[_holder] = balances[_holder].sub(nonVested); balances[_holder] = balances[_holder].sub(nonVested);
Transfer(_holder, receiver, nonVested); emit Transfer(_holder, receiver, nonVested);
} }

View File

@ -70,7 +70,7 @@ contract AuctionSystem {
var auction = m_auctions[_name]; var auction = m_auctions[_name];
if (auction.endDate > 0 && now > auction.endDate) if (auction.endDate > 0 && now > auction.endDate)
{ {
AuctionEnded(_name, auction.highestBidder); emit AuctionEnded(_name, auction.highestBidder);
onAuctionEnd(_name); onAuctionEnd(_name);
delete m_auctions[_name]; delete m_auctions[_name];
return; return;
@ -84,7 +84,7 @@ contract AuctionSystem {
auction.highestBidder = _bidder; auction.highestBidder = _bidder;
auction.endDate = now + c_biddingTime; auction.endDate = now + c_biddingTime;
NewBid(_name, _bidder, _value); emit NewBid(_name, _bidder, _value);
} }
} }
@ -122,7 +122,7 @@ contract GlobalRegistrar is Registrar, AuctionSystem {
var previousOwner = record.owner; var previousOwner = record.owner;
record.renewalDate = now + c_renewalInterval; record.renewalDate = now + c_renewalInterval;
record.owner = auction.highestBidder; record.owner = auction.highestBidder;
Changed(_name); emit Changed(_name);
if (previousOwner != 0x0000000000000000000000000000000000000000) { if (previousOwner != 0x0000000000000000000000000000000000000000) {
if (!record.owner.send(auction.sumOfBids - auction.highestBid / 100)) if (!record.owner.send(auction.sumOfBids - auction.highestBid / 100))
throw; throw;
@ -146,7 +146,7 @@ contract GlobalRegistrar is Registrar, AuctionSystem {
if (record.owner != 0x0000000000000000000000000000000000000000) if (record.owner != 0x0000000000000000000000000000000000000000)
throw; throw;
m_toRecord[_name].owner = msg.sender; m_toRecord[_name].owner = msg.sender;
Changed(_name); emit Changed(_name);
} }
} }
@ -158,35 +158,35 @@ contract GlobalRegistrar is Registrar, AuctionSystem {
function transfer(string _name, address _newOwner) onlyrecordowner(_name) { function transfer(string _name, address _newOwner) onlyrecordowner(_name) {
m_toRecord[_name].owner = _newOwner; m_toRecord[_name].owner = _newOwner;
Changed(_name); emit Changed(_name);
} }
function disown(string _name) onlyrecordowner(_name) { function disown(string _name) onlyrecordowner(_name) {
if (stringsEqual(m_toName[m_toRecord[_name].primary], _name)) if (stringsEqual(m_toName[m_toRecord[_name].primary], _name))
{ {
PrimaryChanged(_name, m_toRecord[_name].primary); emit PrimaryChanged(_name, m_toRecord[_name].primary);
m_toName[m_toRecord[_name].primary] = ""; m_toName[m_toRecord[_name].primary] = "";
} }
delete m_toRecord[_name]; delete m_toRecord[_name];
Changed(_name); emit Changed(_name);
} }
function setAddress(string _name, address _a, bool _primary) onlyrecordowner(_name) { function setAddress(string _name, address _a, bool _primary) onlyrecordowner(_name) {
m_toRecord[_name].primary = _a; m_toRecord[_name].primary = _a;
if (_primary) if (_primary)
{ {
PrimaryChanged(_name, _a); emit PrimaryChanged(_name, _a);
m_toName[_a] = _name; m_toName[_a] = _name;
} }
Changed(_name); emit Changed(_name);
} }
function setSubRegistrar(string _name, address _registrar) onlyrecordowner(_name) { function setSubRegistrar(string _name, address _registrar) onlyrecordowner(_name) {
m_toRecord[_name].subRegistrar = _registrar; m_toRecord[_name].subRegistrar = _registrar;
Changed(_name); emit Changed(_name);
} }
function setContent(string _name, bytes32 _content) onlyrecordowner(_name) { function setContent(string _name, bytes32 _content) onlyrecordowner(_name) {
m_toRecord[_name].content = _content; m_toRecord[_name].content = _content;
Changed(_name); emit Changed(_name);
} }
function stringsEqual(string storage _a, string memory _b) internal returns (bool) { function stringsEqual(string storage _a, string memory _b) internal returns (bool) {

View File

@ -78,30 +78,30 @@ contract FixedFeeRegistrar is Registrar {
Record rec = m_record(_name); Record rec = m_record(_name);
if (rec.owner == 0x0000000000000000000000000000000000000000 && msg.value >= c_fee) { if (rec.owner == 0x0000000000000000000000000000000000000000 && msg.value >= c_fee) {
rec.owner = msg.sender; rec.owner = msg.sender;
Changed(_name); emit Changed(_name);
} }
} }
function disown(string _name, address _refund) onlyrecordowner(_name) { function disown(string _name, address _refund) onlyrecordowner(_name) {
delete m_recordData[uint(keccak256(_name)) / 8]; delete m_recordData[uint(keccak256(_name)) / 8];
if (!_refund.send(c_fee)) if (!_refund.send(c_fee))
throw; throw;
Changed(_name); emit Changed(_name);
} }
function transfer(string _name, address _newOwner) onlyrecordowner(_name) { function transfer(string _name, address _newOwner) onlyrecordowner(_name) {
m_record(_name).owner = _newOwner; m_record(_name).owner = _newOwner;
Changed(_name); emit Changed(_name);
} }
function setAddr(string _name, address _a) onlyrecordowner(_name) { function setAddr(string _name, address _a) onlyrecordowner(_name) {
m_record(_name).addr = _a; m_record(_name).addr = _a;
Changed(_name); emit Changed(_name);
} }
function setSubRegistrar(string _name, address _registrar) onlyrecordowner(_name) { function setSubRegistrar(string _name, address _registrar) onlyrecordowner(_name) {
m_record(_name).subRegistrar = _registrar; m_record(_name).subRegistrar = _registrar;
Changed(_name); emit Changed(_name);
} }
function setContent(string _name, bytes32 _content) onlyrecordowner(_name) { function setContent(string _name, bytes32 _content) onlyrecordowner(_name) {
m_record(_name).content = _content; m_record(_name).content = _content;
Changed(_name); emit Changed(_name);
} }
function record(string _name) constant returns (address o_addr, address o_subRegistrar, bytes32 o_content, address o_owner) { function record(string _name) constant returns (address o_addr, address o_subRegistrar, bytes32 o_content, address o_owner) {

View File

@ -123,7 +123,7 @@ contract multiowned {
if (pending.ownersDone & ownerIndexBit > 0) { if (pending.ownersDone & ownerIndexBit > 0) {
pending.yetNeeded++; pending.yetNeeded++;
pending.ownersDone -= ownerIndexBit; pending.ownersDone -= ownerIndexBit;
Revoke(msg.sender, _operation); emit Revoke(msg.sender, _operation);
} }
} }
@ -137,7 +137,7 @@ contract multiowned {
m_owners[ownerIndex] = uint(_to); m_owners[ownerIndex] = uint(_to);
m_ownerIndex[uint(_from)] = 0; m_ownerIndex[uint(_from)] = 0;
m_ownerIndex[uint(_to)] = ownerIndex; m_ownerIndex[uint(_to)] = ownerIndex;
OwnerChanged(_from, _to); emit OwnerChanged(_from, _to);
} }
function addOwner(address _owner) onlymanyowners(keccak256(msg.data)) external { function addOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {
@ -151,7 +151,7 @@ contract multiowned {
m_numOwners++; m_numOwners++;
m_owners[m_numOwners] = uint(_owner); m_owners[m_numOwners] = uint(_owner);
m_ownerIndex[uint(_owner)] = m_numOwners; m_ownerIndex[uint(_owner)] = m_numOwners;
OwnerAdded(_owner); emit OwnerAdded(_owner);
} }
function removeOwner(address _owner) onlymanyowners(keccak256(msg.data)) external { function removeOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {
@ -163,14 +163,14 @@ contract multiowned {
m_ownerIndex[uint(_owner)] = 0; m_ownerIndex[uint(_owner)] = 0;
clearPending(); clearPending();
reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot
OwnerRemoved(_owner); emit OwnerRemoved(_owner);
} }
function changeRequirement(uint _newRequired) onlymanyowners(keccak256(msg.data)) external { function changeRequirement(uint _newRequired) onlymanyowners(keccak256(msg.data)) external {
if (_newRequired > m_numOwners) return; if (_newRequired > m_numOwners) return;
m_required = _newRequired; m_required = _newRequired;
clearPending(); clearPending();
RequirementChanged(_newRequired); emit RequirementChanged(_newRequired);
} }
function isOwner(address _addr) returns (bool) { function isOwner(address _addr) returns (bool) {
@ -215,7 +215,7 @@ contract multiowned {
uint ownerIndexBit = 2**ownerIndex; uint ownerIndexBit = 2**ownerIndex;
// make sure we (the message sender) haven't confirmed this operation previously. // make sure we (the message sender) haven't confirmed this operation previously.
if (pending.ownersDone & ownerIndexBit == 0) { if (pending.ownersDone & ownerIndexBit == 0) {
Confirmation(msg.sender, _operation); emit Confirmation(msg.sender, _operation);
// ok - check if count is enough to go ahead. // ok - check if count is enough to go ahead.
if (pending.yetNeeded <= 1) { if (pending.yetNeeded <= 1) {
// enough confirmations: reset and run interior. // enough confirmations: reset and run interior.
@ -382,7 +382,7 @@ contract Wallet is multisig, multiowned, daylimit {
function() payable { function() payable {
// just being sent some cash? // just being sent some cash?
if (msg.value > 0) if (msg.value > 0)
Deposit(msg.sender, msg.value); emit Deposit(msg.sender, msg.value);
} }
// Outside-visible transact entry point. Executes transacion immediately if below daily spend limit. // Outside-visible transact entry point. Executes transacion immediately if below daily spend limit.
@ -392,7 +392,7 @@ contract Wallet is multisig, multiowned, daylimit {
function execute(address _to, uint _value, bytes _data) external onlyowner returns (bytes32 _r) { function execute(address _to, uint _value, bytes _data) external onlyowner returns (bytes32 _r) {
// first, take the opportunity to check that we're under the daily limit. // first, take the opportunity to check that we're under the daily limit.
if (underLimit(_value)) { if (underLimit(_value)) {
SingleTransact(msg.sender, _value, _to, _data); emit SingleTransact(msg.sender, _value, _to, _data);
// yes - just execute the call. // yes - just execute the call.
_to.call.value(_value)(_data); _to.call.value(_value)(_data);
return 0; return 0;
@ -403,7 +403,7 @@ contract Wallet is multisig, multiowned, daylimit {
m_txs[_r].to = _to; m_txs[_r].to = _to;
m_txs[_r].value = _value; m_txs[_r].value = _value;
m_txs[_r].data = _data; m_txs[_r].data = _data;
ConfirmationNeeded(_r, msg.sender, _value, _to, _data); emit ConfirmationNeeded(_r, msg.sender, _value, _to, _data);
} }
} }
@ -412,7 +412,7 @@ contract Wallet is multisig, multiowned, daylimit {
function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) { function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
if (m_txs[_h].to != 0x0000000000000000000000000000000000000000) { if (m_txs[_h].to != 0x0000000000000000000000000000000000000000) {
m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data); m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data); emit MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data);
delete m_txs[_h]; delete m_txs[_h];
return true; return true;
} }

View File

@ -68,7 +68,7 @@ BOOST_AUTO_TEST_CASE(value_types)
assembly { b := 7 } assembly { b := 7 }
C c; C c;
assembly { c := sub(0, 5) } assembly { c := sub(0, 5) }
E(10, uint16(uint256(-2)), uint24(0x12121212), int24(int256(-1)), bytes3(x), b, c); emit E(10, uint16(uint256(-2)), uint24(0x12121212), int24(int256(-1)), bytes3(x), b, c);
} }
} }
)"; )";
@ -87,7 +87,7 @@ BOOST_AUTO_TEST_CASE(string_literal)
contract C { contract C {
event E(string, bytes20, string); event E(string, bytes20, string);
function f() public { function f() public {
E("abcdef", "abcde", "abcdefabcdefgehabcabcasdfjklabcdefabcedefghabcabcasdfjklabcdefabcdefghabcabcasdfjklabcdeefabcdefghabcabcasdefjklabcdefabcdefghabcabcasdfjkl"); emit E("abcdef", "abcde", "abcdefabcdefgehabcabcasdfjklabcdefabcedefghabcabcasdfjklabcdefabcdefghabcabcasdfjklabcdeefabcdefghabcabcasdefjklabcdefabcdefghabcabcasdfjkl");
} }
} }
)"; )";
@ -133,7 +133,7 @@ BOOST_AUTO_TEST_CASE(conversion)
int8 c; int8 c;
int16 d; int16 d;
assembly { a := sub(0, 1) c := 0x0101ff d := 0xff01 } assembly { a := sub(0, 1) c := 0x0101ff d := 0xff01 }
E(10, x, a, uint8(b), c, int8(d)); emit E(10, x, a, uint8(b), c, int8(d));
} }
} }
)"; )";
@ -159,7 +159,7 @@ BOOST_AUTO_TEST_CASE(memory_array_one_dim)
mstore(add(x, mul(add(i, 1), 0x20)), add(0xfffffffe, i)) mstore(add(x, mul(add(i, 1), 0x20)), add(0xfffffffe, i))
} }
} }
E(10, x, 11); emit E(10, x, 11);
} }
} }
)"; )";
@ -188,7 +188,7 @@ BOOST_AUTO_TEST_CASE(memory_array_two_dim)
x[0][2] = -1; x[0][2] = -1;
x[1][0] = 4; x[1][0] = 4;
x[1][1] = 5; x[1][1] = 5;
E(10, x, 11); emit E(10, x, 11);
} }
} }
)"; )";
@ -208,7 +208,7 @@ BOOST_AUTO_TEST_CASE(memory_byte_array)
bytes[] memory x = new bytes[](2); bytes[] memory x = new bytes[](2);
x[0] = "abcabcdefghjklmnopqrsuvwabcdefgijklmnopqrstuwabcdefgijklmnoprstuvw"; x[0] = "abcabcdefghjklmnopqrsuvwabcdefgijklmnopqrstuwabcdefgijklmnoprstuvw";
x[1] = "abcdefghijklmnopqrtuvwabcfghijklmnopqstuvwabcdeghijklmopqrstuvw"; x[1] = "abcdefghijklmnopqrtuvwabcfghijklmnopqstuvwabcdeghijklmopqrstuvw";
E(10, x, 11); emit E(10, x, 11);
} }
} }
)"; )";
@ -234,7 +234,7 @@ BOOST_AUTO_TEST_CASE(storage_byte_array)
function f() public { function f() public {
short = "123456789012345678901234567890a"; short = "123456789012345678901234567890a";
long = "ffff123456789012345678901234567890afffffffff123456789012345678901234567890a"; long = "ffff123456789012345678901234567890afffffffff123456789012345678901234567890a";
E(short, long); emit E(short, long);
} }
} }
)"; )";
@ -261,7 +261,7 @@ BOOST_AUTO_TEST_CASE(storage_array)
sstore(1, sub(0, 2)) sstore(1, sub(0, 2))
sstore(2, sub(0, 3)) sstore(2, sub(0, 3))
} }
E(addr); emit E(addr);
} }
} }
)"; )";
@ -282,7 +282,7 @@ BOOST_AUTO_TEST_CASE(storage_array_dyn)
addr.push(0x0000000000000000000000000000000000000001); addr.push(0x0000000000000000000000000000000000000001);
addr.push(0x0000000000000000000000000000000000000002); addr.push(0x0000000000000000000000000000000000000002);
addr.push(0x0000000000000000000000000000000000000003); addr.push(0x0000000000000000000000000000000000000003);
E(addr); emit E(addr);
} }
} }
)"; )";
@ -308,7 +308,7 @@ BOOST_AUTO_TEST_CASE(storage_array_compact)
x.push(6); x.push(6);
x.push(-7); x.push(-7);
x.push(8); x.push(8);
E(x); emit E(x);
} }
} }
)"; )";
@ -329,7 +329,7 @@ BOOST_AUTO_TEST_CASE(external_function)
function(uint) external returns (uint) g; function(uint) external returns (uint) g;
function f(uint) public returns (uint) { function f(uint) public returns (uint) {
g = this.f; g = this.f;
E(this.f, g); emit E(this.f, g);
} }
} }
)"; )";
@ -351,7 +351,7 @@ BOOST_AUTO_TEST_CASE(external_function_cleanup)
function f(uint) public returns (uint) { function f(uint) public returns (uint) {
function(uint) external returns (uint)[1] memory h; function(uint) external returns (uint)[1] memory h;
assembly { sstore(0, sub(0, 1)) mstore(h, sub(0, 1)) } assembly { sstore(0, sub(0, 1)) mstore(h, sub(0, 1)) }
E(h[0], g); emit E(h[0], g);
} }
} }
)"; )";
@ -368,7 +368,7 @@ BOOST_AUTO_TEST_CASE(calldata)
contract C { contract C {
event E(bytes); event E(bytes);
function f(bytes a) external { function f(bytes a) external {
E(a); emit E(a);
} }
} }
)"; )";
@ -426,7 +426,7 @@ BOOST_AUTO_TEST_CASE(structs)
s.sub[0].x[0] = 11; s.sub[0].x[0] = 11;
s.sub[1].x[0] = 12; s.sub[1].x[0] = 12;
s.sub[2].x[1] = 13; s.sub[2].x[1] = 13;
e(x, s); emit e(x, s);
return (x, s); return (x, s);
} }
} }

View File

@ -3122,7 +3122,7 @@ BOOST_AUTO_TEST_CASE(event)
bytes32 s = 0x19dacbf83c5de6658e14cbf7bcae5c15eca2eedecf1c66fbca928e4d351bea0f; bytes32 s = 0x19dacbf83c5de6658e14cbf7bcae5c15eca2eedecf1c66fbca928e4d351bea0f;
log3(bytes32(msg.value), s, bytes32(uint256(msg.sender)), _id); log3(bytes32(msg.value), s, bytes32(uint256(msg.sender)), _id);
} else { } else {
Deposit(msg.sender, _id, msg.value); emit Deposit(msg.sender, _id, msg.value);
} }
} }
} }
@ -3172,7 +3172,7 @@ BOOST_AUTO_TEST_CASE(event_no_arguments)
contract ClientReceipt { contract ClientReceipt {
event Deposit(); event Deposit();
function deposit() { function deposit() {
Deposit(); emit Deposit();
} }
} }
)"; )";
@ -3186,28 +3186,6 @@ BOOST_AUTO_TEST_CASE(event_no_arguments)
BOOST_CHECK_EQUAL(m_logs[0].topics[0], dev::keccak256(string("Deposit()"))); BOOST_CHECK_EQUAL(m_logs[0].topics[0], dev::keccak256(string("Deposit()")));
} }
BOOST_AUTO_TEST_CASE(event_access_through_base_name)
{
char const* sourceCode = R"(
contract A {
event x();
}
contract B is A {
function f() returns (uint) {
A.x();
return 1;
}
}
)";
compileAndRun(sourceCode);
callContractFunction("f()");
BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK(m_logs[0].data.empty());
BOOST_REQUIRE_EQUAL(m_logs[0].topics.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].topics[0], dev::keccak256(string("x()")));
}
BOOST_AUTO_TEST_CASE(event_access_through_base_name_emit) BOOST_AUTO_TEST_CASE(event_access_through_base_name_emit)
{ {
char const* sourceCode = R"( char const* sourceCode = R"(
@ -3238,67 +3216,15 @@ BOOST_AUTO_TEST_CASE(events_with_same_name)
event Deposit(address _addr); event Deposit(address _addr);
event Deposit(address _addr, uint _amount); event Deposit(address _addr, uint _amount);
function deposit() returns (uint) { function deposit() returns (uint) {
Deposit(); emit Deposit();
return 1; return 1;
} }
function deposit(address _addr) returns (uint) { function deposit(address _addr) returns (uint) {
Deposit(_addr); emit Deposit(_addr);
return 1; return 1;
} }
function deposit(address _addr, uint _amount) returns (uint) { function deposit(address _addr, uint _amount) returns (uint) {
Deposit(_addr, _amount); emit Deposit(_addr, _amount);
return 1;
}
}
)";
u160 const c_loggedAddress = m_contractAddress;
compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("deposit()"), encodeArgs(u256(1)));
BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK(m_logs[0].data.empty());
BOOST_REQUIRE_EQUAL(m_logs[0].topics.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].topics[0], dev::keccak256(string("Deposit()")));
ABI_CHECK(callContractFunction("deposit(address)", c_loggedAddress), encodeArgs(u256(1)));
BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK(m_logs[0].data == encodeArgs(c_loggedAddress));
BOOST_REQUIRE_EQUAL(m_logs[0].topics.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].topics[0], dev::keccak256(string("Deposit(address)")));
ABI_CHECK(callContractFunction("deposit(address,uint256)", c_loggedAddress, u256(100)), encodeArgs(u256(1)));
BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK(m_logs[0].data == encodeArgs(c_loggedAddress, 100));
BOOST_REQUIRE_EQUAL(m_logs[0].topics.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].topics[0], dev::keccak256(string("Deposit(address,uint256)")));
}
BOOST_AUTO_TEST_CASE(events_with_same_name_inherited)
{
char const* sourceCode = R"(
contract A {
event Deposit();
}
contract B {
event Deposit(address _addr);
}
contract ClientReceipt is A, B {
event Deposit(address _addr, uint _amount);
function deposit() returns (uint) {
Deposit();
return 1;
}
function deposit(address _addr) returns (uint) {
Deposit(_addr);
return 1;
}
function deposit(address _addr, uint _amount) returns (uint) {
Deposit(_addr, _amount);
return 1; return 1;
} }
} }
@ -3386,7 +3312,7 @@ BOOST_AUTO_TEST_CASE(event_anonymous)
contract ClientReceipt { contract ClientReceipt {
event Deposit() anonymous; event Deposit() anonymous;
function deposit() { function deposit() {
Deposit(); emit Deposit();
} }
} }
)"; )";
@ -3401,7 +3327,7 @@ BOOST_AUTO_TEST_CASE(event_anonymous_with_topics)
contract ClientReceipt { contract ClientReceipt {
event Deposit(address indexed _from, bytes32 indexed _id, uint indexed _value, uint indexed _value2, bytes32 data) anonymous; event Deposit(address indexed _from, bytes32 indexed _id, uint indexed _value, uint indexed _value2, bytes32 data) anonymous;
function deposit(bytes32 _id) payable { function deposit(bytes32 _id) payable {
Deposit(msg.sender, _id, msg.value, 2, "abc"); emit Deposit(msg.sender, _id, msg.value, 2, "abc");
} }
} }
)"; )";
@ -3425,7 +3351,7 @@ BOOST_AUTO_TEST_CASE(event_lots_of_data)
contract ClientReceipt { contract ClientReceipt {
event Deposit(address _from, bytes32 _id, uint _value, bool _flag); event Deposit(address _from, bytes32 _id, uint _value, bool _flag);
function deposit(bytes32 _id) payable { function deposit(bytes32 _id) payable {
Deposit(msg.sender, _id, msg.value, true); emit Deposit(msg.sender, _id, msg.value, true);
} }
} }
)"; )";
@ -3446,7 +3372,7 @@ BOOST_AUTO_TEST_CASE(event_really_lots_of_data)
contract ClientReceipt { contract ClientReceipt {
event Deposit(uint fixeda, bytes dynx, uint fixedb); event Deposit(uint fixeda, bytes dynx, uint fixedb);
function deposit() { function deposit() {
Deposit(10, msg.data, 15); emit Deposit(10, msg.data, 15);
} }
} }
)"; )";
@ -3470,7 +3396,7 @@ BOOST_AUTO_TEST_CASE(event_really_lots_of_data_from_storage)
x[0] = "A"; x[0] = "A";
x[1] = "B"; x[1] = "B";
x[2] = "C"; x[2] = "C";
Deposit(10, x, 15); emit Deposit(10, x, 15);
} }
} }
)"; )";
@ -3495,7 +3421,7 @@ BOOST_AUTO_TEST_CASE(event_really_really_lots_of_data_from_storage)
x[1] = "B"; x[1] = "B";
x[2] = "C"; x[2] = "C";
x[30] = "Z"; x[30] = "Z";
Deposit(10, x, 15); emit Deposit(10, x, 15);
} }
} }
)"; )";
@ -3523,7 +3449,7 @@ BOOST_AUTO_TEST_CASE(event_indexed_string)
y[1] = 5; y[1] = 5;
y[2] = 6; y[2] = 6;
y[3] = 7; y[3] = 7;
E(x, y); emit E(x, y);
} }
} }
)"; )";
@ -4246,7 +4172,7 @@ BOOST_AUTO_TEST_CASE(storing_invalid_boolean)
assembly { assembly {
tmp := 5 tmp := 5
} }
Ev(tmp); emit Ev(tmp);
return 1; return 1;
} }
} }
@ -6034,12 +5960,12 @@ BOOST_AUTO_TEST_CASE(invalid_enum_logged)
assembly { assembly {
garbled := 5 garbled := 5
} }
Log(garbled); emit Log(garbled);
return 1; return 1;
} }
function test_log_ok() returns (uint) { function test_log_ok() returns (uint) {
X x = X.A; X x = X.A;
Log(x); emit Log(x);
return 1; return 1;
} }
} }
@ -11932,7 +11858,7 @@ BOOST_AUTO_TEST_CASE(snark)
input[7] = 9643208548031422463313148630985736896287522941726746581856185889848792022807; input[7] = 9643208548031422463313148630985736896287522941726746581856185889848792022807;
input[8] = 18066496933330839731877828156604; input[8] = 18066496933330839731877828156604;
if (verify(input, proof) == 0) { if (verify(input, proof) == 0) {
Verified("Transaction successfully verified."); emit Verified("Transaction successfully verified.");
return true; return true;
} else { } else {
return false; return false;

View File

@ -1,6 +1,5 @@
contract c { contract c {
event e(uint indexed a, bytes3 indexed s, bool indexed b); event e(uint indexed a, bytes3 indexed s, bool indexed b);
function f() public { e(2, "abc", true); } function f() public { emit e(2, "abc", true); }
} }
// ---- // ----
// Warning: (102-119): Invoking events without "emit" prefix is deprecated.

View File

@ -1,6 +1,5 @@
contract c { contract c {
event e(uint a, bytes3 indexed s, bool indexed b); event e(uint a, bytes3 indexed s, bool indexed b);
function f() public { e(2, "abc", true); } function f() public { emit e(2, "abc", true); }
} }
// ---- // ----
// Warning: (94-111): Invoking events without "emit" prefix is deprecated.

View File

@ -2,7 +2,6 @@ contract base {
event e(uint a, bytes3 indexed s, bool indexed b); event e(uint a, bytes3 indexed s, bool indexed b);
} }
contract c is base { contract c is base {
function f() public { e(2, "abc", true); } function f() public { emit e(2, "abc", true); }
} }
// ---- // ----
// Warning: (120-137): Invoking events without "emit" prefix is deprecated.

View File

@ -5,4 +5,4 @@ contract C {
} }
} }
// ---- // ----
// Warning: (62-65): Invoking events without "emit" prefix is deprecated. // TypeError: (62-65): Event invocations have to be prefixed by "emit".

View File

@ -2,9 +2,8 @@ pragma solidity ^0.4.3;
contract C { contract C {
event SomeEvent(); event SomeEvent();
function a() public { function a() public {
(SomeEvent(), 7); (emit SomeEvent(), 7);
} }
} }
// ---- // ----
// Warning: (95-106): Invoking events without "emit" prefix is deprecated. // ParserError: (95-99): Expected primary expression.
// Warning: (95-106): Tuple component cannot be empty.

View File

@ -1,10 +0,0 @@
pragma experimental "v0.5.0";
contract C {
event SomeEvent();
function a() public {
(SomeEvent(), 7);
}
}
// ----
// TypeError: (101-112): Event invocations have to be prefixed by "emit".
// TypeError: (101-112): Tuple component cannot be empty.