From b31cc71ff6415a02864482980d08f5998cd5e086 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 10 Nov 2017 04:19:51 -0500 Subject: contracts/chequebook: update for latest Solidity (#15425) This changes behaviour: before if the owner/amount didn't match, it resulted in a successful execution without doing anything; now it results in a failed execution using the revert opcode (remainder gas is not consumed). --- contracts/chequebook/contract/chequebook.sol | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'contracts') diff --git a/contracts/chequebook/contract/chequebook.sol b/contracts/chequebook/contract/chequebook.sol index 845ba464b..8d6e85d11 100644 --- a/contracts/chequebook/contract/chequebook.sol +++ b/contracts/chequebook/contract/chequebook.sol @@ -1,7 +1,9 @@ -import "mortal"; +pragma solidity ^0.4.18; + +import "https://github.com/ethereum/solidity/std/mortal.sol"; /// @title Chequebook for Ethereum micropayments -/// @author Daniel A. Nagy +/// @author Daniel A. Nagy contract chequebook is mortal { // Cumulative paid amount in wei to each beneficiary mapping (address => uint256) public sent; @@ -21,26 +23,23 @@ contract chequebook is mortal { uint8 sig_v, bytes32 sig_r, bytes32 sig_s) { // Check if the cheque is old. // Only cheques that are more recent than the last cashed one are considered. - if(amount <= sent[beneficiary]) return; + require(amount > sent[beneficiary]); // Check the digital signature of the cheque. - bytes32 hash = sha3(address(this), beneficiary, amount); - if(owner != ecrecover(hash, sig_v, sig_r, sig_s)) return; + bytes32 hash = keccak256(address(this), beneficiary, amount); + require(owner == ecrecover(hash, sig_v, sig_r, sig_s)); // Attempt sending the difference between the cumulative amount on the cheque // and the cumulative amount on the last cashed cheque to beneficiary. uint256 diff = amount - sent[beneficiary]; if (diff <= this.balance) { // update the cumulative amount before sending sent[beneficiary] = amount; - if (!beneficiary.send(diff)) { - // Upon failure to execute send, revert everything - throw; - } + beneficiary.transfer(diff); } else { // Upon failure, punish owner for writing a bounced cheque. // owner.sendToDebtorsPrison(); Overdraft(owner); // Compensate beneficiary. - suicide(beneficiary); + selfdestruct(beneficiary); } } } -- cgit v1.2.3 From 9ff9d04a6906cdb941f6797e63b9da7536316b64 Mon Sep 17 00:00:00 2001 From: Ricardo Domingos Date: Fri, 24 Nov 2017 10:20:01 +0100 Subject: all: fix code comment typos (#15547) * console: fix typo in comment * contracts/release: fix typo in comment * core: fix typo in comment * eth: fix typo in comment * miner: fix typo in comment --- contracts/release/contract.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'contracts') diff --git a/contracts/release/contract.sol b/contracts/release/contract.sol index 554cf7290..b9d94c756 100644 --- a/contracts/release/contract.sol +++ b/contracts/release/contract.sol @@ -77,7 +77,7 @@ contract ReleaseOracle { } } - // signers is an accessor method to retrieve all te signers (public accessor + // signers is an accessor method to retrieve all the signers (public accessor // generates an indexed one, not a retrieve-all version). function signers() constant returns(address[]) { return voters; -- cgit v1.2.3