From b66d7b047568685030a76b299129f6b424b66809 Mon Sep 17 00:00:00 2001 From: nkmr-jp Date: Mon, 8 Jun 2020 08:39:08 +0900 Subject: [PATCH 1/2] fix examples/linking-contracts refs: https://docs.openzeppelin.com/cli/2.8/dependencies --- examples/linking-contracts/.gitignore | 3 + .../.openzeppelin/project.json | 27 ++++--- .../contracts/TokenExchange.sol | 71 ++++++++++--------- examples/linking-contracts/package.json | 10 +-- 4 files changed, 66 insertions(+), 45 deletions(-) diff --git a/examples/linking-contracts/.gitignore b/examples/linking-contracts/.gitignore index 842da6a54..e09bf2458 100644 --- a/examples/linking-contracts/.gitignore +++ b/examples/linking-contracts/.gitignore @@ -2,3 +2,6 @@ /.zos.session /zos.dev-* .zos* + +.openzeppelin/.session +.openzeppelin/dev-*.json diff --git a/examples/linking-contracts/.openzeppelin/project.json b/examples/linking-contracts/.openzeppelin/project.json index f2b439aba..9d3349395 100644 --- a/examples/linking-contracts/.openzeppelin/project.json +++ b/examples/linking-contracts/.openzeppelin/project.json @@ -1,16 +1,27 @@ { "manifestVersion": "2.2", - "contracts": ["TokenExchange"], - "name": "example-linking-contracts", - "version": "1.0.0", + "contracts": { + "TokenExchange": "TokenExchange" + }, "dependencies": { - "openzeppelin-eth": "2.2.0" + "@openzeppelin/contracts-ethereum-package": "^3.0.0" }, + "name": "token-exchange", + "version": "1.0.0", "compiler": { - "manager": "zos", "compilerSettings": { - "optimizer": {} + "optimizer": { + "enabled": false, + "runs": "200" + } }, - "solcVersion": "0.5.9" - } + "typechain": { + "enabled": false + }, + "manager": "openzeppelin", + "artifactsDir": "build/contracts", + "contractsDir": "contracts", + "solcVersion": "0.6.8" + }, + "telemetryOptIn": false } diff --git a/examples/linking-contracts/contracts/TokenExchange.sol b/examples/linking-contracts/contracts/TokenExchange.sol index b7191bf3c..4944a3cfb 100644 --- a/examples/linking-contracts/contracts/TokenExchange.sol +++ b/examples/linking-contracts/contracts/TokenExchange.sol @@ -1,37 +1,44 @@ -pragma solidity ^0.5.0; +pragma solidity ^0.6.2; +// Import base Initializable contract import "@openzeppelin/upgrades/contracts/Initializable.sol"; -// TODO: Update these import paths to @openzeppelin/contracts-ethereum-package once it is released -import "openzeppelin-eth/contracts/token/ERC20/IERC20.sol"; -import "openzeppelin-eth/contracts/math/SafeMath.sol"; +// Import the IERC20 interface and and SafeMath library +import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; + contract TokenExchange is Initializable { - using SafeMath for uint256; - - uint256 public rate; - IERC20 public token; - - function initialize(uint256 _rate, IERC20 _token) public initializer { - rate = _rate; - token = _token; - } - - function() external payable { - uint256 tokens = msg.value.mul(rate); - token.transfer(msg.sender, tokens); - } - - // Added on subsequent version! - address public owner; - - function withdraw() public { - require(msg.sender == owner); - msg.sender.transfer(address(this).balance); - } - - function setOwner(address _owner) public { - require(owner == address(0)); - owner = _owner; - } -} + using SafeMath for uint256; + + // Contract state: exchange rate and token + uint256 public rate; + IERC20 public token; + address public owner; + + // Initializer function (replaces constructor) + function initialize(uint256 _rate, IERC20 _token) public initializer { + rate = _rate; + token = _token; + } + + // Send tokens back to the sender using predefined exchange rate + receive() external payable { + uint256 tokens = msg.value.mul(rate); + token.transfer(msg.sender, tokens); + } + + function withdraw() public { + require( + msg.sender == owner, + "Address not allowed to call this function" + ); + msg.sender.transfer(address(this).balance); + } + + // To be run during upgrade, ensuring it can never be called again + function setOwner(address _owner) public { + require(owner == address(0), "Owner already set, cannot modify!"); + owner = _owner; + } +} diff --git a/examples/linking-contracts/package.json b/examples/linking-contracts/package.json index cbbd37761..71dde4e90 100644 --- a/examples/linking-contracts/package.json +++ b/examples/linking-contracts/package.json @@ -1,6 +1,6 @@ { "name": "example-linking-contracts", - "version": "2.8.0-rc.0", + "version": "2.8.2", "private": true, "description": "", "main": "index.js", @@ -8,11 +8,11 @@ "author": "Santiago Palladino ", "license": "MIT", "dependencies": { - "@openzeppelin/upgrades": "2.8.0-rc.0", - "openzeppelin-eth": "^2.2.0" + "@openzeppelin/upgrades": "2.8.0", + "@openzeppelin/contracts-ethereum-package": "^3.0.0" }, "devDependencies": { - "@openzeppelin/cli": "2.8.0-rc.0", - "ganache-cli": "^6.4.3" + "@openzeppelin/cli": "2.8.2", + "ganache-cli": "^6.9.1" } } From ca80433060bba569bb2827af24c98ef798ae8397 Mon Sep 17 00:00:00 2001 From: nkmr-jp Date: Mon, 8 Jun 2020 08:48:43 +0900 Subject: [PATCH 2/2] fix examples/linking-contracts/project.json --- examples/linking-contracts/.openzeppelin/project.json | 10 +++++----- examples/linking-contracts/package.json | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/linking-contracts/.openzeppelin/project.json b/examples/linking-contracts/.openzeppelin/project.json index 9d3349395..d0f72cc20 100644 --- a/examples/linking-contracts/.openzeppelin/project.json +++ b/examples/linking-contracts/.openzeppelin/project.json @@ -6,8 +6,8 @@ "dependencies": { "@openzeppelin/contracts-ethereum-package": "^3.0.0" }, - "name": "token-exchange", - "version": "1.0.0", + "name": "example-linking-contracts", + "version": "2.8.2", "compiler": { "compilerSettings": { "optimizer": { @@ -19,9 +19,9 @@ "enabled": false }, "manager": "openzeppelin", + "solcVersion": "0.6.9", "artifactsDir": "build/contracts", - "contractsDir": "contracts", - "solcVersion": "0.6.8" + "contractsDir": "contracts" }, - "telemetryOptIn": false + "telemetryOptIn": true } diff --git a/examples/linking-contracts/package.json b/examples/linking-contracts/package.json index 71dde4e90..08874f3dd 100644 --- a/examples/linking-contracts/package.json +++ b/examples/linking-contracts/package.json @@ -8,8 +8,8 @@ "author": "Santiago Palladino ", "license": "MIT", "dependencies": { - "@openzeppelin/upgrades": "2.8.0", - "@openzeppelin/contracts-ethereum-package": "^3.0.0" + "@openzeppelin/contracts-ethereum-package": "^3.0.0", + "@openzeppelin/upgrades": "2.8.0" }, "devDependencies": { "@openzeppelin/cli": "2.8.2",