Files
openzeppelin-contracts/CHANGELOG.md
Bertrand Masius 5a2b349992 Feature/erc777 #1159 (#1684)
* IERC777 from specs, constants returned, up to defaultOperators. (#1159)

* IERC777 oprarator approvals (#1159)

* ERC777 oprarator approvals fixes and tests

* IERC777 send and receive with ERC820 (#1159)

* ERC777 Add burn functions and fix send functions (#1159)

* ERC777 Make expectEvent compatible with web3.js 1.0 (#1159)

* ERC777 Add ERC820 deploy script (#1159)

* ERC777 Complete implementation of ERC777 (#1159)

This implementation conforms to the current EIP

* ERC777 Update ERC820 Registry contract to final version (#1159)

* ERC777 Move contracts to 'drafts' folder (#1159)

* ERC777: Update to ERC1820 registry and linter error fix (#1159)

* ERC777: implement recent changes of EIP777 (#1159)

* ERC777 Fix formatting (#1159)

* ERC777 Update to solc 0.5.2 (#1159)

* ERC777 Fix travis CI errors (#1159)

* ERC777 Fix linter errors again... (#1159)

* ERC777 Fix unit test (#1159)

* ERC777 Fix unit test again (#1159)

* Remove extra newlines.

* Rename ERC777Base to ERC777.

* Remove 'Token' from contract names.

* Replace ops for operators.

* Move operator check out of _send.

* Remove ERC777Burnable.

* Remove ERC1820Client, now using the interface directly.

* Minor internal refactors in contracts.

* Delete extra test helpers.

* Simplified tests.

* Add basic 777 tests.

* Add granularity send test.

* Add first operator send tests.

* Add burn tests.

* Refactor send and burn tests.

* Improve send burn refactor.

* Greatly improve test module.

* Burn instead of send removed tokens.

* Add operator tests.

* Improve send tests under changing operators.

* Refactor and merge send and burn tests.

* Add missing and not-implemented tests.

* Make _burn private.

* Fix typo.

* Greatly improve tokensToSend tests.

* Refactor hook tests.

* Fix hook tests.

* Update openzeppelin-test-helpers and ERC1820 address.

* Fix natspec indentation.

* Make interface functions external.

* Remove redundant private revoke and authorize functions.

* Improved readability of if statement.

* Remove unnecessary asserts.

* Add non-one granularity test.

* Fix hook call order in _mint.

* Fix _mint not reverting on failure to implement tokensReceived.

* Remove special case in operatorFn when from is 0.

* Refactor ERC777SenderMock.

* Add tokensReceived tests.

* switch to updated ganache-cli-coverage fork

* Fix linter errors.

* Add mint tests.

* Fix linter errors.

* Fix tests.

* Update test/drafts/ERC777/ERC777.test.js

Co-Authored-By: nventuro <nicolas.venturo@gmail.com>

* Add changelog entry.
2019-04-16 13:13:46 -03:00

7.1 KiB

Changelog

2.3.0 (unreleased)

New features:

  • ERC1820: added support for interacting with the ERC1820 registry contract (IERC1820Registry), as well as base contracts that can be registered as implementers there. (#1677)
  • ERC777: initial support for the ERC777 token, which has multiple improvements over ERC20 such as built-in burning, a more straightforward permission system, and optional sender and receiver hooks on transfer (mandatory for contracts!). (#1684)

2.2.0 (2019-03-14)

New features:

  • ERC20Snapshot: create snapshots on demand of the token balances and total supply, to later retrieve and e.g. calculate dividends at a past time. (#1617)
  • SafeERC20: ERC20 contracts with no return value (i.e. that revert on failure) are now supported. (#1655)
  • ERC20: added internal _approve(address owner, address spender, uint256 value), allowing derived contracts to set the allowance of arbitrary accounts. (#1609)
  • ERC20Metadata: added internal _setTokenURI(string memory tokenURI). (#1618)
  • TimedCrowdsale: added internal _extendTime(uint256 newClosingTime) as well as TimedCrowdsaleExtended(uint256 prevClosingTime, uint256 newClosingTime) event allowing to extend the crowdsale, as long as it hasn't already closed.

Improvements:

  • Upgraded the minimum compiler version to v0.5.2: this removes many Solidity warnings that were false positives. (#1606)
  • ECDSA: recover no longer accepts malleable signatures (those using upper-range values for s, or 0/1 for v). (#1622)
  • ERC721's transfers are now more gas efficient due to removal of unnecessary SafeMath calls. (#1610)
  • Fixed variable shadowing issues. (#1606)

Bugfixes:

  • (minor) SafeERC20: safeApprove wasn't properly checking for a zero allowance when attempting to set a non-zero allowance. (#1647)

Breaking changes in drafts:

  • TokenMetadata has been renamed to ERC20Metadata. (#1618)
  • The library Counter has been renamed to Counters and its API has been improved. See an example in ERC721, lines 17 and 204. (#1610)

2.1.3 (2019-02-26)

  • Backported SafeERC20.safeApprove bugfix. (#1647)

2.1.2 (2019-01-17)

  • Removed most of the test suite from the npm package, except PublicRole.behavior.js, which may be useful to users testing their own Roles.

2.1.1 (2019-01-04)

  • Version bump to avoid conflict in the npm registry.

2.1.0 (2019-01-04)

New features:

  • Now targeting the 0.5.x line of Solidity compilers. For 0.4.24 support, use version 2.0 of OpenZeppelin.
  • WhitelistCrowdsale: a crowdsale where only whitelisted accounts (WhitelistedRole) can purchase tokens. Adding or removing accounts from the whitelist is done by whitelist admins (WhitelistAdminRole). Similar to the pre-2.0 WhitelistedCrowdsale. (#1525, #1589)
  • RefundablePostDeliveryCrowdsale: replacement for RefundableCrowdsale (deprecated, see below) where tokens are only granted once the crowdsale ends (if it meets its goal). (#1543)
  • PausableCrowdsale: allows for pausers (PauserRole) to pause token purchases. Other crowdsale operations (e.g. withdrawals and refunds, if applicable) are not affected. (#832)
  • ERC20: transferFrom and _burnFrom now emit Approval events, to represent the token's state comprehensively through events. (#1524)
  • ERC721: added _burn(uint256 tokenId), replacing the similar deprecated function (see below). (#1550)
  • ERC721: added _tokensOfOwner(address owner), allowing to internally retrieve the array of an account's owned tokens. (#1522)
  • Crowdsales: all constructors are now public, meaning it is not necessary to extend these contracts in order to deploy them. The exception is FinalizableCrowdsale, since it is meaningless unless extended. (#1564)
  • SignedSafeMath: added overflow-safe operations for signed integers (int256). (#1559, #1588)

Improvements:

  • The compiler version required by Array was behind the rest of the libray so it was updated to v0.4.24. (#1553)
  • Now conforming to a 4-space indentation code style. (1508)
  • ERC20: more gas efficient due to removed redundant requires. (#1409)
  • ERC721: fixed a bug that prevented internal data structures from being properly cleaned, missing potential gas refunds. (#1539 and #1549)
  • ERC721: general gas savings on transferFrom, _mint and _burn, due to redudant requires and SSTOREs. (#1549)

Bugfixes:

Breaking changes:

Deprecations:

  • ERC721._burn(address owner, uint256 tokenId): due to the owner parameter being unnecessary. (#1550)
  • RefundableCrowdsale: due to trading abuse potential on crowdsales that miss their goal. (#1543)