Commit Graph

70 Commits

Author SHA1 Message Date
28b95ef5be ReentrancyGuard gas optimization (#1996)
* Improve gas efficiency of reentrancyGuard

* Add changelog entry

* Fix ReentrancyGuard test
2019-11-23 20:44:45 -03:00
49042f2b1a feat: add baseTokenURI to ERC721Metadata (#1970)
* feat: add baseTokenURI

* fix: tests

* chore: dev notation

* chore: changelog

* chore: typo

* Remove extra getters, return empty URI by default

* Update docs

* Rename baseTokenURI to baseURI

* Roll back visibility change of tokenURI

* Update changelog entry

* Version setBaseURI docs

* Improve internal names and comments

* Fix compilation errors

* Add an external getter for baseURI
2019-11-15 20:22:37 -03:00
33047ffddc Update ReentrancyGuard for Istanbul Hard Fork (#1992)
* Update ReentrancyGuard for Istanbul Hard Fork

Changes:
Added L37, `_guardCounter = 1;`

Rationale:
The planned _Istanbul Hard Fork_ will implement [EIP 2200](e4d4ea348e/EIPS/eip-2200.md), which implements "net gas metering" for `sstore` operations. If the final value of `_guardCounter` is unchanged relative to the original value of it, a gas refund will be applied and charges for changing the value of `_guardCounter` will effectively not exist. This ends up being cheaper than the current implementation ONLY AFTER Istanbul. Before Istanbul, the added line actually ends up costing more gas.

Note that if `_guardCounter` is `0` initially, the initial cost and subsequent refund will both be larger than if `_guardCounter` is `1` initially. Although in both cases, the net gas cost (`gasCost - gasRefund`) are equal, it's better in terms of cost to have both the gas cost and refund smaller, as there is some limit to the percentage of a gas refund that can actually be realized.

* Update CHANGELOG.md

Added note for change to ReentrancyGuard.sol

* Update ReentrancyGuard.sol

* Update CHANGELOG.md
2019-11-13 14:54:15 -03:00
aa73460a8d Update CHANGELOG.md 2019-11-07 23:09:32 -03:00
a20408a9e0 Update CHANGELOG.md 2019-11-07 23:09:18 -03:00
207f315231 tweak formatting of changelog 2019-11-05 12:59:50 -03:00
c3f2ed8168 tweak instructions on how to upgrade from beta 2019-11-01 15:46:09 -03:00
f4c5ce3009 Add section on how to upgrade from 2.4-beta (#1981)
* add how to upgrade from 2.4-beta

* add how-to

* Update CHANGELOG.md
2019-11-01 15:10:46 -03:00
d839c24e4b Merge branch 'release-v2.4.0' 2019-10-29 17:56:10 -03:00
cdf655f770 2.4.0 2019-10-29 17:44:30 -03:00
f5c95cc5cb add changes to minimum solidity compiler version in the changelog
(cherry picked from commit bddbbe99a7)
2019-10-29 17:41:55 -03:00
bddbbe99a7 add changes to minimum solidity compiler version in the changelog 2019-10-29 17:40:43 -03:00
1eb80ddb22 move changelog entry to new features section
(cherry picked from commit 2d30415373)
2019-10-29 17:21:37 -03:00
1c220e175d Forward all gas on PullPayment withdrawal (#1976)
* Add withdrawWithGas

* Improve docs

* Add changelog entry

* Update contracts/payment/PullPayment.sol

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

* Remove repeated comment

* Update changelog entry

* Fix inline docs

* Fix changelog formatting

(cherry picked from commit d6e10ab786)
2019-10-29 17:21:17 -03:00
a1b3de68c1 fix pr reference number for Address.sendValue
(cherry picked from commit 5702a84429)
2019-10-29 17:20:42 -03:00
b0dbe0fc59 Transfer replacement (#1962)
* Add Address.sendEther

* Add documentation to sendEther

* Add changelog entry

* Rename sendEther to sendValue

(cherry picked from commit 8d166f3e35)
2019-10-29 17:20:18 -03:00
2d30415373 move changelog entry to new features section 2019-10-29 16:58:39 -03:00
d6e10ab786 Forward all gas on PullPayment withdrawal (#1976)
* Add withdrawWithGas

* Improve docs

* Add changelog entry

* Update contracts/payment/PullPayment.sol

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

* Remove repeated comment

* Update changelog entry

* Fix inline docs

* Fix changelog formatting
2019-10-28 20:06:02 -03:00
5702a84429 fix pr reference number for Address.sendValue 2019-10-28 13:20:17 -03:00
8d166f3e35 Transfer replacement (#1962)
* Add Address.sendEther

* Add documentation to sendEther

* Add changelog entry

* Rename sendEther to sendValue
2019-10-25 15:53:16 -03:00
2c11ed59fa Safe Casting Library from uint256 to uintXX (#1926)
* Include Safe Casting Library with complete and exhaustive test-suite.

* linting test file.

* Typo in SafeCast import statement

* Update test/utils/SafeCast.test.js

* Rename `castUXX` to `toUintXX` from suggestion

* Tackling the quick and easy suggestions regarding error string improvements etc.

* typo and changelog update.

* Improve SafeCast tests

* Update test/utils/SafeCast.test.js

* Update test/utils/SafeCast.test.js

* incorrect import

* add SafeCast to docs site

* Update CHANGELOG.md

* Update SafeCast.sol
2019-10-22 13:59:11 -03:00
f9a306bbdf remove release date 2019-08-16 21:31:34 +02:00
c0042cd9d0 Merge branch 'master' into release-v2.4.0 2019-08-16 21:25:51 +02:00
3e33066dde 2.4.0-beta.1 2019-08-16 21:12:05 +02:00
5bcaf7a2d8 remove release date that was wrong 2019-08-16 21:11:07 +02:00
226c6bd8f1 Remove SignatureBouncer from drafts (#1879)
* Remove SignatureBouncer

* Update changelog entry

* Fix coverage

* Update CHANGELOG.md
2019-08-16 15:49:13 -03:00
588b810256 2.4.0-beta.0 2019-08-15 18:50:55 +02:00
0ec1d761aa Initial GSN support (beta) (#1844)
* Add base Context contract

* Add GSNContext and tests

* Add RelayHub deployment to tests

* Add RelayProvider integration, complete GSNContext tests

* Switch dependency to openzeppelin-gsn-provider

* Add default txfee to provider

* Add basic signing recipient

* Sign more values

* Add comment clarifying RelayHub's msg.data

* Make context constructors internal

* Rename SigningRecipient to GSNRecipientSignedData

* Add ERC20Charge recipients

* Harcode RelayHub address into GSNContext

* Fix Solidity linter errors

* Run server from binary, use gsn-helpers to fund it

* Migrate to published @openzeppelin/gsn-helpers

* Silence false-positive compiler warning

* Use GSN helper assertions

* Rename meta-tx to gsn, take out of drafts

* Merge ERC20 charge recipients into a single one

* Rename GSNRecipients to Bouncers

* Add GSNBouncerUtils to decouple the bouncers from GSNRecipient

* Add _upgradeRelayHub

* Store RelayHub address using unstructored storage

* Add IRelayHub

* Add _withdrawDeposits to GSNRecipient

* Add relayHub version to recipient

* Make _acceptRelayedCall and _declineRelayedCall easier to use

* Rename GSNBouncerUtils to GSNBouncerBase, make it IRelayRecipient

* Improve GSNBouncerBase, make pre and post sender-protected and optional

* Fix GSNBouncerERC20Fee, add tests

* Add missing GSNBouncerSignature test

* Override transferFrom in __unstable__ERC20PrimaryAdmin

* Fix gsn dependencies in package.json

* Rhub address slot reduced by 1

* Rename relay hub changed event

* Use released gsn-provider

* Run relayer with short sleep of 1s instead of 100ms

* update package-lock.json

* clear circle cache

* use optimized gsn-provider

* update to latest @openzeppelin/gsn-provider

* replace with gsn dev provider

* remove relay server

* rename arguments in approveFunction

* fix GSNBouncerSignature test

* change gsn txfee

* initialize development provider only once

* update RelayHub interface

* adapt to new IRelayHub.withdraw

* update @openzeppelin/gsn-helpers

* update relayhub singleton address

* fix helper name

* set up gsn provider for coverage too

* lint

* Revert "set up gsn provider for coverage too"

This reverts commit 8a7b5be5f9.

* remove unused code

* add gsn provider to coverage

* move truffle contract options back out

* increase gas limit for coverage

* remove unreachable code

* add more gas for GSNContext test

* fix test suite name

* rename GSNBouncerBase internal API

* remove onlyRelayHub modifier

* add explicit inheritance

* remove redundant event

* update name of bouncers error codes enums

* add basic docs page for gsn contracts

* make gsn directory all caps

* add changelog entry

* lint

* enable test run to fail in coverage
2019-08-12 13:30:03 -03:00
5d34dbecea Functions in SafeMath contract overloaded to accept custom error messages (#1828)
* Imporvement: functions in SafeMath contract overloaded to accept custom error messages.

* CHANGELOG updated, custom error messages added to ERC20, ERC721 and ERC777 for subtraction related exceptions.

* SafeMath overloads for 'add' and 'mul' removed.

* Error messages modified.

* Update CHANGELOG.md
2019-07-29 15:23:34 -03:00
0282c3608d Using extcodehash instead of extcodesize for less gas (#1802)
* Using extcodehash instead of extcodesize for less gas

`extcodehash` uses less gas then `extcodesize`. You can tell which address is a contract by the hash (see EIP-1052).

* Fix

* Add explainer

* Update Address.sol

* add changelog entry
2019-07-08 13:41:55 -03:00
b95d7e7f8a Add a simple wrapper for address. (#1773)
* Updated code style to no more than120 characters per line.

* Unify code comments style with Doxygen-style tags.

* Fix the conflicts.

* Add a return value in the contract ERC20Burnable.

* A Add a wrapper function to change type of address to address payable.

* U Modify Address utils.

* A Add test case for Address.

* U Modify code style in ERC20Burnable.

* Add changelog entry.

* Improved dev docs.
2019-05-31 13:51:58 -03:00
132e442c1f 2.3.0 2019-05-27 12:17:20 -03:00
f7ff3e7e67 Disallow ERC20._transfer from the zero address. (#1752)
* Add requirement of non-zero from to ERC20 transfer.

* Add test for transferFrom zero address to behavior.

* Create ERC20.transfer behavior.

* Add tests for _transfer.

* Add changelog entry.

* Fix linter error.

* Delete repeated test.

* Fix hardcoded error prefix.

* Update CHANGELOG.md

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

* Address review comments.

(cherry picked from commit ad18098d65)
2019-05-16 16:07:37 -03:00
6c2b7c260d Add ERC20 compatibility to ERC777. (#1735)
* Add ERC20 compatibility.

* Reusing ERC20 tests for ERC777.

* Improve documentation.

* Add changelog entry.

* Improved ERC20 behavior tests.

* Add revert reasons to ERC777.

* ERC20 methods allow sending tokens to contracts with no interface.

* Register ERC20 interface.

* Add comment about avoidLockingTokens.

* Improve revert reason string.

* Make ERC777 implement IERC20.

* Fix test revert string.

* Remove unnecesary require.

* Add private _transfer.

* Update contracts/drafts/ERC777/ERC777.sol

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

* Update private helper names.

(cherry picked from commit aa4c9feabd)
2019-05-08 16:15:19 -03:00
4b2229783d fix pr number in changelog
(cherry picked from commit af55a843e3)
2019-04-24 19:35:53 -03:00
ae919629cd Revert Solidity version bump. (#1729)
(cherry picked from commit 67bca857ee)
2019-04-24 19:33:32 -03:00
9d868ee846 Add revert reasons changelog entry. 2019-04-24 11:32:30 -03:00
97a9ca5681 Add a vault to PostDeliveryCrowdsale. (#1721)
* Add a vault to PostDeliveryCrowdsale.

* Add changelog entry.

* Apply suggestions from code review

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

* Rename TokenVault.

* add solhint ignore directive
2019-04-23 19:06:09 -03:00
19c7414052 Bump minimum Solidity version to 0.5.7 (#1724)
* Bump Solidity version to 0.5.7

* Add changelog entry.
2019-04-23 16:18:08 -03:00
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
8b44efd035 add note about Counters rename in changelog (#1703) 2019-04-01 13:24:50 -03:00
308a4c9907 Draft EIP 1820 (#1677)
* Add barebones EIP1820 support.

* Update openzeppelin-test-helpers dependency to have ERC1820 support.

* Add tests for ERC1820.

* Improve inline documentation.

* Add changelog entry.

* Update test-helpers, refactor tests to use new helpers.

* Rename ERC1820 to ERC1820Implementer.

* Improve implementer docstring.

* Remove _implementsInterfaceForAddress.

* update openzeppelin-test-helpers to 0.2.0

* Update contracts/drafts/ERC1820Implementer.sol

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

* Fix how solidity coverage is run to allow for free events.

* Fix coverage testing script.
2019-03-19 15:13:55 -03:00
40d2eb3007 Merge branch 'release-v2.2.0' 2019-03-14 18:46:11 -03:00
7aaf15be59 Add v2.2.0 release date. 2019-03-14 18:43:33 -03:00
9c69df5962 Fix changelog entry. 2019-03-07 14:34:51 -03:00
61c4318c33 Reorder 2.2.0 changelog entries. 2019-03-07 12:46:36 -03:00
79dd498b16 Signature Malleability: (#1622)
* Transaction Malleability:
If you allow for both values 0/1 and 27/28, you allow two different
signatures both resulting in a same valid recovery. (r,s,0/1) and
(r,s,27/28) would both be valid, recover the same public key and sign
the same data. Furthermore, given (r,s,0/1), (r,s,27/28) can be
constructed by anyone.

* Transaction Malleability:
EIP-2 still allows signature malleabality for ecrecover(), remove this
possibility and force the signature to be unique.

* Added a reference to appendix F to the yellow paper and improved
comment.

* better test description for testing the version 0, which returns
a zero address

* Check that the conversion from 0/1 to 27/28 only happens if its 0/1

* improved formatting

* Refactor ECDSA code a bit.

* Refactor ECDSA tests a bit.

* Add changelog entry.

* Add high-s check test.
2019-03-07 12:44:28 -03:00
352ec94579 Add TimedCrowdsale::_extendTime (#1636)
* Add TimedCrowdsale::_extendTime

* Add tests for TimedCrowdsale extending method

* Reverse event arguments order

* Rename method argument

* Refactor TimedCrowdsale test

* Simplify TimedCrowdsaleImpl

* Fix extendTime method behaviour to deny TimedCrowdsale re-opening after it was ended

* Append chengelog

* Update CHANGELOG.md

Co-Authored-By: k06a <k06aaa@gmail.com>

* Update contracts/crowdsale/validation/TimedCrowdsale.sol

Co-Authored-By: k06a <k06aaa@gmail.com>

* Improve tests
2019-03-06 11:38:57 -03:00
0c617b755e fix weird date format (#1663) 2019-03-01 15:36:39 -03:00
41aa39afbc Add no-return-data ERC20 support to SafeERC20. (#1655)
* Add no-return-data ERC20 support to SafeERC20.

* Add changelog entry.

* Replace abi.encodeWithSignature for encodeWithSelector.

* Remove SafeERC20 test code duplication.

* Replace assembly for abi.decode.

* Fix linter errors.
2019-02-28 17:34:46 -03:00