Commit Graph

999 Commits

Author SHA1 Message Date
c4e5daff86 Fix Pausable docs 2020-04-03 17:06:33 -03:00
96a7113a16 Fix broken links 2020-04-03 17:05:36 -03:00
63a3665a17 3.0.0-rc.1 2020-04-03 16:22:56 -03:00
92a60b2587 Merge branch 'master' into release-v3.0.0 2020-04-03 16:22:25 -03:00
a0f6bd3926 Add 'deploy-ready' token contracts (#2167)
* Add ERC20DeployReady

* Add ERC721DeployReady

* Improve docs

* Fix linter errors

* Rename DeployReady contracts to MinterPauser, add docs

* Fix deploy ready docs

* Minor doc adjustment
2020-04-03 16:21:58 -03:00
402c6ab4cc Update docs (#2168)
* Update docs for ERC20 and ERC721

* Add EnumerableMap to docs

* Update misc guides

* Apply suggestions from code review

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-04-03 13:17:24 -03:00
bd0778461d Add EnumerableMap, refactor ERC721 (#2160)
* Implement AddressSet in terms of a generic Set

* Add Uint256Set

* Add EnumerableMap

* Fix wording on EnumerableSet docs and tests

* Refactor ERC721 using EnumerableSet and EnumerableMap

* Fix tests

* Fix linter error

* Gas optimization for EnumerableMap

* Gas optimization for EnumerableSet

* Remove often not-taken if from Enumerable data structures

* Fix failing test

* Gas optimization for EnumerableMap

* Fix linter errors

* Add comment for clarification

* Improve test naming

* Rename EnumerableMap.add to set

* Add overload for EnumerableMap.get with custom error message

* Improve Enumerable docs

* Rename Uint256Set to UintSet

* Add changelog entry
2020-04-02 15:43:06 -03:00
0408e51ae6 Bundle ERC20Detailed (#2161)
* Merge ERC20Detailed into ERC20, make derived contracts abstract

* Fix Create2 tests

* Fix failing test

* Default decimals to 18

* Add tests for setupDecimals

* Add changelog entry

* Update CHANGELOG.md

* Update CHANGELOG.md

* Replace isConstructor for !isContract

* Update CHANGELOG.md

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-04-02 15:30:21 -03:00
5b5d91c9d4 Remove 'external' functions (#2162)
* Remove _grantRole and _revokeRole, replace with _setupRole

* Make all external AccessControl functions public

* Remove Ownable._transferOwnership

* Rename ERC721's _safeTransferFrom and _transferFrom to _safeTransfer and _transfer

* Make all ERC721 external functions public

* Make all miscelaneous external functions public instead

* Add changelog entry

* Move calldata arguments to memory

* Update contracts/access/AccessControl.sol

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

* Restrict setupRole to the constructor

* Replace isConstructor for !isContract

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-04-02 15:29:58 -03:00
feb7ead005 Add revert if the bytecode length is zero (#2117)
* Add revert if the bytecode length is not greater than zero

* Add value parameter to create2 deploy function

Add tests for contract balance revert and depositing funds

* Change parameter name to amount for clarity

* Fix test for value sending

* Fix linter error

* Change revert reason

* Improve Create2.deploy documentation

* Slight test improvement

* Add changelog entry

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-03-28 12:55:13 -03:00
7415ebe8bc API improvements for EnumerableSet (#2151)
* Add revert reason to EnumerableSet.get.

* Rename EnumerableSet values to keys

* Rename get to at

* Add changelog entry

* Rename keys to values

* Add leading underscore to struct members
2020-03-27 18:39:18 -03:00
24c37c1f9e Bundle ERC721 extensions into base contract (#2149)
* Add IERC721Metadata implementation into ERC721

* Add IERC721Enumerable into ERC721

* Update ERC721Pausable and ERC721Burnable

* Delete ERC721Metadata, ERC721Enumerable and ERC721 (now ERC721)

* Update mocks

* Update tests

* Update contracts/token/ERC721/ERC721.sol

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

* Make ERC721Pausable and ERC721Burnable abstract

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-03-27 17:27:41 -03:00
97894a140d Adhere to naming convention (#2150)
* Upgrade to latest solhint rc

* Add private-vars-leading-underscore linter rule

* Add leading underscore to GSNRecipient constants

* Remove leading underscore from ERC165Checker functions

* Add leading underscore to multiple private constants

* Fix linter errors in mocks

* Add leading underscore to ERC777's ERC1820 registry

* Add changelog entry
2020-03-27 13:49:08 -03:00
4476a2d531 Unsigned conversion #2111 (#2123)
* Add signed to unsigned conversion to SafeCast

* Update SafeCast exception message

* Add test for SafeCast int to uint conversion

- Update SafeCastMock
- Add tests for SafeCast int256 to uint256

* Update SafeCast int to uint definition

Apply suggestions from code review.

Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com>

* Update test for SafeCast int to uint conversion

* Update SafeCast test after code review

- Change "downcasts" to "casts"
- Move test closer to its function

* Fix error in SafeCast toUint256 description

* Fix breaking error in SafeCast

* Add uint256 to int256 conversion to SafeCast

- Add function
- Add mock
- Add test

* Update SafeCast unsigned to signed conversion

- Update error in conversion to be more clear
- Update constants in test to be powers of 2 instead of shifts

* Add changelog entry

* Update SafeCast tests

- Add minus in INT256_MIN for clarity

Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com>

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-03-27 10:56:30 -03:00
a3c6e5f088 3.0.0-rc.0 2020-03-16 20:47:28 -03:00
a8d6f13c94 Remove all 'available since' notices 2020-03-16 20:44:56 -03:00
e7b22483af Make ERC777 operator the caller (#2134)
* Make the sender the operator

* Make hook methods private

* Add changelog entry
2020-03-16 19:49:17 -03:00
90058040f0 Make AccessControl GSN compatible (#2135) 2020-03-16 19:40:28 -03:00
9975a1a0c2 Remove Address.toPayable (#2133)
* Remove Address.toPayable

* Add changelog entry
2020-03-16 18:22:02 -03:00
eb34ae67ff Make IERC721 contracts interfaces instead (#2113)
* Make IERC721 contracts interfaces instead

* Bump minimum compiler version for IERC721
2020-03-16 18:21:16 -03:00
f1db30955d Remove deprecated functions and contracts (#2125)
* Remove ERC721.burn(owner, tokenId)

* Remove ERC721._checkOnERC721Received from the contract's API

* Fix linter error

* Remove Escrow and PullPayment withdrawWithGas, replace for withdraw

* Add changelog entry

* Add reentrancy notice
2020-03-16 17:42:33 -03:00
c173392e15 Revamped Access Control (#2112)
* Remove Roles

* Add AccessControl and tests

* Removed IAccessControl

* Add RoleGranted and RoleRevoked events

* Make roles grantable and revokable regardless of their previous status

* Fix typo

* Add documentation

* Cleanup tests

* Add enumeration tests

* Add _setRoleAdmin tests

* Fix lint error

* Fix AccessControl link in docs

* WIP on access control guide

* Rename getRoleMembersCount

* Add tests for new role admin

* Make AccessControl GSN compatible

* Update access control guide

* Rename admin to adminRole

* Rename roleIds to roles

* Add 'operator' to RoleGranted and RoleRevoked events.

* Only emit events if the roles were not previously granted/revoked

* Uncomment expectEvent.not tests

* Rename operator to sender

* Add changelog entry
2020-03-16 17:41:24 -03:00
c9630526e2 Draft and lifecycles directories cleanup (#2122)
* Move Pausable into utils

* Move Strings into utils

* Move Counters into utils

* Move SignedSafeMath into math

* Remove ERC1046

* Make ERC20Snapshot.snapshot internal

* Move ERC20Snapshot into ERC20

* Add drafts deprecation notice

* Remove drafts directory

* Add changelog entry

* Apply suggestions from code review

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-03-16 16:27:15 -03:00
8176a901a9 Cleanup of Ownership directory (#2120)
* Remove Ownable.isOwner.

* Remove ownable behavior from tests

* Make Escrow use Ownable instead of Secondary

* Migrate GSNRecipientERC20Fee to Ownable

* Remove Secondary

* Move Ownable to access directory

* Remove mentions of Secondary

* Add changelog entry

* Move Ownable tests to access

* Remove unused mock
2020-03-16 15:12:29 -03:00
baaadde3c5 Remove ERC20._burnFrom (#2119)
* Remove ERC20._burnFrom

* Add changelog entry
2020-03-16 15:06:19 -03:00
7acd60d152 Add notice about deprecated Crowdsales (#2116)
* Remove crowdsales from sidebar documentation, add links to old version

* Remove mentions of Crowdsales from the documentation
2020-03-11 15:26:21 -03:00
65e4ffde58 Make ECDSA.recover revert on error. (#2114)
* Make ECDSA.recover revert on error

* Removed unused test

* Remove duplicate line

* Add tests for invalid signatures

* Fix linter errors

* Add changelog entry
2020-03-10 20:13:32 -03:00
e2813df879 Use bytes32 explicitly for Create2.computeAddress() (#2088)
* Use bytes32 explicitly for Create2.computeAddress(), to force users cache hash of the bytecode

* Remove only from test :)
2020-03-09 13:02:14 -03:00
3296ca7219 Rearrange erc721metadata layout to mimic eth-pkg (#2098)
In https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package/pull/76, we are rearranging the erc721metadata contract storage layout, so the new variable is added at the end. This commit applies the same change to the vanilla contracts repository, so migration from 2.5 to 3.0 is easier for users using the transpiler.
2020-03-04 15:31:57 -03:00
62065cf043 add prepare-docs script to subpackage 2020-02-17 19:02:13 -03:00
08cea10aa7 Fix operatorBurn description typo. (#2091) 2020-02-17 16:31:26 -03:00
19417c7cd5 Rename CREATE2 argument from bytecodeHash to bytecode and add new method for precomputed bytecode hash (#2087)
* Rename CREATE2 argument from bytecodeHash to bytecode and add new method for precomputed bytecode hash

* Remove only from test

* Fix linter error
2020-02-14 11:29:38 -03:00
5dfe7215a9 Migrate Contracts to Solidity v0.6 (#2080)
* Initial migration to Solidity 0.6.x - v3.0 first steps (#2063)

* Initial migration, missing GSN, 721, 777 and Crowdsales.

* Add _beforeTokenOperation and _afterTokenOperation.

* Add documentation for hooks.

* Add hooks doc

* Add missing drafts

* Add back ERC721 with hooks

* Bring back ERC777

* Notes on hooks

* Bring back GSN

* Make functions virtual

* Make GSN overrides explicit

* Fix ERC20Pausable tests

* Remove virtual from some view functions

* Update linter

* Delete examples

* Remove unnecessary virtual

* Remove roles from Pausable

* Remove roles

* Remove users of roles

* Adapt ERC20 tests

* Fix ERC721 tests

* Add all ERC721 hooks

* Add ERC777 hooks

* Fix remaining tests

* Bump compiler version

* Move 721BurnableMock into mocks directory

* Remove _before hooks

* Fix tests

* Upgrade linter

* Put modifiers last

* Remove _beforeTokenApproval and _beforeOperatorApproval hooks
2020-02-14 11:12:32 -03:00
f905a14f5f Fix docsite link 2020-02-06 18:07:03 -03:00
58a3368215 2.5.0 2020-02-04 19:39:23 -03:00
941d305044 Update docs 2020-02-04 19:35:31 -03:00
1b938e39a8 EnumerableSet improvements (#2077)
* Remove newAddressSet

* Add count and get functions.

* Fix lint

(cherry picked from commit 7988c044e0)
2020-02-04 19:33:57 -03:00
0ac83ce289 Fix EnumerableSetMock for 2.5.rc1 (#2069)
* Drafted Enumerable.sol.

* Drafted test framework.

* Tweaked the tests to follow oz structure.

* Coded EnumerableSet.

* Moved EnumerableSet to `utils`.

* Fixed linting.

* Improved comments.

* Tweaked contract description.

* Renamed struct to AddressSet.

* Relaxed version pragma to 0.5.0

* Removed events.

* Revert on useless operations.

* Small comment.

* Created AddressSet factory method.

* Failed transactions return false.

* Transactions now return false on failure.

* Remove comments from mock

* Rename mock functions

* Adapt tests to code style, use test-helpers

* Fix bug in remove, improve tests.

* Add changelog entry

* Add entry on Utils doc

* Add optimization for removal of last slot

* Update docs

* Fix headings of utilities documentation

* Simplified mock.

* Fixed comment.

* Revert "Fixed comment."

This reverts commit 39627f9a6f.

* Revert "Simplified mock."

This reverts commit 67468e464b.

* Simplified mock.

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
(cherry picked from commit 8975289c6b)
2020-02-04 18:06:34 -03:00
d775e315cc Update package homepage. 2020-01-24 15:07:37 -03:00
e4a8a5533e 2.5.0-rc.0 2020-01-24 14:56:29 -03:00
88dc1ca6fc Reorder functions to prevent shadowing warning 2020-01-24 14:56:17 -03:00
1e0f07751e Implementation of an address Enumerable Set (#2061)
* Drafted Enumerable.sol.

* Drafted test framework.

* Tweaked the tests to follow oz structure.

* Coded EnumerableSet.

* Moved EnumerableSet to `utils`.

* Fixed linting.

* Improved comments.

* Tweaked contract description.

* Renamed struct to AddressSet.

* Relaxed version pragma to 0.5.0

* Removed events.

* Revert on useless operations.

* Small comment.

* Created AddressSet factory method.

* Failed transactions return false.

* Transactions now return false on failure.

* Remove comments from mock

* Rename mock functions

* Adapt tests to code style, use test-helpers

* Fix bug in remove, improve tests.

* Add changelog entry

* Add entry on Utils doc

* Add optimization for removal of last slot

* Update docs

* Fix headings of utilities documentation

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-01-24 14:50:24 -03:00
73abd54cbe Made private methods internal to allow for overriding (#2027)
* Made private methods internal to allow for overriding

* Revert package.lock changes.

* Make _move private again

* Expose the ERC1820 registry address

* Add changelog entry

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-01-23 16:35:21 -03:00
7d7cbcad14 Fix/improve revert reason #1727 (#2018)
* adding mock contacts, test code

* adding changes to ERC721.sol per @frangio's comments on original PR #1943

* fix solhint warnings

* Update contracts/token/ERC721/ERC721.sol

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

* same revert wording per @frangio's review suggestion

* per @frangio's feedback, changing the inline assembly to accomplish: we want to ignore the first 4 bytes of content, so we should read the length and decrease it by 4, then take the memory location and add 4 to it, then store the new length at the new memory location, then that is the new byte array that we want.

* change revert msg assembly per PR comment by @frangio

* unify revert msg in test code

* fix some failed tests, wording change

* Update contracts/token/ERC721/ERC721.sol

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

* Update contracts/token/ERC721/ERC721.sol

Co-Authored-By: Francisco Giordano <frangio.1@gmail.com>

* fix test case, revert without reason

* fix 'ERC721ReceiverRevertsMock: Transaction rejected by receiver'

* style change per review by @frangio

* fix revert reason forwarding

* remove duplicate contracts/mocks/ERC721ReceiverRevertsMock.sol per review https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2018\#issuecomment-574381034

* Add changelog entry

* Fix tests

* Make tests more clear

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-01-23 16:33:09 -03:00
e493fb3e95 Add 'available since' notes. Fixes #2054 2020-01-23 15:26:25 -03:00
8c40a5b275 Create2 feature pending tasks (#2013)
* Add Create2 library (#1744)

* feat(contracts): Add Create2 library to use create2 evm opcode

* Upgrade sol-coverage

* Add changelog entry

* Update comments and code style

* Remove create2 helper

* Fix linter error

* Fix truffle dependency

* Fix linter error

* refactor(Create2): Remove _deploy internal function

* test(Create2): test Create2 with inline assembly code

* fix(Create2): Check address returned form create2 instead of codesize of created contract

* refactor(Create2):Add revert reason when Create2 deploy fails (#2062)

* fix merge with master

* fix test

Co-authored-by: Augusto Lemble <me@augustol.com>
2020-01-23 15:08:54 -03:00
06983a2075 add note suggesting reentrancy post (#2059) 2020-01-20 16:02:49 -03:00
410e4f8ab9 Fix link to GSN overview (#2053)
* Fix link to GSN overview

* Update contracts/GSN/README.adoc

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-01-15 14:44:09 -03:00
54d2aec232 issue#1980 (#2038)
* issue#1980

* fix public to external
2020-01-14 16:18:19 -03:00
f9650b4cb8 Remove .gitkeep as it's not needed. (#2046) 2020-01-07 17:18:28 -03:00