Compare commits

...

31 Commits

Author SHA1 Message Date
Github Actions
fd1f7a8a42 Publish
- @0x/contracts-erc20@3.3.54
 - @0x/contracts-test-utils@5.4.44
 - @0x/contracts-treasury@1.4.37
 - @0x/contracts-utils@4.8.35
 - @0x/contracts-zero-ex@0.38.3
 - @0x/contract-addresses@8.0.0
 - @0x/contract-wrappers@13.22.13
 - @0x/protocol-utils@11.17.3
2022-12-12 21:11:50 +00:00
Github Actions
3a03174a92 Updated CHANGELOGS & MD docs 2022-12-12 21:11:47 +00:00
Kyu
f5e34bce3b Remove Kovan and ArbitrumRinkeby from contract-addresses (#630) 2022-12-12 12:55:04 -08:00
Savarn Dontamsetti (Sav)
3f8dbf3fe9 Removing Balancer V2 from Bridge Adapters (#629) 2022-12-12 10:08:15 -05:00
Savarn Dontamsetti (Sav)
b040e55202 chore: removing Aave V2 and Aave V3 from Fantom (#627)
* Removing Aave V2 and Aave V3 from Fantom

* prettier fix for FantomBridgeAdapter.sol
2022-12-01 14:21:21 -05:00
Github Actions
fe0676cec3 Publish
- @0x/contracts-erc20@3.3.53
 - @0x/contracts-test-utils@5.4.43
 - @0x/contracts-treasury@1.4.36
 - @0x/contracts-utils@4.8.34
 - @0x/contracts-zero-ex@0.38.2
 - @0x/contract-addresses@7.4.1
 - @0x/contract-artifacts@3.18.2
 - @0x/contract-wrappers@13.22.12
 - @0x/protocol-utils@11.17.2
2022-11-23 20:25:30 +00:00
Github Actions
b697202e19 Updated CHANGELOGS & MD docs 2022-11-23 20:25:26 +00:00
Savarn Dontamsetti (Sav)
09bc48671c feat: adding AAVE V3 to selected Bridge Adapters [TKR-659] (#624)
* adding AAVE V3 to selected Bridge Adapters

* prettier fix

* Adding L2 optimizations for Arbitrum and Optimism

* Adding l2 encoded parameters to Aave V3 MixIn

* Removing L2 Encoder interface from MixinAaveV3.sol

* Updating FQT addresses

* prettier fix for MixinAaveV3.sol
2022-11-23 15:09:18 -05:00
Savarn Dontamsetti (Sav)
d31cc43ed6 Revert "feat: adding AAVE V3 to selected Bridge Adapters [TKR-659] (#614)" (#623)
This reverts commit 372f23156b.
2022-11-23 14:49:38 -05:00
Savarn Dontamsetti (Sav)
372f23156b feat: adding AAVE V3 to selected Bridge Adapters [TKR-659] (#614)
* adding AAVE V3 to selected Bridge Adapters

* prettier fix

* Adding L2 optimizations for Arbitrum and Optimism

* Adding l2 encoded parameters to Aave V3 MixIn

* Removing L2 Encoder interface from MixinAaveV3.sol

* Updating FQT addresses
2022-11-23 11:34:55 -05:00
Elena
010a926d79 Upgrade prettier-plugin-solidity to stable v1 (#622)
* Upgrade prettier-plugin-solidity to stable v1

* Prettier format contracts
2022-11-23 11:53:40 +02:00
Elena
0000143b4e Check for broken links in markdown (#621)
* Add check-md package and command

* Remove broken references to TESTING.md

* Fix broken link in contributing.md

* Fix staking docs headings

* Add checks for broken links to CI
2022-11-20 11:59:21 +02:00
Elena
22684ff5ba Switch contributor instructions to use github draft mode for PRs (#618)
instead of WIP title
2022-11-20 11:39:45 +02:00
Elena
4d9b68d527 Removes references to tslint (#619)
* Removes references to tslint in contract-wrappers
which are obsoleted since https://github.com/0xProject/protocol/pull/584

* Remove tslint references in contracts/utils and test utils
obsoleted by https://github.com/0xProject/protocol/pull/589

* Remove tslint references in contracts/zeroex and test utils
obsoleted by https://github.com/0xProject/protocol/pull/587

* Remove other obsoleted tslint references

* Update contributing guidelines with eslint

* Fix prettier errors
2022-11-19 17:52:00 +02:00
Kyu
957853788d chore: Delete asset-swapper [GOV-6] (#617)
* Delete `asset-swapper`

* Remove `package/asset-swapper` in CODEOWNERS
2022-11-15 14:02:33 -08:00
Github Actions
28193479c6 Publish
- @0x/contracts-erc20@3.3.52
 - @0x/contracts-test-utils@5.4.42
 - @0x/contracts-treasury@1.4.35
 - @0x/contracts-utils@4.8.33
 - @0x/contracts-zero-ex@0.38.1
 - @0x/asset-swapper@16.66.19
 - @0x/contract-addresses@7.4.0
 - @0x/contract-wrappers@13.22.11
 - @0x/protocol-utils@11.17.1
2022-11-15 01:50:44 +00:00
Github Actions
70212534a1 Updated CHANGELOGS & MD docs 2022-11-15 01:50:40 +00:00
Kyu
ea9575e94d Update Polygon FillQuoteTransformer to support Solidly (and its forks) (#616) 2022-11-14 16:01:08 -08:00
Elena
ca0b074893 Add Solidity linter (#608)
* Add solhint and basic configuration

* Add solhint-plugin-prettier to run prettier via solhint

* Remove all solhint-disable rules in contracts

* Turn off compiler version errors

* Fix max-line-length linter errors

* Fix linting and prettier issues in contracts

* Add global lint command to run both ts and solidity linter
2022-11-08 16:12:42 +02:00
Github Actions
b3281bfdb1 Publish
- @0x/contracts-erc20@3.3.51
 - @0x/contracts-test-utils@5.4.41
 - @0x/contracts-treasury@1.4.34
 - @0x/contracts-utils@4.8.32
 - @0x/contracts-zero-ex@0.38.0
 - @0x/asset-swapper@16.66.18
 - @0x/contract-addresses@7.3.0
 - @0x/contract-wrappers@13.22.10
 - @0x/protocol-utils@11.17.0
2022-11-05 00:19:12 +00:00
Github Actions
1516bf6a24 Updated CHANGELOGS & MD docs 2022-11-05 00:19:08 +00:00
Kyu
ab19bb41c4 Update fee-related transformer addresses (#615) 2022-11-04 17:02:44 -07:00
Kyu
7368aded88 Rename VelodromeMixin to SolidlyMixin and add Solidly support to PolygonBridgeAdapter (#612) 2022-11-04 14:41:35 -07:00
Github Actions
b1f856e7a4 Publish
- @0x/contracts-erc20@3.3.50
 - @0x/contracts-test-utils@5.4.40
 - @0x/contracts-treasury@1.4.33
 - @0x/contracts-utils@4.8.31
 - @0x/contracts-zero-ex@0.37.10
 - @0x/asset-swapper@16.66.17
 - @0x/contract-addresses@7.2.0
 - @0x/contract-wrappers@13.22.9
 - @0x/protocol-utils@11.16.17
2022-11-02 22:16:58 +00:00
Github Actions
9d42018fc6 Updated CHANGELOGS & MD docs 2022-11-02 22:16:54 +00:00
Noah Khamliche
624cbebe27 added new RFQTV2 compliant fqt (#611)
* added new RFQTV2 compliant fqt

* update changelog
2022-11-02 14:58:36 -07:00
Kyu
4ace7c8c43 fix: Migrate transformers to smart contract compatible unsafeTransformerTransfer [TKR-587] (#594)
* Use `call` instead of `transfer` in `LibERC20Transformer`

* Since `transfer` only forwards 2300 gas it can cause an `out of gas`
revert when the receipient is a smart contract.

* Add `unsafeTransformerTransfer` and migrate `transformers` to use
`unsafeTransformerTransfer` instead of `transformerTransfer`

* Update .prettierignore
2022-10-28 11:39:22 -07:00
Github Actions
66846c8aec Publish
- @0x/contracts-erc20@3.3.49
 - @0x/contracts-test-utils@5.4.39
 - @0x/contracts-treasury@1.4.32
 - @0x/contracts-utils@4.8.30
 - @0x/contracts-zero-ex@0.37.9
 - @0x/asset-swapper@16.66.16
 - @0x/contract-addresses@7.1.0
 - @0x/contract-wrappers@13.22.8
 - @0x/protocol-utils@11.16.16
2022-10-24 20:57:19 +00:00
Github Actions
33e38fd0a1 Updated CHANGELOGS & MD docs 2022-10-24 20:57:15 +00:00
Kyu
5a6df5a39a Add BalancerV2Batch support in Fantom FillQuoteTransformer (#607) 2022-10-24 13:39:06 -07:00
Savarn Dontamsetti (Sav)
592e7d34c9 adding BalancerV2 Batch support for Fantom Bridge Adapter (#606) 2022-10-24 14:15:11 -04:00
396 changed files with 2007 additions and 41962 deletions

View File

@@ -268,6 +268,8 @@ jobs:
command: yarn deps_versions:ci command: yarn deps_versions:ci
- run: - run:
command: yarn diff_md_docs:ci command: yarn diff_md_docs:ci
- run:
command: yarn test:links
submit-coverage: submit-coverage:
docker: docker:
- image: node:16 - image: node:16

View File

@@ -60,6 +60,7 @@ lib
/contracts/dev-utils/test/generated-wrappers /contracts/dev-utils/test/generated-wrappers
/contracts/dev-utils/generated-artifacts /contracts/dev-utils/generated-artifacts
/contracts/dev-utils/test/generated-artifacts /contracts/dev-utils/test/generated-artifacts
/contracts/zero-ex/foundry-artifacts
/contracts/zero-ex/generated-wrappers /contracts/zero-ex/generated-wrappers
/contracts/zero-ex/test/generated-wrappers /contracts/zero-ex/test/generated-wrappers
/contracts/zero-ex/generated-artifacts /contracts/zero-ex/generated-artifacts

17
.solhint.json Normal file
View File

@@ -0,0 +1,17 @@
{
"extends": "solhint:recommended",
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error",
"avoid-low-level-calls": "off",
"avoid-tx-origin": "warn",
"code-complexity": "off",
"const-name-snakecase": "error",
"function-max-lines": "off",
"max-line-length": ["error", 120],
"no-inline-assembly": "off",
"quotes": ["error", "double"],
"no-empty-blocks": "off",
"compiler-version": "off"
}
}

1
.solhintignore Normal file
View File

@@ -0,0 +1 @@
contracts/erc20/contracts/src/ZRXToken.sol

View File

@@ -6,8 +6,6 @@
# https://git-scm.com/docs/gitignore#_pattern_format # https://git-scm.com/docs/gitignore#_pattern_format
packages/asset-swapper/ @dekz @dextracker @kyu-c
# Dev tools & setup # Dev tools & setup
.circleci/ @dekz .circleci/ @dekz

View File

@@ -8,13 +8,13 @@ We welcome contributions from anyone on the internet and are grateful for even t
2. Clone your fork 2. Clone your fork
3. Follow the [installation & build steps](https://github.com/0xProject/0x-tools#install-dependencies) in the repo's top-level README. 3. Follow the [installation & build steps](https://github.com/0xProject/0x-tools#install-dependencies) in the repo's top-level README.
4. Setup the recommended [Development Tooling](#development-tooling). 4. Setup the recommended [Development Tooling](#development-tooling).
5. Open a PR with the `[WIP]` flag against the `development` branch and describe the change you are intending to undertake in the PR description. (see [our branch naming conventions](#branch-structure)) 5. Open a [draft PR](https://github.blog/2019-02-14-introducing-draft-pull-requests/) against the `development` branch and describe the change you are intending to undertake in the PR description. (see [our branch naming conventions](#branch-structure))
Before removing the `[WIP]` tag and submitting the PR for review, make sure: Before making the PR "Ready for review", make sure:
- It passes our linter checks (`yarn lint`) - It passes our linter checks (`yarn lint`)
- It is properly formatted with Prettier (`yarn prettier`) - It is properly formatted with Prettier (`yarn prettier`)
- It passes our continuous integration tests (See: [Enabling code coverage checks on your fork](#enabling-code-coverage-checks-on-your-fork) for instructions on getting the `submit-coverage` test to pass on forks) - It passes our continuous integration tests (See: [Enabling code coverage checks on your fork](#fix-submit-coverage-ci-failure) for instructions on getting the `submit-coverage` test to pass on forks)
- You've created/updated the corresponding [CHANGELOG](#CHANGELOGs) entries. - You've created/updated the corresponding [CHANGELOG](#CHANGELOGs) entries.
- Your changes have sufficient test coverage (e.g regression tests have been added for bug fixes) - Your changes have sufficient test coverage (e.g regression tests have been added for bug fixes)
@@ -59,16 +59,14 @@ We strongly recommend you use the [VSCode](https://code.visualstudio.com/) text
#### Linter #### Linter
We use [TSLint](https://palantir.github.io/tslint/) with [custom configs](https://github.com/0xProject/0x-tools/tree/development/packages/tslint-config) to keep our code-style consistent. We use [ESLint](https://eslint.org/docs/latest/) to keep our code-style consistent.
Use `yarn:lint` to lint the entire monorepo, and `PKG={PACKAGE_NAME} yarn lint` to lint a specific package. Use `yarn lint` to lint the entire monorepo, and `PKG={PACKAGE_NAME} yarn lint` to lint a specific package.
If you want to change a rule, or add a custom rule, please make these changes to our [tslint-config](https://github.com/0xProject/0x-tools/tree/development/packages/tslint-config) package. All other packages have it as a dependency.
Integrate it into your text editor: Integrate it into your text editor:
- VSCode: [vscode-tslint](https://marketplace.visualstudio.com/items?itemName=eg2.tslint) - VSCode: [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
- Atom: [linter-tslint](https://atom.io/packages/linter-tslint) - Atom: [ESLint](https://atom.io/packages/eslint)
#### Auto-formatter #### Auto-formatter

View File

@@ -20,7 +20,6 @@
<!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] Prefix PR title with `[WIP]` if necessary.
- [ ] Add tests to cover changes as needed. - [ ] Add tests to cover changes as needed.
- [ ] Update documentation as needed. - [ ] Update documentation as needed.
- [ ] Add new entries to the relevant CHANGELOG.jsons. - [ ] Add new entries to the relevant CHANGELOG.jsons.

View File

@@ -1,4 +1,58 @@
[ [
{
"timestamp": 1670879498,
"version": "3.3.54",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1669235113,
"version": "3.3.53",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1668477029,
"version": "3.3.52",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667607537,
"version": "3.3.51",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667427402,
"version": "3.3.50",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1666645023,
"version": "3.3.49",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{ {
"timestamp": 1666381417, "timestamp": 1666381417,
"version": "3.3.48", "version": "3.3.48",

View File

@@ -5,6 +5,30 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v3.3.54 - _December 12, 2022_
* Dependencies updated
## v3.3.53 - _November 23, 2022_
* Dependencies updated
## v3.3.52 - _November 15, 2022_
* Dependencies updated
## v3.3.51 - _November 5, 2022_
* Dependencies updated
## v3.3.50 - _November 2, 2022_
* Dependencies updated
## v3.3.49 - _October 24, 2022_
* Dependencies updated
## v3.3.48 - _October 21, 2022_ ## v3.3.48 - _October 21, 2022_
* Dependencies updated * Dependencies updated

View File

@@ -67,7 +67,3 @@ yarn lint
```bash ```bash
yarn test yarn test
``` ```
#### Testing options
Contracts testing options like coverage, profiling, revert traces or backing node choosing - are described [here](../TESTING.md).

View File

@@ -47,11 +47,7 @@ contract ERC20Token is IERC20Token {
/// @param _to The address of the recipient /// @param _to The address of the recipient
/// @param _value The amount of token to be transferred /// @param _value The amount of token to be transferred
/// @return True if transfer was successful /// @return True if transfer was successful
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
address _from,
address _to,
uint256 _value
) external returns (bool) {
require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE"); require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE");
require(allowed[_from][msg.sender] >= _value, "ERC20_INSUFFICIENT_ALLOWANCE"); require(allowed[_from][msg.sender] >= _value, "ERC20_INSUFFICIENT_ALLOWANCE");
require(balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW"); require(balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW");

View File

@@ -31,11 +31,7 @@ library LibERC20Token {
/// @param token The address of the token contract. /// @param token The address of the token contract.
/// @param spender The address that receives an allowance. /// @param spender The address that receives an allowance.
/// @param allowance The allowance to set. /// @param allowance The allowance to set.
function approve( function approve(address token, address spender, uint256 allowance) internal {
address token,
address spender,
uint256 allowance
) internal {
bytes memory callData = abi.encodeWithSelector(IERC20Token(0).approve.selector, spender, allowance); bytes memory callData = abi.encodeWithSelector(IERC20Token(0).approve.selector, spender, allowance);
_callWithOptionalBooleanResult(token, callData); _callWithOptionalBooleanResult(token, callData);
} }
@@ -47,11 +43,7 @@ library LibERC20Token {
/// @param token The address of the token contract. /// @param token The address of the token contract.
/// @param spender The address that receives an allowance. /// @param spender The address that receives an allowance.
/// @param amount The minimum allowance needed. /// @param amount The minimum allowance needed.
function approveIfBelow( function approveIfBelow(address token, address spender, uint256 amount) internal {
address token,
address spender,
uint256 amount
) internal {
if (IERC20Token(token).allowance(address(this), spender) < amount) { if (IERC20Token(token).allowance(address(this), spender) < amount) {
approve(token, spender, uint256(-1)); approve(token, spender, uint256(-1));
} }
@@ -63,11 +55,7 @@ library LibERC20Token {
/// @param token The address of the token contract. /// @param token The address of the token contract.
/// @param to The address that receives the tokens /// @param to The address that receives the tokens
/// @param amount Number of tokens to transfer. /// @param amount Number of tokens to transfer.
function transfer( function transfer(address token, address to, uint256 amount) internal {
address token,
address to,
uint256 amount
) internal {
bytes memory callData = abi.encodeWithSelector(IERC20Token(0).transfer.selector, to, amount); bytes memory callData = abi.encodeWithSelector(IERC20Token(0).transfer.selector, to, amount);
_callWithOptionalBooleanResult(token, callData); _callWithOptionalBooleanResult(token, callData);
} }
@@ -79,12 +67,7 @@ library LibERC20Token {
/// @param from The owner of the tokens. /// @param from The owner of the tokens.
/// @param to The address that receives the tokens /// @param to The address that receives the tokens
/// @param amount Number of tokens to transfer. /// @param amount Number of tokens to transfer.
function transferFrom( function transferFrom(address token, address from, address to, uint256 amount) internal {
address token,
address from,
address to,
uint256 amount
) internal {
bytes memory callData = abi.encodeWithSelector(IERC20Token(0).transferFrom.selector, from, to, amount); bytes memory callData = abi.encodeWithSelector(IERC20Token(0).transferFrom.selector, from, to, amount);
_callWithOptionalBooleanResult(token, callData); _callWithOptionalBooleanResult(token, callData);
} }
@@ -107,11 +90,7 @@ library LibERC20Token {
/// @param owner The owner of the tokens. /// @param owner The owner of the tokens.
/// @param spender The address the spender. /// @param spender The address the spender.
/// @return allowance The allowance for a token, owner, and spender. /// @return allowance The allowance for a token, owner, and spender.
function allowance( function allowance(address token, address owner, address spender) internal view returns (uint256 allowance_) {
address token,
address owner,
address spender
) internal view returns (uint256 allowance_) {
(bool didSucceed, bytes memory resultData) = token.staticcall( (bool didSucceed, bytes memory resultData) = token.staticcall(
abi.encodeWithSelector(IERC20Token(0).allowance.selector, owner, spender) abi.encodeWithSelector(IERC20Token(0).allowance.selector, owner, spender)
); );

View File

@@ -21,18 +21,15 @@ pragma solidity ^0.5.9;
import "./ERC20Token.sol"; import "./ERC20Token.sol";
contract UnlimitedAllowanceERC20Token is ERC20Token { contract UnlimitedAllowanceERC20Token is ERC20Token {
uint256 internal constant MAX_UINT = 2**256 - 1; uint256 internal constant MAX_UINT = 2 ** 256 - 1;
/// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance. See https://github.com/ethereum/EIPs/issues/717 /// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.
// See https://github.com/ethereum/EIPs/issues/717
/// @param _from Address to transfer from. /// @param _from Address to transfer from.
/// @param _to Address to transfer to. /// @param _to Address to transfer to.
/// @param _value Amount to transfer. /// @param _value Amount to transfer.
/// @return Success of transfer. /// @return Success of transfer.
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
address _from,
address _to,
uint256 _value
) external returns (bool) {
uint256 allowance = allowed[_from][msg.sender]; uint256 allowance = allowed[_from][msg.sender];
require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE"); require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE");
require(allowance >= _value, "ERC20_INSUFFICIENT_ALLOWANCE"); require(allowance >= _value, "ERC20_INSUFFICIENT_ALLOWANCE");

View File

@@ -13,7 +13,6 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// solhint-disable
pragma solidity ^0.5.9; pragma solidity ^0.5.9;
contract WETH9 { contract WETH9 {
@@ -59,11 +58,7 @@ contract WETH9 {
return transferFrom(msg.sender, dst, wad); return transferFrom(msg.sender, dst, wad);
} }
function transferFrom( function transferFrom(address src, address dst, uint256 wad) public returns (bool) {
address src,
address dst,
uint256 wad
) public returns (bool) {
require(balanceOf[src] >= wad); require(balanceOf[src] >= wad);
if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) { if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {

View File

@@ -37,11 +37,7 @@ contract Token {
/// @param _to The address of the recipient /// @param _to The address of the recipient
/// @param _value The amount of token to be transferred /// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not /// @return Whether the transfer was successful or not
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}
address _from,
address _to,
uint256 _value
) returns (bool success) {}
/// @notice `msg.sender` approves `_addr` to spend `_value` tokens /// @notice `msg.sender` approves `_addr` to spend `_value` tokens
/// @param _spender The address of the account able to transfer the tokens /// @param _spender The address of the account able to transfer the tokens
@@ -71,11 +67,7 @@ contract ERC20Token is Token {
} }
} }
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
address _from,
address _to,
uint256 _value
) returns (bool) {
if ( if (
balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value >= balances[_to] balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value >= balances[_to]
) { ) {
@@ -109,18 +101,14 @@ contract ERC20Token is Token {
} }
contract UnlimitedAllowanceToken is ERC20Token { contract UnlimitedAllowanceToken is ERC20Token {
uint256 constant MAX_UINT = 2**256 - 1; uint256 constant MAX_UINT = 2 ** 256 - 1;
/// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance. /// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.
/// @param _from Address to transfer from. /// @param _from Address to transfer from.
/// @param _to Address to transfer to. /// @param _to Address to transfer to.
/// @param _value Amount to transfer. /// @param _value Amount to transfer.
/// @return Success of transfer. /// @return Success of transfer.
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
address _from,
address _to,
uint256 _value
) public returns (bool) {
uint256 allowance = allowed[_from][msg.sender]; uint256 allowance = allowed[_from][msg.sender];
if (balances[_from] >= _value && allowance >= _value && balances[_to] + _value >= balances[_to]) { if (balances[_from] >= _value && allowance >= _value && balances[_to] + _value >= balances[_to]) {
balances[_to] += _value; balances[_to] += _value;
@@ -137,14 +125,11 @@ contract UnlimitedAllowanceToken is ERC20Token {
} }
contract ZRXToken is UnlimitedAllowanceToken { contract ZRXToken is UnlimitedAllowanceToken {
// solhint-disable const-name-snakecase
uint8 public constant decimals = 18; uint8 public constant decimals = 18;
uint256 public totalSupply = 10**27; // 1 billion tokens, 18 decimal places uint256 public totalSupply = 10 ** 27; // 1 billion tokens, 18 decimal places
string public constant name = "0x Protocol Token"; string public constant name = "0x Protocol Token";
string public constant symbol = "ZRX"; string public constant symbol = "ZRX";
// solhint-enableconst-name-snakecase
function ZRXToken() public { function ZRXToken() public {
balances[msg.sender] = totalSupply; balances[msg.sender] = totalSupply;
} }

View File

@@ -19,7 +19,6 @@
pragma solidity ^0.5.9; pragma solidity ^0.5.9;
contract IERC20Token { contract IERC20Token {
// solhint-disable no-simple-event-func-name
event Transfer(address indexed _from, address indexed _to, uint256 _value); event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value);
@@ -35,11 +34,7 @@ contract IERC20Token {
/// @param _to The address of the recipient /// @param _to The address of the recipient
/// @param _value The amount of token to be transferred /// @param _value The amount of token to be transferred
/// @return True if transfer was successful /// @return True if transfer was successful
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
address _from,
address _to,
uint256 _value
) external returns (bool);
/// @dev `msg.sender` approves `_spender` to spend `_value` tokens /// @dev `msg.sender` approves `_spender` to spend `_value` tokens
/// @param _spender The address of the account able to transfer the tokens /// @param _spender The address of the account able to transfer the tokens

View File

@@ -20,7 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
interface IERC20TokenV06 { interface IERC20TokenV06 {
// solhint-disable no-simple-event-func-name
event Transfer(address indexed from, address indexed to, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value);
@@ -36,11 +35,7 @@ interface IERC20TokenV06 {
/// @param to The address of the recipient /// @param to The address of the recipient
/// @param value The amount of token to be transferred /// @param value The amount of token to be transferred
/// @return True if transfer was successful /// @return True if transfer was successful
function transferFrom( function transferFrom(address from, address to, uint256 value) external returns (bool);
address from,
address to,
uint256 value
) external returns (bool);
/// @dev `msg.sender` approves `spender` to spend `value` tokens /// @dev `msg.sender` approves `spender` to spend `value` tokens
/// @param spender The address of the account able to transfer the tokens /// @param spender The address of the account able to transfer the tokens

View File

@@ -31,11 +31,7 @@ library LibERC20TokenV06 {
/// @param token The address of the token contract. /// @param token The address of the token contract.
/// @param spender The address that receives an allowance. /// @param spender The address that receives an allowance.
/// @param allowance The allowance to set. /// @param allowance The allowance to set.
function compatApprove( function compatApprove(IERC20TokenV06 token, address spender, uint256 allowance) internal {
IERC20TokenV06 token,
address spender,
uint256 allowance
) internal {
bytes memory callData = abi.encodeWithSelector(token.approve.selector, spender, allowance); bytes memory callData = abi.encodeWithSelector(token.approve.selector, spender, allowance);
_callWithOptionalBooleanResult(address(token), callData); _callWithOptionalBooleanResult(address(token), callData);
} }
@@ -46,11 +42,7 @@ library LibERC20TokenV06 {
/// @param token The address of the token contract. /// @param token The address of the token contract.
/// @param spender The address that receives an allowance. /// @param spender The address that receives an allowance.
/// @param amount The minimum allowance needed. /// @param amount The minimum allowance needed.
function approveIfBelow( function approveIfBelow(IERC20TokenV06 token, address spender, uint256 amount) internal {
IERC20TokenV06 token,
address spender,
uint256 amount
) internal {
if (token.allowance(address(this), spender) < amount) { if (token.allowance(address(this), spender) < amount) {
compatApprove(token, spender, uint256(-1)); compatApprove(token, spender, uint256(-1));
} }
@@ -61,11 +53,7 @@ library LibERC20TokenV06 {
/// @param token The address of the token contract. /// @param token The address of the token contract.
/// @param to The address that receives the tokens /// @param to The address that receives the tokens
/// @param amount Number of tokens to transfer. /// @param amount Number of tokens to transfer.
function compatTransfer( function compatTransfer(IERC20TokenV06 token, address to, uint256 amount) internal {
IERC20TokenV06 token,
address to,
uint256 amount
) internal {
bytes memory callData = abi.encodeWithSelector(token.transfer.selector, to, amount); bytes memory callData = abi.encodeWithSelector(token.transfer.selector, to, amount);
_callWithOptionalBooleanResult(address(token), callData); _callWithOptionalBooleanResult(address(token), callData);
} }
@@ -76,12 +64,7 @@ library LibERC20TokenV06 {
/// @param from The owner of the tokens. /// @param from The owner of the tokens.
/// @param to The address that receives the tokens /// @param to The address that receives the tokens
/// @param amount Number of tokens to transfer. /// @param amount Number of tokens to transfer.
function compatTransferFrom( function compatTransferFrom(IERC20TokenV06 token, address from, address to, uint256 amount) internal {
IERC20TokenV06 token,
address from,
address to,
uint256 amount
) internal {
bytes memory callData = abi.encodeWithSelector(token.transferFrom.selector, from, to, amount); bytes memory callData = abi.encodeWithSelector(token.transferFrom.selector, from, to, amount);
_callWithOptionalBooleanResult(address(token), callData); _callWithOptionalBooleanResult(address(token), callData);
} }

View File

@@ -30,12 +30,7 @@ contract DummyERC20Token is Ownable, MintableERC20Token {
uint256 public decimals; uint256 public decimals;
uint256 public constant MAX_MINT_AMOUNT = 10000000000000000000000; uint256 public constant MAX_MINT_AMOUNT = 10000000000000000000000;
constructor( constructor(string memory _name, string memory _symbol, uint256 _decimals, uint256 _totalSupply) public {
string memory _name,
string memory _symbol,
uint256 _decimals,
uint256 _totalSupply
) public {
name = _name; name = _name;
symbol = _symbol; symbol = _symbol;
decimals = _decimals; decimals = _decimals;

View File

@@ -20,7 +20,6 @@ pragma solidity ^0.5.5;
import "./DummyERC20Token.sol"; import "./DummyERC20Token.sol";
// solhint-disable no-empty-blocks
contract DummyMultipleReturnERC20Token is DummyERC20Token { contract DummyMultipleReturnERC20Token is DummyERC20Token {
constructor( constructor(
string memory _name, string memory _name,
@@ -33,14 +32,11 @@ contract DummyMultipleReturnERC20Token is DummyERC20Token {
/// @param _from The address of the sender /// @param _from The address of the sender
/// @param _to The address of the recipient /// @param _to The address of the recipient
/// @param _value The amount of token to be transferred /// @param _value The amount of token to be transferred
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
address _from,
address _to,
uint256 _value
) external returns (bool) {
emit Transfer(_from, _to, _value); emit Transfer(_from, _to, _value);
// HACK: This contract will not compile if we remove `returns (bool)`, so we manually return 64 bytes (equiavalent to true, true) // HACK: This contract will not compile if we remove `returns (bool)`, so we manually return 64 bytes
// (equiavalent to true, true)
assembly { assembly {
mstore(0, 1) mstore(0, 1)
mstore(32, 1) mstore(32, 1)

View File

@@ -20,7 +20,6 @@ pragma solidity ^0.5.5;
import "./DummyERC20Token.sol"; import "./DummyERC20Token.sol";
// solhint-disable no-empty-blocks
contract DummyNoReturnERC20Token is DummyERC20Token { contract DummyNoReturnERC20Token is DummyERC20Token {
constructor( constructor(
string memory _name, string memory _name,
@@ -51,11 +50,7 @@ contract DummyNoReturnERC20Token is DummyERC20Token {
/// @param _from The address of the sender /// @param _from The address of the sender
/// @param _to The address of the recipient /// @param _to The address of the recipient
/// @param _value The amount of token to be transferred /// @param _value The amount of token to be transferred
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
address _from,
address _to,
uint256 _value
) external returns (bool) {
require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE"); require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE");
require(allowed[_from][msg.sender] >= _value, "ERC20_INSUFFICIENT_ALLOWANCE"); require(allowed[_from][msg.sender] >= _value, "ERC20_INSUFFICIENT_ALLOWANCE");
require(balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW"); require(balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW");

View File

@@ -29,11 +29,7 @@ contract TestLibERC20TokenTarget {
bytes private _revertData; bytes private _revertData;
bytes private _returnData; bytes private _returnData;
function setBehavior( function setBehavior(bool shouldRevert, bytes calldata revertData, bytes calldata returnData) external {
bool shouldRevert,
bytes calldata revertData,
bytes calldata returnData
) external {
_shouldRevert = shouldRevert; _shouldRevert = shouldRevert;
_revertData = revertData; _revertData = revertData;
_returnData = returnData; _returnData = returnData;
@@ -49,11 +45,7 @@ contract TestLibERC20TokenTarget {
_execute(); _execute();
} }
function transferFrom( function transferFrom(address from, address to, uint256 amount) external returns (bool) {
address from,
address to,
uint256 amount
) external returns (bool) {
emit TransferFromCalled(from, to, amount); emit TransferFromCalled(from, to, amount);
_execute(); _execute();
} }

View File

@@ -20,8 +20,6 @@ pragma solidity ^0.5.5;
import "./DummyERC20Token.sol"; import "./DummyERC20Token.sol";
// solhint-disable no-empty-blocks
// solhint-disable no-unused-vars
contract UntransferrableDummyERC20Token is DummyERC20Token { contract UntransferrableDummyERC20Token is DummyERC20Token {
constructor( constructor(
string memory _name, string memory _name,
@@ -34,11 +32,7 @@ contract UntransferrableDummyERC20Token is DummyERC20Token {
/// @param _from The address of the sender /// @param _from The address of the sender
/// @param _to The address of the recipient /// @param _to The address of the recipient
/// @param _value The amount of token to be transferred /// @param _value The amount of token to be transferred
function transferFrom( function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
address _from,
address _to,
uint256 _value
) external returns (bool) {
require(false, "TRANSFER_DISABLED"); require(false, "TRANSFER_DISABLED");
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@0x/contracts-erc20", "name": "@0x/contracts-erc20",
"version": "3.3.48", "version": "3.3.54",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@@ -52,8 +52,8 @@
"devDependencies": { "devDependencies": {
"@0x/abi-gen": "^5.8.1", "@0x/abi-gen": "^5.8.1",
"@0x/contracts-gen": "^2.0.48", "@0x/contracts-gen": "^2.0.48",
"@0x/contracts-test-utils": "^5.4.38", "@0x/contracts-test-utils": "^5.4.44",
"@0x/contracts-utils": "^4.8.29", "@0x/contracts-utils": "^4.8.35",
"@0x/dev-utils": "^5.0.0", "@0x/dev-utils": "^5.0.0",
"@0x/sol-compiler": "^4.8.2", "@0x/sol-compiler": "^4.8.2",
"@0x/ts-doc-gen": "^0.0.28", "@0x/ts-doc-gen": "^0.0.28",

View File

@@ -1,4 +1,58 @@
[ [
{
"timestamp": 1670879498,
"version": "5.4.44",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1669235113,
"version": "5.4.43",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1668477029,
"version": "5.4.42",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667607537,
"version": "5.4.41",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667427402,
"version": "5.4.40",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1666645023,
"version": "5.4.39",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{ {
"timestamp": 1666381417, "timestamp": 1666381417,
"version": "5.4.38", "version": "5.4.38",

View File

@@ -5,6 +5,30 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v5.4.44 - _December 12, 2022_
* Dependencies updated
## v5.4.43 - _November 23, 2022_
* Dependencies updated
## v5.4.42 - _November 15, 2022_
* Dependencies updated
## v5.4.41 - _November 5, 2022_
* Dependencies updated
## v5.4.40 - _November 2, 2022_
* Dependencies updated
## v5.4.39 - _October 24, 2022_
* Dependencies updated
## v5.4.38 - _October 21, 2022_ ## v5.4.38 - _October 21, 2022_
* Dependencies updated * Dependencies updated

View File

@@ -1,6 +1,6 @@
{ {
"name": "@0x/contracts-test-utils", "name": "@0x/contracts-test-utils",
"version": "5.4.38", "version": "5.4.44",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@@ -46,7 +46,7 @@
"dependencies": { "dependencies": {
"@0x/assert": "^3.0.35", "@0x/assert": "^3.0.35",
"@0x/base-contract": "^7.0.0", "@0x/base-contract": "^7.0.0",
"@0x/contract-addresses": "^7.0.0", "@0x/contract-addresses": "^8.0.0",
"@0x/dev-utils": "^5.0.0", "@0x/dev-utils": "^5.0.0",
"@0x/json-schemas": "^6.4.4", "@0x/json-schemas": "^6.4.4",
"@0x/order-utils": "^10.4.28", "@0x/order-utils": "^10.4.28",

View File

@@ -35,7 +35,6 @@ export class LogDecoder {
} }
public decodeLogOrThrow<ArgsType extends DecodedLogArgs>(log: LogEntry): LogWithDecodedArgs<ArgsType> | RawLog { public decodeLogOrThrow<ArgsType extends DecodedLogArgs>(log: LogEntry): LogWithDecodedArgs<ArgsType> | RawLog {
const logWithDecodedArgsOrLog = this._abiDecoder.tryToDecodeLogOrNoop(log); const logWithDecodedArgsOrLog = this._abiDecoder.tryToDecodeLogOrNoop(log);
// tslint:disable-next-line:no-unnecessary-type-assertion
if ((logWithDecodedArgsOrLog as LogWithDecodedArgs<ArgsType>).args === undefined) { if ((logWithDecodedArgsOrLog as LogWithDecodedArgs<ArgsType>).args === undefined) {
throw new Error(`Unable to decode log: ${JSON.stringify(log)}`); throw new Error(`Unable to decode log: ${JSON.stringify(log)}`);
} }

View File

@@ -2,8 +2,6 @@ import { LogEntry, LogWithDecodedArgs, TransactionReceiptWithDecodedLogs } from
import { expect } from './chai_setup'; import { expect } from './chai_setup';
// tslint:disable no-unnecessary-type-assertion
/** /**
* Filter logs by event name/type. * Filter logs by event name/type.
*/ */

View File

@@ -8,8 +8,6 @@ import * as process from 'process';
import { provider, providerConfigs, txDefaults, web3Wrapper } from './web3_wrapper'; import { provider, providerConfigs, txDefaults, web3Wrapper } from './web3_wrapper';
// tslint:disable: no-namespace only-arrow-functions no-unbound-method max-classes-per-file
export type ISuite = mocha.ISuite; export type ISuite = mocha.ISuite;
export type ISuiteCallbackContext = mocha.ISuiteCallbackContext; export type ISuiteCallbackContext = mocha.ISuiteCallbackContext;
export type SuiteCallback = (this: ISuiteCallbackContext) => void; export type SuiteCallback = (this: ISuiteCallbackContext) => void;

View File

@@ -29,7 +29,7 @@ export class OrderFactory {
salt: generatePseudoRandomSalt(), salt: generatePseudoRandomSalt(),
...this._defaultOrderParams, ...this._defaultOrderParams,
...customOrderParams, ...customOrderParams,
} as Order; // tslint:disable-line:no-object-literal-type-assertion } as Order;
const orderHashBuff = orderHashUtils.getOrderHashBuffer(order); const orderHashBuff = orderHashUtils.getOrderHashBuffer(order);
const signature = signingUtils.signMessage(orderHashBuff, this._privateKey, signatureType); const signature = signingUtils.signMessage(orderHashBuff, this._privateKey, signatureType);
const signedOrder = { const signedOrder = {

View File

@@ -9,7 +9,6 @@ export const typeEncodingUtils = {
const base = 10; const base = 10;
const formattedValue = new BN(value.toString(base)); const formattedValue = new BN(value.toString(base));
const encodedValue = ethUtil.toBuffer(formattedValue); const encodedValue = ethUtil.toBuffer(formattedValue);
// tslint:disable-next-line:custom-no-magic-numbers
const paddedValue = ethUtil.setLengthLeft(encodedValue, constants.WORD_LENGTH); const paddedValue = ethUtil.setLengthLeft(encodedValue, constants.WORD_LENGTH);
return paddedValue; return paddedValue;
}, },

View File

@@ -13,11 +13,8 @@ blockchainTests('mocha blockchain extensions', env => {
expect(env.provider).to.exist(''); expect(env.provider).to.exist('');
expect(env.txDefaults).to.exist(''); expect(env.txDefaults).to.exist('');
expect(env.web3Wrapper).to.exist(''); expect(env.web3Wrapper).to.exist('');
// HACK(dorothy-zbornak): tslint seems to get confused by these assertions.
// tslint:disable: no-unbound-method
expect(typeof env.getChainIdAsync).to.eq('function'); expect(typeof env.getChainIdAsync).to.eq('function');
expect(typeof env.getAccountAddressesAsync).to.eq('function'); expect(typeof env.getAccountAddressesAsync).to.eq('function');
// tslint:enable: no-unbound-method
}); });
it('initializes the test environment', async () => { it('initializes the test environment', async () => {
@@ -96,7 +93,6 @@ blockchainTests('mocha blockchain extensions', env => {
function createHookedObject(obj: any, handler: (name: string) => void, methods: string[]): any { function createHookedObject(obj: any, handler: (name: string) => void, methods: string[]): any {
const hookedMethods = _.map(methods, methodName => { const hookedMethods = _.map(methods, methodName => {
// tslint:disable: only-arrow-functions
return function (this: any, ...args: any[]): any { return function (this: any, ...args: any[]): any {
handler(methodName); handler(methodName);
return obj[methodName].call(this, ...args); return obj[methodName].call(this, ...args);

View File

@@ -42,7 +42,6 @@ describe('Order hashing', () => {
// It's common for developers using javascript to provide the amounts // It's common for developers using javascript to provide the amounts
// as strings. Since we eventually toString() the BigNumber // as strings. Since we eventually toString() the BigNumber
// before encoding we should result in the same orderHash in this scenario // before encoding we should result in the same orderHash in this scenario
// tslint:disable-next-line:no-unnecessary-type-assertion
const orderHash = orderHashUtils.getOrderHashHex({ const orderHash = orderHashUtils.getOrderHashHex({
...order, ...order,
makerAssetAmount: '0', makerAssetAmount: '0',

View File

@@ -1,7 +1,6 @@
import { expect } from '../../src/chai_setup'; import { expect } from '../../src/chai_setup';
import { blockchainTests, BlockchainTestsEnvironment } from '../../src/mocha_blockchain'; import { blockchainTests, BlockchainTestsEnvironment } from '../../src/mocha_blockchain';
// tslint:disable: no-default-export completed-docs
export function append(env: BlockchainTestsEnvironment): void { export function append(env: BlockchainTestsEnvironment): void {
blockchainTests('imported subtests', subtestsEnv => { blockchainTests('imported subtests', subtestsEnv => {
it('shares the same environment object', () => { it('shares the same environment object', () => {

View File

@@ -35,7 +35,6 @@ describe('0x transaction hashing', () => {
// It's common for developers using javascript to provide the amounts // It's common for developers using javascript to provide the amounts
// as strings. Since we eventually toString() the BigNumber // as strings. Since we eventually toString() the BigNumber
// before encoding we should result in the same orderHash in this scenario // before encoding we should result in the same orderHash in this scenario
// tslint:disable-next-line:no-unnecessary-type-assertion
const transactionHash = transactionHashUtils.getTransactionHashHex({ const transactionHash = transactionHashUtils.getTransactionHashHex({
...transaction, ...transaction,
salt: '0', salt: '0',

View File

@@ -1,7 +0,0 @@
{
// This file is a workaround that issue: https://github.com/palantir/tslint/issues/4148#issuecomment-419872702
"extends": "./tsconfig",
"compilerOptions": {
"composite": false
}
}

View File

@@ -1,4 +1,58 @@
[ [
{
"timestamp": 1670879498,
"version": "1.4.37",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1669235113,
"version": "1.4.36",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1668477029,
"version": "1.4.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667607537,
"version": "1.4.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667427402,
"version": "1.4.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1666645023,
"version": "1.4.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{ {
"timestamp": 1666381417, "timestamp": 1666381417,
"version": "1.4.31", "version": "1.4.31",

View File

@@ -5,6 +5,30 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.4.37 - _December 12, 2022_
* Dependencies updated
## v1.4.36 - _November 23, 2022_
* Dependencies updated
## v1.4.35 - _November 15, 2022_
* Dependencies updated
## v1.4.34 - _November 5, 2022_
* Dependencies updated
## v1.4.33 - _November 2, 2022_
* Dependencies updated
## v1.4.32 - _October 24, 2022_
* Dependencies updated
## v1.4.31 - _October 21, 2022_ ## v1.4.31 - _October 21, 2022_
* Dependencies updated * Dependencies updated

View File

@@ -36,7 +36,9 @@ interface ISablier {
function balanceOf(uint256 streamId, address who) external view returns (uint256 balance); function balanceOf(uint256 streamId, address who) external view returns (uint256 balance);
function getStream(uint256 streamId) function getStream(
uint256 streamId
)
external external
view view
returns ( returns (

View File

@@ -36,7 +36,7 @@ contract DefaultPoolOperator {
stakingProxy = stakingProxy_; stakingProxy = stakingProxy_;
weth = weth_; weth = weth_;
// operator share = 100% // operator share = 100%
poolId = stakingProxy_.createStakingPool(10**6, false); poolId = stakingProxy_.createStakingPool(10 ** 6, false);
} }
/// @dev Sends this contract's entire WETH balance to the /// @dev Sends this contract's entire WETH balance to the

View File

@@ -81,10 +81,10 @@ interface IStaking {
/// @param staker Owner of stake. /// @param staker Owner of stake.
/// @param stakeStatus UNDELEGATED or DELEGATED /// @param stakeStatus UNDELEGATED or DELEGATED
/// @return balance Owner's stake balances for given status. /// @return balance Owner's stake balances for given status.
function getOwnerStakeByStatus(address staker, StakeStatus stakeStatus) function getOwnerStakeByStatus(
external address staker,
view StakeStatus stakeStatus
returns (StoredBalance memory balance); ) external view returns (StoredBalance memory balance);
/// @dev Returns the total stake delegated to a specific staking pool, /// @dev Returns the total stake delegated to a specific staking pool,
/// across all members. /// across all members.
@@ -96,8 +96,8 @@ interface IStaking {
/// @param staker of stake. /// @param staker of stake.
/// @param poolId Unique Id of pool. /// @param poolId Unique Id of pool.
/// @return balance Stake delegated to pool by staker. /// @return balance Stake delegated to pool by staker.
function getStakeDelegatedToPoolByOwner(address staker, bytes32 poolId) function getStakeDelegatedToPoolByOwner(
external address staker,
view bytes32 poolId
returns (StoredBalance memory balance); ) external view returns (StoredBalance memory balance);
} }

View File

@@ -112,11 +112,7 @@ interface IZrxTreasury {
/// @param operatedPoolIds The pools operated by `msg.sender`. The /// @param operatedPoolIds The pools operated by `msg.sender`. The
/// ZRX currently delegated to those pools will be accounted /// ZRX currently delegated to those pools will be accounted
/// for in the voting power. /// for in the voting power.
function castVote( function castVote(uint256 proposalId, bool support, bytes32[] calldata operatedPoolIds) external;
uint256 proposalId,
bool support,
bytes32[] calldata operatedPoolIds
) external;
/// @dev Casts a vote for the given proposal, by signature. /// @dev Casts a vote for the given proposal, by signature.
/// Only callable during the voting period for that proposal. /// Only callable during the voting period for that proposal.
@@ -159,8 +155,8 @@ interface IZrxTreasury {
/// ZRX currently delegated to those pools will be accounted /// ZRX currently delegated to those pools will be accounted
/// for in the voting power. /// for in the voting power.
/// @return votingPower The current voting power of the given account. /// @return votingPower The current voting power of the given account.
function getVotingPower(address account, bytes32[] calldata operatedPoolIds) function getVotingPower(
external address account,
view bytes32[] calldata operatedPoolIds
returns (uint256 votingPower); ) external view returns (uint256 votingPower);
} }

View File

@@ -83,12 +83,9 @@ contract ZrxTreasury is IZrxTreasury {
); );
} }
// solhint-disable
/// @dev Allows this contract to receive ether. /// @dev Allows this contract to receive ether.
receive() external payable {} receive() external payable {}
// solhint-enable
/// @dev Updates the proposal and quorum thresholds to the given /// @dev Updates the proposal and quorum thresholds to the given
/// values. Note that this function is only callable by the /// values. Note that this function is only callable by the
/// treasury contract itself, so the threshold can only be /// treasury contract itself, so the threshold can only be
@@ -147,11 +144,7 @@ contract ZrxTreasury is IZrxTreasury {
/// @param operatedPoolIds The pools operated by `msg.sender`. The /// @param operatedPoolIds The pools operated by `msg.sender`. The
/// ZRX currently delegated to those pools will be accounted /// ZRX currently delegated to those pools will be accounted
/// for in the voting power. /// for in the voting power.
function castVote( function castVote(uint256 proposalId, bool support, bytes32[] memory operatedPoolIds) public override {
uint256 proposalId,
bool support,
bytes32[] memory operatedPoolIds
) public override {
return _castVote(msg.sender, proposalId, support, operatedPoolIds); return _castVote(msg.sender, proposalId, support, operatedPoolIds);
} }
@@ -222,12 +215,10 @@ contract ZrxTreasury is IZrxTreasury {
/// ZRX currently delegated to those pools will be accounted /// ZRX currently delegated to those pools will be accounted
/// for in the voting power. /// for in the voting power.
/// @return votingPower The current voting power of the given account. /// @return votingPower The current voting power of the given account.
function getVotingPower(address account, bytes32[] memory operatedPoolIds) function getVotingPower(
public address account,
view bytes32[] memory operatedPoolIds
override ) public view override returns (uint256 votingPower) {
returns (uint256 votingPower)
{
uint256 delegatedBalance = stakingProxy uint256 delegatedBalance = stakingProxy
.getOwnerStakeByStatus(account, IStaking.StakeStatus.DELEGATED) .getOwnerStakeByStatus(account, IStaking.StakeStatus.DELEGATED)
.currentEpochBalance; .currentEpochBalance;
@@ -310,12 +301,7 @@ contract ZrxTreasury is IZrxTreasury {
/// @dev Casts a vote for the given proposal. Only callable /// @dev Casts a vote for the given proposal. Only callable
/// during the voting period for that proposal. See /// during the voting period for that proposal. See
/// `getVotingPower` for how voting power is computed. /// `getVotingPower` for how voting power is computed.
function _castVote( function _castVote(address voter, uint256 proposalId, bool support, bytes32[] memory operatedPoolIds) private {
address voter,
uint256 proposalId,
bool support,
bytes32[] memory operatedPoolIds
) private {
if (proposalId >= proposalCount()) { if (proposalId >= proposalCount()) {
revert("_castVote/INVALID_PROPOSAL_ID"); revert("_castVote/INVALID_PROPOSAL_ID");
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@0x/contracts-treasury", "name": "@0x/contracts-treasury",
"version": "1.4.31", "version": "1.4.37",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@@ -46,12 +46,12 @@
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/treasury", "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/treasury",
"devDependencies": { "devDependencies": {
"@0x/abi-gen": "^5.8.1", "@0x/abi-gen": "^5.8.1",
"@0x/contract-addresses": "^7.0.0", "@0x/contract-addresses": "^8.0.0",
"@0x/contracts-asset-proxy": "^3.7.19", "@0x/contracts-asset-proxy": "^3.7.19",
"@0x/contracts-erc20": "^3.3.48", "@0x/contracts-erc20": "^3.3.54",
"@0x/contracts-gen": "^2.0.48", "@0x/contracts-gen": "^2.0.48",
"@0x/contracts-staking": "^2.0.45", "@0x/contracts-staking": "^2.0.45",
"@0x/contracts-test-utils": "^5.4.38", "@0x/contracts-test-utils": "^5.4.44",
"@0x/sol-compiler": "^4.8.2", "@0x/sol-compiler": "^4.8.2",
"@0x/ts-doc-gen": "^0.0.28", "@0x/ts-doc-gen": "^0.0.28",
"@types/isomorphic-fetch": "^0.0.35", "@types/isomorphic-fetch": "^0.0.35",
@@ -73,7 +73,7 @@
}, },
"dependencies": { "dependencies": {
"@0x/base-contract": "^7.0.0", "@0x/base-contract": "^7.0.0",
"@0x/protocol-utils": "^11.16.15", "@0x/protocol-utils": "^11.17.3",
"@0x/subproviders": "^7.0.0", "@0x/subproviders": "^7.0.0",
"@0x/types": "^3.3.6", "@0x/types": "^3.3.6",
"@0x/typescript-typings": "^5.3.1", "@0x/typescript-typings": "^5.3.1",

View File

@@ -1,4 +1,58 @@
[ [
{
"timestamp": 1670879498,
"version": "4.8.35",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1669235113,
"version": "4.8.34",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1668477029,
"version": "4.8.33",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667607537,
"version": "4.8.32",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1667427402,
"version": "4.8.31",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1666645023,
"version": "4.8.30",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{ {
"timestamp": 1666381417, "timestamp": 1666381417,
"version": "4.8.29", "version": "4.8.29",

View File

@@ -5,6 +5,30 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v4.8.35 - _December 12, 2022_
* Dependencies updated
## v4.8.34 - _November 23, 2022_
* Dependencies updated
## v4.8.33 - _November 15, 2022_
* Dependencies updated
## v4.8.32 - _November 5, 2022_
* Dependencies updated
## v4.8.31 - _November 2, 2022_
* Dependencies updated
## v4.8.30 - _October 24, 2022_
* Dependencies updated
## v4.8.29 - _October 21, 2022_ ## v4.8.29 - _October 21, 2022_
* Dependencies updated * Dependencies updated

View File

@@ -63,7 +63,3 @@ yarn lint
```bash ```bash
yarn test yarn test
``` ```
#### Testing options
Contracts testing options like coverage, profiling, revert traces or backing node choosing - are described [here](../TESTING.md).

View File

@@ -23,7 +23,6 @@ import "./LibAuthorizableRichErrors.sol";
import "./LibRichErrors.sol"; import "./LibRichErrors.sol";
import "./Ownable.sol"; import "./Ownable.sol";
// solhint-disable no-empty-blocks
contract Authorizable is Ownable, IAuthorizable { contract Authorizable is Ownable, IAuthorizable {
/// @dev Only authorized addresses can invoke functions with this modifier. /// @dev Only authorized addresses can invoke functions with this modifier.
modifier onlyAuthorized() { modifier onlyAuthorized() {

View File

@@ -23,7 +23,7 @@ library D18 {
/// @dev Decimal places for dydx value quantities. /// @dev Decimal places for dydx value quantities.
uint256 private constant PRECISION = 18; uint256 private constant PRECISION = 18;
/// @dev 1.0 in base-18 decimal. /// @dev 1.0 in base-18 decimal.
int256 private constant DECIMAL_ONE = int256(10**PRECISION); int256 private constant DECIMAL_ONE = int256(10 ** PRECISION);
/// @dev Minimum signed integer value. /// @dev Minimum signed integer value.
int256 private constant MIN_INT256_VALUE = int256 private constant MIN_INT256_VALUE =
int256(0x8000000000000000000000000000000000000000000000000000000000000000); int256(0x8000000000000000000000000000000000000000000000000000000000000000);

View File

@@ -19,8 +19,6 @@
pragma solidity ^0.5.9; pragma solidity ^0.5.9;
contract DeploymentConstants { contract DeploymentConstants {
// solhint-disable separate-by-one-line-in-contract
// Mainnet addresses /////////////////////////////////////////////////////// // Mainnet addresses ///////////////////////////////////////////////////////
/// @dev Mainnet address of the WETH contract. /// @dev Mainnet address of the WETH contract.
address private constant WETH_ADDRESS = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address private constant WETH_ADDRESS = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
@@ -60,93 +58,93 @@ contract DeploymentConstants {
address private constant DODO_HELPER = 0x533dA777aeDCE766CEAe696bf90f8541A4bA80Eb; address private constant DODO_HELPER = 0x533dA777aeDCE766CEAe696bf90f8541A4bA80Eb;
// // Ropsten addresses /////////////////////////////////////////////////////// // // Ropsten addresses ///////////////////////////////////////////////////////
// /// @dev Mainnet address of the WETH contract. /// @dev Mainnet address of the WETH contract.
// address constant private WETH_ADDRESS = 0xc778417E063141139Fce010982780140Aa0cD5Ab; // address constant private WETH_ADDRESS = 0xc778417E063141139Fce010982780140Aa0cD5Ab;
// /// @dev Mainnet address of the KyberNetworkProxy contract. /// @dev Mainnet address of the KyberNetworkProxy contract.
// address constant private KYBER_NETWORK_PROXY_ADDRESS = 0xd719c34261e099Fdb33030ac8909d5788D3039C4; // address constant private KYBER_NETWORK_PROXY_ADDRESS = 0xd719c34261e099Fdb33030ac8909d5788D3039C4;
// /// @dev Mainnet address of the `UniswapExchangeFactory` contract. /// @dev Mainnet address of the `UniswapExchangeFactory` contract.
// address constant private UNISWAP_EXCHANGE_FACTORY_ADDRESS = 0x9c83dCE8CA20E9aAF9D3efc003b2ea62aBC08351; // address constant private UNISWAP_EXCHANGE_FACTORY_ADDRESS = 0x9c83dCE8CA20E9aAF9D3efc003b2ea62aBC08351;
// /// @dev Mainnet address of the `UniswapV2Router01` contract. /// @dev Mainnet address of the `UniswapV2Router01` contract.
// address constant private UNISWAP_V2_ROUTER_01_ADDRESS = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a; // address constant private UNISWAP_V2_ROUTER_01_ADDRESS = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a;
// /// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract. /// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract.
// address constant private ETH2DAI_ADDRESS = address(0); // address constant private ETH2DAI_ADDRESS = address(0);
// /// @dev Mainnet address of the `ERC20BridgeProxy` contract /// @dev Mainnet address of the `ERC20BridgeProxy` contract
// address constant private ERC20_BRIDGE_PROXY_ADDRESS = 0xb344afeD348de15eb4a9e180205A2B0739628339; // address constant private ERC20_BRIDGE_PROXY_ADDRESS = 0xb344afeD348de15eb4a9e180205A2B0739628339;
// ///@dev Mainnet address of the `Dai` (multi-collateral) contract // ///@dev Mainnet address of the `Dai` (multi-collateral) contract
// address constant private DAI_ADDRESS = address(0); // address constant private DAI_ADDRESS = address(0);
// /// @dev Mainnet address of the `Chai` contract /// @dev Mainnet address of the `Chai` contract
// address constant private CHAI_ADDRESS = address(0); // address constant private CHAI_ADDRESS = address(0);
// /// @dev Mainnet address of the 0x DevUtils contract. /// @dev Mainnet address of the 0x DevUtils contract.
// address constant private DEV_UTILS_ADDRESS = 0xC812AF3f3fBC62F76ea4262576EC0f49dB8B7f1c; // address constant private DEV_UTILS_ADDRESS = 0xC812AF3f3fBC62F76ea4262576EC0f49dB8B7f1c;
// /// @dev Kyber ETH pseudo-address. /// @dev Kyber ETH pseudo-address.
// address constant internal KYBER_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // address constant internal KYBER_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
// /// @dev Mainnet address of the dYdX contract. /// @dev Mainnet address of the dYdX contract.
// address constant private DYDX_ADDRESS = address(0); // address constant private DYDX_ADDRESS = address(0);
// /// @dev Mainnet address of the GST2 contract /// @dev Mainnet address of the GST2 contract
// address constant private GST_ADDRESS = address(0); // address constant private GST_ADDRESS = address(0);
// /// @dev Mainnet address of the GST Collector /// @dev Mainnet address of the GST Collector
// address constant private GST_COLLECTOR_ADDRESS = address(0); // address constant private GST_COLLECTOR_ADDRESS = address(0);
// /// @dev Mainnet address of the mStable mUSD contract. /// @dev Mainnet address of the mStable mUSD contract.
// address constant private MUSD_ADDRESS = 0x4E1000616990D83e56f4b5fC6CC8602DcfD20459; // address constant private MUSD_ADDRESS = 0x4E1000616990D83e56f4b5fC6CC8602DcfD20459;
// // Rinkeby addresses /////////////////////////////////////////////////////// // // Rinkeby addresses ///////////////////////////////////////////////////////
// /// @dev Mainnet address of the WETH contract. /// @dev Mainnet address of the WETH contract.
// address constant private WETH_ADDRESS = 0xc778417E063141139Fce010982780140Aa0cD5Ab; // address constant private WETH_ADDRESS = 0xc778417E063141139Fce010982780140Aa0cD5Ab;
// /// @dev Mainnet address of the KyberNetworkProxy contract. /// @dev Mainnet address of the KyberNetworkProxy contract.
// address constant private KYBER_NETWORK_PROXY_ADDRESS = 0x0d5371e5EE23dec7DF251A8957279629aa79E9C5; // address constant private KYBER_NETWORK_PROXY_ADDRESS = 0x0d5371e5EE23dec7DF251A8957279629aa79E9C5;
// /// @dev Mainnet address of the `UniswapExchangeFactory` contract. /// @dev Mainnet address of the `UniswapExchangeFactory` contract.
// address constant private UNISWAP_EXCHANGE_FACTORY_ADDRESS = 0xf5D915570BC477f9B8D6C0E980aA81757A3AaC36; // address constant private UNISWAP_EXCHANGE_FACTORY_ADDRESS = 0xf5D915570BC477f9B8D6C0E980aA81757A3AaC36;
// /// @dev Mainnet address of the `UniswapV2Router01` contract. /// @dev Mainnet address of the `UniswapV2Router01` contract.
// address constant private UNISWAP_V2_ROUTER_01_ADDRESS = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a; // address constant private UNISWAP_V2_ROUTER_01_ADDRESS = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a;
// /// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract. /// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract.
// address constant private ETH2DAI_ADDRESS = address(0); // address constant private ETH2DAI_ADDRESS = address(0);
// /// @dev Mainnet address of the `ERC20BridgeProxy` contract /// @dev Mainnet address of the `ERC20BridgeProxy` contract
// address constant private ERC20_BRIDGE_PROXY_ADDRESS = 0xA2AA4bEFED748Fba27a3bE7Dfd2C4b2c6DB1F49B; // address constant private ERC20_BRIDGE_PROXY_ADDRESS = 0xA2AA4bEFED748Fba27a3bE7Dfd2C4b2c6DB1F49B;
// ///@dev Mainnet address of the `Dai` (multi-collateral) contract // ///@dev Mainnet address of the `Dai` (multi-collateral) contract
// address constant private DAI_ADDRESS = address(0); // address constant private DAI_ADDRESS = address(0);
// /// @dev Mainnet address of the `Chai` contract /// @dev Mainnet address of the `Chai` contract
// address constant private CHAI_ADDRESS = address(0); // address constant private CHAI_ADDRESS = address(0);
// /// @dev Mainnet address of the 0x DevUtils contract. /// @dev Mainnet address of the 0x DevUtils contract.
// address constant private DEV_UTILS_ADDRESS = 0x46B5BC959e8A754c0256FFF73bF34A52Ad5CdfA9; // address constant private DEV_UTILS_ADDRESS = 0x46B5BC959e8A754c0256FFF73bF34A52Ad5CdfA9;
// /// @dev Kyber ETH pseudo-address. /// @dev Kyber ETH pseudo-address.
// address constant internal KYBER_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // address constant internal KYBER_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
// /// @dev Mainnet address of the dYdX contract. /// @dev Mainnet address of the dYdX contract.
// address constant private DYDX_ADDRESS = address(0); // address constant private DYDX_ADDRESS = address(0);
// /// @dev Mainnet address of the GST2 contract /// @dev Mainnet address of the GST2 contract
// address constant private GST_ADDRESS = address(0); // address constant private GST_ADDRESS = address(0);
// /// @dev Mainnet address of the GST Collector /// @dev Mainnet address of the GST Collector
// address constant private GST_COLLECTOR_ADDRESS = address(0); // address constant private GST_COLLECTOR_ADDRESS = address(0);
// /// @dev Mainnet address of the mStable mUSD contract. /// @dev Mainnet address of the mStable mUSD contract.
// address constant private MUSD_ADDRESS = address(0); // address constant private MUSD_ADDRESS = address(0);
// // Kovan addresses ///////////////////////////////////////////////////////// // // Kovan addresses /////////////////////////////////////////////////////////
// /// @dev Kovan address of the WETH contract. /// @dev Kovan address of the WETH contract.
// address constant private WETH_ADDRESS = 0xd0A1E359811322d97991E03f863a0C30C2cF029C; // address constant private WETH_ADDRESS = 0xd0A1E359811322d97991E03f863a0C30C2cF029C;
// /// @dev Kovan address of the KyberNetworkProxy contract. /// @dev Kovan address of the KyberNetworkProxy contract.
// address constant private KYBER_NETWORK_PROXY_ADDRESS = 0x692f391bCc85cefCe8C237C01e1f636BbD70EA4D; // address constant private KYBER_NETWORK_PROXY_ADDRESS = 0x692f391bCc85cefCe8C237C01e1f636BbD70EA4D;
// /// @dev Kovan address of the `UniswapExchangeFactory` contract. /// @dev Kovan address of the `UniswapExchangeFactory` contract.
// address constant private UNISWAP_EXCHANGE_FACTORY_ADDRESS = 0xD3E51Ef092B2845f10401a0159B2B96e8B6c3D30; // address constant private UNISWAP_EXCHANGE_FACTORY_ADDRESS = 0xD3E51Ef092B2845f10401a0159B2B96e8B6c3D30;
// /// @dev Kovan address of the `UniswapV2Router01` contract. /// @dev Kovan address of the `UniswapV2Router01` contract.
// address constant private UNISWAP_V2_ROUTER_01_ADDRESS = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a; // address constant private UNISWAP_V2_ROUTER_01_ADDRESS = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a;
// /// @dev Kovan address of the Eth2Dai `MatchingMarket` contract. /// @dev Kovan address of the Eth2Dai `MatchingMarket` contract.
// address constant private ETH2DAI_ADDRESS = 0xe325acB9765b02b8b418199bf9650972299235F4; // address constant private ETH2DAI_ADDRESS = 0xe325acB9765b02b8b418199bf9650972299235F4;
// /// @dev Kovan address of the `ERC20BridgeProxy` contract /// @dev Kovan address of the `ERC20BridgeProxy` contract
// address constant private ERC20_BRIDGE_PROXY_ADDRESS = 0x3577552C1Fb7A44aD76BeEB7aB53251668A21F8D; // address constant private ERC20_BRIDGE_PROXY_ADDRESS = 0x3577552C1Fb7A44aD76BeEB7aB53251668A21F8D;
// /// @dev Kovan address of the `Chai` contract /// @dev Kovan address of the `Chai` contract
// address constant private CHAI_ADDRESS = address(0); // address constant private CHAI_ADDRESS = address(0);
// /// @dev Kovan address of the `Dai` (multi-collateral) contract /// @dev Kovan address of the `Dai` (multi-collateral) contract
// address constant private DAI_ADDRESS = 0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa; // address constant private DAI_ADDRESS = 0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa;
// /// @dev Kovan address of the 0x DevUtils contract. /// @dev Kovan address of the 0x DevUtils contract.
// address constant private DEV_UTILS_ADDRESS = 0x9402639A828BdF4E9e4103ac3B69E1a6E522eB59; // address constant private DEV_UTILS_ADDRESS = 0x9402639A828BdF4E9e4103ac3B69E1a6E522eB59;
// /// @dev Kyber ETH pseudo-address. /// @dev Kyber ETH pseudo-address.
// address constant internal KYBER_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // address constant internal KYBER_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
// /// @dev Kovan address of the dYdX contract. /// @dev Kovan address of the dYdX contract.
// address constant private DYDX_ADDRESS = address(0); // address constant private DYDX_ADDRESS = address(0);
// /// @dev Kovan address of the GST2 contract /// @dev Kovan address of the GST2 contract
// address constant private GST_ADDRESS = address(0); // address constant private GST_ADDRESS = address(0);
// /// @dev Kovan address of the GST Collector /// @dev Kovan address of the GST Collector
// address constant private GST_COLLECTOR_ADDRESS = address(0); // address constant private GST_COLLECTOR_ADDRESS = address(0);
// /// @dev Mainnet address of the mStable mUSD contract. /// @dev Mainnet address of the mStable mUSD contract.
// address constant private MUSD_ADDRESS = address(0); // address constant private MUSD_ADDRESS = address(0);
/// @dev Overridable way to get the `KyberNetworkProxy` address. /// @dev Overridable way to get the `KyberNetworkProxy` address.

View File

@@ -117,11 +117,10 @@ library LibAddressArray {
/// @param addressArray Array of addresses. /// @param addressArray Array of addresses.
/// @param target Address to search for in array. /// @param target Address to search for in array.
/// @return Existence and index of the target in the array. /// @return Existence and index of the target in the array.
function indexOf(address[] memory addressArray, address target) function indexOf(
internal address[] memory addressArray,
pure address target
returns (bool success, uint256 index) ) internal pure returns (bool success, uint256 index) {
{
assembly { assembly {
// Calculate byte length of array // Calculate byte length of array
let arrayByteLen := mul(mload(addressArray), 32) let arrayByteLen := mul(mload(addressArray), 32)

View File

@@ -22,12 +22,10 @@ library LibAddressArrayRichErrors {
// bytes4(keccak256("MismanagedMemoryError(uint256,uint256)")) // bytes4(keccak256("MismanagedMemoryError(uint256,uint256)"))
bytes4 internal constant MISMANAGED_MEMORY_ERROR_SELECTOR = 0x5fc83722; bytes4 internal constant MISMANAGED_MEMORY_ERROR_SELECTOR = 0x5fc83722;
// solhint-disable func-name-mixedcase function MismanagedMemoryError(
function MismanagedMemoryError(uint256 freeMemPtr, uint256 addressArrayEndPtr) uint256 freeMemPtr,
internal uint256 addressArrayEndPtr
pure ) internal pure returns (bytes memory) {
returns (bytes memory)
{
return abi.encodeWithSelector(MISMANAGED_MEMORY_ERROR_SELECTOR, freeMemPtr, addressArrayEndPtr); return abi.encodeWithSelector(MISMANAGED_MEMORY_ERROR_SELECTOR, freeMemPtr, addressArrayEndPtr);
} }
} }

View File

@@ -37,7 +37,6 @@ library LibAuthorizableRichErrors {
// bytes4(keccak256("ZeroCantBeAuthorizedError()")) // bytes4(keccak256("ZeroCantBeAuthorizedError()"))
bytes internal constant ZERO_CANT_BE_AUTHORIZED_ERROR_BYTES = hex"57654fe4"; bytes internal constant ZERO_CANT_BE_AUTHORIZED_ERROR_BYTES = hex"57654fe4";
// solhint-disable func-name-mixedcase
function AuthorizedAddressMismatchError(address authorized, address target) internal pure returns (bytes memory) { function AuthorizedAddressMismatchError(address authorized, address target) internal pure returns (bytes memory) {
return abi.encodeWithSelector(AUTHORIZED_ADDRESS_MISMATCH_ERROR_SELECTOR, authorized, target); return abi.encodeWithSelector(AUTHORIZED_ADDRESS_MISMATCH_ERROR_SELECTOR, authorized, target);
} }

View File

@@ -50,11 +50,7 @@ library LibBytes {
/// @param dest memory address to copy bytes to. /// @param dest memory address to copy bytes to.
/// @param source memory address to copy bytes from. /// @param source memory address to copy bytes from.
/// @param length number of bytes to copy. /// @param length number of bytes to copy.
function memCopy( function memCopy(uint256 dest, uint256 source, uint256 length) internal pure {
uint256 dest,
uint256 source,
uint256 length
) internal pure {
if (length < 32) { if (length < 32) {
// Handle a partial word by reading destination and masking // Handle a partial word by reading destination and masking
// off the bits we are interested in. // off the bits we are interested in.
@@ -105,7 +101,6 @@ library LibBytes {
// Copy whole words front to back // Copy whole words front to back
// Note: the first check is always true, // Note: the first check is always true,
// this could have been a do-while loop. // this could have been a do-while loop.
// solhint-disable-next-line no-empty-blocks
for { for {
} lt(source, sEnd) { } lt(source, sEnd) {
@@ -140,7 +135,6 @@ library LibBytes {
// 2**255, so they can be safely re-interpreted as signed. // 2**255, so they can be safely re-interpreted as signed.
// Note: the first check is always true, // Note: the first check is always true,
// this could have been a do-while loop. // this could have been a do-while loop.
// solhint-disable-next-line no-empty-blocks
for { for {
} slt(dest, dEnd) { } slt(dest, dEnd) {
@@ -163,11 +157,7 @@ library LibBytes {
/// @param from The starting index for the slice (inclusive). /// @param from The starting index for the slice (inclusive).
/// @param to The final index for the slice (exclusive). /// @param to The final index for the slice (exclusive).
/// @return result The slice containing bytes at indices [from, to) /// @return result The slice containing bytes at indices [from, to)
function slice( function slice(bytes memory b, uint256 from, uint256 to) internal pure returns (bytes memory result) {
bytes memory b,
uint256 from,
uint256 to
) internal pure returns (bytes memory result) {
// Ensure that the from and to positions are valid positions for a slice within // Ensure that the from and to positions are valid positions for a slice within
// the byte array that is being used. // the byte array that is being used.
if (from > to) { if (from > to) {
@@ -201,11 +191,7 @@ library LibBytes {
/// @param to The final index for the slice (exclusive). /// @param to The final index for the slice (exclusive).
/// @return result The slice containing bytes at indices [from, to) /// @return result The slice containing bytes at indices [from, to)
/// @dev When `from == 0`, the original array will match the slice. In other cases its state will be corrupted. /// @dev When `from == 0`, the original array will match the slice. In other cases its state will be corrupted.
function sliceDestructive( function sliceDestructive(bytes memory b, uint256 from, uint256 to) internal pure returns (bytes memory result) {
bytes memory b,
uint256 from,
uint256 to
) internal pure returns (bytes memory result) {
// Ensure that the from and to positions are valid positions for a slice within // Ensure that the from and to positions are valid positions for a slice within
// the byte array that is being used. // the byte array that is being used.
if (from > to) { if (from > to) {
@@ -305,11 +291,7 @@ library LibBytes {
/// @param b Byte array to insert address into. /// @param b Byte array to insert address into.
/// @param index Index in byte array of address. /// @param index Index in byte array of address.
/// @param input Address to put into byte array. /// @param input Address to put into byte array.
function writeAddress( function writeAddress(bytes memory b, uint256 index, address input) internal pure {
bytes memory b,
uint256 index,
address input
) internal pure {
if (b.length < index + 20) { if (b.length < index + 20) {
LibRichErrors.rrevert( LibRichErrors.rrevert(
LibBytesRichErrors.InvalidByteOperationError( LibBytesRichErrors.InvalidByteOperationError(
@@ -378,11 +360,7 @@ library LibBytes {
/// @param b Byte array to insert <input> into. /// @param b Byte array to insert <input> into.
/// @param index Index in byte array of <input>. /// @param index Index in byte array of <input>.
/// @param input bytes32 to put into byte array. /// @param input bytes32 to put into byte array.
function writeBytes32( function writeBytes32(bytes memory b, uint256 index, bytes32 input) internal pure {
bytes memory b,
uint256 index,
bytes32 input
) internal pure {
if (b.length < index + 32) { if (b.length < index + 32) {
LibRichErrors.rrevert( LibRichErrors.rrevert(
LibBytesRichErrors.InvalidByteOperationError( LibBytesRichErrors.InvalidByteOperationError(
@@ -415,11 +393,7 @@ library LibBytes {
/// @param b Byte array to insert <input> into. /// @param b Byte array to insert <input> into.
/// @param index Index in byte array of <input>. /// @param index Index in byte array of <input>.
/// @param input uint256 to put into byte array. /// @param input uint256 to put into byte array.
function writeUint256( function writeUint256(bytes memory b, uint256 index, uint256 input) internal pure {
bytes memory b,
uint256 index,
uint256 input
) internal pure {
writeBytes32(b, index, bytes32(input)); writeBytes32(b, index, bytes32(input));
} }

View File

@@ -33,7 +33,6 @@ library LibBytesRichErrors {
// bytes4(keccak256("InvalidByteOperationError(uint8,uint256,uint256)")) // bytes4(keccak256("InvalidByteOperationError(uint8,uint256,uint256)"))
bytes4 internal constant INVALID_BYTE_OPERATION_ERROR_SELECTOR = 0x28006595; bytes4 internal constant INVALID_BYTE_OPERATION_ERROR_SELECTOR = 0x28006595;
// solhint-disable func-name-mixedcase
function InvalidByteOperationError( function InvalidByteOperationError(
InvalidByteOperationErrorCodes errorCode, InvalidByteOperationErrorCodes errorCode,
uint256 offset, uint256 offset,

View File

@@ -62,12 +62,11 @@ library LibFractions {
/// @param denominator The denominator. /// @param denominator The denominator.
/// @return scaledNumerator The rescaled numerator. /// @return scaledNumerator The rescaled numerator.
/// @return scaledDenominator The rescaled denominator. /// @return scaledDenominator The rescaled denominator.
function normalize(uint256 numerator, uint256 denominator) function normalize(
internal uint256 numerator,
pure uint256 denominator
returns (uint256 scaledNumerator, uint256 scaledDenominator) ) internal pure returns (uint256 scaledNumerator, uint256 scaledDenominator) {
{ return normalize(numerator, denominator, 2 ** 127);
return normalize(numerator, denominator, 2**127);
} }
/// @dev Safely scales the difference between two fractions. /// @dev Safely scales the difference between two fractions.

View File

@@ -7,7 +7,6 @@ library LibMathRichErrors {
// bytes4(keccak256("RoundingError(uint256,uint256,uint256)")) // bytes4(keccak256("RoundingError(uint256,uint256,uint256)"))
bytes4 internal constant ROUNDING_ERROR_SELECTOR = 0x339f3de2; bytes4 internal constant ROUNDING_ERROR_SELECTOR = 0x339f3de2;
// solhint-disable func-name-mixedcase
function DivisionByZeroError() internal pure returns (bytes memory) { function DivisionByZeroError() internal pure returns (bytes memory) {
return DIVISION_BY_ZERO_ERROR; return DIVISION_BY_ZERO_ERROR;
} }

View File

@@ -7,7 +7,6 @@ library LibOwnableRichErrors {
// bytes4(keccak256("TransferOwnerToZeroError()")) // bytes4(keccak256("TransferOwnerToZeroError()"))
bytes internal constant TRANSFER_OWNER_TO_ZERO_ERROR_BYTES = hex"e69edc3e"; bytes internal constant TRANSFER_OWNER_TO_ZERO_ERROR_BYTES = hex"e69edc3e";
// solhint-disable func-name-mixedcase
function OnlyOwnerError(address sender, address owner) internal pure returns (bytes memory) { function OnlyOwnerError(address sender, address owner) internal pure returns (bytes memory) {
return abi.encodeWithSelector(ONLY_OWNER_ERROR_SELECTOR, sender, owner); return abi.encodeWithSelector(ONLY_OWNER_ERROR_SELECTOR, sender, owner);
} }

View File

@@ -22,7 +22,6 @@ library LibReentrancyGuardRichErrors {
// bytes4(keccak256("IllegalReentrancyError()")) // bytes4(keccak256("IllegalReentrancyError()"))
bytes internal constant ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES = hex"0c3b823f"; bytes internal constant ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES = hex"0c3b823f";
// solhint-disable func-name-mixedcase
function IllegalReentrancyError() internal pure returns (bytes memory) { function IllegalReentrancyError() internal pure returns (bytes memory) {
return ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES; return ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES;
} }

View File

@@ -22,7 +22,6 @@ library LibRichErrors {
// bytes4(keccak256("Error(string)")) // bytes4(keccak256("Error(string)"))
bytes4 internal constant STANDARD_ERROR_SELECTOR = 0x08c379a0; bytes4 internal constant STANDARD_ERROR_SELECTOR = 0x08c379a0;
// solhint-disable func-name-mixedcase
/// @dev ABI encode a standard, string revert error payload. /// @dev ABI encode a standard, string revert error payload.
/// This is the same payload that would be included by a `revert(string)` /// This is the same payload that would be included by a `revert(string)`
/// solidity statement. It has the function signature `Error(string)`. /// solidity statement. It has the function signature `Error(string)`.
@@ -32,8 +31,6 @@ library LibRichErrors {
return abi.encodeWithSelector(STANDARD_ERROR_SELECTOR, bytes(message)); return abi.encodeWithSelector(STANDARD_ERROR_SELECTOR, bytes(message));
} }
// solhint-enable func-name-mixedcase
/// @dev Reverts an encoded rich revert reason `errorData`. /// @dev Reverts an encoded rich revert reason `errorData`.
/// @param errorData ABI encoded error data. /// @param errorData ABI encoded error data.
function rrevert(bytes memory errorData) internal pure { function rrevert(bytes memory errorData) internal pure {

View File

@@ -20,12 +20,7 @@ library LibSafeMathRichErrors {
VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT96 VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT96
} }
// solhint-disable func-name-mixedcase function Uint256BinOpError(BinOpErrorCodes errorCode, uint256 a, uint256 b) internal pure returns (bytes memory) {
function Uint256BinOpError(
BinOpErrorCodes errorCode,
uint256 a,
uint256 b
) internal pure returns (bytes memory) {
return abi.encodeWithSelector(UINT256_BINOP_ERROR_SELECTOR, errorCode, a, b); return abi.encodeWithSelector(UINT256_BINOP_ERROR_SELECTOR, errorCode, a, b);
} }

View File

@@ -24,7 +24,6 @@ import "./errors/LibRichErrorsV06.sol";
import "./errors/LibAuthorizableRichErrorsV06.sol"; import "./errors/LibAuthorizableRichErrorsV06.sol";
import "./OwnableV06.sol"; import "./OwnableV06.sol";
// solhint-disable no-empty-blocks
contract AuthorizableV06 is OwnableV06, IAuthorizableV06 { contract AuthorizableV06 is OwnableV06, IAuthorizableV06 {
/// @dev Only authorized addresses can invoke functions with this modifier. /// @dev Only authorized addresses can invoke functions with this modifier.
modifier onlyAuthorized() { modifier onlyAuthorized() {

View File

@@ -51,11 +51,7 @@ library LibBytesV06 {
/// @param dest memory address to copy bytes to. /// @param dest memory address to copy bytes to.
/// @param source memory address to copy bytes from. /// @param source memory address to copy bytes from.
/// @param length number of bytes to copy. /// @param length number of bytes to copy.
function memCopy( function memCopy(uint256 dest, uint256 source, uint256 length) internal pure {
uint256 dest,
uint256 source,
uint256 length
) internal pure {
if (length < 32) { if (length < 32) {
// Handle a partial word by reading destination and masking // Handle a partial word by reading destination and masking
// off the bits we are interested in. // off the bits we are interested in.
@@ -106,7 +102,6 @@ library LibBytesV06 {
// Copy whole words front to back // Copy whole words front to back
// Note: the first check is always true, // Note: the first check is always true,
// this could have been a do-while loop. // this could have been a do-while loop.
// solhint-disable-next-line no-empty-blocks
for { for {
} lt(source, sEnd) { } lt(source, sEnd) {
@@ -141,7 +136,6 @@ library LibBytesV06 {
// 2**255, so they can be safely re-interpreted as signed. // 2**255, so they can be safely re-interpreted as signed.
// Note: the first check is always true, // Note: the first check is always true,
// this could have been a do-while loop. // this could have been a do-while loop.
// solhint-disable-next-line no-empty-blocks
for { for {
} slt(dest, dEnd) { } slt(dest, dEnd) {
@@ -164,11 +158,7 @@ library LibBytesV06 {
/// @param from The starting index for the slice (inclusive). /// @param from The starting index for the slice (inclusive).
/// @param to The final index for the slice (exclusive). /// @param to The final index for the slice (exclusive).
/// @return result The slice containing bytes at indices [from, to) /// @return result The slice containing bytes at indices [from, to)
function slice( function slice(bytes memory b, uint256 from, uint256 to) internal pure returns (bytes memory result) {
bytes memory b,
uint256 from,
uint256 to
) internal pure returns (bytes memory result) {
// Ensure that the from and to positions are valid positions for a slice within // Ensure that the from and to positions are valid positions for a slice within
// the byte array that is being used. // the byte array that is being used.
if (from > to) { if (from > to) {
@@ -203,11 +193,7 @@ library LibBytesV06 {
/// @param from The starting index for the slice (inclusive). /// @param from The starting index for the slice (inclusive).
/// @param to The final index for the slice (exclusive). /// @param to The final index for the slice (exclusive).
/// @return result The slice containing bytes at indices [from, to) /// @return result The slice containing bytes at indices [from, to)
function sliceDestructive( function sliceDestructive(bytes memory b, uint256 from, uint256 to) internal pure returns (bytes memory result) {
bytes memory b,
uint256 from,
uint256 to
) internal pure returns (bytes memory result) {
// Ensure that the from and to positions are valid positions for a slice within // Ensure that the from and to positions are valid positions for a slice within
// the byte array that is being used. // the byte array that is being used.
if (from > to) { if (from > to) {
@@ -307,11 +293,7 @@ library LibBytesV06 {
/// @param b Byte array to insert address into. /// @param b Byte array to insert address into.
/// @param index Index in byte array of address. /// @param index Index in byte array of address.
/// @param input Address to put into byte array. /// @param input Address to put into byte array.
function writeAddress( function writeAddress(bytes memory b, uint256 index, address input) internal pure {
bytes memory b,
uint256 index,
address input
) internal pure {
if (b.length < index + 20) { if (b.length < index + 20) {
LibRichErrorsV06.rrevert( LibRichErrorsV06.rrevert(
LibBytesRichErrorsV06.InvalidByteOperationError( LibBytesRichErrorsV06.InvalidByteOperationError(
@@ -380,11 +362,7 @@ library LibBytesV06 {
/// @param b Byte array to insert <input> into. /// @param b Byte array to insert <input> into.
/// @param index Index in byte array of <input>. /// @param index Index in byte array of <input>.
/// @param input bytes32 to put into byte array. /// @param input bytes32 to put into byte array.
function writeBytes32( function writeBytes32(bytes memory b, uint256 index, bytes32 input) internal pure {
bytes memory b,
uint256 index,
bytes32 input
) internal pure {
if (b.length < index + 32) { if (b.length < index + 32) {
LibRichErrorsV06.rrevert( LibRichErrorsV06.rrevert(
LibBytesRichErrorsV06.InvalidByteOperationError( LibBytesRichErrorsV06.InvalidByteOperationError(
@@ -417,11 +395,7 @@ library LibBytesV06 {
/// @param b Byte array to insert <input> into. /// @param b Byte array to insert <input> into.
/// @param index Index in byte array of <input>. /// @param index Index in byte array of <input>.
/// @param input uint256 to put into byte array. /// @param input uint256 to put into byte array.
function writeUint256( function writeUint256(bytes memory b, uint256 index, uint256 input) internal pure {
bytes memory b,
uint256 index,
uint256 input
) internal pure {
writeBytes32(b, index, bytes32(input)); writeBytes32(b, index, bytes32(input));
} }

View File

@@ -38,7 +38,6 @@ library LibAuthorizableRichErrorsV06 {
// bytes4(keccak256("ZeroCantBeAuthorizedError()")) // bytes4(keccak256("ZeroCantBeAuthorizedError()"))
bytes internal constant ZERO_CANT_BE_AUTHORIZED_ERROR_BYTES = hex"57654fe4"; bytes internal constant ZERO_CANT_BE_AUTHORIZED_ERROR_BYTES = hex"57654fe4";
// solhint-disable func-name-mixedcase
function AuthorizedAddressMismatchError(address authorized, address target) internal pure returns (bytes memory) { function AuthorizedAddressMismatchError(address authorized, address target) internal pure returns (bytes memory) {
return abi.encodeWithSelector(AUTHORIZED_ADDRESS_MISMATCH_ERROR_SELECTOR, authorized, target); return abi.encodeWithSelector(AUTHORIZED_ADDRESS_MISMATCH_ERROR_SELECTOR, authorized, target);
} }

View File

@@ -34,7 +34,6 @@ library LibBytesRichErrorsV06 {
// bytes4(keccak256("InvalidByteOperationError(uint8,uint256,uint256)")) // bytes4(keccak256("InvalidByteOperationError(uint8,uint256,uint256)"))
bytes4 internal constant INVALID_BYTE_OPERATION_ERROR_SELECTOR = 0x28006595; bytes4 internal constant INVALID_BYTE_OPERATION_ERROR_SELECTOR = 0x28006595;
// solhint-disable func-name-mixedcase
function InvalidByteOperationError( function InvalidByteOperationError(
InvalidByteOperationErrorCodes errorCode, InvalidByteOperationErrorCodes errorCode,
uint256 offset, uint256 offset,

View File

@@ -26,7 +26,6 @@ library LibMathRichErrorsV06 {
// bytes4(keccak256("RoundingError(uint256,uint256,uint256)")) // bytes4(keccak256("RoundingError(uint256,uint256,uint256)"))
bytes4 internal constant ROUNDING_ERROR_SELECTOR = 0x339f3de2; bytes4 internal constant ROUNDING_ERROR_SELECTOR = 0x339f3de2;
// solhint-disable func-name-mixedcase
function DivisionByZeroError() internal pure returns (bytes memory) { function DivisionByZeroError() internal pure returns (bytes memory) {
return DIVISION_BY_ZERO_ERROR; return DIVISION_BY_ZERO_ERROR;
} }

View File

@@ -25,7 +25,6 @@ library LibOwnableRichErrorsV06 {
// bytes4(keccak256("TransferOwnerToZeroError()")) // bytes4(keccak256("TransferOwnerToZeroError()"))
bytes internal constant TRANSFER_OWNER_TO_ZERO_ERROR_BYTES = hex"e69edc3e"; bytes internal constant TRANSFER_OWNER_TO_ZERO_ERROR_BYTES = hex"e69edc3e";
// solhint-disable func-name-mixedcase
function OnlyOwnerError(address sender, address owner) internal pure returns (bytes memory) { function OnlyOwnerError(address sender, address owner) internal pure returns (bytes memory) {
return abi.encodeWithSelector(ONLY_OWNER_ERROR_SELECTOR, sender, owner); return abi.encodeWithSelector(ONLY_OWNER_ERROR_SELECTOR, sender, owner);
} }

View File

@@ -23,7 +23,6 @@ library LibReentrancyGuardRichErrorsV06 {
// bytes4(keccak256("IllegalReentrancyError()")) // bytes4(keccak256("IllegalReentrancyError()"))
bytes internal constant ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES = hex"0c3b823f"; bytes internal constant ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES = hex"0c3b823f";
// solhint-disable func-name-mixedcase
function IllegalReentrancyError() internal pure returns (bytes memory) { function IllegalReentrancyError() internal pure returns (bytes memory) {
return ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES; return ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES;
} }

View File

@@ -23,7 +23,6 @@ library LibRichErrorsV06 {
// bytes4(keccak256("Error(string)")) // bytes4(keccak256("Error(string)"))
bytes4 internal constant STANDARD_ERROR_SELECTOR = 0x08c379a0; bytes4 internal constant STANDARD_ERROR_SELECTOR = 0x08c379a0;
// solhint-disable func-name-mixedcase
/// @dev ABI encode a standard, string revert error payload. /// @dev ABI encode a standard, string revert error payload.
/// This is the same payload that would be included by a `revert(string)` /// This is the same payload that would be included by a `revert(string)`
/// solidity statement. It has the function signature `Error(string)`. /// solidity statement. It has the function signature `Error(string)`.
@@ -33,8 +32,6 @@ library LibRichErrorsV06 {
return abi.encodeWithSelector(STANDARD_ERROR_SELECTOR, bytes(message)); return abi.encodeWithSelector(STANDARD_ERROR_SELECTOR, bytes(message));
} }
// solhint-enable func-name-mixedcase
/// @dev Reverts an encoded rich revert reason `errorData`. /// @dev Reverts an encoded rich revert reason `errorData`.
/// @param errorData ABI encoded error data. /// @param errorData ABI encoded error data.
function rrevert(bytes memory errorData) internal pure { function rrevert(bytes memory errorData) internal pure {

View File

@@ -40,12 +40,7 @@ library LibSafeMathRichErrorsV06 {
VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT128 VALUE_TOO_LARGE_TO_DOWNCAST_TO_UINT128
} }
// solhint-disable func-name-mixedcase function Uint256BinOpError(BinOpErrorCodes errorCode, uint256 a, uint256 b) internal pure returns (bytes memory) {
function Uint256BinOpError(
BinOpErrorCodes errorCode,
uint256 a,
uint256 b
) internal pure returns (bytes memory) {
return abi.encodeWithSelector(UINT256_BINOP_ERROR_SELECTOR, errorCode, a, b); return abi.encodeWithSelector(UINT256_BINOP_ERROR_SELECTOR, errorCode, a, b);
} }

View File

@@ -20,7 +20,6 @@ pragma solidity ^0.5.9;
import "../src/Authorizable.sol"; import "../src/Authorizable.sol";
// solhint-disable no-empty-blocks
contract TestAuthorizable is Authorizable { contract TestAuthorizable is Authorizable {
function onlyAuthorizedFn() external view onlyAuthorized {} function onlyAuthorizedFn() external view onlyAuthorized {}
} }

View File

@@ -30,11 +30,10 @@ contract TestLibAddressArray {
/// @param addressArray Array of addresses. /// @param addressArray Array of addresses.
/// @param addressToAppend Address to append. /// @param addressToAppend Address to append.
/// @return Array of addresses: [... addressArray, addressToAppend] /// @return Array of addresses: [... addressArray, addressToAppend]
function publicAppend(address[] memory addressArray, address addressToAppend) function publicAppend(
public address[] memory addressArray,
pure address addressToAppend
returns (address[] memory) ) public pure returns (address[] memory) {
{
return addressArray.append(addressToAppend); return addressArray.append(addressToAppend);
} }
@@ -52,15 +51,7 @@ contract TestLibAddressArray {
address[] memory addressArray, address[] memory addressArray,
int256 freeMemOffset, int256 freeMemOffset,
address addressToAppend address addressToAppend
) ) public pure returns (address[] memory result, uint256 oldArrayMemStart, uint256 newArrayMemStart) {
public
pure
returns (
address[] memory result,
uint256 oldArrayMemStart,
uint256 newArrayMemStart
)
{
assembly { assembly {
// Remember the original memory address of the array. // Remember the original memory address of the array.
oldArrayMemStart := addressArray oldArrayMemStart := addressArray
@@ -89,11 +80,10 @@ contract TestLibAddressArray {
/// @param addressArray Array of addresses. /// @param addressArray Array of addresses.
/// @param target Address to search for in array. /// @param target Address to search for in array.
/// @return Existence and index of the target in the array. /// @return Existence and index of the target in the array.
function publicIndexOf(address[] memory addressArray, address target) function publicIndexOf(
public address[] memory addressArray,
pure address target
returns (bool success, uint256 index) ) public pure returns (bool success, uint256 index) {
{
(success, index) = addressArray.indexOf(target); (success, index) = addressArray.indexOf(target);
} }
} }

View File

@@ -60,11 +60,7 @@ contract TestLibBytes {
/// @param b Byte array to insert address into. /// @param b Byte array to insert address into.
/// @param index Index in byte array of address. /// @param index Index in byte array of address.
/// @param input Address to put into byte array. /// @param input Address to put into byte array.
function publicWriteAddress( function publicWriteAddress(bytes memory b, uint256 index, address input) public pure returns (bytes memory) {
bytes memory b,
uint256 index,
address input
) public pure returns (bytes memory) {
b.writeAddress(index, input); b.writeAddress(index, input);
return b; return b;
} }
@@ -82,11 +78,7 @@ contract TestLibBytes {
/// @param b Byte array to insert <input> into. /// @param b Byte array to insert <input> into.
/// @param index Index in byte array of <input>. /// @param index Index in byte array of <input>.
/// @param input bytes32 to put into byte array. /// @param input bytes32 to put into byte array.
function publicWriteBytes32( function publicWriteBytes32(bytes memory b, uint256 index, bytes32 input) public pure returns (bytes memory) {
bytes memory b,
uint256 index,
bytes32 input
) public pure returns (bytes memory) {
b.writeBytes32(index, input); b.writeBytes32(index, input);
return b; return b;
} }
@@ -104,11 +96,7 @@ contract TestLibBytes {
/// @param b Byte array to insert <input> into. /// @param b Byte array to insert <input> into.
/// @param index Index in byte array of <input>. /// @param index Index in byte array of <input>.
/// @param input uint256 to put into byte array. /// @param input uint256 to put into byte array.
function publicWriteUint256( function publicWriteUint256(bytes memory b, uint256 index, uint256 input) public pure returns (bytes memory) {
bytes memory b,
uint256 index,
uint256 input
) public pure returns (bytes memory) {
b.writeUint256(index, input); b.writeUint256(index, input);
return b; return b;
} }

View File

@@ -33,9 +33,9 @@ contract TestRefundable is Refundable {
return _shouldNotRefund; return _shouldNotRefund;
} }
function refundFinalBalanceFunction() public payable refundFinalBalance {} // solhint-disable-line no-empty-blocks function refundFinalBalanceFunction() public payable refundFinalBalance {}
function disableRefundUntilEndFunction() public payable disableRefundUntilEnd {} // solhint-disable-line no-empty-blocks function disableRefundUntilEndFunction() public payable disableRefundUntilEnd {}
function nestedDisableRefundUntilEndFunction() public payable disableRefundUntilEnd returns (uint256) { function nestedDisableRefundUntilEndFunction() public payable disableRefundUntilEnd returns (uint256) {
disableRefundUntilEndFunction(); disableRefundUntilEndFunction();

View File

@@ -1,6 +1,6 @@
{ {
"name": "@0x/contracts-utils", "name": "@0x/contracts-utils",
"version": "4.8.29", "version": "4.8.35",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@@ -51,7 +51,7 @@
"devDependencies": { "devDependencies": {
"@0x/abi-gen": "^5.8.1", "@0x/abi-gen": "^5.8.1",
"@0x/contracts-gen": "^2.0.48", "@0x/contracts-gen": "^2.0.48",
"@0x/contracts-test-utils": "^5.4.38", "@0x/contracts-test-utils": "^5.4.44",
"@0x/dev-utils": "^5.0.0", "@0x/dev-utils": "^5.0.0",
"@0x/order-utils": "^10.4.28", "@0x/order-utils": "^10.4.28",
"@0x/sol-compiler": "^4.8.2", "@0x/sol-compiler": "^4.8.2",

View File

@@ -142,4 +142,3 @@ describe('LibAddressArray', () => {
}); });
}); });
}); });
// tslint:disable:max-file-line-count

View File

@@ -446,7 +446,6 @@ blockchainTests('LibBytes', env => {
describe('memCopy', () => { describe('memCopy', () => {
// Create memory 0x000102...FF // Create memory 0x000102...FF
const memSize = 256; const memSize = 256;
// tslint:disable:no-shadowed-variable
const memory = new Uint8Array(memSize).map((_, i) => i); const memory = new Uint8Array(memSize).map((_, i) => i);
const memHex = toHex(memory); const memHex = toHex(memory);
@@ -782,4 +781,3 @@ blockchainTests('LibBytes', env => {
}); });
}); });
}); });
// tslint:disable:max-file-line-count

View File

@@ -310,7 +310,6 @@ blockchainTests('LibMath', env => {
const numerator = new BigNumber(100); const numerator = new BigNumber(100);
const denominator = new BigNumber(102); const denominator = new BigNumber(102);
const target = new BigNumber(52); const target = new BigNumber(52);
// tslint:disable-next-line: boolean-naming
const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync(); const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync();
expect(actual).to.eq(true); expect(actual).to.eq(true);
}); });
@@ -319,7 +318,6 @@ blockchainTests('LibMath', env => {
const numerator = new BigNumber(100); const numerator = new BigNumber(100);
const denominator = new BigNumber(101); const denominator = new BigNumber(101);
const target = new BigNumber(92); const target = new BigNumber(92);
// tslint:disable-next-line: boolean-naming
const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync(); const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync();
expect(actual).to.eq(false); expect(actual).to.eq(false);
}); });
@@ -328,9 +326,7 @@ blockchainTests('LibMath', env => {
const numerator = ONE_ETHER; const numerator = ONE_ETHER;
const denominator = ONE_ETHER.dividedToIntegerBy(2); const denominator = ONE_ETHER.dividedToIntegerBy(2);
const target = ONE_ETHER.times(0.01); const target = ONE_ETHER.times(0.01);
// tslint:disable-next-line: boolean-naming
const expected = isRoundingErrorFloor(numerator, denominator, target); const expected = isRoundingErrorFloor(numerator, denominator, target);
// tslint:disable-next-line: boolean-naming
const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync(); const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync();
expect(actual).to.eq(expected); expect(actual).to.eq(expected);
}); });
@@ -376,7 +372,6 @@ blockchainTests('LibMath', env => {
const numerator = new BigNumber(100); const numerator = new BigNumber(100);
const denominator = new BigNumber(101); const denominator = new BigNumber(101);
const target = new BigNumber(92); const target = new BigNumber(92);
// tslint:disable-next-line: boolean-naming
const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync(); const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync();
expect(actual).to.eq(true); expect(actual).to.eq(true);
}); });
@@ -385,7 +380,6 @@ blockchainTests('LibMath', env => {
const numerator = new BigNumber(100); const numerator = new BigNumber(100);
const denominator = new BigNumber(102); const denominator = new BigNumber(102);
const target = new BigNumber(52); const target = new BigNumber(52);
// tslint:disable-next-line: boolean-naming
const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync(); const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync();
expect(actual).to.eq(false); expect(actual).to.eq(false);
}); });
@@ -394,9 +388,7 @@ blockchainTests('LibMath', env => {
const numerator = ONE_ETHER; const numerator = ONE_ETHER;
const denominator = ONE_ETHER.dividedToIntegerBy(2); const denominator = ONE_ETHER.dividedToIntegerBy(2);
const target = ONE_ETHER.times(0.01); const target = ONE_ETHER.times(0.01);
// tslint:disable-next-line: boolean-naming
const expected = isRoundingErrorCeil(numerator, denominator, target); const expected = isRoundingErrorCeil(numerator, denominator, target);
// tslint:disable-next-line: boolean-naming
const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync(); const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync();
expect(actual).to.eq(expected); expect(actual).to.eq(expected);
}); });

View File

@@ -53,7 +53,6 @@ describe('TestLogDecoding', () => {
.emitEvent() .emitEvent()
.awaitTransactionSuccessAsync(); .awaitTransactionSuccessAsync();
expect(txReceipt.logs.length).to.be.equal(1); expect(txReceipt.logs.length).to.be.equal(1);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent); expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent);
}); });
it('should not decode event args when no dependencies are passed into wrapper', async () => { it('should not decode event args when no dependencies are passed into wrapper', async () => {
@@ -61,7 +60,6 @@ describe('TestLogDecoding', () => {
.emitEventDownstream() .emitEventDownstream()
.awaitTransactionSuccessAsync(); .awaitTransactionSuccessAsync();
expect(txReceipt.logs.length).to.be.equal(1); expect(txReceipt.logs.length).to.be.equal(1);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.undefined(); expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.undefined();
}); });
it('should decode args for local but not downstream event when no dependencies are passed into wrapper', async () => { it('should decode args for local but not downstream event when no dependencies are passed into wrapper', async () => {
@@ -69,15 +67,12 @@ describe('TestLogDecoding', () => {
.emitEventsLocalAndDownstream() .emitEventsLocalAndDownstream()
.awaitTransactionSuccessAsync(); .awaitTransactionSuccessAsync();
expect(txReceipt.logs.length).to.be.equal(2); expect(txReceipt.logs.length).to.be.equal(2);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent); expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[1] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.undefined(); expect((txReceipt.logs[1] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.undefined();
}); });
it('should decode locally emitted event args when dependencies are passed into wrapper', async () => { it('should decode locally emitted event args when dependencies are passed into wrapper', async () => {
const txReceipt = await testLogDecodingWithDependencies.emitEvent().awaitTransactionSuccessAsync(); const txReceipt = await testLogDecodingWithDependencies.emitEvent().awaitTransactionSuccessAsync();
expect(txReceipt.logs.length).to.be.equal(1); expect(txReceipt.logs.length).to.be.equal(1);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent); expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent);
}); });
it('should decode downstream event args when dependencies are passed into wrapper', async () => { it('should decode downstream event args when dependencies are passed into wrapper', async () => {
@@ -85,7 +80,6 @@ describe('TestLogDecoding', () => {
.emitEventDownstream() .emitEventDownstream()
.awaitTransactionSuccessAsync(); .awaitTransactionSuccessAsync();
expect(txReceipt.logs.length).to.be.equal(1); expect(txReceipt.logs.length).to.be.equal(1);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal( expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(
expectedDownstreamEvent, expectedDownstreamEvent,
); );
@@ -95,9 +89,7 @@ describe('TestLogDecoding', () => {
.emitEventsLocalAndDownstream() .emitEventsLocalAndDownstream()
.awaitTransactionSuccessAsync(); .awaitTransactionSuccessAsync();
expect(txReceipt.logs.length).to.be.equal(2); expect(txReceipt.logs.length).to.be.equal(2);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent); expect((txReceipt.logs[0] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(expectedEvent);
// tslint:disable no-unnecessary-type-assertion
expect((txReceipt.logs[1] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal( expect((txReceipt.logs[1] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(
expectedDownstreamEvent, expectedDownstreamEvent,
); );

View File

@@ -1,4 +1,58 @@
[ [
{
"timestamp": 1670879498,
"version": "0.38.3",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1669235113,
"version": "0.38.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1668477029,
"version": "0.38.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "0.38.0",
"changes": [
{
"note": "Rename Velodrome to Solidly and add SolidlyMixin support on Polygon"
}
],
"timestamp": 1667607537
},
{
"timestamp": 1667427402,
"version": "0.37.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1666645023,
"version": "0.37.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{ {
"timestamp": 1666381417, "timestamp": 1666381417,
"version": "0.37.8", "version": "0.37.8",

View File

@@ -5,6 +5,30 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v0.38.3 - _December 12, 2022_
* Dependencies updated
## v0.38.2 - _November 23, 2022_
* Dependencies updated
## v0.38.1 - _November 15, 2022_
* Dependencies updated
## v0.38.0 - _November 5, 2022_
* Rename Velodrome to Solidly and add SolidlyMixin support on Polygon
## v0.37.10 - _November 2, 2022_
* Dependencies updated
## v0.37.9 - _October 24, 2022_
* Dependencies updated
## v0.37.8 - _October 21, 2022_ ## v0.37.8 - _October 21, 2022_
* Dependencies updated * Dependencies updated

View File

@@ -121,7 +121,6 @@
"./contracts/src/transformers/bridges/PolygonBridgeAdapter.sol", "./contracts/src/transformers/bridges/PolygonBridgeAdapter.sol",
"./contracts/src/transformers/bridges/mixins/MixinAaveV2.sol", "./contracts/src/transformers/bridges/mixins/MixinAaveV2.sol",
"./contracts/src/transformers/bridges/mixins/MixinBalancer.sol", "./contracts/src/transformers/bridges/mixins/MixinBalancer.sol",
"./contracts/src/transformers/bridges/mixins/MixinBalancerV2.sol",
"./contracts/src/transformers/bridges/mixins/MixinBalancerV2Batch.sol", "./contracts/src/transformers/bridges/mixins/MixinBalancerV2Batch.sol",
"./contracts/src/transformers/bridges/mixins/MixinBancor.sol", "./contracts/src/transformers/bridges/mixins/MixinBancor.sol",
"./contracts/src/transformers/bridges/mixins/MixinBancorV3.sol", "./contracts/src/transformers/bridges/mixins/MixinBancorV3.sol",
@@ -140,11 +139,11 @@
"./contracts/src/transformers/bridges/mixins/MixinNerve.sol", "./contracts/src/transformers/bridges/mixins/MixinNerve.sol",
"./contracts/src/transformers/bridges/mixins/MixinPlatypus.sol", "./contracts/src/transformers/bridges/mixins/MixinPlatypus.sol",
"./contracts/src/transformers/bridges/mixins/MixinShell.sol", "./contracts/src/transformers/bridges/mixins/MixinShell.sol",
"./contracts/src/transformers/bridges/mixins/MixinSolidly.sol",
"./contracts/src/transformers/bridges/mixins/MixinSynthetix.sol", "./contracts/src/transformers/bridges/mixins/MixinSynthetix.sol",
"./contracts/src/transformers/bridges/mixins/MixinUniswap.sol", "./contracts/src/transformers/bridges/mixins/MixinUniswap.sol",
"./contracts/src/transformers/bridges/mixins/MixinUniswapV2.sol", "./contracts/src/transformers/bridges/mixins/MixinUniswapV2.sol",
"./contracts/src/transformers/bridges/mixins/MixinUniswapV3.sol", "./contracts/src/transformers/bridges/mixins/MixinUniswapV3.sol",
"./contracts/src/transformers/bridges/mixins/MixinVelodrome.sol",
"./contracts/src/transformers/bridges/mixins/MixinZeroExBridge.sol", "./contracts/src/transformers/bridges/mixins/MixinZeroExBridge.sol",
"./contracts/src/vendor/IERC1155Token.sol", "./contracts/src/vendor/IERC1155Token.sol",
"./contracts/src/vendor/IERC721Token.sol", "./contracts/src/vendor/IERC721Token.sol",

View File

@@ -57,8 +57,6 @@ interface IZeroEx is
IERC1155OrdersFeature, IERC1155OrdersFeature,
IERC165Feature IERC165Feature
{ {
// solhint-disable state-visibility
/// @dev Fallback for just receiving ether. /// @dev Fallback for just receiving ether.
receive() external payable; receive() external payable;
} }

View File

@@ -29,7 +29,6 @@ import "./errors/LibProxyRichErrors.sol";
/// @dev An extensible proxy contract that serves as a universal entry point for /// @dev An extensible proxy contract that serves as a universal entry point for
/// interacting with the 0x protocol. /// interacting with the 0x protocol.
contract ZeroEx { contract ZeroEx {
// solhint-disable separate-by-one-line-in-contract,indent,var-name-mixedcase
using LibBytesV06 for bytes; using LibBytesV06 for bytes;
/// @dev Construct this contract and register the `BootstrapFeature` feature. /// @dev Construct this contract and register the `BootstrapFeature` feature.
@@ -43,8 +42,6 @@ contract ZeroEx {
LibProxyStorage.getStorage().impls[bootstrap.bootstrap.selector] = address(bootstrap); LibProxyStorage.getStorage().impls[bootstrap.bootstrap.selector] = address(bootstrap);
} }
// solhint-disable state-visibility
/// @dev Forwards calls to the appropriate implementation contract. /// @dev Forwards calls to the appropriate implementation contract.
fallback() external payable { fallback() external payable {
bytes4 selector = msg.data.readBytes4(0); bytes4 selector = msg.data.readBytes4(0);
@@ -63,8 +60,6 @@ contract ZeroEx {
/// @dev Fallback for just receiving ether. /// @dev Fallback for just receiving ether.
receive() external payable {} receive() external payable {}
// solhint-enable state-visibility
/// @dev Get the implementation contract of a registered function. /// @dev Get the implementation contract of a registered function.
/// @param selector The function selector. /// @param selector The function selector.
/// @return impl The implementation contract address. /// @return impl The implementation contract address.

View File

@@ -37,8 +37,6 @@ contract ZeroExOptimized {
LibProxyStorage.getStorage().impls[bootstrap.bootstrap.selector] = address(bootstrap); LibProxyStorage.getStorage().impls[bootstrap.bootstrap.selector] = address(bootstrap);
} }
// solhint-disable state-visibility
/// @dev Forwards calls to the appropriate implementation contract. /// @dev Forwards calls to the appropriate implementation contract.
fallback() external payable { fallback() external payable {
// This is used in assembly below as impls_slot. // This is used in assembly below as impls_slot.

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibCommonRichErrors { library LibCommonRichErrors {
// solhint-disable func-name-mixedcase
function OnlyCallableBySelfError(address sender) internal pure returns (bytes memory) { function OnlyCallableBySelfError(address sender) internal pure returns (bytes memory) {
return abi.encodeWithSelector(bytes4(keccak256("OnlyCallableBySelfError(address)")), sender); return abi.encodeWithSelector(bytes4(keccak256("OnlyCallableBySelfError(address)")), sender);
} }

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibLiquidityProviderRichErrors { library LibLiquidityProviderRichErrors {
// solhint-disable func-name-mixedcase
function LiquidityProviderIncompleteSellError( function LiquidityProviderIncompleteSellError(
address providerAddress, address providerAddress,
address makerToken, address makerToken,

View File

@@ -20,13 +20,10 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibMetaTransactionsRichErrors { library LibMetaTransactionsRichErrors {
// solhint-disable func-name-mixedcase function InvalidMetaTransactionsArrayLengthsError(
uint256 mtxCount,
function InvalidMetaTransactionsArrayLengthsError(uint256 mtxCount, uint256 signatureCount) uint256 signatureCount
internal ) internal pure returns (bytes memory) {
pure
returns (bytes memory)
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("InvalidMetaTransactionsArrayLengthsError(uint256,uint256)")), bytes4(keccak256("InvalidMetaTransactionsArrayLengthsError(uint256,uint256)")),
@@ -35,11 +32,10 @@ library LibMetaTransactionsRichErrors {
); );
} }
function MetaTransactionUnsupportedFunctionError(bytes32 mtxHash, bytes4 selector) function MetaTransactionUnsupportedFunctionError(
internal bytes32 mtxHash,
pure bytes4 selector
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("MetaTransactionUnsupportedFunctionError(bytes32,bytes4)")), bytes4(keccak256("MetaTransactionUnsupportedFunctionError(bytes32,bytes4)")),
@@ -120,11 +116,10 @@ library LibMetaTransactionsRichErrors {
); );
} }
function MetaTransactionAlreadyExecutedError(bytes32 mtxHash, uint256 executedBlockNumber) function MetaTransactionAlreadyExecutedError(
internal bytes32 mtxHash,
pure uint256 executedBlockNumber
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("MetaTransactionAlreadyExecutedError(bytes32,uint256)")), bytes4(keccak256("MetaTransactionAlreadyExecutedError(bytes32,uint256)")),

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibNFTOrdersRichErrors { library LibNFTOrdersRichErrors {
// solhint-disable func-name-mixedcase
function OverspentEthError(uint256 ethSpent, uint256 ethAvailable) internal pure returns (bytes memory) { function OverspentEthError(uint256 ethSpent, uint256 ethAvailable) internal pure returns (bytes memory) {
return abi.encodeWithSelector(bytes4(keccak256("OverspentEthError(uint256,uint256)")), ethSpent, ethAvailable); return abi.encodeWithSelector(bytes4(keccak256("OverspentEthError(uint256,uint256)")), ethSpent, ethAvailable);
} }
@@ -56,11 +54,10 @@ library LibNFTOrdersRichErrors {
); );
} }
function SellOrderFeesExceedSpreadError(uint256 sellOrderFees, uint256 spread) function SellOrderFeesExceedSpreadError(
internal uint256 sellOrderFees,
pure uint256 spread
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("SellOrderFeesExceedSpreadError(uint256,uint256)")), bytes4(keccak256("SellOrderFeesExceedSpreadError(uint256,uint256)")),
@@ -114,11 +111,10 @@ library LibNFTOrdersRichErrors {
); );
} }
function ExceedsRemainingOrderAmount(uint128 remainingOrderAmount, uint128 fillAmount) function ExceedsRemainingOrderAmount(
internal uint128 remainingOrderAmount,
pure uint128 fillAmount
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("ExceedsRemainingOrderAmount(uint128,uint128)")), bytes4(keccak256("ExceedsRemainingOrderAmount(uint128,uint128)")),

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibNativeOrdersRichErrors { library LibNativeOrdersRichErrors {
// solhint-disable func-name-mixedcase
function ProtocolFeeRefundFailed(address receiver, uint256 refundAmount) internal pure returns (bytes memory) { function ProtocolFeeRefundFailed(address receiver, uint256 refundAmount) internal pure returns (bytes memory) {
return return
abi.encodeWithSelector( abi.encodeWithSelector(

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibOwnableRichErrors { library LibOwnableRichErrors {
// solhint-disable func-name-mixedcase
function OnlyOwnerError(address sender, address owner) internal pure returns (bytes memory) { function OnlyOwnerError(address sender, address owner) internal pure returns (bytes memory) {
return abi.encodeWithSelector(bytes4(keccak256("OnlyOwnerError(address,address)")), sender, owner); return abi.encodeWithSelector(bytes4(keccak256("OnlyOwnerError(address,address)")), sender, owner);
} }

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibProxyRichErrors { library LibProxyRichErrors {
// solhint-disable func-name-mixedcase
function NotImplementedError(bytes4 selector) internal pure returns (bytes memory) { function NotImplementedError(bytes4 selector) internal pure returns (bytes memory) {
return abi.encodeWithSelector(bytes4(keccak256("NotImplementedError(bytes4)")), selector); return abi.encodeWithSelector(bytes4(keccak256("NotImplementedError(bytes4)")), selector);
} }

View File

@@ -29,8 +29,6 @@ library LibSignatureRichErrors {
BAD_SIGNATURE_DATA BAD_SIGNATURE_DATA
} }
// solhint-disable func-name-mixedcase
function SignatureValidationError( function SignatureValidationError(
SignatureValidationErrorCodes code, SignatureValidationErrorCodes code,
bytes32 hash, bytes32 hash,
@@ -47,11 +45,10 @@ library LibSignatureRichErrors {
); );
} }
function SignatureValidationError(SignatureValidationErrorCodes code, bytes32 hash) function SignatureValidationError(
internal SignatureValidationErrorCodes code,
pure bytes32 hash
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return abi.encodeWithSelector(bytes4(keccak256("SignatureValidationError(uint8,bytes32)")), code, hash); return abi.encodeWithSelector(bytes4(keccak256("SignatureValidationError(uint8,bytes32)")), code, hash);
} }
} }

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibSimpleFunctionRegistryRichErrors { library LibSimpleFunctionRegistryRichErrors {
// solhint-disable func-name-mixedcase
function NotInRollbackHistoryError(bytes4 selector, address targetImpl) internal pure returns (bytes memory) { function NotInRollbackHistoryError(bytes4 selector, address targetImpl) internal pure returns (bytes memory) {
return return
abi.encodeWithSelector( abi.encodeWithSelector(

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibTransformERC20RichErrors { library LibTransformERC20RichErrors {
// solhint-disable func-name-mixedcase,separate-by-one-line-in-contract
function InsufficientEthAttachedError(uint256 ethAttached, uint256 ethNeeded) internal pure returns (bytes memory) { function InsufficientEthAttachedError(uint256 ethAttached, uint256 ethNeeded) internal pure returns (bytes memory) {
return return
abi.encodeWithSelector( abi.encodeWithSelector(
@@ -45,11 +43,10 @@ library LibTransformERC20RichErrors {
); );
} }
function NegativeTransformERC20OutputError(address outputToken, uint256 outputTokenLostAmount) function NegativeTransformERC20OutputError(
internal address outputToken,
pure uint256 outputTokenLostAmount
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("NegativeTransformERC20OutputError(address,uint256)")), bytes4(keccak256("NegativeTransformERC20OutputError(address,uint256)")),
@@ -79,11 +76,10 @@ library LibTransformERC20RichErrors {
abi.encodeWithSelector(bytes4(keccak256("OnlyCallableByDeployerError(address,address)")), caller, deployer); abi.encodeWithSelector(bytes4(keccak256("OnlyCallableByDeployerError(address,address)")), caller, deployer);
} }
function InvalidExecutionContextError(address actualContext, address expectedContext) function InvalidExecutionContextError(
internal address actualContext,
pure address expectedContext
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("InvalidExecutionContextError(address,address)")), bytes4(keccak256("InvalidExecutionContextError(address,address)")),
@@ -97,11 +93,10 @@ library LibTransformERC20RichErrors {
INVALID_ARRAY_LENGTH INVALID_ARRAY_LENGTH
} }
function InvalidTransformDataError(InvalidTransformDataErrorCode errorCode, bytes memory transformData) function InvalidTransformDataError(
internal InvalidTransformDataErrorCode errorCode,
pure bytes memory transformData
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("InvalidTransformDataError(uint8,bytes)")), bytes4(keccak256("InvalidTransformDataError(uint8,bytes)")),
@@ -140,11 +135,10 @@ library LibTransformERC20RichErrors {
); );
} }
function InsufficientTakerTokenError(uint256 tokenBalance, uint256 tokensNeeded) function InsufficientTakerTokenError(
internal uint256 tokenBalance,
pure uint256 tokensNeeded
returns (bytes memory) ) internal pure returns (bytes memory) {
{
return return
abi.encodeWithSelector( abi.encodeWithSelector(
bytes4(keccak256("InsufficientTakerTokenError(uint256,uint256)")), bytes4(keccak256("InsufficientTakerTokenError(uint256,uint256)")),

View File

@@ -20,8 +20,6 @@
pragma solidity ^0.6.5; pragma solidity ^0.6.5;
library LibWalletRichErrors { library LibWalletRichErrors {
// solhint-disable func-name-mixedcase
function WalletExecuteCallFailedError( function WalletExecuteCallFailedError(
address wallet, address wallet,
address callTarget, address callTarget,

View File

@@ -38,11 +38,7 @@ contract FeeCollector is AuthorizableV06 {
/// @param weth The WETH contract. /// @param weth The WETH contract.
/// @param staking The staking contract. /// @param staking The staking contract.
/// @param poolId The pool ID this contract is collecting fees for. /// @param poolId The pool ID this contract is collecting fees for.
function initialize( function initialize(IEtherTokenV06 weth, IStaking staking, bytes32 poolId) external onlyAuthorized {
IEtherTokenV06 weth,
IStaking staking,
bytes32 poolId
) external onlyAuthorized {
weth.approve(address(staking), type(uint256).max); weth.approve(address(staking), type(uint256).max);
staking.joinStakingPoolAsMaker(poolId); staking.joinStakingPoolAsMaker(poolId);
} }

View File

@@ -27,15 +27,11 @@ import "./IFlashWallet.sol";
/// @dev A contract that can execute arbitrary calls from its owner. /// @dev A contract that can execute arbitrary calls from its owner.
contract FlashWallet is IFlashWallet { contract FlashWallet is IFlashWallet {
// solhint-disable no-unused-vars,indent,no-empty-blocks
using LibRichErrorsV06 for bytes; using LibRichErrorsV06 for bytes;
// solhint-disable
/// @dev Store the owner/deployer as an immutable to make this contract stateless. /// @dev Store the owner/deployer as an immutable to make this contract stateless.
address public immutable override owner; address public immutable override owner;
// solhint-enable
constructor() public { constructor() public {
// The deployer is the owner. // The deployer is the owner.
owner = msg.sender; owner = msg.sender;
@@ -73,13 +69,10 @@ contract FlashWallet is IFlashWallet {
/// @param target The call target. /// @param target The call target.
/// @param callData The call data. /// @param callData The call data.
/// @return resultData The data returned by the call. /// @return resultData The data returned by the call.
function executeDelegateCall(address payable target, bytes calldata callData) function executeDelegateCall(
external address payable target,
payable bytes calldata callData
override ) external payable override onlyOwner returns (bytes memory resultData) {
onlyOwner
returns (bytes memory resultData)
{
bool success; bool success;
(success, resultData) = target.delegatecall(callData); (success, resultData) = target.delegatecall(callData);
if (!success) { if (!success) {
@@ -89,12 +82,9 @@ contract FlashWallet is IFlashWallet {
} }
} }
// solhint-disable
/// @dev Allows this contract to receive ether. /// @dev Allows this contract to receive ether.
receive() external payable override {} receive() external payable override {}
// solhint-enable
/// @dev Signal support for receiving ERC1155 tokens. /// @dev Signal support for receiving ERC1155 tokens.
/// @param interfaceID The interface ID, as per ERC-165 rules. /// @param interfaceID The interface ID, as per ERC-165 rules.
/// @return hasSupport `true` if this contract supports an ERC-165 interface. /// @return hasSupport `true` if this contract supports an ERC-165 interface.

Some files were not shown because too many files have changed in this diff Show More