* 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.
7.1 KiB
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 overERC20such 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:ERC20contracts 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 asTimedCrowdsaleExtended(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:recoverno longer accepts malleable signatures (those using upper-range values fors, or 0/1 forv). (#1622)ERC721's transfers are now more gas efficient due to removal of unnecessarySafeMathcalls. (#1610)- Fixed variable shadowing issues. (#1606)
Bugfixes:
- (minor)
SafeERC20:safeApprovewasn't properly checking for a zero allowance when attempting to set a non-zero allowance. (#1647)
Breaking changes in drafts:
TokenMetadatahas been renamed toERC20Metadata. (#1618)- The library
Counterhas been renamed toCountersand its API has been improved. See an example inERC721, lines 17 and 204. (#1610)
2.1.3 (2019-02-26)
- Backported
SafeERC20.safeApprovebugfix. (#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 ownRoles.
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.0WhitelistedCrowdsale. (#1525, #1589)RefundablePostDeliveryCrowdsale: replacement forRefundableCrowdsale(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:transferFromand_burnFromnow emitApprovalevents, 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 isFinalizableCrowdsale, since it is meaningless unless extended. (#1564) SignedSafeMath: added overflow-safe operations for signed integers (int256). (#1559, #1588)
Improvements:
- The compiler version required by
Arraywas behind the rest of the libray so it was updated tov0.4.24. (#1553) - Now conforming to a 4-space indentation code style. (1508)
ERC20: more gas efficient due to removed redundantrequires. (#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 ontransferFrom,_mintand_burn, due to redudantrequires andSSTOREs. (#1549)