Commit Graph

428 Commits

Author SHA1 Message Date
0f55c18595 Fix/solc 0.7.4 warnings #2391 (#2396)
* Fix unnamed return variable warning

This commit fixes warnings thrown by the solc 0.7.4 compiler:
"Warning: Unnamed return variable can remain unassigned. Add an explicit
return with value to all non-reverting code paths or name the variable."

* Fix function state mutability warning

This commit fixes warnings thrown by the solc 0.7.4 compiler:
"Warning: Function state mutability can be restricted to pure"

* Fix shadows an existing declaration warning

This commit fixes warnings thrown by the solc 0.7.4 compiler:
"Warning: This declaration shadows an existing declaration."

1. Arguments by default are not underscored.
2. If the name isn't available due to shadowing, use prefix underscore.
3. If prefix underscore isn't available due to shadowing, use suffix underscore.
2020-10-28 13:42:38 -03:00
0d7bf01ac1 Merge branch 'solc-0.7' into release-v3.2.0-solc-0.7 2020-09-15 17:48:27 -03:00
22de765f3c Merge branch 'release-v3.2.0' into release-v3.2.0-solc-0.7 2020-09-08 20:14:42 -03:00
ded2b0a55c Fix minor typos and grammar in docs (#2338)
* Fix typos and formatting

* Add Solidity release dates: releases-stability
2020-09-01 15:19:17 -03:00
aaa5ef81cf Fix typos (#2343) 2020-09-01 14:57:40 -03:00
89e2b7424b Merge branch 'master' into solc-0.7 2020-08-24 18:14:25 -03:00
6d5a73815d Fix ERC20Snapshot#_beforeTokenTransfer (#2328) 2020-08-14 11:59:20 -03:00
48072e439d Fix function state mutability warning (#2327)
Changes state mutability of granularity function from view to pure.
2020-08-12 16:06:21 -03:00
9700e6b4bd Use beforeTokenTransfer hook in ERC20Snapshot (#2312) 2020-08-11 16:51:58 -03:00
04fc35707d Migrate contracts to Solidity 0.7 (#2319)
* Update contract pragmas to solidity 0.7

* Remove internal declaration on constructors

* Reference SafeMath explicitely

* Remove public constructor declaration from abstract contracts

* Remove public constructor declaration from non-abstract contracts
2020-07-29 18:11:32 -03:00
0c667ca32a docs: add note explaining opinionated presets (#2313)
* docs: add notes explaining presets

* fix links for mint function

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-07-21 19:04:21 -03:00
7c4a2a0a29 Fix comment reference for function hash (#2307)
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-07-21 17:06:36 -03:00
ef3bbbcf40 Add readme notices with link to docs site (#2300)
* add readme notices

* remove period after url
2020-06-29 17:23:53 -03:00
3f4420527b Separate mapping keyword by whitespace (#2287)
Co-authored-by: pm_468 <oleg.kuzmenko@lindenvalley.de>
2020-06-19 11:00:05 -03:00
e2876b947d Fix docs link 2020-06-11 16:49:14 -03:00
ed3a513f86 Fix broken links 2020-06-11 16:48:00 -03:00
b72088a90a Add 'available since' notices 2020-06-11 16:46:33 -03:00
8b58fc7191 feat: add wrapper function for low level calls (#2264)
* feat: add wrapper function for low level calls

* add error message parameter

* adding unit tests and required mocks

* implement error message on SafeERC20

* fixed variable name in tests

* Add missing tests

* Improve docs.

* Add functionCallWithValue

* Add functionCallWithValue

* Skip balance check on non-value functionCall variants

* Increase out of gas test timeout

* Fix compile errors

* Apply suggestions from code review

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>

* Add missing tests

* Add changelog entry

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-06-11 16:25:46 -03:00
d9fa59f30a Address ERC1155 changes (#2267)
* Make holder fns public

* Add context, remove msg.sender from check

* Fix location of Holder arguments

* Add beforeTransfer hook

* Minor test improvements

* Add ERC1155Burnable and tests

* Add ERC1155Pausable

* Add ERC1155PresetMinterPauser.sol

* Add uri constructors

* Improved revert reasons

* Initial docs improvements

* Add missing docs

* Improve acceptance checks revert reasons

* Apply suggestions from code review

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>

* Remove note about 1155 preset uri in mint

* Add rquirements to balanceOfBatch

* Add note about URI and uri

* Fix list in docs

* Fix lint errors

* Use natural sorting for API titles

* Fix doc references

* Escape {id} references to remove docgen warnings

* Added intro docs, fixed links

* Apply suggestions from code review

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>

* Add changelog entry

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-06-09 14:47:51 -03:00
13e2132b69 docs: minor - spelling, grammar (#2273) 2020-06-09 13:18:38 -03:00
ecf0725dd1 Documentation/erc721 contracts (#2218)
* Adds / Updates documentation of ERC721 contract

* Improve ERC721Burnable documentation

* Fix typo

* Revert changes on ERC721 private functions

* Add documentation to the ERC721 contract's constructor

* Add IERC721Receiver & ERC721Holder documentations

* Add references to IERC721 functions

* Add references to IERC721Metadata/Receiver

* PR fixes

* Fixes to ERC721 documentation

* Add missing fixes

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-06-05 14:29:06 -03:00
d3ef93a9a5 Deprecate SafeERC20.safeApprove (#2268)
* Deprecate SafeERC20.safeApprove

* Add changelog entry
2020-06-05 14:13:53 -03:00
a81e948fc9 Add a simple catch-all implementation of the metadata URI interface (#2029)
* Initial ERC1155 implementation with some tests (#1803)

* Initial ERC1155 implementation with some tests

* Remove mocked isERC1155TokenReceiver

* Revert reason edit nit

* Remove parameters associated with isERC1155TokenReceiver call

* Add tests for approvals and single transfers

* Add tests for transferring to contracts

* Add tests for batch transfers

* Make expectEvent.inTransaction tests async

* Renamed "owner" to "account" and "holder"

* Document unspecified balanceOfBatch reversion on zero behavior

* Ensure accounts can't set their own operator status

* Specify descriptive messages for underflow errors

* Bring SafeMath.add calls in line with OZ style

* Explicitly prevent _burn on the zero account

* Implement batch minting/burning

* Refactored operator approval check into isApprovedForAll calls

* Renamed ERC1155TokenReceiver to ERC1155Receiver

* Added ERC1155Holder

* Fix lint issues

* Migrate tests to @openzeppelin/test-environment

* port ERC1155 to Solidity 0.6

* make ERC1155 constructor more similar to ERC721 one

* also migrate mock contracts to Solidity 0.6

* mark all non-view functions as virtual

* add simple catch-all implementation for the metadata URI interface

* include an internal function to set the URI so users can implement functionality to switch URIs

* add tests for ERC1155 metadata URI

* fix nits, mostly pointed out by linter

* convert ERC1155 metadata URI work to Solidity 0.6

* mark all non-view functions as virtual

* Port ERC 1155 branch to Solidity 0.6 (and current master) (#2130)

* port ERC1155 to Solidity 0.6

* make ERC1155 constructor more similar to ERC721 one

* also migrate mock contracts to Solidity 0.6

* mark all non-view functions as virtual

* Update contracts/token/ERC1155/IERC1155MetadataURI.sol

Starting on Solidity v0.6.2, interfaces can now inherit. \o/

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>

* Fix compile errors

* Remove URI event

* Merge MetadataCatchAll into ERC1155

* Improve documentation.

* Simplify tests

* Move tests into ERC1155 tests

* Update documentation

* Bump minimum compiler version for inteface inheritance

* Fix holder tests

* Improve setUri docs

* Fix docs generation

Co-authored-by: Alan Lu <alanlu1023@gmail.com>
Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-06-03 11:56:58 -03:00
91516b2318 Allow overriding of ERC1155 functions (#2263)
* Make receiver functions private

* Make external functions public
2020-06-02 15:06:34 -03:00
52f7b6e03b Remove TokenVesting reference from Timelock docs (#2262) 2020-06-02 13:32:14 -03:00
394987f365 Fix ERC777 hook docs, fixes #2256 2020-06-01 13:17:15 -03:00
424ab2a024 Update SafeERC20.sol (#2246)
tweak intro dev comment to reflect more typical use case, wrapping an `IERC20` reference for a deposit contract using others' ERC-20 tokens. I might be mistaken ~ but typically SafeERC20 won't be used in conjunction with ERC20 for OZ token deployments?
2020-05-26 13:39:54 -03:00
56de324afe Add SPX license identifier (#2235) 2020-05-14 21:58:11 -03:00
956d6632d9 ERC1155 feature pending tasks (#2014)
* Initial ERC1155 implementation with some tests (#1803)

* Initial ERC1155 implementation with some tests

* Remove mocked isERC1155TokenReceiver

* Revert reason edit nit

* Remove parameters associated with isERC1155TokenReceiver call

* Add tests for approvals and single transfers

* Add tests for transferring to contracts

* Add tests for batch transfers

* Make expectEvent.inTransaction tests async

* Renamed "owner" to "account" and "holder"

* Document unspecified balanceOfBatch reversion on zero behavior

* Ensure accounts can't set their own operator status

* Specify descriptive messages for underflow errors

* Bring SafeMath.add calls in line with OZ style

* Explicitly prevent _burn on the zero account

* Implement batch minting/burning

* Refactored operator approval check into isApprovedForAll calls

* Renamed ERC1155TokenReceiver to ERC1155Receiver

* Added ERC1155Holder

* Fix lint issues

* Migrate tests to @openzeppelin/test-environment

* Port ERC 1155 branch to Solidity 0.6 (and current master) (#2130)

* port ERC1155 to Solidity 0.6

* make ERC1155 constructor more similar to ERC721 one

* also migrate mock contracts to Solidity 0.6

* mark all non-view functions as virtual

Co-authored-by: Alan Lu <alanlu1023@gmail.com>
Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
Co-authored-by: Robert Kaiser <kairo@kairo.at>
2020-05-08 13:38:43 -03:00
78dc37739f Making IERC721Receiver an interface (#2225)
* Making IERC721Receiver an interface

* Update IERC721Receiver.sol

Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-05-06 16:47:53 -03:00
e156b617b9 Merge branch 'release-v2.5.0' 2020-04-24 16:04:40 -03:00
c75b016919 Add missing requirements to ERC777 (#2212)
* Restore _approve check for zero sender

* Add non-zero operator check to _send
2020-04-24 15:33:22 -03:00
c4be4d16e8 ERC721 documentation (#2164)
* Add documentation to the IERC721 contract

* Add documentation to the IERC721Metadata contract

* Add documentation to the IERC721Enumerable contract

* Improves IERC721 documentation

* Improves IERC721Metadata documentation

* Improves IERC721Enumerable documentation

* Fixes documentations issues in IERC721

* Improves ERC721 interfaces documentation
2020-04-21 15:00:48 -03:00
715ec806f0 ERC721 deploy ready fixes (#2192)
* Add baseURI to ERC721MinterPauser constructor

* Add tokenURI to mint

* Remove tokenId and tokenURI from ERC721 deploy ready

* Rename ERC721MinterPauser to ERC721MinterAutoID, remove Pausable mechanisms

* Restore pausing to ERC721

* Rename deploy ready to presets

* Rename ERC721 preset
2020-04-20 20:05:48 -03:00
5bb8d0245b Improve Hooks documentation (#2199)
* Improve Hooks docs

* Improve Utils docs

* Apply suggestions from code review

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

* Add enumerable code samples

* Remove import statement from example

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-04-20 16:43:05 -03:00
c7705712ba Remove in-constructor requirements (#2195)
* Remove isConstructor requirement from _setupRole

* Remove isConstructor requirement from _setupDecimals

* Update contracts/access/AccessControl.sol

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

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
2020-04-17 17:00:30 -03:00
13e113df81 Improve usage of toString 2020-04-17 11:37:58 -03:00
8b10cb38d8 Rename Strings.fromUint256 to Strings.toString (#2188)
* rename Strings.fromUint256 to Strings.toString

* add changelog entry

* fix conflict with js toString method
2020-04-15 18:04:00 -03:00
3e139baa50 Add missing hook to ERC777, fix relevant documentation (#2191)
* Improve ERC20/721 Pausable docs

* Add ERC20Pausable mint and burn tests

* Add ERC721Pausable mint and burn tests

* Add _beforeTransfer hook in ERC777 to mint and burn
2020-04-15 17:58:24 -03:00
b6513f6ad7 provide 'automatic' token URI by appending the token ID to the base URI (#2174)
* provide 'automatic' token URI by appending the token ID to the base URI, if a base is set but no token-specific URI is available

* make the three cases more explicit, avoid else after return

* adjust comments to reflect reality
2020-04-15 15:39:33 -03:00
4ca719bf8b Fix typo 2020-04-15 14:35:27 -03:00
b734bf3fa5 Tweak wording in ERC20Snapshot docs 2020-04-15 13:33:24 -03:00
3b10205c8e Improve ERC20Snapshot documentation (#2186)
Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2020-04-14 19:06:51 -03:00
d2ab599bd3 Update IERC777.sol (#2184) 2020-04-14 14:41:33 -03:00
885378e421 Fix some of the code formatting in docs 2020-04-03 21:13:55 -03:00
96a7113a16 Fix broken links 2020-04-03 17:05:36 -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