Compare commits
34 Commits
@0x/contra
...
@0x/protoc
Author | SHA1 | Date | |
---|---|---|---|
|
fe0676cec3 | ||
|
b697202e19 | ||
|
09bc48671c | ||
|
d31cc43ed6 | ||
|
372f23156b | ||
|
010a926d79 | ||
|
0000143b4e | ||
|
22684ff5ba | ||
|
4d9b68d527 | ||
|
957853788d | ||
|
28193479c6 | ||
|
70212534a1 | ||
|
ea9575e94d | ||
|
ca0b074893 | ||
|
b3281bfdb1 | ||
|
1516bf6a24 | ||
|
ab19bb41c4 | ||
|
7368aded88 | ||
|
b1f856e7a4 | ||
|
9d42018fc6 | ||
|
624cbebe27 | ||
|
4ace7c8c43 | ||
|
66846c8aec | ||
|
33e38fd0a1 | ||
|
5a6df5a39a | ||
|
592e7d34c9 | ||
|
1776dbef44 | ||
|
089718df33 | ||
|
7500ac36de | ||
|
f347f4392c | ||
|
10af74e616 | ||
|
cfb2392ac7 | ||
|
5a2447bef3 | ||
|
bf1b5c4257 |
@@ -268,6 +268,8 @@ jobs:
|
||||
command: yarn deps_versions:ci
|
||||
- run:
|
||||
command: yarn diff_md_docs:ci
|
||||
- run:
|
||||
command: yarn test:links
|
||||
submit-coverage:
|
||||
docker:
|
||||
- image: node:16
|
||||
|
@@ -60,6 +60,7 @@ lib
|
||||
/contracts/dev-utils/test/generated-wrappers
|
||||
/contracts/dev-utils/generated-artifacts
|
||||
/contracts/dev-utils/test/generated-artifacts
|
||||
/contracts/zero-ex/foundry-artifacts
|
||||
/contracts/zero-ex/generated-wrappers
|
||||
/contracts/zero-ex/test/generated-wrappers
|
||||
/contracts/zero-ex/generated-artifacts
|
||||
|
17
.solhint.json
Normal file
17
.solhint.json
Normal 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
1
.solhintignore
Normal file
@@ -0,0 +1 @@
|
||||
contracts/erc20/contracts/src/ZRXToken.sol
|
@@ -6,8 +6,6 @@
|
||||
|
||||
# https://git-scm.com/docs/gitignore#_pattern_format
|
||||
|
||||
packages/asset-swapper/ @dekz @dextracker @kyu-c
|
||||
|
||||
# Dev tools & setup
|
||||
|
||||
.circleci/ @dekz
|
||||
|
@@ -8,13 +8,13 @@ We welcome contributions from anyone on the internet and are grateful for even t
|
||||
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.
|
||||
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 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.
|
||||
- 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
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
Use `yarn lint` to lint the entire monorepo, and `PKG={PACKAGE_NAME} yarn lint` to lint a specific package.
|
||||
|
||||
Integrate it into your text editor:
|
||||
|
||||
- VSCode: [vscode-tslint](https://marketplace.visualstudio.com/items?itemName=eg2.tslint)
|
||||
- Atom: [linter-tslint](https://atom.io/packages/linter-tslint)
|
||||
- VSCode: [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
||||
- Atom: [ESLint](https://atom.io/packages/eslint)
|
||||
|
||||
#### Auto-formatter
|
||||
|
||||
|
@@ -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! -->
|
||||
|
||||
- [ ] Prefix PR title with `[WIP]` if necessary.
|
||||
- [ ] Add tests to cover changes as needed.
|
||||
- [ ] Update documentation as needed.
|
||||
- [ ] Add new entries to the relevant CHANGELOG.jsons.
|
||||
|
@@ -1,4 +1,67 @@
|
||||
[
|
||||
{
|
||||
"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,
|
||||
"version": "3.3.48",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665670315,
|
||||
"version": "3.3.47",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665531940,
|
||||
"version": "3.3.46",
|
||||
|
@@ -5,6 +5,34 @@ Edit the package's CHANGELOG.json file only.
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## 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_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v3.3.47 - _October 13, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v3.3.46 - _October 11, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
@@ -67,7 +67,3 @@ yarn lint
|
||||
```bash
|
||||
yarn test
|
||||
```
|
||||
|
||||
#### Testing options
|
||||
|
||||
Contracts testing options like coverage, profiling, revert traces or backing node choosing - are described [here](../TESTING.md).
|
||||
|
@@ -47,11 +47,7 @@ contract ERC20Token is IERC20Token {
|
||||
/// @param _to The address of the recipient
|
||||
/// @param _value The amount of token to be transferred
|
||||
/// @return True if transfer was successful
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) external returns (bool) {
|
||||
function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
|
||||
require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE");
|
||||
require(allowed[_from][msg.sender] >= _value, "ERC20_INSUFFICIENT_ALLOWANCE");
|
||||
require(balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW");
|
||||
|
@@ -31,11 +31,7 @@ library LibERC20Token {
|
||||
/// @param token The address of the token contract.
|
||||
/// @param spender The address that receives an allowance.
|
||||
/// @param allowance The allowance to set.
|
||||
function approve(
|
||||
address token,
|
||||
address spender,
|
||||
uint256 allowance
|
||||
) internal {
|
||||
function approve(address token, address spender, uint256 allowance) internal {
|
||||
bytes memory callData = abi.encodeWithSelector(IERC20Token(0).approve.selector, spender, allowance);
|
||||
_callWithOptionalBooleanResult(token, callData);
|
||||
}
|
||||
@@ -47,11 +43,7 @@ library LibERC20Token {
|
||||
/// @param token The address of the token contract.
|
||||
/// @param spender The address that receives an allowance.
|
||||
/// @param amount The minimum allowance needed.
|
||||
function approveIfBelow(
|
||||
address token,
|
||||
address spender,
|
||||
uint256 amount
|
||||
) internal {
|
||||
function approveIfBelow(address token, address spender, uint256 amount) internal {
|
||||
if (IERC20Token(token).allowance(address(this), spender) < amount) {
|
||||
approve(token, spender, uint256(-1));
|
||||
}
|
||||
@@ -63,11 +55,7 @@ library LibERC20Token {
|
||||
/// @param token The address of the token contract.
|
||||
/// @param to The address that receives the tokens
|
||||
/// @param amount Number of tokens to transfer.
|
||||
function transfer(
|
||||
address token,
|
||||
address to,
|
||||
uint256 amount
|
||||
) internal {
|
||||
function transfer(address token, address to, uint256 amount) internal {
|
||||
bytes memory callData = abi.encodeWithSelector(IERC20Token(0).transfer.selector, to, amount);
|
||||
_callWithOptionalBooleanResult(token, callData);
|
||||
}
|
||||
@@ -79,12 +67,7 @@ library LibERC20Token {
|
||||
/// @param from The owner of the tokens.
|
||||
/// @param to The address that receives the tokens
|
||||
/// @param amount Number of tokens to transfer.
|
||||
function transferFrom(
|
||||
address token,
|
||||
address from,
|
||||
address to,
|
||||
uint256 amount
|
||||
) internal {
|
||||
function transferFrom(address token, address from, address to, uint256 amount) internal {
|
||||
bytes memory callData = abi.encodeWithSelector(IERC20Token(0).transferFrom.selector, from, to, amount);
|
||||
_callWithOptionalBooleanResult(token, callData);
|
||||
}
|
||||
@@ -107,11 +90,7 @@ library LibERC20Token {
|
||||
/// @param owner The owner of the tokens.
|
||||
/// @param spender The address the spender.
|
||||
/// @return allowance The allowance for a token, owner, and spender.
|
||||
function allowance(
|
||||
address token,
|
||||
address owner,
|
||||
address spender
|
||||
) internal view returns (uint256 allowance_) {
|
||||
function allowance(address token, address owner, address spender) internal view returns (uint256 allowance_) {
|
||||
(bool didSucceed, bytes memory resultData) = token.staticcall(
|
||||
abi.encodeWithSelector(IERC20Token(0).allowance.selector, owner, spender)
|
||||
);
|
||||
|
@@ -21,18 +21,15 @@ pragma solidity ^0.5.9;
|
||||
import "./ERC20Token.sol";
|
||||
|
||||
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 _to Address to transfer to.
|
||||
/// @param _value Amount to transfer.
|
||||
/// @return Success of transfer.
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) external returns (bool) {
|
||||
function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
|
||||
uint256 allowance = allowed[_from][msg.sender];
|
||||
require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE");
|
||||
require(allowance >= _value, "ERC20_INSUFFICIENT_ALLOWANCE");
|
||||
|
@@ -13,7 +13,6 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// solhint-disable
|
||||
pragma solidity ^0.5.9;
|
||||
|
||||
contract WETH9 {
|
||||
@@ -59,11 +58,7 @@ contract WETH9 {
|
||||
return transferFrom(msg.sender, dst, wad);
|
||||
}
|
||||
|
||||
function transferFrom(
|
||||
address src,
|
||||
address dst,
|
||||
uint256 wad
|
||||
) public returns (bool) {
|
||||
function transferFrom(address src, address dst, uint256 wad) public returns (bool) {
|
||||
require(balanceOf[src] >= wad);
|
||||
|
||||
if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {
|
||||
|
@@ -37,11 +37,7 @@ contract Token {
|
||||
/// @param _to The address of the recipient
|
||||
/// @param _value The amount of token to be transferred
|
||||
/// @return Whether the transfer was successful or not
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) returns (bool success) {}
|
||||
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}
|
||||
|
||||
/// @notice `msg.sender` approves `_addr` to spend `_value` tokens
|
||||
/// @param _spender The address of the account able to transfer the tokens
|
||||
@@ -71,11 +67,7 @@ contract ERC20Token is Token {
|
||||
}
|
||||
}
|
||||
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) returns (bool) {
|
||||
function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
|
||||
if (
|
||||
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 {
|
||||
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.
|
||||
/// @param _from Address to transfer from.
|
||||
/// @param _to Address to transfer to.
|
||||
/// @param _value Amount to transfer.
|
||||
/// @return Success of transfer.
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) public returns (bool) {
|
||||
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
|
||||
uint256 allowance = allowed[_from][msg.sender];
|
||||
if (balances[_from] >= _value && allowance >= _value && balances[_to] + _value >= balances[_to]) {
|
||||
balances[_to] += _value;
|
||||
@@ -137,14 +125,11 @@ contract UnlimitedAllowanceToken is ERC20Token {
|
||||
}
|
||||
|
||||
contract ZRXToken is UnlimitedAllowanceToken {
|
||||
// solhint-disable const-name-snakecase
|
||||
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 symbol = "ZRX";
|
||||
|
||||
// solhint-enableconst-name-snakecase
|
||||
|
||||
function ZRXToken() public {
|
||||
balances[msg.sender] = totalSupply;
|
||||
}
|
||||
|
@@ -19,7 +19,6 @@
|
||||
pragma solidity ^0.5.9;
|
||||
|
||||
contract IERC20Token {
|
||||
// solhint-disable no-simple-event-func-name
|
||||
event Transfer(address indexed _from, address indexed _to, 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 _value The amount of token to be transferred
|
||||
/// @return True if transfer was successful
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) external returns (bool);
|
||||
function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
|
||||
|
||||
/// @dev `msg.sender` approves `_spender` to spend `_value` tokens
|
||||
/// @param _spender The address of the account able to transfer the tokens
|
||||
|
@@ -20,7 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
interface IERC20TokenV06 {
|
||||
// solhint-disable no-simple-event-func-name
|
||||
event Transfer(address indexed from, address indexed to, 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 value The amount of token to be transferred
|
||||
/// @return True if transfer was successful
|
||||
function transferFrom(
|
||||
address from,
|
||||
address to,
|
||||
uint256 value
|
||||
) external returns (bool);
|
||||
function transferFrom(address from, address to, uint256 value) external returns (bool);
|
||||
|
||||
/// @dev `msg.sender` approves `spender` to spend `value` tokens
|
||||
/// @param spender The address of the account able to transfer the tokens
|
||||
|
@@ -31,11 +31,7 @@ library LibERC20TokenV06 {
|
||||
/// @param token The address of the token contract.
|
||||
/// @param spender The address that receives an allowance.
|
||||
/// @param allowance The allowance to set.
|
||||
function compatApprove(
|
||||
IERC20TokenV06 token,
|
||||
address spender,
|
||||
uint256 allowance
|
||||
) internal {
|
||||
function compatApprove(IERC20TokenV06 token, address spender, uint256 allowance) internal {
|
||||
bytes memory callData = abi.encodeWithSelector(token.approve.selector, spender, allowance);
|
||||
_callWithOptionalBooleanResult(address(token), callData);
|
||||
}
|
||||
@@ -46,11 +42,7 @@ library LibERC20TokenV06 {
|
||||
/// @param token The address of the token contract.
|
||||
/// @param spender The address that receives an allowance.
|
||||
/// @param amount The minimum allowance needed.
|
||||
function approveIfBelow(
|
||||
IERC20TokenV06 token,
|
||||
address spender,
|
||||
uint256 amount
|
||||
) internal {
|
||||
function approveIfBelow(IERC20TokenV06 token, address spender, uint256 amount) internal {
|
||||
if (token.allowance(address(this), spender) < amount) {
|
||||
compatApprove(token, spender, uint256(-1));
|
||||
}
|
||||
@@ -61,11 +53,7 @@ library LibERC20TokenV06 {
|
||||
/// @param token The address of the token contract.
|
||||
/// @param to The address that receives the tokens
|
||||
/// @param amount Number of tokens to transfer.
|
||||
function compatTransfer(
|
||||
IERC20TokenV06 token,
|
||||
address to,
|
||||
uint256 amount
|
||||
) internal {
|
||||
function compatTransfer(IERC20TokenV06 token, address to, uint256 amount) internal {
|
||||
bytes memory callData = abi.encodeWithSelector(token.transfer.selector, to, amount);
|
||||
_callWithOptionalBooleanResult(address(token), callData);
|
||||
}
|
||||
@@ -76,12 +64,7 @@ library LibERC20TokenV06 {
|
||||
/// @param from The owner of the tokens.
|
||||
/// @param to The address that receives the tokens
|
||||
/// @param amount Number of tokens to transfer.
|
||||
function compatTransferFrom(
|
||||
IERC20TokenV06 token,
|
||||
address from,
|
||||
address to,
|
||||
uint256 amount
|
||||
) internal {
|
||||
function compatTransferFrom(IERC20TokenV06 token, address from, address to, uint256 amount) internal {
|
||||
bytes memory callData = abi.encodeWithSelector(token.transferFrom.selector, from, to, amount);
|
||||
_callWithOptionalBooleanResult(address(token), callData);
|
||||
}
|
||||
|
@@ -30,12 +30,7 @@ contract DummyERC20Token is Ownable, MintableERC20Token {
|
||||
uint256 public decimals;
|
||||
uint256 public constant MAX_MINT_AMOUNT = 10000000000000000000000;
|
||||
|
||||
constructor(
|
||||
string memory _name,
|
||||
string memory _symbol,
|
||||
uint256 _decimals,
|
||||
uint256 _totalSupply
|
||||
) public {
|
||||
constructor(string memory _name, string memory _symbol, uint256 _decimals, uint256 _totalSupply) public {
|
||||
name = _name;
|
||||
symbol = _symbol;
|
||||
decimals = _decimals;
|
||||
|
@@ -20,7 +20,6 @@ pragma solidity ^0.5.5;
|
||||
|
||||
import "./DummyERC20Token.sol";
|
||||
|
||||
// solhint-disable no-empty-blocks
|
||||
contract DummyMultipleReturnERC20Token is DummyERC20Token {
|
||||
constructor(
|
||||
string memory _name,
|
||||
@@ -33,14 +32,11 @@ contract DummyMultipleReturnERC20Token is DummyERC20Token {
|
||||
/// @param _from The address of the sender
|
||||
/// @param _to The address of the recipient
|
||||
/// @param _value The amount of token to be transferred
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) external returns (bool) {
|
||||
function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
|
||||
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 {
|
||||
mstore(0, 1)
|
||||
mstore(32, 1)
|
||||
|
@@ -20,7 +20,6 @@ pragma solidity ^0.5.5;
|
||||
|
||||
import "./DummyERC20Token.sol";
|
||||
|
||||
// solhint-disable no-empty-blocks
|
||||
contract DummyNoReturnERC20Token is DummyERC20Token {
|
||||
constructor(
|
||||
string memory _name,
|
||||
@@ -51,11 +50,7 @@ contract DummyNoReturnERC20Token is DummyERC20Token {
|
||||
/// @param _from The address of the sender
|
||||
/// @param _to The address of the recipient
|
||||
/// @param _value The amount of token to be transferred
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) external returns (bool) {
|
||||
function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
|
||||
require(balances[_from] >= _value, "ERC20_INSUFFICIENT_BALANCE");
|
||||
require(allowed[_from][msg.sender] >= _value, "ERC20_INSUFFICIENT_ALLOWANCE");
|
||||
require(balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW");
|
||||
|
@@ -29,11 +29,7 @@ contract TestLibERC20TokenTarget {
|
||||
bytes private _revertData;
|
||||
bytes private _returnData;
|
||||
|
||||
function setBehavior(
|
||||
bool shouldRevert,
|
||||
bytes calldata revertData,
|
||||
bytes calldata returnData
|
||||
) external {
|
||||
function setBehavior(bool shouldRevert, bytes calldata revertData, bytes calldata returnData) external {
|
||||
_shouldRevert = shouldRevert;
|
||||
_revertData = revertData;
|
||||
_returnData = returnData;
|
||||
@@ -49,11 +45,7 @@ contract TestLibERC20TokenTarget {
|
||||
_execute();
|
||||
}
|
||||
|
||||
function transferFrom(
|
||||
address from,
|
||||
address to,
|
||||
uint256 amount
|
||||
) external returns (bool) {
|
||||
function transferFrom(address from, address to, uint256 amount) external returns (bool) {
|
||||
emit TransferFromCalled(from, to, amount);
|
||||
_execute();
|
||||
}
|
||||
|
@@ -20,8 +20,6 @@ pragma solidity ^0.5.5;
|
||||
|
||||
import "./DummyERC20Token.sol";
|
||||
|
||||
// solhint-disable no-empty-blocks
|
||||
// solhint-disable no-unused-vars
|
||||
contract UntransferrableDummyERC20Token is DummyERC20Token {
|
||||
constructor(
|
||||
string memory _name,
|
||||
@@ -34,11 +32,7 @@ contract UntransferrableDummyERC20Token is DummyERC20Token {
|
||||
/// @param _from The address of the sender
|
||||
/// @param _to The address of the recipient
|
||||
/// @param _value The amount of token to be transferred
|
||||
function transferFrom(
|
||||
address _from,
|
||||
address _to,
|
||||
uint256 _value
|
||||
) external returns (bool) {
|
||||
function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
|
||||
require(false, "TRANSFER_DISABLED");
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@0x/contracts-erc20",
|
||||
"version": "3.3.46",
|
||||
"version": "3.3.53",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
@@ -51,9 +51,9 @@
|
||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
||||
"devDependencies": {
|
||||
"@0x/abi-gen": "^5.8.1",
|
||||
"@0x/contracts-gen": "^2.0.47",
|
||||
"@0x/contracts-test-utils": "^5.4.37",
|
||||
"@0x/contracts-utils": "^4.8.27",
|
||||
"@0x/contracts-gen": "^2.0.48",
|
||||
"@0x/contracts-test-utils": "^5.4.43",
|
||||
"@0x/contracts-utils": "^4.8.34",
|
||||
"@0x/dev-utils": "^5.0.0",
|
||||
"@0x/sol-compiler": "^4.8.2",
|
||||
"@0x/ts-doc-gen": "^0.0.28",
|
||||
|
@@ -15,7 +15,7 @@ export const artifacts = {
|
||||
DummyERC20Token: DummyERC20Token as ContractArtifact,
|
||||
ERC20Token: ERC20Token as ContractArtifact,
|
||||
WETH9: WETH9 as ContractArtifact,
|
||||
ZRXToken: (ZRXToken as any) as ContractArtifact,
|
||||
ZRXToken: ZRXToken as any as ContractArtifact,
|
||||
DummyNoReturnERC20Token: DummyNoReturnERC20Token as ContractArtifact,
|
||||
DummyMultipleReturnERC20Token: DummyMultipleReturnERC20Token as ContractArtifact,
|
||||
};
|
||||
|
@@ -28,7 +28,7 @@ export const artifacts = {
|
||||
MintableERC20Token: MintableERC20Token as ContractArtifact,
|
||||
UnlimitedAllowanceERC20Token: UnlimitedAllowanceERC20Token as ContractArtifact,
|
||||
WETH9: WETH9 as ContractArtifact,
|
||||
ZRXToken: (ZRXToken as any) as ContractArtifact,
|
||||
ZRXToken: ZRXToken as any as ContractArtifact,
|
||||
IERC20Token: IERC20Token as ContractArtifact,
|
||||
IEtherToken: IEtherToken as ContractArtifact,
|
||||
IERC20TokenV06: IERC20TokenV06 as ContractArtifact,
|
||||
|
@@ -1,4 +1,58 @@
|
||||
[
|
||||
{
|
||||
"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,
|
||||
"version": "5.4.38",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665531940,
|
||||
"version": "5.4.37",
|
||||
|
@@ -5,6 +5,30 @@ Edit the package's CHANGELOG.json file only.
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## 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_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v5.4.37 - _October 11, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@0x/contracts-test-utils",
|
||||
"version": "5.4.37",
|
||||
"version": "5.4.43",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
@@ -46,7 +46,7 @@
|
||||
"dependencies": {
|
||||
"@0x/assert": "^3.0.35",
|
||||
"@0x/base-contract": "^7.0.0",
|
||||
"@0x/contract-addresses": "^6.25.0",
|
||||
"@0x/contract-addresses": "^7.4.1",
|
||||
"@0x/dev-utils": "^5.0.0",
|
||||
"@0x/json-schemas": "^6.4.4",
|
||||
"@0x/order-utils": "^10.4.28",
|
||||
|
@@ -35,7 +35,6 @@ export class LogDecoder {
|
||||
}
|
||||
public decodeLogOrThrow<ArgsType extends DecodedLogArgs>(log: LogEntry): LogWithDecodedArgs<ArgsType> | RawLog {
|
||||
const logWithDecodedArgsOrLog = this._abiDecoder.tryToDecodeLogOrNoop(log);
|
||||
// tslint:disable-next-line:no-unnecessary-type-assertion
|
||||
if ((logWithDecodedArgsOrLog as LogWithDecodedArgs<ArgsType>).args === undefined) {
|
||||
throw new Error(`Unable to decode log: ${JSON.stringify(log)}`);
|
||||
}
|
||||
|
@@ -2,8 +2,6 @@ import { LogEntry, LogWithDecodedArgs, TransactionReceiptWithDecodedLogs } from
|
||||
|
||||
import { expect } from './chai_setup';
|
||||
|
||||
// tslint:disable no-unnecessary-type-assertion
|
||||
|
||||
/**
|
||||
* Filter logs by event name/type.
|
||||
*/
|
||||
|
@@ -8,8 +8,6 @@ import * as process from 'process';
|
||||
|
||||
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 ISuiteCallbackContext = mocha.ISuiteCallbackContext;
|
||||
export type SuiteCallback = (this: ISuiteCallbackContext) => void;
|
||||
|
@@ -29,7 +29,7 @@ export class OrderFactory {
|
||||
salt: generatePseudoRandomSalt(),
|
||||
...this._defaultOrderParams,
|
||||
...customOrderParams,
|
||||
} as Order; // tslint:disable-line:no-object-literal-type-assertion
|
||||
} as Order;
|
||||
const orderHashBuff = orderHashUtils.getOrderHashBuffer(order);
|
||||
const signature = signingUtils.signMessage(orderHashBuff, this._privateKey, signatureType);
|
||||
const signedOrder = {
|
||||
|
@@ -9,7 +9,6 @@ export const typeEncodingUtils = {
|
||||
const base = 10;
|
||||
const formattedValue = new BN(value.toString(base));
|
||||
const encodedValue = ethUtil.toBuffer(formattedValue);
|
||||
// tslint:disable-next-line:custom-no-magic-numbers
|
||||
const paddedValue = ethUtil.setLengthLeft(encodedValue, constants.WORD_LENGTH);
|
||||
return paddedValue;
|
||||
},
|
||||
|
@@ -13,11 +13,8 @@ blockchainTests('mocha blockchain extensions', env => {
|
||||
expect(env.provider).to.exist('');
|
||||
expect(env.txDefaults).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.getAccountAddressesAsync).to.eq('function');
|
||||
// tslint:enable: no-unbound-method
|
||||
});
|
||||
|
||||
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 {
|
||||
const hookedMethods = _.map(methods, methodName => {
|
||||
// tslint:disable: only-arrow-functions
|
||||
return function (this: any, ...args: any[]): any {
|
||||
handler(methodName);
|
||||
return obj[methodName].call(this, ...args);
|
||||
|
@@ -42,7 +42,6 @@ describe('Order hashing', () => {
|
||||
// It's common for developers using javascript to provide the amounts
|
||||
// as strings. Since we eventually toString() the BigNumber
|
||||
// before encoding we should result in the same orderHash in this scenario
|
||||
// tslint:disable-next-line:no-unnecessary-type-assertion
|
||||
const orderHash = orderHashUtils.getOrderHashHex({
|
||||
...order,
|
||||
makerAssetAmount: '0',
|
||||
|
@@ -1,7 +1,6 @@
|
||||
import { expect } from '../../src/chai_setup';
|
||||
import { blockchainTests, BlockchainTestsEnvironment } from '../../src/mocha_blockchain';
|
||||
|
||||
// tslint:disable: no-default-export completed-docs
|
||||
export function append(env: BlockchainTestsEnvironment): void {
|
||||
blockchainTests('imported subtests', subtestsEnv => {
|
||||
it('shares the same environment object', () => {
|
||||
|
@@ -35,7 +35,6 @@ describe('0x transaction hashing', () => {
|
||||
// It's common for developers using javascript to provide the amounts
|
||||
// as strings. Since we eventually toString() the BigNumber
|
||||
// before encoding we should result in the same orderHash in this scenario
|
||||
// tslint:disable-next-line:no-unnecessary-type-assertion
|
||||
const transactionHash = transactionHashUtils.getTransactionHashHex({
|
||||
...transaction,
|
||||
salt: '0',
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
@@ -1,4 +1,67 @@
|
||||
[
|
||||
{
|
||||
"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,
|
||||
"version": "1.4.31",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665670315,
|
||||
"version": "1.4.30",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665531940,
|
||||
"version": "1.4.29",
|
||||
|
@@ -5,6 +5,34 @@ Edit the package's CHANGELOG.json file only.
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## 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_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.4.30 - _October 13, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.4.29 - _October 11, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
@@ -36,7 +36,9 @@ interface ISablier {
|
||||
|
||||
function balanceOf(uint256 streamId, address who) external view returns (uint256 balance);
|
||||
|
||||
function getStream(uint256 streamId)
|
||||
function getStream(
|
||||
uint256 streamId
|
||||
)
|
||||
external
|
||||
view
|
||||
returns (
|
||||
|
@@ -36,7 +36,7 @@ contract DefaultPoolOperator {
|
||||
stakingProxy = stakingProxy_;
|
||||
weth = weth_;
|
||||
// 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
|
||||
|
@@ -81,10 +81,10 @@ interface IStaking {
|
||||
/// @param staker Owner of stake.
|
||||
/// @param stakeStatus UNDELEGATED or DELEGATED
|
||||
/// @return balance Owner's stake balances for given status.
|
||||
function getOwnerStakeByStatus(address staker, StakeStatus stakeStatus)
|
||||
external
|
||||
view
|
||||
returns (StoredBalance memory balance);
|
||||
function getOwnerStakeByStatus(
|
||||
address staker,
|
||||
StakeStatus stakeStatus
|
||||
) external view returns (StoredBalance memory balance);
|
||||
|
||||
/// @dev Returns the total stake delegated to a specific staking pool,
|
||||
/// across all members.
|
||||
@@ -96,8 +96,8 @@ interface IStaking {
|
||||
/// @param staker of stake.
|
||||
/// @param poolId Unique Id of pool.
|
||||
/// @return balance Stake delegated to pool by staker.
|
||||
function getStakeDelegatedToPoolByOwner(address staker, bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (StoredBalance memory balance);
|
||||
function getStakeDelegatedToPoolByOwner(
|
||||
address staker,
|
||||
bytes32 poolId
|
||||
) external view returns (StoredBalance memory balance);
|
||||
}
|
||||
|
@@ -112,11 +112,7 @@ interface IZrxTreasury {
|
||||
/// @param operatedPoolIds The pools operated by `msg.sender`. The
|
||||
/// ZRX currently delegated to those pools will be accounted
|
||||
/// for in the voting power.
|
||||
function castVote(
|
||||
uint256 proposalId,
|
||||
bool support,
|
||||
bytes32[] calldata operatedPoolIds
|
||||
) external;
|
||||
function castVote(uint256 proposalId, bool support, bytes32[] calldata operatedPoolIds) external;
|
||||
|
||||
/// @dev Casts a vote for the given proposal, by signature.
|
||||
/// Only callable during the voting period for that proposal.
|
||||
@@ -159,8 +155,8 @@ interface IZrxTreasury {
|
||||
/// ZRX currently delegated to those pools will be accounted
|
||||
/// for in the voting power.
|
||||
/// @return votingPower The current voting power of the given account.
|
||||
function getVotingPower(address account, bytes32[] calldata operatedPoolIds)
|
||||
external
|
||||
view
|
||||
returns (uint256 votingPower);
|
||||
function getVotingPower(
|
||||
address account,
|
||||
bytes32[] calldata operatedPoolIds
|
||||
) external view returns (uint256 votingPower);
|
||||
}
|
||||
|
@@ -83,12 +83,9 @@ contract ZrxTreasury is IZrxTreasury {
|
||||
);
|
||||
}
|
||||
|
||||
// solhint-disable
|
||||
/// @dev Allows this contract to receive ether.
|
||||
receive() external payable {}
|
||||
|
||||
// solhint-enable
|
||||
|
||||
/// @dev Updates the proposal and quorum thresholds to the given
|
||||
/// values. Note that this function is only callable by the
|
||||
/// 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
|
||||
/// ZRX currently delegated to those pools will be accounted
|
||||
/// for in the voting power.
|
||||
function castVote(
|
||||
uint256 proposalId,
|
||||
bool support,
|
||||
bytes32[] memory operatedPoolIds
|
||||
) public override {
|
||||
function castVote(uint256 proposalId, bool support, bytes32[] memory operatedPoolIds) public override {
|
||||
return _castVote(msg.sender, proposalId, support, operatedPoolIds);
|
||||
}
|
||||
|
||||
@@ -222,12 +215,10 @@ contract ZrxTreasury is IZrxTreasury {
|
||||
/// ZRX currently delegated to those pools will be accounted
|
||||
/// for in the voting power.
|
||||
/// @return votingPower The current voting power of the given account.
|
||||
function getVotingPower(address account, bytes32[] memory operatedPoolIds)
|
||||
public
|
||||
view
|
||||
override
|
||||
returns (uint256 votingPower)
|
||||
{
|
||||
function getVotingPower(
|
||||
address account,
|
||||
bytes32[] memory operatedPoolIds
|
||||
) public view override returns (uint256 votingPower) {
|
||||
uint256 delegatedBalance = stakingProxy
|
||||
.getOwnerStakeByStatus(account, IStaking.StakeStatus.DELEGATED)
|
||||
.currentEpochBalance;
|
||||
@@ -310,12 +301,7 @@ contract ZrxTreasury is IZrxTreasury {
|
||||
/// @dev Casts a vote for the given proposal. Only callable
|
||||
/// during the voting period for that proposal. See
|
||||
/// `getVotingPower` for how voting power is computed.
|
||||
function _castVote(
|
||||
address voter,
|
||||
uint256 proposalId,
|
||||
bool support,
|
||||
bytes32[] memory operatedPoolIds
|
||||
) private {
|
||||
function _castVote(address voter, uint256 proposalId, bool support, bytes32[] memory operatedPoolIds) private {
|
||||
if (proposalId >= proposalCount()) {
|
||||
revert("_castVote/INVALID_PROPOSAL_ID");
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@0x/contracts-treasury",
|
||||
"version": "1.4.29",
|
||||
"version": "1.4.36",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
@@ -46,12 +46,12 @@
|
||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/treasury",
|
||||
"devDependencies": {
|
||||
"@0x/abi-gen": "^5.8.1",
|
||||
"@0x/contract-addresses": "^6.25.0",
|
||||
"@0x/contract-addresses": "^7.4.1",
|
||||
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||
"@0x/contracts-erc20": "^3.3.46",
|
||||
"@0x/contracts-gen": "^2.0.47",
|
||||
"@0x/contracts-erc20": "^3.3.53",
|
||||
"@0x/contracts-gen": "^2.0.48",
|
||||
"@0x/contracts-staking": "^2.0.45",
|
||||
"@0x/contracts-test-utils": "^5.4.37",
|
||||
"@0x/contracts-test-utils": "^5.4.43",
|
||||
"@0x/sol-compiler": "^4.8.2",
|
||||
"@0x/ts-doc-gen": "^0.0.28",
|
||||
"@types/isomorphic-fetch": "^0.0.35",
|
||||
@@ -73,7 +73,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@0x/base-contract": "^7.0.0",
|
||||
"@0x/protocol-utils": "^11.16.13",
|
||||
"@0x/protocol-utils": "^11.17.2",
|
||||
"@0x/subproviders": "^7.0.0",
|
||||
"@0x/types": "^3.3.6",
|
||||
"@0x/typescript-typings": "^5.3.1",
|
||||
|
@@ -1,4 +1,67 @@
|
||||
[
|
||||
{
|
||||
"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,
|
||||
"version": "4.8.29",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665670315,
|
||||
"version": "4.8.28",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665531940,
|
||||
"version": "4.8.27",
|
||||
|
@@ -5,6 +5,34 @@ Edit the package's CHANGELOG.json file only.
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## 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_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v4.8.28 - _October 13, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v4.8.27 - _October 11, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
@@ -63,7 +63,3 @@ yarn lint
|
||||
```bash
|
||||
yarn test
|
||||
```
|
||||
|
||||
#### Testing options
|
||||
|
||||
Contracts testing options like coverage, profiling, revert traces or backing node choosing - are described [here](../TESTING.md).
|
||||
|
@@ -23,7 +23,6 @@ import "./LibAuthorizableRichErrors.sol";
|
||||
import "./LibRichErrors.sol";
|
||||
import "./Ownable.sol";
|
||||
|
||||
// solhint-disable no-empty-blocks
|
||||
contract Authorizable is Ownable, IAuthorizable {
|
||||
/// @dev Only authorized addresses can invoke functions with this modifier.
|
||||
modifier onlyAuthorized() {
|
||||
|
@@ -23,7 +23,7 @@ library D18 {
|
||||
/// @dev Decimal places for dydx value quantities.
|
||||
uint256 private constant PRECISION = 18;
|
||||
/// @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.
|
||||
int256 private constant MIN_INT256_VALUE =
|
||||
int256(0x8000000000000000000000000000000000000000000000000000000000000000);
|
||||
|
@@ -19,8 +19,6 @@
|
||||
pragma solidity ^0.5.9;
|
||||
|
||||
contract DeploymentConstants {
|
||||
// solhint-disable separate-by-one-line-in-contract
|
||||
|
||||
// Mainnet addresses ///////////////////////////////////////////////////////
|
||||
/// @dev Mainnet address of the WETH contract.
|
||||
address private constant WETH_ADDRESS = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
|
||||
@@ -60,93 +58,93 @@ contract DeploymentConstants {
|
||||
address private constant DODO_HELPER = 0x533dA777aeDCE766CEAe696bf90f8541A4bA80Eb;
|
||||
|
||||
// // Ropsten addresses ///////////////////////////////////////////////////////
|
||||
// /// @dev Mainnet address of the WETH contract.
|
||||
/// @dev Mainnet address of the WETH contract.
|
||||
// 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;
|
||||
// /// @dev Mainnet address of the `UniswapExchangeFactory` contract.
|
||||
/// @dev Mainnet address of the `UniswapExchangeFactory` contract.
|
||||
// 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;
|
||||
// /// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract.
|
||||
/// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract.
|
||||
// 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;
|
||||
// ///@dev Mainnet address of the `Dai` (multi-collateral) contract
|
||||
// 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);
|
||||
// /// @dev Mainnet address of the 0x DevUtils contract.
|
||||
/// @dev Mainnet address of the 0x DevUtils contract.
|
||||
// address constant private DEV_UTILS_ADDRESS = 0xC812AF3f3fBC62F76ea4262576EC0f49dB8B7f1c;
|
||||
// /// @dev Kyber ETH pseudo-address.
|
||||
/// @dev Kyber ETH pseudo-address.
|
||||
// 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);
|
||||
// /// @dev Mainnet address of the GST2 contract
|
||||
/// @dev Mainnet address of the GST2 contract
|
||||
// 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);
|
||||
// /// @dev Mainnet address of the mStable mUSD contract.
|
||||
/// @dev Mainnet address of the mStable mUSD contract.
|
||||
// address constant private MUSD_ADDRESS = 0x4E1000616990D83e56f4b5fC6CC8602DcfD20459;
|
||||
|
||||
// // Rinkeby addresses ///////////////////////////////////////////////////////
|
||||
// /// @dev Mainnet address of the WETH contract.
|
||||
/// @dev Mainnet address of the WETH contract.
|
||||
// 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;
|
||||
// /// @dev Mainnet address of the `UniswapExchangeFactory` contract.
|
||||
/// @dev Mainnet address of the `UniswapExchangeFactory` contract.
|
||||
// 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;
|
||||
// /// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract.
|
||||
/// @dev Mainnet address of the Eth2Dai `MatchingMarket` contract.
|
||||
// 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;
|
||||
// ///@dev Mainnet address of the `Dai` (multi-collateral) contract
|
||||
// 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);
|
||||
// /// @dev Mainnet address of the 0x DevUtils contract.
|
||||
/// @dev Mainnet address of the 0x DevUtils contract.
|
||||
// address constant private DEV_UTILS_ADDRESS = 0x46B5BC959e8A754c0256FFF73bF34A52Ad5CdfA9;
|
||||
// /// @dev Kyber ETH pseudo-address.
|
||||
/// @dev Kyber ETH pseudo-address.
|
||||
// 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);
|
||||
// /// @dev Mainnet address of the GST2 contract
|
||||
/// @dev Mainnet address of the GST2 contract
|
||||
// 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);
|
||||
// /// @dev Mainnet address of the mStable mUSD contract.
|
||||
/// @dev Mainnet address of the mStable mUSD contract.
|
||||
// address constant private MUSD_ADDRESS = address(0);
|
||||
|
||||
// // Kovan addresses /////////////////////////////////////////////////////////
|
||||
// /// @dev Kovan address of the WETH contract.
|
||||
/// @dev Kovan address of the WETH contract.
|
||||
// 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;
|
||||
// /// @dev Kovan address of the `UniswapExchangeFactory` contract.
|
||||
/// @dev Kovan address of the `UniswapExchangeFactory` contract.
|
||||
// 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;
|
||||
// /// @dev Kovan address of the Eth2Dai `MatchingMarket` contract.
|
||||
/// @dev Kovan address of the Eth2Dai `MatchingMarket` contract.
|
||||
// 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;
|
||||
// /// @dev Kovan address of the `Chai` contract
|
||||
/// @dev Kovan address of the `Chai` contract
|
||||
// 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;
|
||||
// /// @dev Kovan address of the 0x DevUtils contract.
|
||||
/// @dev Kovan address of the 0x DevUtils contract.
|
||||
// address constant private DEV_UTILS_ADDRESS = 0x9402639A828BdF4E9e4103ac3B69E1a6E522eB59;
|
||||
// /// @dev Kyber ETH pseudo-address.
|
||||
/// @dev Kyber ETH pseudo-address.
|
||||
// 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);
|
||||
// /// @dev Kovan address of the GST2 contract
|
||||
/// @dev Kovan address of the GST2 contract
|
||||
// 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);
|
||||
// /// @dev Mainnet address of the mStable mUSD contract.
|
||||
/// @dev Mainnet address of the mStable mUSD contract.
|
||||
// address constant private MUSD_ADDRESS = address(0);
|
||||
|
||||
/// @dev Overridable way to get the `KyberNetworkProxy` address.
|
||||
|
@@ -117,11 +117,10 @@ library LibAddressArray {
|
||||
/// @param addressArray Array of addresses.
|
||||
/// @param target Address to search for in array.
|
||||
/// @return Existence and index of the target in the array.
|
||||
function indexOf(address[] memory addressArray, address target)
|
||||
internal
|
||||
pure
|
||||
returns (bool success, uint256 index)
|
||||
{
|
||||
function indexOf(
|
||||
address[] memory addressArray,
|
||||
address target
|
||||
) internal pure returns (bool success, uint256 index) {
|
||||
assembly {
|
||||
// Calculate byte length of array
|
||||
let arrayByteLen := mul(mload(addressArray), 32)
|
||||
|
@@ -22,12 +22,10 @@ library LibAddressArrayRichErrors {
|
||||
// bytes4(keccak256("MismanagedMemoryError(uint256,uint256)"))
|
||||
bytes4 internal constant MISMANAGED_MEMORY_ERROR_SELECTOR = 0x5fc83722;
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
function MismanagedMemoryError(uint256 freeMemPtr, uint256 addressArrayEndPtr)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function MismanagedMemoryError(
|
||||
uint256 freeMemPtr,
|
||||
uint256 addressArrayEndPtr
|
||||
) internal pure returns (bytes memory) {
|
||||
return abi.encodeWithSelector(MISMANAGED_MEMORY_ERROR_SELECTOR, freeMemPtr, addressArrayEndPtr);
|
||||
}
|
||||
}
|
||||
|
@@ -37,7 +37,6 @@ library LibAuthorizableRichErrors {
|
||||
// bytes4(keccak256("ZeroCantBeAuthorizedError()"))
|
||||
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) {
|
||||
return abi.encodeWithSelector(AUTHORIZED_ADDRESS_MISMATCH_ERROR_SELECTOR, authorized, target);
|
||||
}
|
||||
|
@@ -50,11 +50,7 @@ library LibBytes {
|
||||
/// @param dest memory address to copy bytes to.
|
||||
/// @param source memory address to copy bytes from.
|
||||
/// @param length number of bytes to copy.
|
||||
function memCopy(
|
||||
uint256 dest,
|
||||
uint256 source,
|
||||
uint256 length
|
||||
) internal pure {
|
||||
function memCopy(uint256 dest, uint256 source, uint256 length) internal pure {
|
||||
if (length < 32) {
|
||||
// Handle a partial word by reading destination and masking
|
||||
// off the bits we are interested in.
|
||||
@@ -105,7 +101,6 @@ library LibBytes {
|
||||
// Copy whole words front to back
|
||||
// Note: the first check is always true,
|
||||
// this could have been a do-while loop.
|
||||
// solhint-disable-next-line no-empty-blocks
|
||||
for {
|
||||
|
||||
} lt(source, sEnd) {
|
||||
@@ -140,7 +135,6 @@ library LibBytes {
|
||||
// 2**255, so they can be safely re-interpreted as signed.
|
||||
// Note: the first check is always true,
|
||||
// this could have been a do-while loop.
|
||||
// solhint-disable-next-line no-empty-blocks
|
||||
for {
|
||||
|
||||
} slt(dest, dEnd) {
|
||||
@@ -163,11 +157,7 @@ library LibBytes {
|
||||
/// @param from The starting index for the slice (inclusive).
|
||||
/// @param to The final index for the slice (exclusive).
|
||||
/// @return result The slice containing bytes at indices [from, to)
|
||||
function slice(
|
||||
bytes memory b,
|
||||
uint256 from,
|
||||
uint256 to
|
||||
) internal pure returns (bytes memory result) {
|
||||
function slice(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
|
||||
// the byte array that is being used.
|
||||
if (from > to) {
|
||||
@@ -201,11 +191,7 @@ library LibBytes {
|
||||
/// @param to The final index for the slice (exclusive).
|
||||
/// @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.
|
||||
function sliceDestructive(
|
||||
bytes memory b,
|
||||
uint256 from,
|
||||
uint256 to
|
||||
) internal pure returns (bytes memory result) {
|
||||
function sliceDestructive(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
|
||||
// the byte array that is being used.
|
||||
if (from > to) {
|
||||
@@ -305,11 +291,7 @@ library LibBytes {
|
||||
/// @param b Byte array to insert address into.
|
||||
/// @param index Index in byte array of address.
|
||||
/// @param input Address to put into byte array.
|
||||
function writeAddress(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
address input
|
||||
) internal pure {
|
||||
function writeAddress(bytes memory b, uint256 index, address input) internal pure {
|
||||
if (b.length < index + 20) {
|
||||
LibRichErrors.rrevert(
|
||||
LibBytesRichErrors.InvalidByteOperationError(
|
||||
@@ -378,11 +360,7 @@ library LibBytes {
|
||||
/// @param b Byte array to insert <input> into.
|
||||
/// @param index Index in byte array of <input>.
|
||||
/// @param input bytes32 to put into byte array.
|
||||
function writeBytes32(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
bytes32 input
|
||||
) internal pure {
|
||||
function writeBytes32(bytes memory b, uint256 index, bytes32 input) internal pure {
|
||||
if (b.length < index + 32) {
|
||||
LibRichErrors.rrevert(
|
||||
LibBytesRichErrors.InvalidByteOperationError(
|
||||
@@ -415,11 +393,7 @@ library LibBytes {
|
||||
/// @param b Byte array to insert <input> into.
|
||||
/// @param index Index in byte array of <input>.
|
||||
/// @param input uint256 to put into byte array.
|
||||
function writeUint256(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
uint256 input
|
||||
) internal pure {
|
||||
function writeUint256(bytes memory b, uint256 index, uint256 input) internal pure {
|
||||
writeBytes32(b, index, bytes32(input));
|
||||
}
|
||||
|
||||
|
@@ -33,7 +33,6 @@ library LibBytesRichErrors {
|
||||
// bytes4(keccak256("InvalidByteOperationError(uint8,uint256,uint256)"))
|
||||
bytes4 internal constant INVALID_BYTE_OPERATION_ERROR_SELECTOR = 0x28006595;
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
function InvalidByteOperationError(
|
||||
InvalidByteOperationErrorCodes errorCode,
|
||||
uint256 offset,
|
||||
|
@@ -62,12 +62,11 @@ library LibFractions {
|
||||
/// @param denominator The denominator.
|
||||
/// @return scaledNumerator The rescaled numerator.
|
||||
/// @return scaledDenominator The rescaled denominator.
|
||||
function normalize(uint256 numerator, uint256 denominator)
|
||||
internal
|
||||
pure
|
||||
returns (uint256 scaledNumerator, uint256 scaledDenominator)
|
||||
{
|
||||
return normalize(numerator, denominator, 2**127);
|
||||
function normalize(
|
||||
uint256 numerator,
|
||||
uint256 denominator
|
||||
) internal pure returns (uint256 scaledNumerator, uint256 scaledDenominator) {
|
||||
return normalize(numerator, denominator, 2 ** 127);
|
||||
}
|
||||
|
||||
/// @dev Safely scales the difference between two fractions.
|
||||
|
@@ -7,7 +7,6 @@ library LibMathRichErrors {
|
||||
// bytes4(keccak256("RoundingError(uint256,uint256,uint256)"))
|
||||
bytes4 internal constant ROUNDING_ERROR_SELECTOR = 0x339f3de2;
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
function DivisionByZeroError() internal pure returns (bytes memory) {
|
||||
return DIVISION_BY_ZERO_ERROR;
|
||||
}
|
||||
|
@@ -7,7 +7,6 @@ library LibOwnableRichErrors {
|
||||
// bytes4(keccak256("TransferOwnerToZeroError()"))
|
||||
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) {
|
||||
return abi.encodeWithSelector(ONLY_OWNER_ERROR_SELECTOR, sender, owner);
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@ library LibReentrancyGuardRichErrors {
|
||||
// bytes4(keccak256("IllegalReentrancyError()"))
|
||||
bytes internal constant ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES = hex"0c3b823f";
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
function IllegalReentrancyError() internal pure returns (bytes memory) {
|
||||
return ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES;
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@ library LibRichErrors {
|
||||
// bytes4(keccak256("Error(string)"))
|
||||
bytes4 internal constant STANDARD_ERROR_SELECTOR = 0x08c379a0;
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
/// @dev ABI encode a standard, string revert error payload.
|
||||
/// This is the same payload that would be included by a `revert(string)`
|
||||
/// solidity statement. It has the function signature `Error(string)`.
|
||||
@@ -32,8 +31,6 @@ library LibRichErrors {
|
||||
return abi.encodeWithSelector(STANDARD_ERROR_SELECTOR, bytes(message));
|
||||
}
|
||||
|
||||
// solhint-enable func-name-mixedcase
|
||||
|
||||
/// @dev Reverts an encoded rich revert reason `errorData`.
|
||||
/// @param errorData ABI encoded error data.
|
||||
function rrevert(bytes memory errorData) internal pure {
|
||||
|
@@ -20,12 +20,7 @@ library LibSafeMathRichErrors {
|
||||
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);
|
||||
}
|
||||
|
||||
|
@@ -24,7 +24,6 @@ import "./errors/LibRichErrorsV06.sol";
|
||||
import "./errors/LibAuthorizableRichErrorsV06.sol";
|
||||
import "./OwnableV06.sol";
|
||||
|
||||
// solhint-disable no-empty-blocks
|
||||
contract AuthorizableV06 is OwnableV06, IAuthorizableV06 {
|
||||
/// @dev Only authorized addresses can invoke functions with this modifier.
|
||||
modifier onlyAuthorized() {
|
||||
|
@@ -51,11 +51,7 @@ library LibBytesV06 {
|
||||
/// @param dest memory address to copy bytes to.
|
||||
/// @param source memory address to copy bytes from.
|
||||
/// @param length number of bytes to copy.
|
||||
function memCopy(
|
||||
uint256 dest,
|
||||
uint256 source,
|
||||
uint256 length
|
||||
) internal pure {
|
||||
function memCopy(uint256 dest, uint256 source, uint256 length) internal pure {
|
||||
if (length < 32) {
|
||||
// Handle a partial word by reading destination and masking
|
||||
// off the bits we are interested in.
|
||||
@@ -106,7 +102,6 @@ library LibBytesV06 {
|
||||
// Copy whole words front to back
|
||||
// Note: the first check is always true,
|
||||
// this could have been a do-while loop.
|
||||
// solhint-disable-next-line no-empty-blocks
|
||||
for {
|
||||
|
||||
} lt(source, sEnd) {
|
||||
@@ -141,7 +136,6 @@ library LibBytesV06 {
|
||||
// 2**255, so they can be safely re-interpreted as signed.
|
||||
// Note: the first check is always true,
|
||||
// this could have been a do-while loop.
|
||||
// solhint-disable-next-line no-empty-blocks
|
||||
for {
|
||||
|
||||
} slt(dest, dEnd) {
|
||||
@@ -164,11 +158,7 @@ library LibBytesV06 {
|
||||
/// @param from The starting index for the slice (inclusive).
|
||||
/// @param to The final index for the slice (exclusive).
|
||||
/// @return result The slice containing bytes at indices [from, to)
|
||||
function slice(
|
||||
bytes memory b,
|
||||
uint256 from,
|
||||
uint256 to
|
||||
) internal pure returns (bytes memory result) {
|
||||
function slice(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
|
||||
// the byte array that is being used.
|
||||
if (from > to) {
|
||||
@@ -203,11 +193,7 @@ library LibBytesV06 {
|
||||
/// @param from The starting index for the slice (inclusive).
|
||||
/// @param to The final index for the slice (exclusive).
|
||||
/// @return result The slice containing bytes at indices [from, to)
|
||||
function sliceDestructive(
|
||||
bytes memory b,
|
||||
uint256 from,
|
||||
uint256 to
|
||||
) internal pure returns (bytes memory result) {
|
||||
function sliceDestructive(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
|
||||
// the byte array that is being used.
|
||||
if (from > to) {
|
||||
@@ -307,11 +293,7 @@ library LibBytesV06 {
|
||||
/// @param b Byte array to insert address into.
|
||||
/// @param index Index in byte array of address.
|
||||
/// @param input Address to put into byte array.
|
||||
function writeAddress(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
address input
|
||||
) internal pure {
|
||||
function writeAddress(bytes memory b, uint256 index, address input) internal pure {
|
||||
if (b.length < index + 20) {
|
||||
LibRichErrorsV06.rrevert(
|
||||
LibBytesRichErrorsV06.InvalidByteOperationError(
|
||||
@@ -380,11 +362,7 @@ library LibBytesV06 {
|
||||
/// @param b Byte array to insert <input> into.
|
||||
/// @param index Index in byte array of <input>.
|
||||
/// @param input bytes32 to put into byte array.
|
||||
function writeBytes32(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
bytes32 input
|
||||
) internal pure {
|
||||
function writeBytes32(bytes memory b, uint256 index, bytes32 input) internal pure {
|
||||
if (b.length < index + 32) {
|
||||
LibRichErrorsV06.rrevert(
|
||||
LibBytesRichErrorsV06.InvalidByteOperationError(
|
||||
@@ -417,11 +395,7 @@ library LibBytesV06 {
|
||||
/// @param b Byte array to insert <input> into.
|
||||
/// @param index Index in byte array of <input>.
|
||||
/// @param input uint256 to put into byte array.
|
||||
function writeUint256(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
uint256 input
|
||||
) internal pure {
|
||||
function writeUint256(bytes memory b, uint256 index, uint256 input) internal pure {
|
||||
writeBytes32(b, index, bytes32(input));
|
||||
}
|
||||
|
||||
|
@@ -38,7 +38,6 @@ library LibAuthorizableRichErrorsV06 {
|
||||
// bytes4(keccak256("ZeroCantBeAuthorizedError()"))
|
||||
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) {
|
||||
return abi.encodeWithSelector(AUTHORIZED_ADDRESS_MISMATCH_ERROR_SELECTOR, authorized, target);
|
||||
}
|
||||
|
@@ -34,7 +34,6 @@ library LibBytesRichErrorsV06 {
|
||||
// bytes4(keccak256("InvalidByteOperationError(uint8,uint256,uint256)"))
|
||||
bytes4 internal constant INVALID_BYTE_OPERATION_ERROR_SELECTOR = 0x28006595;
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
function InvalidByteOperationError(
|
||||
InvalidByteOperationErrorCodes errorCode,
|
||||
uint256 offset,
|
||||
|
@@ -26,7 +26,6 @@ library LibMathRichErrorsV06 {
|
||||
// bytes4(keccak256("RoundingError(uint256,uint256,uint256)"))
|
||||
bytes4 internal constant ROUNDING_ERROR_SELECTOR = 0x339f3de2;
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
function DivisionByZeroError() internal pure returns (bytes memory) {
|
||||
return DIVISION_BY_ZERO_ERROR;
|
||||
}
|
||||
|
@@ -25,7 +25,6 @@ library LibOwnableRichErrorsV06 {
|
||||
// bytes4(keccak256("TransferOwnerToZeroError()"))
|
||||
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) {
|
||||
return abi.encodeWithSelector(ONLY_OWNER_ERROR_SELECTOR, sender, owner);
|
||||
}
|
||||
|
@@ -23,7 +23,6 @@ library LibReentrancyGuardRichErrorsV06 {
|
||||
// bytes4(keccak256("IllegalReentrancyError()"))
|
||||
bytes internal constant ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES = hex"0c3b823f";
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
function IllegalReentrancyError() internal pure returns (bytes memory) {
|
||||
return ILLEGAL_REENTRANCY_ERROR_SELECTOR_BYTES;
|
||||
}
|
||||
|
@@ -23,7 +23,6 @@ library LibRichErrorsV06 {
|
||||
// bytes4(keccak256("Error(string)"))
|
||||
bytes4 internal constant STANDARD_ERROR_SELECTOR = 0x08c379a0;
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
/// @dev ABI encode a standard, string revert error payload.
|
||||
/// This is the same payload that would be included by a `revert(string)`
|
||||
/// solidity statement. It has the function signature `Error(string)`.
|
||||
@@ -33,8 +32,6 @@ library LibRichErrorsV06 {
|
||||
return abi.encodeWithSelector(STANDARD_ERROR_SELECTOR, bytes(message));
|
||||
}
|
||||
|
||||
// solhint-enable func-name-mixedcase
|
||||
|
||||
/// @dev Reverts an encoded rich revert reason `errorData`.
|
||||
/// @param errorData ABI encoded error data.
|
||||
function rrevert(bytes memory errorData) internal pure {
|
||||
|
@@ -40,12 +40,7 @@ library LibSafeMathRichErrorsV06 {
|
||||
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);
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,6 @@ pragma solidity ^0.5.9;
|
||||
|
||||
import "../src/Authorizable.sol";
|
||||
|
||||
// solhint-disable no-empty-blocks
|
||||
contract TestAuthorizable is Authorizable {
|
||||
function onlyAuthorizedFn() external view onlyAuthorized {}
|
||||
}
|
||||
|
@@ -30,11 +30,10 @@ contract TestLibAddressArray {
|
||||
/// @param addressArray Array of addresses.
|
||||
/// @param addressToAppend Address to append.
|
||||
/// @return Array of addresses: [... addressArray, addressToAppend]
|
||||
function publicAppend(address[] memory addressArray, address addressToAppend)
|
||||
public
|
||||
pure
|
||||
returns (address[] memory)
|
||||
{
|
||||
function publicAppend(
|
||||
address[] memory addressArray,
|
||||
address addressToAppend
|
||||
) public pure returns (address[] memory) {
|
||||
return addressArray.append(addressToAppend);
|
||||
}
|
||||
|
||||
@@ -52,15 +51,7 @@ contract TestLibAddressArray {
|
||||
address[] memory addressArray,
|
||||
int256 freeMemOffset,
|
||||
address addressToAppend
|
||||
)
|
||||
public
|
||||
pure
|
||||
returns (
|
||||
address[] memory result,
|
||||
uint256 oldArrayMemStart,
|
||||
uint256 newArrayMemStart
|
||||
)
|
||||
{
|
||||
) public pure returns (address[] memory result, uint256 oldArrayMemStart, uint256 newArrayMemStart) {
|
||||
assembly {
|
||||
// Remember the original memory address of the array.
|
||||
oldArrayMemStart := addressArray
|
||||
@@ -89,11 +80,10 @@ contract TestLibAddressArray {
|
||||
/// @param addressArray Array of addresses.
|
||||
/// @param target Address to search for in array.
|
||||
/// @return Existence and index of the target in the array.
|
||||
function publicIndexOf(address[] memory addressArray, address target)
|
||||
public
|
||||
pure
|
||||
returns (bool success, uint256 index)
|
||||
{
|
||||
function publicIndexOf(
|
||||
address[] memory addressArray,
|
||||
address target
|
||||
) public pure returns (bool success, uint256 index) {
|
||||
(success, index) = addressArray.indexOf(target);
|
||||
}
|
||||
}
|
||||
|
@@ -60,11 +60,7 @@ contract TestLibBytes {
|
||||
/// @param b Byte array to insert address into.
|
||||
/// @param index Index in byte array of address.
|
||||
/// @param input Address to put into byte array.
|
||||
function publicWriteAddress(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
address input
|
||||
) public pure returns (bytes memory) {
|
||||
function publicWriteAddress(bytes memory b, uint256 index, address input) public pure returns (bytes memory) {
|
||||
b.writeAddress(index, input);
|
||||
return b;
|
||||
}
|
||||
@@ -82,11 +78,7 @@ contract TestLibBytes {
|
||||
/// @param b Byte array to insert <input> into.
|
||||
/// @param index Index in byte array of <input>.
|
||||
/// @param input bytes32 to put into byte array.
|
||||
function publicWriteBytes32(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
bytes32 input
|
||||
) public pure returns (bytes memory) {
|
||||
function publicWriteBytes32(bytes memory b, uint256 index, bytes32 input) public pure returns (bytes memory) {
|
||||
b.writeBytes32(index, input);
|
||||
return b;
|
||||
}
|
||||
@@ -104,11 +96,7 @@ contract TestLibBytes {
|
||||
/// @param b Byte array to insert <input> into.
|
||||
/// @param index Index in byte array of <input>.
|
||||
/// @param input uint256 to put into byte array.
|
||||
function publicWriteUint256(
|
||||
bytes memory b,
|
||||
uint256 index,
|
||||
uint256 input
|
||||
) public pure returns (bytes memory) {
|
||||
function publicWriteUint256(bytes memory b, uint256 index, uint256 input) public pure returns (bytes memory) {
|
||||
b.writeUint256(index, input);
|
||||
return b;
|
||||
}
|
||||
|
@@ -33,9 +33,9 @@ contract TestRefundable is Refundable {
|
||||
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) {
|
||||
disableRefundUntilEndFunction();
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@0x/contracts-utils",
|
||||
"version": "4.8.27",
|
||||
"version": "4.8.34",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
@@ -50,8 +50,8 @@
|
||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/utils",
|
||||
"devDependencies": {
|
||||
"@0x/abi-gen": "^5.8.1",
|
||||
"@0x/contracts-gen": "^2.0.47",
|
||||
"@0x/contracts-test-utils": "^5.4.37",
|
||||
"@0x/contracts-gen": "^2.0.48",
|
||||
"@0x/contracts-test-utils": "^5.4.43",
|
||||
"@0x/dev-utils": "^5.0.0",
|
||||
"@0x/order-utils": "^10.4.28",
|
||||
"@0x/sol-compiler": "^4.8.2",
|
||||
|
@@ -142,4 +142,3 @@ describe('LibAddressArray', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
// tslint:disable:max-file-line-count
|
||||
|
@@ -446,7 +446,6 @@ blockchainTests('LibBytes', env => {
|
||||
describe('memCopy', () => {
|
||||
// Create memory 0x000102...FF
|
||||
const memSize = 256;
|
||||
// tslint:disable:no-shadowed-variable
|
||||
const memory = new Uint8Array(memSize).map((_, i) => i);
|
||||
const memHex = toHex(memory);
|
||||
|
||||
@@ -782,4 +781,3 @@ blockchainTests('LibBytes', env => {
|
||||
});
|
||||
});
|
||||
});
|
||||
// tslint:disable:max-file-line-count
|
||||
|
@@ -310,7 +310,6 @@ blockchainTests('LibMath', env => {
|
||||
const numerator = new BigNumber(100);
|
||||
const denominator = new BigNumber(102);
|
||||
const target = new BigNumber(52);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync();
|
||||
expect(actual).to.eq(true);
|
||||
});
|
||||
@@ -319,7 +318,6 @@ blockchainTests('LibMath', env => {
|
||||
const numerator = new BigNumber(100);
|
||||
const denominator = new BigNumber(101);
|
||||
const target = new BigNumber(92);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync();
|
||||
expect(actual).to.eq(false);
|
||||
});
|
||||
@@ -328,9 +326,7 @@ blockchainTests('LibMath', env => {
|
||||
const numerator = ONE_ETHER;
|
||||
const denominator = ONE_ETHER.dividedToIntegerBy(2);
|
||||
const target = ONE_ETHER.times(0.01);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const expected = isRoundingErrorFloor(numerator, denominator, target);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const actual = await libsContract.isRoundingErrorFloor(numerator, denominator, target).callAsync();
|
||||
expect(actual).to.eq(expected);
|
||||
});
|
||||
@@ -376,7 +372,6 @@ blockchainTests('LibMath', env => {
|
||||
const numerator = new BigNumber(100);
|
||||
const denominator = new BigNumber(101);
|
||||
const target = new BigNumber(92);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync();
|
||||
expect(actual).to.eq(true);
|
||||
});
|
||||
@@ -385,7 +380,6 @@ blockchainTests('LibMath', env => {
|
||||
const numerator = new BigNumber(100);
|
||||
const denominator = new BigNumber(102);
|
||||
const target = new BigNumber(52);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync();
|
||||
expect(actual).to.eq(false);
|
||||
});
|
||||
@@ -394,9 +388,7 @@ blockchainTests('LibMath', env => {
|
||||
const numerator = ONE_ETHER;
|
||||
const denominator = ONE_ETHER.dividedToIntegerBy(2);
|
||||
const target = ONE_ETHER.times(0.01);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const expected = isRoundingErrorCeil(numerator, denominator, target);
|
||||
// tslint:disable-next-line: boolean-naming
|
||||
const actual = await libsContract.isRoundingErrorCeil(numerator, denominator, target).callAsync();
|
||||
expect(actual).to.eq(expected);
|
||||
});
|
||||
|
@@ -53,7 +53,6 @@ describe('TestLogDecoding', () => {
|
||||
.emitEvent()
|
||||
.awaitTransactionSuccessAsync();
|
||||
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);
|
||||
});
|
||||
it('should not decode event args when no dependencies are passed into wrapper', async () => {
|
||||
@@ -61,7 +60,6 @@ describe('TestLogDecoding', () => {
|
||||
.emitEventDownstream()
|
||||
.awaitTransactionSuccessAsync();
|
||||
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();
|
||||
});
|
||||
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()
|
||||
.awaitTransactionSuccessAsync();
|
||||
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);
|
||||
// tslint:disable no-unnecessary-type-assertion
|
||||
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 () => {
|
||||
const txReceipt = await testLogDecodingWithDependencies.emitEvent().awaitTransactionSuccessAsync();
|
||||
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);
|
||||
});
|
||||
it('should decode downstream event args when dependencies are passed into wrapper', async () => {
|
||||
@@ -85,7 +80,6 @@ describe('TestLogDecoding', () => {
|
||||
.emitEventDownstream()
|
||||
.awaitTransactionSuccessAsync();
|
||||
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(
|
||||
expectedDownstreamEvent,
|
||||
);
|
||||
@@ -95,9 +89,7 @@ describe('TestLogDecoding', () => {
|
||||
.emitEventsLocalAndDownstream()
|
||||
.awaitTransactionSuccessAsync();
|
||||
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);
|
||||
// tslint:disable no-unnecessary-type-assertion
|
||||
expect((txReceipt.logs[1] as LogWithDecodedArgs<DecodedLogArgs>).args).to.be.deep.equal(
|
||||
expectedDownstreamEvent,
|
||||
);
|
||||
|
@@ -1,4 +1,67 @@
|
||||
[
|
||||
{
|
||||
"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,
|
||||
"version": "0.37.8",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665670315,
|
||||
"version": "0.37.7",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1665531940,
|
||||
"version": "0.37.6",
|
||||
|
@@ -5,6 +5,34 @@ Edit the package's CHANGELOG.json file only.
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## 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_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.37.7 - _October 13, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.37.6 - _October 11, 2022_
|
||||
|
||||
* Dependencies updated
|
||||
|
@@ -140,11 +140,11 @@
|
||||
"./contracts/src/transformers/bridges/mixins/MixinNerve.sol",
|
||||
"./contracts/src/transformers/bridges/mixins/MixinPlatypus.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/MixinUniswap.sol",
|
||||
"./contracts/src/transformers/bridges/mixins/MixinUniswapV2.sol",
|
||||
"./contracts/src/transformers/bridges/mixins/MixinUniswapV3.sol",
|
||||
"./contracts/src/transformers/bridges/mixins/MixinVelodrome.sol",
|
||||
"./contracts/src/transformers/bridges/mixins/MixinZeroExBridge.sol",
|
||||
"./contracts/src/vendor/IERC1155Token.sol",
|
||||
"./contracts/src/vendor/IERC721Token.sol",
|
||||
|
Submodule contracts/zero-ex/contracts/deps/forge-std updated: 2a2ce3692b...1680d7fb3e
@@ -57,8 +57,6 @@ interface IZeroEx is
|
||||
IERC1155OrdersFeature,
|
||||
IERC165Feature
|
||||
{
|
||||
// solhint-disable state-visibility
|
||||
|
||||
/// @dev Fallback for just receiving ether.
|
||||
receive() external payable;
|
||||
}
|
||||
|
@@ -29,7 +29,6 @@ import "./errors/LibProxyRichErrors.sol";
|
||||
/// @dev An extensible proxy contract that serves as a universal entry point for
|
||||
/// interacting with the 0x protocol.
|
||||
contract ZeroEx {
|
||||
// solhint-disable separate-by-one-line-in-contract,indent,var-name-mixedcase
|
||||
using LibBytesV06 for bytes;
|
||||
|
||||
/// @dev Construct this contract and register the `BootstrapFeature` feature.
|
||||
@@ -43,8 +42,6 @@ contract ZeroEx {
|
||||
LibProxyStorage.getStorage().impls[bootstrap.bootstrap.selector] = address(bootstrap);
|
||||
}
|
||||
|
||||
// solhint-disable state-visibility
|
||||
|
||||
/// @dev Forwards calls to the appropriate implementation contract.
|
||||
fallback() external payable {
|
||||
bytes4 selector = msg.data.readBytes4(0);
|
||||
@@ -63,8 +60,6 @@ contract ZeroEx {
|
||||
/// @dev Fallback for just receiving ether.
|
||||
receive() external payable {}
|
||||
|
||||
// solhint-enable state-visibility
|
||||
|
||||
/// @dev Get the implementation contract of a registered function.
|
||||
/// @param selector The function selector.
|
||||
/// @return impl The implementation contract address.
|
||||
|
@@ -37,8 +37,6 @@ contract ZeroExOptimized {
|
||||
LibProxyStorage.getStorage().impls[bootstrap.bootstrap.selector] = address(bootstrap);
|
||||
}
|
||||
|
||||
// solhint-disable state-visibility
|
||||
|
||||
/// @dev Forwards calls to the appropriate implementation contract.
|
||||
fallback() external payable {
|
||||
// This is used in assembly below as impls_slot.
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibCommonRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function OnlyCallableBySelfError(address sender) internal pure returns (bytes memory) {
|
||||
return abi.encodeWithSelector(bytes4(keccak256("OnlyCallableBySelfError(address)")), sender);
|
||||
}
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibLiquidityProviderRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function LiquidityProviderIncompleteSellError(
|
||||
address providerAddress,
|
||||
address makerToken,
|
||||
|
@@ -20,13 +20,10 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibMetaTransactionsRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function InvalidMetaTransactionsArrayLengthsError(uint256 mtxCount, uint256 signatureCount)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function InvalidMetaTransactionsArrayLengthsError(
|
||||
uint256 mtxCount,
|
||||
uint256 signatureCount
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("InvalidMetaTransactionsArrayLengthsError(uint256,uint256)")),
|
||||
@@ -35,11 +32,10 @@ library LibMetaTransactionsRichErrors {
|
||||
);
|
||||
}
|
||||
|
||||
function MetaTransactionUnsupportedFunctionError(bytes32 mtxHash, bytes4 selector)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function MetaTransactionUnsupportedFunctionError(
|
||||
bytes32 mtxHash,
|
||||
bytes4 selector
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("MetaTransactionUnsupportedFunctionError(bytes32,bytes4)")),
|
||||
@@ -120,11 +116,10 @@ library LibMetaTransactionsRichErrors {
|
||||
);
|
||||
}
|
||||
|
||||
function MetaTransactionAlreadyExecutedError(bytes32 mtxHash, uint256 executedBlockNumber)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function MetaTransactionAlreadyExecutedError(
|
||||
bytes32 mtxHash,
|
||||
uint256 executedBlockNumber
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("MetaTransactionAlreadyExecutedError(bytes32,uint256)")),
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibNFTOrdersRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function OverspentEthError(uint256 ethSpent, uint256 ethAvailable) internal pure returns (bytes memory) {
|
||||
return abi.encodeWithSelector(bytes4(keccak256("OverspentEthError(uint256,uint256)")), ethSpent, ethAvailable);
|
||||
}
|
||||
@@ -56,11 +54,10 @@ library LibNFTOrdersRichErrors {
|
||||
);
|
||||
}
|
||||
|
||||
function SellOrderFeesExceedSpreadError(uint256 sellOrderFees, uint256 spread)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function SellOrderFeesExceedSpreadError(
|
||||
uint256 sellOrderFees,
|
||||
uint256 spread
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("SellOrderFeesExceedSpreadError(uint256,uint256)")),
|
||||
@@ -114,11 +111,10 @@ library LibNFTOrdersRichErrors {
|
||||
);
|
||||
}
|
||||
|
||||
function ExceedsRemainingOrderAmount(uint128 remainingOrderAmount, uint128 fillAmount)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function ExceedsRemainingOrderAmount(
|
||||
uint128 remainingOrderAmount,
|
||||
uint128 fillAmount
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("ExceedsRemainingOrderAmount(uint128,uint128)")),
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibNativeOrdersRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function ProtocolFeeRefundFailed(address receiver, uint256 refundAmount) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibOwnableRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function OnlyOwnerError(address sender, address owner) internal pure returns (bytes memory) {
|
||||
return abi.encodeWithSelector(bytes4(keccak256("OnlyOwnerError(address,address)")), sender, owner);
|
||||
}
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibProxyRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function NotImplementedError(bytes4 selector) internal pure returns (bytes memory) {
|
||||
return abi.encodeWithSelector(bytes4(keccak256("NotImplementedError(bytes4)")), selector);
|
||||
}
|
||||
|
@@ -29,8 +29,6 @@ library LibSignatureRichErrors {
|
||||
BAD_SIGNATURE_DATA
|
||||
}
|
||||
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function SignatureValidationError(
|
||||
SignatureValidationErrorCodes code,
|
||||
bytes32 hash,
|
||||
@@ -47,11 +45,10 @@ library LibSignatureRichErrors {
|
||||
);
|
||||
}
|
||||
|
||||
function SignatureValidationError(SignatureValidationErrorCodes code, bytes32 hash)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function SignatureValidationError(
|
||||
SignatureValidationErrorCodes code,
|
||||
bytes32 hash
|
||||
) internal pure returns (bytes memory) {
|
||||
return abi.encodeWithSelector(bytes4(keccak256("SignatureValidationError(uint8,bytes32)")), code, hash);
|
||||
}
|
||||
}
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibSimpleFunctionRegistryRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function NotInRollbackHistoryError(bytes4 selector, address targetImpl) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibTransformERC20RichErrors {
|
||||
// solhint-disable func-name-mixedcase,separate-by-one-line-in-contract
|
||||
|
||||
function InsufficientEthAttachedError(uint256 ethAttached, uint256 ethNeeded) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
@@ -45,11 +43,10 @@ library LibTransformERC20RichErrors {
|
||||
);
|
||||
}
|
||||
|
||||
function NegativeTransformERC20OutputError(address outputToken, uint256 outputTokenLostAmount)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function NegativeTransformERC20OutputError(
|
||||
address outputToken,
|
||||
uint256 outputTokenLostAmount
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("NegativeTransformERC20OutputError(address,uint256)")),
|
||||
@@ -79,11 +76,10 @@ library LibTransformERC20RichErrors {
|
||||
abi.encodeWithSelector(bytes4(keccak256("OnlyCallableByDeployerError(address,address)")), caller, deployer);
|
||||
}
|
||||
|
||||
function InvalidExecutionContextError(address actualContext, address expectedContext)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function InvalidExecutionContextError(
|
||||
address actualContext,
|
||||
address expectedContext
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("InvalidExecutionContextError(address,address)")),
|
||||
@@ -97,11 +93,10 @@ library LibTransformERC20RichErrors {
|
||||
INVALID_ARRAY_LENGTH
|
||||
}
|
||||
|
||||
function InvalidTransformDataError(InvalidTransformDataErrorCode errorCode, bytes memory transformData)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function InvalidTransformDataError(
|
||||
InvalidTransformDataErrorCode errorCode,
|
||||
bytes memory transformData
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("InvalidTransformDataError(uint8,bytes)")),
|
||||
@@ -140,11 +135,10 @@ library LibTransformERC20RichErrors {
|
||||
);
|
||||
}
|
||||
|
||||
function InsufficientTakerTokenError(uint256 tokenBalance, uint256 tokensNeeded)
|
||||
internal
|
||||
pure
|
||||
returns (bytes memory)
|
||||
{
|
||||
function InsufficientTakerTokenError(
|
||||
uint256 tokenBalance,
|
||||
uint256 tokensNeeded
|
||||
) internal pure returns (bytes memory) {
|
||||
return
|
||||
abi.encodeWithSelector(
|
||||
bytes4(keccak256("InsufficientTakerTokenError(uint256,uint256)")),
|
||||
|
@@ -20,8 +20,6 @@
|
||||
pragma solidity ^0.6.5;
|
||||
|
||||
library LibWalletRichErrors {
|
||||
// solhint-disable func-name-mixedcase
|
||||
|
||||
function WalletExecuteCallFailedError(
|
||||
address wallet,
|
||||
address callTarget,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user