From 0b3e0d74b003166d3755897084f72dea8c1700d0 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 8 Mar 2021 21:06:54 +0100 Subject: [PATCH] Further reorganisation of the repo (#2575) Co-authored-by: Francisco Giordano (cherry picked from commit f076ff5dbd72cce50529f43b0f0d5a026c2d6ade) --- CHANGELOG.md | 4 ++++ contracts/{utils => finance}/PaymentSplitter.sol | 6 +++--- contracts/finance/README.adoc | 10 ++++++++++ contracts/governance/README.adoc | 2 +- contracts/mocks/InitializableMock.sol | 2 +- .../mocks/MultipleInheritanceInitializableMocks.sol | 2 +- contracts/mocks/RegressionImplementation.sol | 2 +- .../mocks/SingleInheritanceInitializableMocks.sol | 2 +- contracts/proxy/README.adoc | 4 ++++ contracts/{ => proxy}/utils/Initializable.sol | 2 +- contracts/utils/README.adoc | 12 ++++++++---- scripts/migrate-imports.js | 6 ++++-- 12 files changed, 39 insertions(+), 15 deletions(-) rename contracts/{utils => finance}/PaymentSplitter.sol (98%) create mode 100644 contracts/finance/README.adoc rename contracts/{ => proxy}/utils/Initializable.sol (98%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 963e6dcd1..9187fdc54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,10 @@ npx openzeppelin-contracts-migrate-imports Make sure you're using git or another version control system to be able to recover from any potential error in our script. +### How to upgrade from 4.0-beta.x + +Some further changes have been done during the beta the 4.0-beta.x phase. Transitions made during this period are also configured in the `migrate-imports` script. Consequently, you can upgrade from the 4.0-beta.x stage using the same script as described in the *How to upgrade from 3.x* section. + ## 3.4.0 (2021-02-02) * `BeaconProxy`: added new kind of proxy that allows simultaneous atomic upgrades. ([#2411](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2411)) diff --git a/contracts/utils/PaymentSplitter.sol b/contracts/finance/PaymentSplitter.sol similarity index 98% rename from contracts/utils/PaymentSplitter.sol rename to contracts/finance/PaymentSplitter.sol index b44faae89..62a0e9260 100644 --- a/contracts/utils/PaymentSplitter.sol +++ b/contracts/finance/PaymentSplitter.sol @@ -2,9 +2,9 @@ pragma solidity ^0.8.0; -import "./Address.sol"; -import "./Context.sol"; -import "./math/SafeMath.sol"; +import "../utils/Address.sol"; +import "../utils/Context.sol"; +import "../utils/math/SafeMath.sol"; /** * @title PaymentSplitter diff --git a/contracts/finance/README.adoc b/contracts/finance/README.adoc new file mode 100644 index 000000000..1d119d319 --- /dev/null +++ b/contracts/finance/README.adoc @@ -0,0 +1,10 @@ += Finance + +[.readme-notice] +NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/finance + +This directory includes primitives for financial systems. We currently only offer the {PaymentSplitter} contract, but we want to grow this directory so we welcome ideas. + +== PaymentSplitter + +{{PaymentSplitter}} diff --git a/contracts/governance/README.adoc b/contracts/governance/README.adoc index e3a7c2d79..7cc572c39 100644 --- a/contracts/governance/README.adoc +++ b/contracts/governance/README.adoc @@ -1,7 +1,7 @@ = Governance [.readme-notice] -NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/access +NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/governance This directory includes primitives for on-chain governance. We currently only offer the {TimelockController} contract, that can be used as a component in a governance systems to introduce a delay between a proposal and its execution. diff --git a/contracts/mocks/InitializableMock.sol b/contracts/mocks/InitializableMock.sol index 8f313ed54..d5d60286d 100644 --- a/contracts/mocks/InitializableMock.sol +++ b/contracts/mocks/InitializableMock.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; -import "../utils/Initializable.sol"; +import "../proxy/utils/Initializable.sol"; /** * @title InitializableMock diff --git a/contracts/mocks/MultipleInheritanceInitializableMocks.sol b/contracts/mocks/MultipleInheritanceInitializableMocks.sol index 81f340a4e..f10ccd8f8 100644 --- a/contracts/mocks/MultipleInheritanceInitializableMocks.sol +++ b/contracts/mocks/MultipleInheritanceInitializableMocks.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; -import "../utils/Initializable.sol"; +import "../proxy/utils/Initializable.sol"; // Sample contracts showing upgradeability with multiple inheritance. // Child contract inherits from Father and Mother contracts, and Father extends from Gramps. diff --git a/contracts/mocks/RegressionImplementation.sol b/contracts/mocks/RegressionImplementation.sol index c53fc3c4e..201570715 100644 --- a/contracts/mocks/RegressionImplementation.sol +++ b/contracts/mocks/RegressionImplementation.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; -import "../utils/Initializable.sol"; +import "../proxy/utils/Initializable.sol"; contract Implementation1 is Initializable { uint internal _value; diff --git a/contracts/mocks/SingleInheritanceInitializableMocks.sol b/contracts/mocks/SingleInheritanceInitializableMocks.sol index 2c9b75ee4..eee4bb8f6 100644 --- a/contracts/mocks/SingleInheritanceInitializableMocks.sol +++ b/contracts/mocks/SingleInheritanceInitializableMocks.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; -import "../utils/Initializable.sol"; +import "../proxy/utils/Initializable.sol"; /** * @title MigratableMockV1 diff --git a/contracts/proxy/README.adoc b/contracts/proxy/README.adoc index 14a246d5e..c7e4eac45 100644 --- a/contracts/proxy/README.adoc +++ b/contracts/proxy/README.adoc @@ -40,3 +40,7 @@ CAUTION: Using upgradeable proxies correctly and securely is a difficult task th == Minimal Clones {{Clones}} + +== Utils + +{{Initializable}} diff --git a/contracts/utils/Initializable.sol b/contracts/proxy/utils/Initializable.sol similarity index 98% rename from contracts/utils/Initializable.sol rename to contracts/proxy/utils/Initializable.sol index 802c1ef90..029e9c414 100644 --- a/contracts/utils/Initializable.sol +++ b/contracts/proxy/utils/Initializable.sol @@ -3,7 +3,7 @@ // solhint-disable-next-line compiler-version pragma solidity ^0.8.0; -import "./Address.sol"; +import "../../utils/Address.sol"; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed diff --git a/contracts/utils/README.adoc b/contracts/utils/README.adoc index fc6adc6f3..e5cdd3947 100644 --- a/contracts/utils/README.adoc +++ b/contracts/utils/README.adoc @@ -40,6 +40,14 @@ Finally, {Create2} contains all necessary utilities to safely use the https://bl {{EIP712}} +== Escrow + +{{ConditionalEscrow}} + +{{Escrow}} + +{{RefundEscrow}} + == Introspection This set of interfaces and contracts deal with https://en.wikipedia.org/wiki/Type_introspection[type introspection] of contracts, that is, examining which functions can be called on them. This is usually referred to as a contract's _interface_. @@ -84,7 +92,3 @@ Note that, in all cases, accounts simply _declare_ their interfaces, but they ar {{Counters}} {{Strings}} - -== Other - -{{Initializable}} diff --git a/scripts/migrate-imports.js b/scripts/migrate-imports.js index 5e9dcc44c..18ccfc887 100755 --- a/scripts/migrate-imports.js +++ b/scripts/migrate-imports.js @@ -30,7 +30,8 @@ const pathUpdates = { 'payment/escrow/ConditionalEscrow.sol': 'utils/escrow/ConditionalEscrow.sol', 'payment/escrow/Escrow.sol': 'utils/escrow/Escrow.sol', 'payment/escrow/RefundEscrow.sol': 'utils/escrow/RefundEscrow.sol', - 'payment/PaymentSplitter.sol': 'utils/PaymentSplitter.sol', + 'payment/PaymentSplitter.sol': 'finance/PaymentSplitter.sol', + 'utils/PaymentSplitter.sol': 'finance/PaymentSplitter.sol', 'payment/PullPayment.sol': 'security/PullPayment.sol', 'presets/ERC1155PresetMinterPauser.sol': 'token/ERC1155/presets/ERC1155PresetMinterPauser.sol', 'presets/ERC20PresetFixedSupply.sol': 'token/ERC20/presets/ERC20PresetFixedSupply.sol', @@ -40,7 +41,8 @@ const pathUpdates = { 'proxy/BeaconProxy.sol': 'proxy/beacon/BeaconProxy.sol', // 'proxy/Clones.sol': undefined, 'proxy/IBeacon.sol': 'proxy/beacon/IBeacon.sol', - 'proxy/Initializable.sol': 'utils/Initializable.sol', + 'proxy/Initializable.sol': 'proxy/utils/Initializable.sol', + 'utils/Initializable.sol': 'proxy/utils/Initializable.sol', 'proxy/ProxyAdmin.sol': 'proxy/transparent/ProxyAdmin.sol', // 'proxy/Proxy.sol': undefined, 'proxy/TransparentUpgradeableProxy.sol': 'proxy/transparent/TransparentUpgradeableProxy.sol',