diff --git a/CHANGELOG.md b/CHANGELOG.md index 868a253..059b675 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [unreleased] ### Changed - - Using new [Signature Validator](https://github.com/DexyProject/SignatureValidator) package. + - Solidity version 0.4.23 + - Using new [Signature Validator](https://github.com/DexyProject/SignatureValidator) package. ## [2.1.0] - 2018-04-26 diff --git a/contracts/Exchange.sol b/contracts/Exchange.sol index 707bf5c..80f1610 100644 --- a/contracts/Exchange.sol +++ b/contracts/Exchange.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; import "./ExchangeInterface.sol"; import "./Libraries/OrderLibrary.sol"; @@ -17,7 +17,7 @@ contract Exchange is Ownable, ExchangeInterface { ExchangeLibrary.Exchange public exchange; - function Exchange(uint _takerFee, address _feeAccount, VaultInterface _vault) public { + constructor(uint _takerFee, address _feeAccount, VaultInterface _vault) public { require(address(_vault) != 0x0); setFees(_takerFee); setFeeAccount(_feeAccount); diff --git a/contracts/ExchangeInterface.sol b/contracts/ExchangeInterface.sol index 976dff8..1347316 100644 --- a/contracts/ExchangeInterface.sol +++ b/contracts/ExchangeInterface.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; import "./Vault/VaultInterface.sol"; diff --git a/contracts/HookSubscriber.sol b/contracts/HookSubscriber.sol index 53a9444..6a3bf91 100644 --- a/contracts/HookSubscriber.sol +++ b/contracts/HookSubscriber.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; interface HookSubscriber { diff --git a/contracts/Libraries/ExchangeLibrary.sol b/contracts/Libraries/ExchangeLibrary.sol index ac60775..a24c4db 100644 --- a/contracts/Libraries/ExchangeLibrary.sol +++ b/contracts/Libraries/ExchangeLibrary.sol @@ -2,9 +2,9 @@ pragma solidity ^0.4.23; import "./OrderLibrary.sol"; import "./SafeMath.sol"; -import "@dexyproject/signature-validator/contracts/SignatureValidator.sol"; import "./../Vault/VaultInterface.sol"; import "./../HookSubscriber.sol"; +import "@dexyproject/signature-validator/contracts/SignatureValidator.sol"; library ExchangeLibrary { diff --git a/contracts/Libraries/OrderLibrary.sol b/contracts/Libraries/OrderLibrary.sol index 4650a9c..9b583f5 100644 --- a/contracts/Libraries/OrderLibrary.sol +++ b/contracts/Libraries/OrderLibrary.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; library OrderLibrary { diff --git a/contracts/Libraries/SafeMath.sol b/contracts/Libraries/SafeMath.sol index 9f46269..8dcd439 100644 --- a/contracts/Libraries/SafeMath.sol +++ b/contracts/Libraries/SafeMath.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; library SafeMath { diff --git a/contracts/Ownership/Ownable.sol b/contracts/Ownership/Ownable.sol index 38df788..2bfadba 100644 --- a/contracts/Ownership/Ownable.sol +++ b/contracts/Ownership/Ownable.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; contract Ownable { @@ -9,7 +9,7 @@ contract Ownable { _; } - function Ownable() public { + constructor() public { owner = msg.sender; } diff --git a/contracts/Tokens/ERC20.sol b/contracts/Tokens/ERC20.sol index 4d31858..26edf70 100644 --- a/contracts/Tokens/ERC20.sol +++ b/contracts/Tokens/ERC20.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; interface ERC20 { diff --git a/contracts/Tokens/ERC777.sol b/contracts/Tokens/ERC777.sol index d72e585..2df3c7f 100644 --- a/contracts/Tokens/ERC777.sol +++ b/contracts/Tokens/ERC777.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; interface ERC777 { function name() public constant returns (string); diff --git a/contracts/Vault/Vault.sol b/contracts/Vault/Vault.sol index 39047c3..bdb6e10 100644 --- a/contracts/Vault/Vault.sol +++ b/contracts/Vault/Vault.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; import "./VaultInterface.sol"; import "../Interfaces/ERC820.sol"; @@ -11,6 +11,11 @@ contract Vault is Ownable, VaultInterface { using SafeMath for *; + string constant public NOT_SPENDER_ERROR = "NOT_SPENDER_ERROR"; + string constant public NOT_APPROVED_ERROR = "NOT_APPROVED_ERROR"; + string constant public ERC20_TRANSFER_FAILED = "ERC20_TRANSFER_FAILED"; + string constant public INSUFFICIENT_BALANCE_ERROR = "INSUFFICIENT_BALANCE_ERROR"; + address constant public ETH = 0x0; mapping (address => bool) public isERC777; @@ -24,16 +29,16 @@ contract Vault is Ownable, VaultInterface { address private latest; modifier onlySpender { - require(spenders[msg.sender]); + require(spenders[msg.sender], NOT_SPENDER_ERROR); _; } modifier onlyApproved(address user) { - require(approved[user][msg.sender]); + require(approved[user][msg.sender], NOT_APPROVED_ERROR); _; } - function Vault(ERC820 registry) public { + constructor(ERC820 registry) public { // required by ERC777 standard. registry.setInterfaceImplementer(address(this), keccak256("ERC777TokensRecipient"), address(this)); } @@ -48,7 +53,7 @@ contract Vault is Ownable, VaultInterface { if (token == ETH) { value = msg.value; } else { - require(ERC20(token).transferFrom(msg.sender, address(this), value)); + require(ERC20(token).transferFrom(msg.sender, address(this), value), ERC20_TRANSFER_FAILED); } depositFor(msg.sender, token, value); @@ -58,7 +63,7 @@ contract Vault is Ownable, VaultInterface { /// @param token Address of the token to withdraw. /// @param amount Amount of tokens to withdraw. function withdraw(address token, uint amount) external { - require(balanceOf(token, msg.sender) >= amount); + require(balanceOf(token, msg.sender) >= amount, INSUFFICIENT_BALANCE_ERROR); balances[token][msg.sender] = balances[token][msg.sender].sub(amount); accounted[token] = accounted[token].sub(amount); @@ -204,6 +209,6 @@ contract Vault is Ownable, VaultInterface { return; } - require(ERC20(token).transfer(user, amount)); + require(ERC20(token).transfer(user, amount), ERC20_TRANSFER_FAILED); } } diff --git a/contracts/Vault/VaultInterface.sol b/contracts/Vault/VaultInterface.sol index 529f1c1..dcb1777 100644 --- a/contracts/Vault/VaultInterface.sol +++ b/contracts/Vault/VaultInterface.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.21; +pragma solidity ^0.4.23; interface VaultInterface {