Compare commits
162 Commits
@0x/contra
...
@0x/contra
Author | SHA1 | Date | |
---|---|---|---|
|
aae46bef84 | ||
|
a0bb36954e | ||
|
4f32f3174f | ||
|
b84107d142 | ||
|
b46eeadc64 | ||
|
692231c2ea | ||
|
3a1becc3e4 | ||
|
3653e2d7f9 | ||
|
65def38d98 | ||
|
859c36cb10 | ||
|
3e34386812 | ||
|
a35af11981 | ||
|
59eabec71e | ||
|
bf4c7e7d50 | ||
|
fd098ca4df | ||
|
c360f8d8fd | ||
|
b358559421 | ||
|
df5aad8e8e | ||
|
8dbf79db59 | ||
|
1839608e84 | ||
|
6e3e795b8b | ||
|
d9c410a7e3 | ||
|
609727afe8 | ||
|
8a5c74c0b4 | ||
|
cd93f3b07e | ||
|
8397b12de6 | ||
|
3f85acec3a | ||
|
d6a9e3d600 | ||
|
361569ac2f | ||
|
719664c145 | ||
|
f800d6c24c | ||
|
a9a81bcafb | ||
|
4280307a15 | ||
|
7b57d3ae51 | ||
|
8a8a5bbda0 | ||
|
76987c8db1 | ||
|
6f8971cc42 | ||
|
71ab882143 | ||
|
5a4961c8d9 | ||
|
4c4fb99d87 | ||
|
872abf09e9 | ||
|
f10bfe7d04 | ||
|
a74d8deff3 | ||
|
835ee4e8de | ||
|
63ec42303f | ||
|
f789aebddc | ||
|
efd83be779 | ||
|
603bc1d51c | ||
|
32a930a7fc | ||
|
f464bf68d7 | ||
|
ebdc4fb509 | ||
|
7580719586 | ||
|
aba9db2be7 | ||
|
a6680411c8 | ||
|
0d0e87de94 | ||
|
ccf2000c09 | ||
|
3eb2e0f56a | ||
|
d07c7d5b69 | ||
|
adf6684c29 | ||
|
9bf889aa30 | ||
|
e81c88564e | ||
|
901d400d62 | ||
|
289474e2ce | ||
|
407ca21168 | ||
|
5c68fc24d2 | ||
|
548800e0a9 | ||
|
bde3d6dc6a | ||
|
56550a6acc | ||
|
e51b83accc | ||
|
d5ae971f1c | ||
|
5a2f5f9a42 | ||
|
75a3b70cef | ||
|
803cf65ba1 | ||
|
5d3947b838 | ||
|
4397a59008 | ||
|
966d54c935 | ||
|
234ddb495d | ||
|
a744acc7bc | ||
|
27c624633c | ||
|
7ef75101b4 | ||
|
6f8aace00d | ||
|
6c264b2f18 | ||
|
df055e1958 | ||
|
70d2117470 | ||
|
2c173ccaf3 | ||
|
d2f4a0c5f3 | ||
|
0d6021e5e3 | ||
|
bb04726e7f | ||
|
220ca370c2 | ||
|
63af4e3e98 | ||
|
9754e12d82 | ||
|
d72ebed246 | ||
|
587fc71058 | ||
|
7d34e09a12 | ||
|
7d15baad0f | ||
|
1e6476ada7 | ||
|
1d6ca5f6b5 | ||
|
fb249f02fc | ||
|
fdf04ef275 | ||
|
b0f5f634f2 | ||
|
6ee0108565 | ||
|
c73097e688 | ||
|
a2d42b07b5 | ||
|
f9a794af93 | ||
|
a2643674ca | ||
|
c00ce9daac | ||
|
c68b5d7844 | ||
|
09ed106d4c | ||
|
a6b92fc658 | ||
|
4be4a1a30b | ||
|
9bede5d331 | ||
|
b50d4aee6d | ||
|
55bc367bd6 | ||
|
7a59b7eafe | ||
|
9e59d41e44 | ||
|
475e6c7bca | ||
|
dbc5a5293e | ||
|
f4bd2bd0d8 | ||
|
f1782a83ba | ||
|
cbade0d558 | ||
|
fe0c26387c | ||
|
c03a014740 | ||
|
84e6d788aa | ||
|
cd296b8767 | ||
|
5946d32a7d | ||
|
842dd8572b | ||
|
33e260f9db | ||
|
c44f8d0060 | ||
|
411548a33e | ||
|
9a17ce1383 | ||
|
2b120d0669 | ||
|
6d877d5242 | ||
|
e4abd690e7 | ||
|
2a194384b6 | ||
|
1e069e6f8a | ||
|
a019bb913d | ||
|
9ce73931f7 | ||
|
97020df178 | ||
|
dfb7b3de8f | ||
|
9e152912fe | ||
|
b2c2f1e1aa | ||
|
629c7d8e92 | ||
|
62f24d4356 | ||
|
ae281c33ca | ||
|
5d034dd106 | ||
|
c1f8df0eca | ||
|
76dda9eeda | ||
|
a9b84a92ac | ||
|
0f7e881899 | ||
|
6045f777ab | ||
|
5a15044ead | ||
|
a69d76e487 | ||
|
3adfcdffa8 | ||
|
164a5d44d9 | ||
|
70ddab0231 | ||
|
7bf009fbf6 | ||
|
525bc8197b | ||
|
24397c51a8 | ||
|
06b3464756 | ||
|
bbaa90bd9a | ||
|
5c683cbc0f | ||
|
95345f18bc |
@@ -1,25 +1,25 @@
|
|||||||
version: 2
|
version: 2.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
resource_class: medium+
|
resource_class: xlarge
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
environment:
|
environment:
|
||||||
CONTRACTS_COMMIT_HASH: '9ed05f5'
|
NODE_OPTIONS: '--max-old-space-size=16384'
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV
|
- run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV
|
||||||
- run:
|
- run:
|
||||||
name: install-yarn
|
name: install-yarn
|
||||||
command: npm install --force --global yarn@1.17.0
|
command: npm install --force --global yarn@1.22.0
|
||||||
- run:
|
- run:
|
||||||
name: yarn
|
name: yarn
|
||||||
command: yarn --frozen-lockfile --ignore-engines install || yarn --frozen-lockfile --ignore-engines install
|
command: yarn --frozen-lockfile --ignore-engines install || yarn --frozen-lockfile --ignore-engines install
|
||||||
- setup_remote_docker
|
- setup_remote_docker
|
||||||
- run: yarn build:ci
|
- run: yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci
|
||||||
- run: yarn build:ts
|
- run: yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: repo-{{ .Environment.CIRCLE_SHA1 }}
|
key: repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
paths:
|
paths:
|
||||||
@@ -31,57 +31,59 @@ jobs:
|
|||||||
test-exchange-ganache:
|
test-exchange-ganache:
|
||||||
resource_class: medium+
|
resource_class: medium+
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
- run: yarn wsrun test:circleci @0x/contracts-exchange
|
- run: yarn wsrun -p @0x/contracts-exchange -m --serial -c test:circleci
|
||||||
test-integrations-ganache:
|
test-integrations-ganache:
|
||||||
resource_class: medium+
|
resource_class: medium+
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
- run: yarn wsrun test:circleci @0x/contracts-integrations
|
- run: yarn wsrun -p @0x/contracts-integrations -m --serial -c test:circleci
|
||||||
test-contracts-staking-ganache:
|
test-contracts-staking-ganache:
|
||||||
resource_class: medium+
|
resource_class: medium+
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
- run: yarn wsrun test:circleci @0x/contracts-staking
|
- run: yarn wsrun -p @0x/contracts-staking -m --serial -c test:circleci
|
||||||
test-contracts-extra-ganache:
|
test-contracts-extra-ganache:
|
||||||
resource_class: medium+
|
resource_class: medium+
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
- run: yarn wsrun test:circleci @0x/contracts-exchange-forwarder @0x/contracts-coordinator
|
- run: yarn wsrun -p @0x/contracts-exchange-forwarder -p @0x/contracts-coordinator -m --serial -c test:circleci
|
||||||
test-contracts-rest-ganache:
|
test-contracts-rest-ganache:
|
||||||
resource_class: medium+
|
resource_class: medium+
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
- run: yarn wsrun test:circleci @0x/contracts-multisig @0x/contracts-utils @0x/contracts-exchange-libs @0x/contracts-erc20 @0x/contracts-erc721 @0x/contracts-erc1155 @0x/contracts-asset-proxy @0x/contracts-broker @0x/contracts-zero-ex
|
- run: yarn wsrun -p @0x/contracts-multisig -p @0x/contracts-utils -p @0x/contracts-exchange-libs -p @0x/contracts-erc20 -p @0x/contracts-erc721 -p @0x/contracts-erc1155 -p @0x/contracts-asset-proxy -p @0x/contracts-broker -p @0x/contracts-zero-ex -m --serial -c test:circleci
|
||||||
test-publish:
|
test-publish:
|
||||||
resource_class: medium+
|
resource_class: large
|
||||||
|
environment:
|
||||||
|
NODE_OPTIONS: '--max-old-space-size=6442'
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
- image: 0xorg/verdaccio
|
- image: 0xorg/verdaccio
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
@@ -95,7 +97,7 @@ jobs:
|
|||||||
path: ~/.npm/_logs
|
path: ~/.npm/_logs
|
||||||
test-doc-generation:
|
test-doc-generation:
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
@@ -106,18 +108,18 @@ jobs:
|
|||||||
no_output_timeout: 1200
|
no_output_timeout: 1200
|
||||||
test-rest:
|
test-rest:
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
- run: yarn wsrun test:circleci @0x/contracts-test-utils
|
- run: yarn wsrun -p @0x/contracts-test-utils -m --serial -c test:circleci
|
||||||
- run: yarn wsrun test:circleci @0x/contract-artifacts
|
- run: yarn wsrun -p @0x/contract-artifacts -m --serial -c test:circleci
|
||||||
- run: yarn wsrun test:circleci @0x/contract-wrappers-test
|
- run: yarn wsrun -p @0x/contract-wrappers-test -m --serial -c test:circleci
|
||||||
- run: yarn wsrun test:circleci @0x/migrations
|
- run: yarn wsrun -p @0x/migrations -m --serial -c test:circleci
|
||||||
- run: yarn wsrun test:circleci @0x/order-utils
|
- run: yarn wsrun -p @0x/order-utils -m --serial -c test:circleci
|
||||||
- run: yarn wsrun test:circleci @0x/asset-swapper
|
- run: yarn wsrun -p @0x/asset-swapper -m --serial -c test:circleci
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: coverage-contract-wrappers-test-{{ .Environment.CIRCLE_SHA1 }}
|
key: coverage-contract-wrappers-test-{{ .Environment.CIRCLE_SHA1 }}
|
||||||
paths:
|
paths:
|
||||||
@@ -134,7 +136,7 @@ jobs:
|
|||||||
resource_class: large
|
resource_class: large
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
@@ -145,7 +147,7 @@ jobs:
|
|||||||
- run: yarn diff_md_docs:ci
|
- run: yarn diff_md_docs:ci
|
||||||
submit-coverage:
|
submit-coverage:
|
||||||
docker:
|
docker:
|
||||||
- image: nikolaik/python-nodejs:python3.7-nodejs10
|
- image: node:12
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
|
@@ -3,5 +3,6 @@
|
|||||||
"tabWidth": 4,
|
"tabWidth": 4,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"trailingComma": "all",
|
"trailingComma": "all",
|
||||||
"bracketSpacing": true
|
"bracketSpacing": true,
|
||||||
|
"arrowParens": "avoid"
|
||||||
}
|
}
|
||||||
|
@@ -49,7 +49,6 @@
|
|||||||
| Package | Version |
|
| Package | Version |
|
||||||
| ------: | :------ |
|
| ------: | :------ |
|
||||||
|
|
||||||
|
|
||||||
<!-- For example:
|
<!-- For example:
|
||||||
| `0x.js` | 2.0.4 |
|
| `0x.js` | 2.0.4 |
|
||||||
| `Exchange Contract` | v2 |
|
| `Exchange Contract` | v2 |
|
||||||
|
@@ -43,12 +43,12 @@ These packages are all under development. See [/contracts/README.md](/contracts/
|
|||||||
#### 0x-specific packages
|
#### 0x-specific packages
|
||||||
|
|
||||||
| Package | Version | Description |
|
| Package | Version | Description |
|
||||||
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
||||||
| [`@0x/contract-addresses`](/packages/contract-addresses) | [](https://www.npmjs.com/package/@0x/contract-addresses) | A tiny utility library for getting known deployed contract addresses for a particular network. |
|
| [`@0x/contract-addresses`](/packages/contract-addresses) | [](https://www.npmjs.com/package/@0x/contract-addresses) | A tiny utility library for getting known deployed contract addresses for a particular network. |
|
||||||
| [`@0x/contract-wrappers`](/packages/contract-wrappers) | [](https://www.npmjs.com/package/@0x/contract-wrappers) | JS/TS wrappers for interacting with the 0x smart contracts |
|
| [`@0x/contract-wrappers`](/packages/contract-wrappers) | [](https://www.npmjs.com/package/@0x/contract-wrappers) | JS/TS wrappers for interacting with the 0x smart contracts |
|
||||||
| [`@0x/order-utils`](/packages/order-utils) | [](https://www.npmjs.com/package/@0x/order-utils) | A set of utilities for generating, parsing, signing and validating 0x orders |
|
| [`@0x/order-utils`](/packages/order-utils) | [](https://www.npmjs.com/package/@0x/order-utils) | A set of utilities for generating, parsing, signing and validating 0x orders |
|
||||||
| [`@0x/migrations`](/packages/migrations) | [](https://www.npmjs.com/package/@0x/migrations) | Migration tool for deploying 0x smart contracts on private testnets |
|
| [`@0x/migrations`](/packages/migrations) | [](https://www.npmjs.com/package/@0x/migrations) | Migration tool for deploying 0x smart contracts on private testnets |
|
||||||
| [`@0x/contract-artifacts`](/packages/contract-artifacts) | [](https://www.npmjs.com/package/@0x/contract-artifacts) | 0x smart contract compilation artifacts | |
|
| [`@0x/contract-artifacts`](/packages/contract-artifacts) | [](https://www.npmjs.com/package/@0x/contract-artifacts) | 0x smart contract compilation artifacts | |
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "3.7.19",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "3.7.18",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "3.7.17",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "3.7.16",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "3.7.15",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "3.7.14",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "3.7.13",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "3.7.12",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "3.7.11",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "3.7.10",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "3.7.9",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "3.7.8",
|
"version": "3.7.8",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.7.19 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.18 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.17 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.16 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.15 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.14 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.13 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.12 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.11 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.10 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.7.9 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.7.8 - _March 17, 2021_
|
## v3.7.8 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-asset-proxy",
|
"name": "@0x/contracts-asset-proxy",
|
||||||
"version": "3.7.8",
|
"version": "3.7.19",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -51,15 +51,15 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contract-wrappers": "^13.14.0",
|
"@0x/contract-wrappers": "^13.17.4",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^7.0.10",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.0",
|
||||||
"npm-run-all": "^4.1.2",
|
"npm-run-all": "^4.1.2",
|
||||||
@@ -76,20 +76,20 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contracts-erc1155": "^2.1.26",
|
"@0x/contracts-erc1155": "^2.1.37",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-erc721": "^3.1.26",
|
"@0x/contracts-erc721": "^3.1.37",
|
||||||
"@0x/contracts-exchange-libs": "^4.3.26",
|
"@0x/contracts-exchange-libs": "^4.3.37",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"lodash": "^4.17.11"
|
"lodash": "^4.17.11"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
|
@@ -1,354 +0,0 @@
|
|||||||
import { ContractTxFunctionObj } from '@0x/contract-wrappers';
|
|
||||||
import {
|
|
||||||
blockchainTests,
|
|
||||||
constants,
|
|
||||||
expect,
|
|
||||||
filterLogsToArguments,
|
|
||||||
getRandomInteger,
|
|
||||||
randomAddress,
|
|
||||||
shortZip,
|
|
||||||
} from '@0x/contracts-test-utils';
|
|
||||||
import { BigNumber, hexUtils, NULL_ADDRESS } from '@0x/utils';
|
|
||||||
import { DecodedLogs } from 'ethereum-types';
|
|
||||||
import * as _ from 'lodash';
|
|
||||||
|
|
||||||
import { DexForwarderBridgeCall, dexForwarderBridgeDataEncoder } from '../src/dex_forwarder_bridge';
|
|
||||||
|
|
||||||
import { artifacts } from './artifacts';
|
|
||||||
import {
|
|
||||||
TestDexForwarderBridgeBridgeTransferFromCalledEventArgs as BtfCalledEventArgs,
|
|
||||||
TestDexForwarderBridgeContract,
|
|
||||||
TestDexForwarderBridgeEvents as TestEvents,
|
|
||||||
} from './wrappers';
|
|
||||||
|
|
||||||
const { ZERO_AMOUNT } = constants;
|
|
||||||
|
|
||||||
blockchainTests.resets('DexForwarderBridge unit tests', env => {
|
|
||||||
let testContract: TestDexForwarderBridgeContract;
|
|
||||||
let inputToken: string;
|
|
||||||
let outputToken: string;
|
|
||||||
const BRIDGE_SUCCESS = '0xdc1600f3';
|
|
||||||
const BRIDGE_FAILURE = '0xffffffff';
|
|
||||||
const BRIDGE_REVERT_ERROR = 'oopsie';
|
|
||||||
const NOT_AUTHORIZED_REVERT = 'DexForwarderBridge/SENDER_NOT_AUTHORIZED';
|
|
||||||
const DEFAULTS = {
|
|
||||||
toAddress: randomAddress(),
|
|
||||||
};
|
|
||||||
|
|
||||||
before(async () => {
|
|
||||||
testContract = await TestDexForwarderBridgeContract.deployFrom0xArtifactAsync(
|
|
||||||
artifacts.TestDexForwarderBridge,
|
|
||||||
env.provider,
|
|
||||||
env.txDefaults,
|
|
||||||
artifacts,
|
|
||||||
);
|
|
||||||
// Create test tokens.
|
|
||||||
[inputToken, outputToken] = [
|
|
||||||
await callAndTransactAsync(testContract.createToken()),
|
|
||||||
await callAndTransactAsync(testContract.createToken()),
|
|
||||||
];
|
|
||||||
await callAndTransactAsync(testContract.setAuthorized(env.txDefaults.from as string));
|
|
||||||
});
|
|
||||||
|
|
||||||
async function callAndTransactAsync<TResult>(fnCall: ContractTxFunctionObj<TResult>): Promise<TResult> {
|
|
||||||
const result = await fnCall.callAsync();
|
|
||||||
await fnCall.awaitTransactionSuccessAsync({}, { shouldValidate: false });
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getRandomBridgeCall(
|
|
||||||
bridgeAddress: string,
|
|
||||||
fields: Partial<DexForwarderBridgeCall> = {},
|
|
||||||
): DexForwarderBridgeCall {
|
|
||||||
return {
|
|
||||||
target: bridgeAddress,
|
|
||||||
inputTokenAmount: getRandomInteger(1, '100e18'),
|
|
||||||
outputTokenAmount: getRandomInteger(1, '100e18'),
|
|
||||||
bridgeData: hexUtils.leftPad(inputToken),
|
|
||||||
...fields,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('bridgeTransferFrom()', () => {
|
|
||||||
let goodBridgeCalls: DexForwarderBridgeCall[];
|
|
||||||
let revertingBridgeCall: DexForwarderBridgeCall;
|
|
||||||
let failingBridgeCall: DexForwarderBridgeCall;
|
|
||||||
let allBridgeCalls: DexForwarderBridgeCall[];
|
|
||||||
let totalFillableOutputAmount: BigNumber;
|
|
||||||
let totalFillableInputAmount: BigNumber;
|
|
||||||
let recipientOutputBalance: BigNumber;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
goodBridgeCalls = [];
|
|
||||||
for (let i = 0; i < 4; ++i) {
|
|
||||||
goodBridgeCalls.push(await createBridgeCallAsync({ returnCode: BRIDGE_SUCCESS }));
|
|
||||||
}
|
|
||||||
revertingBridgeCall = await createBridgeCallAsync({ revertError: BRIDGE_REVERT_ERROR });
|
|
||||||
failingBridgeCall = await createBridgeCallAsync({ returnCode: BRIDGE_FAILURE });
|
|
||||||
allBridgeCalls = _.shuffle([failingBridgeCall, revertingBridgeCall, ...goodBridgeCalls]);
|
|
||||||
|
|
||||||
totalFillableInputAmount = BigNumber.sum(...goodBridgeCalls.map(c => c.inputTokenAmount));
|
|
||||||
totalFillableOutputAmount = BigNumber.sum(...goodBridgeCalls.map(c => c.outputTokenAmount));
|
|
||||||
|
|
||||||
// Grant the taker some output tokens.
|
|
||||||
await testContract.setTokenBalance(
|
|
||||||
outputToken,
|
|
||||||
DEFAULTS.toAddress,
|
|
||||||
(recipientOutputBalance = getRandomInteger(1, '100e18')),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
async function setForwarderInputBalanceAsync(amount: BigNumber): Promise<void> {
|
|
||||||
await testContract
|
|
||||||
.setTokenBalance(inputToken, testContract.address, amount)
|
|
||||||
.awaitTransactionSuccessAsync({}, { shouldValidate: false });
|
|
||||||
}
|
|
||||||
|
|
||||||
async function createBridgeCallAsync(
|
|
||||||
opts: Partial<{
|
|
||||||
returnCode: string;
|
|
||||||
revertError: string;
|
|
||||||
callFields: Partial<DexForwarderBridgeCall>;
|
|
||||||
outputFillAmount: BigNumber;
|
|
||||||
}>,
|
|
||||||
): Promise<DexForwarderBridgeCall> {
|
|
||||||
const { returnCode, revertError, callFields, outputFillAmount } = {
|
|
||||||
returnCode: BRIDGE_SUCCESS,
|
|
||||||
revertError: '',
|
|
||||||
...opts,
|
|
||||||
};
|
|
||||||
const bridge = await callAndTransactAsync(testContract.createBridge(returnCode, revertError));
|
|
||||||
const call = getRandomBridgeCall(bridge, callFields);
|
|
||||||
await testContract
|
|
||||||
.setBridgeTransferAmount(call.target, outputFillAmount || call.outputTokenAmount)
|
|
||||||
.awaitTransactionSuccessAsync({}, { shouldValidate: false });
|
|
||||||
return call;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function callBridgeTransferFromAsync(opts: {
|
|
||||||
bridgeData: string;
|
|
||||||
sellAmount?: BigNumber;
|
|
||||||
buyAmount?: BigNumber;
|
|
||||||
}): Promise<DecodedLogs> {
|
|
||||||
// Fund the forwarder with input tokens to sell.
|
|
||||||
await setForwarderInputBalanceAsync(opts.sellAmount || totalFillableInputAmount);
|
|
||||||
const call = testContract.bridgeTransferFrom(
|
|
||||||
outputToken,
|
|
||||||
testContract.address,
|
|
||||||
DEFAULTS.toAddress,
|
|
||||||
opts.buyAmount || totalFillableOutputAmount,
|
|
||||||
opts.bridgeData,
|
|
||||||
);
|
|
||||||
const returnCode = await call.callAsync();
|
|
||||||
if (returnCode !== BRIDGE_SUCCESS) {
|
|
||||||
throw new Error('Expected BRIDGE_SUCCESS');
|
|
||||||
}
|
|
||||||
const receipt = await call.awaitTransactionSuccessAsync({}, { shouldValidate: false });
|
|
||||||
// tslint:disable-next-line: no-unnecessary-type-assertion
|
|
||||||
return receipt.logs as DecodedLogs;
|
|
||||||
}
|
|
||||||
|
|
||||||
it('succeeds with no bridge calls and no input balance', async () => {
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls: [],
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({ bridgeData, sellAmount: ZERO_AMOUNT });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('succeeds with bridge calls and no input balance', async () => {
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls: allBridgeCalls,
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({ bridgeData, sellAmount: ZERO_AMOUNT });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('succeeds with no bridge calls and an input balance', async () => {
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls: [],
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({
|
|
||||||
bridgeData,
|
|
||||||
sellAmount: new BigNumber(1),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('succeeds if entire input token balance is not consumed', async () => {
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls: allBridgeCalls,
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({
|
|
||||||
bridgeData,
|
|
||||||
sellAmount: totalFillableInputAmount.plus(1),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('fails if not authorized', async () => {
|
|
||||||
const calls = goodBridgeCalls.slice(0, 1);
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
await callAndTransactAsync(testContract.setAuthorized(NULL_ADDRESS));
|
|
||||||
return expect(callBridgeTransferFromAsync({ bridgeData, sellAmount: new BigNumber(1) })).to.revertWith(
|
|
||||||
NOT_AUTHORIZED_REVERT,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('succeeds with one bridge call', async () => {
|
|
||||||
const calls = goodBridgeCalls.slice(0, 1);
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({ bridgeData, sellAmount: calls[0].inputTokenAmount });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('succeeds with many bridge calls', async () => {
|
|
||||||
const calls = goodBridgeCalls;
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('swallows a failing bridge call', async () => {
|
|
||||||
const calls = _.shuffle([...goodBridgeCalls, failingBridgeCall]);
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('consumes input tokens for output tokens', async () => {
|
|
||||||
const calls = allBridgeCalls;
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
const currentBridgeInputBalance = await testContract
|
|
||||||
.balanceOf(inputToken, testContract.address)
|
|
||||||
.callAsync();
|
|
||||||
expect(currentBridgeInputBalance).to.bignumber.eq(0);
|
|
||||||
const currentRecipientOutputBalance = await testContract
|
|
||||||
.balanceOf(outputToken, DEFAULTS.toAddress)
|
|
||||||
.callAsync();
|
|
||||||
expect(currentRecipientOutputBalance).to.bignumber.eq(totalFillableOutputAmount);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("transfers only up to each call's input amount to each bridge", async () => {
|
|
||||||
const calls = goodBridgeCalls;
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
const logs = await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
|
|
||||||
for (const [call, btf] of shortZip(goodBridgeCalls, btfs)) {
|
|
||||||
expect(btf.inputTokenBalance).to.bignumber.eq(call.inputTokenAmount);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('transfers only up to outstanding sell amount to each bridge', async () => {
|
|
||||||
// Prepend an extra bridge call.
|
|
||||||
const calls = [
|
|
||||||
await createBridgeCallAsync({
|
|
||||||
callFields: {
|
|
||||||
inputTokenAmount: new BigNumber(1),
|
|
||||||
outputTokenAmount: new BigNumber(1),
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
...goodBridgeCalls,
|
|
||||||
];
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
const logs = await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
|
|
||||||
expect(btfs).to.be.length(goodBridgeCalls.length + 1);
|
|
||||||
// The last call will receive 1 less token.
|
|
||||||
const lastCall = calls.slice(-1)[0];
|
|
||||||
const lastBtf = btfs.slice(-1)[0];
|
|
||||||
expect(lastBtf.inputTokenBalance).to.bignumber.eq(lastCall.inputTokenAmount.minus(1));
|
|
||||||
});
|
|
||||||
|
|
||||||
it('recoups funds from a bridge that fails', async () => {
|
|
||||||
// Prepend a call that will take the whole input amount but will
|
|
||||||
// fail.
|
|
||||||
const badCall = await createBridgeCallAsync({
|
|
||||||
callFields: { inputTokenAmount: totalFillableInputAmount },
|
|
||||||
returnCode: BRIDGE_FAILURE,
|
|
||||||
});
|
|
||||||
const calls = [badCall, ...goodBridgeCalls];
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
const logs = await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
|
|
||||||
expect(btfs).to.be.length(goodBridgeCalls.length);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('recoups funds from a bridge that reverts', async () => {
|
|
||||||
// Prepend a call that will take the whole input amount but will
|
|
||||||
// revert.
|
|
||||||
const badCall = await createBridgeCallAsync({
|
|
||||||
callFields: { inputTokenAmount: totalFillableInputAmount },
|
|
||||||
revertError: BRIDGE_REVERT_ERROR,
|
|
||||||
});
|
|
||||||
const calls = [badCall, ...goodBridgeCalls];
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
const logs = await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
|
|
||||||
expect(btfs).to.be.length(goodBridgeCalls.length);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('recoups funds from a bridge that under-pays', async () => {
|
|
||||||
// Prepend a call that will take the whole input amount but will
|
|
||||||
// underpay the output amount..
|
|
||||||
const badCall = await createBridgeCallAsync({
|
|
||||||
callFields: {
|
|
||||||
inputTokenAmount: totalFillableInputAmount,
|
|
||||||
outputTokenAmount: new BigNumber(2),
|
|
||||||
},
|
|
||||||
outputFillAmount: new BigNumber(1),
|
|
||||||
});
|
|
||||||
const calls = [badCall, ...goodBridgeCalls];
|
|
||||||
const bridgeData = dexForwarderBridgeDataEncoder.encode({
|
|
||||||
inputToken,
|
|
||||||
calls,
|
|
||||||
});
|
|
||||||
const logs = await callBridgeTransferFromAsync({ bridgeData });
|
|
||||||
const btfs = filterLogsToArguments<BtfCalledEventArgs>(logs, TestEvents.BridgeTransferFromCalled);
|
|
||||||
expect(btfs).to.be.length(goodBridgeCalls.length);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('executeBridgeCall()', () => {
|
|
||||||
it('cannot be called externally', async () => {
|
|
||||||
return expect(
|
|
||||||
testContract
|
|
||||||
.executeBridgeCall(
|
|
||||||
randomAddress(),
|
|
||||||
randomAddress(),
|
|
||||||
randomAddress(),
|
|
||||||
randomAddress(),
|
|
||||||
new BigNumber(1),
|
|
||||||
new BigNumber(1),
|
|
||||||
constants.NULL_BYTES,
|
|
||||||
)
|
|
||||||
.callAsync(),
|
|
||||||
).to.revertWith('DexForwarderBridge/ONLY_SELF');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
@@ -168,7 +168,7 @@ describe('StaticCallProxy', () => {
|
|||||||
it('should revert if the hash of the output is different than expected expected', async () => {
|
it('should revert if the hash of the output is different than expected expected', async () => {
|
||||||
const staticCallData = staticCallTarget.isOddNumber(new BigNumber(0)).getABIEncodedTransactionData();
|
const staticCallData = staticCallTarget.isOddNumber(new BigNumber(0)).getABIEncodedTransactionData();
|
||||||
const trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
|
const trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
|
||||||
const expectedResultHash = ethUtil.bufferToHex(ethUtil.sha3(trueAsBuffer));
|
const expectedResultHash = ethUtil.bufferToHex(ethUtil.keccak256(trueAsBuffer));
|
||||||
const assetData = assetDataInterface
|
const assetData = assetDataInterface
|
||||||
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
|
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
|
||||||
.getABIEncodedTransactionData();
|
.getABIEncodedTransactionData();
|
||||||
@@ -199,7 +199,7 @@ describe('StaticCallProxy', () => {
|
|||||||
it('should be successful if a function call with one static input returns the correct value', async () => {
|
it('should be successful if a function call with one static input returns the correct value', async () => {
|
||||||
const staticCallData = staticCallTarget.isOddNumber(new BigNumber(1)).getABIEncodedTransactionData();
|
const staticCallData = staticCallTarget.isOddNumber(new BigNumber(1)).getABIEncodedTransactionData();
|
||||||
const trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
|
const trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
|
||||||
const expectedResultHash = ethUtil.bufferToHex(ethUtil.sha3(trueAsBuffer));
|
const expectedResultHash = ethUtil.bufferToHex(ethUtil.keccak256(trueAsBuffer));
|
||||||
const assetData = assetDataInterface
|
const assetData = assetDataInterface
|
||||||
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
|
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
|
||||||
.getABIEncodedTransactionData();
|
.getABIEncodedTransactionData();
|
||||||
@@ -232,7 +232,7 @@ describe('StaticCallProxy', () => {
|
|||||||
const offset = '0000000000000000000000000000000000000000000000000000000000000020';
|
const offset = '0000000000000000000000000000000000000000000000000000000000000020';
|
||||||
const encodedExpectedResultWithOffset = `0x${offset}${abiEncoder.encode(expectedResults).slice(2)}`;
|
const encodedExpectedResultWithOffset = `0x${offset}${abiEncoder.encode(expectedResults).slice(2)}`;
|
||||||
const expectedResultHash = ethUtil.bufferToHex(
|
const expectedResultHash = ethUtil.bufferToHex(
|
||||||
ethUtil.sha3(ethUtil.toBuffer(encodedExpectedResultWithOffset)),
|
ethUtil.keccak256(ethUtil.toBuffer(encodedExpectedResultWithOffset)),
|
||||||
);
|
);
|
||||||
const assetData = assetDataInterface
|
const assetData = assetDataInterface
|
||||||
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
|
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "1.1.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "1.1.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "1.1.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "1.1.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "1.1.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "1.1.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "1.1.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "1.1.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "1.1.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "1.1.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "1.1.27",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "1.1.26",
|
"version": "1.1.26",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.1.37 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.36 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.35 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.34 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.33 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.32 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.31 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.30 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.29 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.28 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.27 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.1.26 - _March 17, 2021_
|
## v1.1.26 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-broker",
|
"name": "@0x/contracts-broker",
|
||||||
"version": "1.1.26",
|
"version": "1.1.37",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -51,20 +51,20 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-erc721": "^3.1.26",
|
"@0x/contracts-erc721": "^3.1.37",
|
||||||
"@0x/contracts-exchange": "^3.2.27",
|
"@0x/contracts-exchange": "^3.2.38",
|
||||||
"@0x/contracts-exchange-libs": "^4.3.26",
|
"@0x/contracts-exchange-libs": "^4.3.37",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -81,14 +81,14 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"ethereum-types": "^3.4.0"
|
"ethereum-types": "^3.5.0"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -7,7 +7,10 @@ export interface GodsUnchainedProperties {
|
|||||||
quality: BigNumber | number;
|
quality: BigNumber | number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const propertyDataEncoder = AbiEncoder.create([{ name: 'proto', type: 'uint16' }, { name: 'quality', type: 'uint8' }]);
|
const propertyDataEncoder = AbiEncoder.create([
|
||||||
|
{ name: 'proto', type: 'uint16' },
|
||||||
|
{ name: 'quality', type: 'uint8' },
|
||||||
|
]);
|
||||||
const brokerDataEncoder = AbiEncoder.create([
|
const brokerDataEncoder = AbiEncoder.create([
|
||||||
{ name: 'godsUnchainedAddress', type: 'address' },
|
{ name: 'godsUnchainedAddress', type: 'address' },
|
||||||
{ name: 'validatorAddress', type: 'address' },
|
{ name: 'validatorAddress', type: 'address' },
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "3.1.38",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "3.1.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "3.1.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "3.1.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "3.1.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "3.1.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "3.1.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "3.1.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "3.1.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "3.1.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "3.1.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "3.1.27",
|
"version": "3.1.27",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.1.38 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.37 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.36 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.35 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.34 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.33 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.32 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.31 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.30 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.29 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.28 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.1.27 - _March 17, 2021_
|
## v3.1.27 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-coordinator",
|
"name": "@0x/contracts-coordinator",
|
||||||
"version": "3.1.27",
|
"version": "3.1.38",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -52,17 +52,17 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-dev-utils": "^1.3.25",
|
"@0x/contracts-dev-utils": "^1.3.36",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -79,20 +79,20 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/assert": "^3.0.21",
|
"@0x/assert": "^3.0.27",
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contract-addresses": "^5.11.0",
|
"@0x/contract-addresses": "^6.6.0",
|
||||||
"@0x/contracts-exchange": "^3.2.27",
|
"@0x/contracts-exchange": "^3.2.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/json-schemas": "^5.4.1",
|
"@0x/json-schemas": "^6.1.3",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"http-status-codes": "^1.3.2"
|
"http-status-codes": "^1.3.2"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
|
@@ -1,8 +1,4 @@
|
|||||||
import { assert as sharedAssert } from '@0x/assert';
|
import { assert as sharedAssert } from '@0x/assert';
|
||||||
// HACK: We need those two unused imports because they're actually used by sharedAssert which gets injected here
|
|
||||||
import { Schema } from '@0x/json-schemas'; // tslint:disable-line:no-unused-variable
|
|
||||||
import { Order } from '@0x/types'; // tslint:disable-line:no-unused-variable
|
|
||||||
import { BigNumber } from '@0x/utils'; // tslint:disable-line:no-unused-variable
|
|
||||||
import { Web3Wrapper } from '@0x/web3-wrapper';
|
import { Web3Wrapper } from '@0x/web3-wrapper';
|
||||||
|
|
||||||
export const assert = {
|
export const assert = {
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "1.3.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "1.3.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "1.3.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "1.3.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "1.3.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "1.3.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "1.3.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "1.3.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "1.3.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "1.3.27",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "1.3.26",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "1.3.25",
|
"version": "1.3.25",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.3.36 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.35 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.34 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.33 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.32 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.31 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.30 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.29 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.28 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.27 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.26 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.3.25 - _March 17, 2021_
|
## v1.3.25 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-dev-utils",
|
"name": "@0x/contracts-dev-utils",
|
||||||
"version": "1.3.25",
|
"version": "1.3.36",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -41,18 +41,18 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/dev-utils",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/dev-utils",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/assert": "^3.0.21",
|
"@0x/assert": "^3.0.27",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"ethers": "~4.0.4",
|
"ethers": "~4.0.4",
|
||||||
"npm-run-all": "^4.1.2",
|
"npm-run-all": "^4.1.2",
|
||||||
"shx": "^0.2.2",
|
"shx": "^0.2.2",
|
||||||
@@ -60,10 +60,10 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@types/node": "12.12.54"
|
"@types/node": "12.12.54"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "2.1.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "2.1.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "2.1.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "2.1.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "2.1.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "2.1.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "2.1.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "2.1.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "2.1.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "2.1.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "2.1.27",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "2.1.26",
|
"version": "2.1.26",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.1.37 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.36 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.35 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.34 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.33 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.32 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.31 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.30 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.29 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.28 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.1.27 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v2.1.26 - _March 17, 2021_
|
## v2.1.26 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-erc1155",
|
"name": "@0x/contracts-erc1155",
|
||||||
"version": "2.1.26",
|
"version": "2.1.37",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -52,15 +52,15 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.0",
|
||||||
"npm-run-all": "^4.1.2",
|
"npm-run-all": "^4.1.2",
|
||||||
@@ -77,13 +77,13 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"lodash": "^4.17.11"
|
"lodash": "^4.17.11"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
|
@@ -1,4 +1,104 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "3.3.16",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "3.3.15",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Add ethers as a dependency",
|
||||||
|
"pr": 305
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1628665757
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "3.3.14",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "3.3.13",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "3.3.12",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "3.3.11",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "3.3.10",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "3.3.9",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "3.3.8",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "3.3.7",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "3.3.6",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "3.3.5",
|
"version": "3.3.5",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.3.16 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.15 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Add ethers as a dependency (#305)
|
||||||
|
|
||||||
|
## v3.3.14 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.13 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.12 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.11 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.10 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.9 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.8 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.7 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.3.6 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.3.5 - _March 17, 2021_
|
## v3.3.5 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -28,7 +28,7 @@ library LibERC20TokenV06 {
|
|||||||
bytes constant private DECIMALS_CALL_DATA = hex"313ce567";
|
bytes constant private DECIMALS_CALL_DATA = hex"313ce567";
|
||||||
|
|
||||||
/// @dev Calls `IERC20TokenV06(token).approve()`.
|
/// @dev Calls `IERC20TokenV06(token).approve()`.
|
||||||
/// Reverts if the result fails `isSuccessfulResult()` or the call reverts.
|
/// Reverts if the return data is invalid or the call reverts.
|
||||||
/// @param token The address of the token contract.
|
/// @param token The address of the token contract.
|
||||||
/// @param spender The address that receives an allowance.
|
/// @param spender The address that receives an allowance.
|
||||||
/// @param allowance The allowance to set.
|
/// @param allowance The allowance to set.
|
||||||
@@ -49,7 +49,7 @@ library LibERC20TokenV06 {
|
|||||||
|
|
||||||
/// @dev Calls `IERC20TokenV06(token).approve()` and sets the allowance to the
|
/// @dev Calls `IERC20TokenV06(token).approve()` and sets the allowance to the
|
||||||
/// maximum if the current approval is not already >= an amount.
|
/// maximum if the current approval is not already >= an amount.
|
||||||
/// Reverts if the result fails `isSuccessfulResult()` or the call reverts.
|
/// Reverts if the return data is invalid or the call reverts.
|
||||||
/// @param token The address of the token contract.
|
/// @param token The address of the token contract.
|
||||||
/// @param spender The address that receives an allowance.
|
/// @param spender The address that receives an allowance.
|
||||||
/// @param amount The minimum allowance needed.
|
/// @param amount The minimum allowance needed.
|
||||||
@@ -66,7 +66,7 @@ library LibERC20TokenV06 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Calls `IERC20TokenV06(token).transfer()`.
|
/// @dev Calls `IERC20TokenV06(token).transfer()`.
|
||||||
/// Reverts if the result fails `isSuccessfulResult()` or the call reverts.
|
/// Reverts if the return data is invalid or the call reverts.
|
||||||
/// @param token The address of the token contract.
|
/// @param token The address of the token contract.
|
||||||
/// @param to The address that receives the tokens
|
/// @param to The address that receives the tokens
|
||||||
/// @param amount Number of tokens to transfer.
|
/// @param amount Number of tokens to transfer.
|
||||||
@@ -86,7 +86,7 @@ library LibERC20TokenV06 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Calls `IERC20TokenV06(token).transferFrom()`.
|
/// @dev Calls `IERC20TokenV06(token).transferFrom()`.
|
||||||
/// Reverts if the result fails `isSuccessfulResult()` or the call reverts.
|
/// Reverts if the return data is invalid or the call reverts.
|
||||||
/// @param token The address of the token contract.
|
/// @param token The address of the token contract.
|
||||||
/// @param from The owner of the tokens.
|
/// @param from The owner of the tokens.
|
||||||
/// @param to The address that receives the tokens
|
/// @param to The address that receives the tokens
|
||||||
@@ -168,27 +168,6 @@ library LibERC20TokenV06 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Check if the data returned by a non-static call to an ERC20 token
|
|
||||||
/// is a successful result. Supported functions are `transfer()`,
|
|
||||||
/// `transferFrom()`, and `approve()`.
|
|
||||||
/// @param resultData The raw data returned by a non-static call to the ERC20 token.
|
|
||||||
/// @return isSuccessful Whether the result data indicates success.
|
|
||||||
function isSuccessfulResult(bytes memory resultData)
|
|
||||||
internal
|
|
||||||
pure
|
|
||||||
returns (bool isSuccessful)
|
|
||||||
{
|
|
||||||
if (resultData.length == 0) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (resultData.length >= 32) {
|
|
||||||
uint256 result = LibBytesV06.readUint256(resultData, 0);
|
|
||||||
if (result == 1) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Executes a call on address `target` with calldata `callData`
|
/// @dev Executes a call on address `target` with calldata `callData`
|
||||||
/// and asserts that either nothing was returned or a single boolean
|
/// and asserts that either nothing was returned or a single boolean
|
||||||
/// was returned equal to `true`.
|
/// was returned equal to `true`.
|
||||||
@@ -201,9 +180,31 @@ library LibERC20TokenV06 {
|
|||||||
private
|
private
|
||||||
{
|
{
|
||||||
(bool didSucceed, bytes memory resultData) = target.call(callData);
|
(bool didSucceed, bytes memory resultData) = target.call(callData);
|
||||||
if (didSucceed && isSuccessfulResult(resultData)) {
|
// Revert if the call reverted.
|
||||||
|
if (!didSucceed) {
|
||||||
|
LibRichErrorsV06.rrevert(resultData);
|
||||||
|
}
|
||||||
|
// If we get back 0 returndata, this may be a non-standard ERC-20 that
|
||||||
|
// does not return a boolean. Check that it at least contains code.
|
||||||
|
if (resultData.length == 0) {
|
||||||
|
uint256 size;
|
||||||
|
assembly { size := extcodesize(target) }
|
||||||
|
require(size > 0, "invalid token address, contains no code");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// If we get back at least 32 bytes, we know the target address
|
||||||
|
// contains code, and we assume it is a token that returned a boolean
|
||||||
|
// success value, which must be true.
|
||||||
|
if (resultData.length >= 32) {
|
||||||
|
uint256 result = LibBytesV06.readUint256(resultData, 0);
|
||||||
|
if (result == 1) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
LibRichErrorsV06.rrevert(resultData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If 0 < returndatasize < 32, the target is a contract, but not a
|
||||||
|
// valid token.
|
||||||
LibRichErrorsV06.rrevert(resultData);
|
LibRichErrorsV06.rrevert(resultData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-erc20",
|
"name": "@0x/contracts-erc20",
|
||||||
"version": "3.3.5",
|
"version": "3.3.16",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -51,18 +51,18 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.0",
|
||||||
@@ -79,10 +79,11 @@
|
|||||||
"solhint": "^1.4.1",
|
"solhint": "^1.4.1",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18"
|
"@0x/base-contract": "^6.4.0",
|
||||||
|
"ethers": "~4.0.4"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -39,8 +39,8 @@ describe('EtherToken', () => {
|
|||||||
artifacts.WETH9,
|
artifacts.WETH9,
|
||||||
provider,
|
provider,
|
||||||
{
|
{
|
||||||
gasPrice,
|
|
||||||
...txDefaults,
|
...txDefaults,
|
||||||
|
gasPrice,
|
||||||
},
|
},
|
||||||
artifacts,
|
artifacts,
|
||||||
);
|
);
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "3.1.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "3.1.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "3.1.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "3.1.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "3.1.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "3.1.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "3.1.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "3.1.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "3.1.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "3.1.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "3.1.27",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "3.1.26",
|
"version": "3.1.26",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.1.37 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.36 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.35 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.34 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.33 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.32 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.31 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.30 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.29 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.28 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.1.27 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.1.26 - _March 17, 2021_
|
## v3.1.26 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-erc721",
|
"name": "@0x/contracts-erc721",
|
||||||
"version": "3.1.26",
|
"version": "3.1.37",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -52,18 +52,18 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.0",
|
||||||
@@ -81,10 +81,10 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18"
|
"@0x/base-contract": "^6.4.0"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "4.2.38",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "4.2.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "4.2.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "4.2.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "4.2.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "4.2.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "4.2.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "4.2.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "4.2.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "4.2.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "4.2.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "4.2.27",
|
"version": "4.2.27",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v4.2.38 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.37 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.36 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.35 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.34 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.33 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.32 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.31 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.30 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.29 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.2.28 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v4.2.27 - _March 17, 2021_
|
## v4.2.27 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-exchange-forwarder",
|
"name": "@0x/contracts-exchange-forwarder",
|
||||||
"version": "4.2.27",
|
"version": "4.2.38",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -52,25 +52,25 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-dev-utils": "^1.3.25",
|
"@0x/contracts-dev-utils": "^1.3.36",
|
||||||
"@0x/contracts-erc1155": "^2.1.26",
|
"@0x/contracts-erc1155": "^2.1.37",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-erc721": "^3.1.26",
|
"@0x/contracts-erc721": "^3.1.37",
|
||||||
"@0x/contracts-exchange": "^3.2.27",
|
"@0x/contracts-exchange": "^3.2.38",
|
||||||
"@0x/contracts-exchange-libs": "^4.3.26",
|
"@0x/contracts-exchange-libs": "^4.3.37",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -87,12 +87,12 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"ethereum-types": "^3.4.0"
|
"ethereum-types": "^3.5.0"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "4.3.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "4.3.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "4.3.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "4.3.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "4.3.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "4.3.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "4.3.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "4.3.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "4.3.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "4.3.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "4.3.27",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "4.3.26",
|
"version": "4.3.26",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v4.3.37 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.36 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.35 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.34 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.33 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.32 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.31 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.30 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.29 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.28 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.3.27 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v4.3.26 - _March 17, 2021_
|
## v4.3.26 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-exchange-libs",
|
"name": "@0x/contracts-exchange-libs",
|
||||||
"version": "4.3.26",
|
"version": "4.3.37",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -52,14 +52,14 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/libs",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/libs",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/subproviders": "^6.4.1",
|
"@0x/subproviders": "^6.5.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^7.0.10",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.0",
|
||||||
@@ -77,17 +77,17 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"ethereum-types": "^3.4.0"
|
"ethereum-types": "^3.5.0"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "3.2.38",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "3.2.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "3.2.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "3.2.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "3.2.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "3.2.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "3.2.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "3.2.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "3.2.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "3.2.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "3.2.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "3.2.27",
|
"version": "3.2.27",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.2.38 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.37 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.36 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.35 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.34 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.33 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.32 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.31 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.30 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.29 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v3.2.28 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.2.27 - _March 17, 2021_
|
## v3.2.27 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-exchange",
|
"name": "@0x/contracts-exchange",
|
||||||
"version": "3.2.27",
|
"version": "3.2.38",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -52,21 +52,21 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-exchange-libs": "^4.3.26",
|
"@0x/contracts-exchange-libs": "^4.3.37",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-multisig": "^4.1.27",
|
"@0x/contracts-multisig": "^4.1.38",
|
||||||
"@0x/contracts-staking": "^2.0.34",
|
"@0x/contracts-staking": "^2.0.45",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -74,8 +74,8 @@
|
|||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^7.0.10",
|
||||||
"js-combinatorics": "^0.5.3",
|
"js-combinatorics": "^0.5.3",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.0",
|
||||||
@@ -85,16 +85,16 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contracts-dev-utils": "^1.3.25",
|
"@0x/contracts-dev-utils": "^1.3.36",
|
||||||
"@0x/contracts-erc1155": "^2.1.26",
|
"@0x/contracts-erc1155": "^2.1.37",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-erc721": "^3.1.26",
|
"@0x/contracts-erc721": "^3.1.37",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"lodash": "^4.17.11"
|
"lodash": "^4.17.11"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
|
@@ -13,7 +13,11 @@ export const exchangeDataEncoder = {
|
|||||||
.getABIEncodedTransactionData();
|
.getABIEncodedTransactionData();
|
||||||
} else if (constants.BATCH_FILL_FN_NAMES.indexOf(fnName) !== -1) {
|
} else if (constants.BATCH_FILL_FN_NAMES.indexOf(fnName) !== -1) {
|
||||||
data = (exchangeInstance as any)
|
data = (exchangeInstance as any)
|
||||||
[fnName](orders, orders.map(order => order.takerAssetAmount), orders.map(order => order.signature))
|
[fnName](
|
||||||
|
orders,
|
||||||
|
orders.map(order => order.takerAssetAmount),
|
||||||
|
orders.map(order => order.signature),
|
||||||
|
)
|
||||||
.getABIEncodedTransactionData();
|
.getABIEncodedTransactionData();
|
||||||
} else if (constants.MARKET_FILL_FN_NAMES.indexOf(fnName) !== -1) {
|
} else if (constants.MARKET_FILL_FN_NAMES.indexOf(fnName) !== -1) {
|
||||||
const fillAsset = /Buy/.test(fnName) ? 'makerAssetAmount' : 'takerAssetAmount';
|
const fillAsset = /Buy/.test(fnName) ? 'makerAssetAmount' : 'takerAssetAmount';
|
||||||
|
@@ -39,7 +39,10 @@ blockchainTests.resets('Reentrancy Tests', env => {
|
|||||||
// Handle tuples.
|
// Handle tuples.
|
||||||
if (item.type === 'tuple') {
|
if (item.type === 'tuple') {
|
||||||
const tuple = item as TupleDataItem;
|
const tuple = item as TupleDataItem;
|
||||||
return _.zipObject(tuple.components.map(c => c.name), tuple.components.map(createFunctionInputs));
|
return _.zipObject(
|
||||||
|
tuple.components.map(c => c.name),
|
||||||
|
tuple.components.map(createFunctionInputs),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
// Handle strings.
|
// Handle strings.
|
||||||
if (item.type === 'string') {
|
if (item.type === 'string') {
|
||||||
|
@@ -86,7 +86,7 @@ blockchainTests.resets('MixinSignatureValidator', env => {
|
|||||||
|
|
||||||
const SIGNATURE_LENGTH = 65;
|
const SIGNATURE_LENGTH = 65;
|
||||||
const generateRandomSignature = (): string => hexUtils.random(SIGNATURE_LENGTH);
|
const generateRandomSignature = (): string => hexUtils.random(SIGNATURE_LENGTH);
|
||||||
const hashBytes = (bytesHex: string): string => ethUtil.bufferToHex(ethUtil.sha3(ethUtil.toBuffer(bytesHex)));
|
const hashBytes = (bytesHex: string): string => hexUtils.hash(bytesHex);
|
||||||
const signDataHex = (dataHex: string, privateKey: Buffer): string => {
|
const signDataHex = (dataHex: string, privateKey: Buffer): string => {
|
||||||
const ecSignature = ethUtil.ecsign(ethUtil.toBuffer(dataHex), privateKey);
|
const ecSignature = ethUtil.ecsign(ethUtil.toBuffer(dataHex), privateKey);
|
||||||
return hexUtils.concat(ecSignature.v, ecSignature.r, ecSignature.s);
|
return hexUtils.concat(ecSignature.v, ecSignature.r, ecSignature.s);
|
||||||
|
@@ -12,12 +12,12 @@ export abstract class AbstractBalanceAndProxyAllowanceFetcher {
|
|||||||
* @param userAddress Ethereum address for which to fetch the balance
|
* @param userAddress Ethereum address for which to fetch the balance
|
||||||
* @return Balance amount in base units
|
* @return Balance amount in base units
|
||||||
*/
|
*/
|
||||||
public abstract async getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
public abstract getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
||||||
/**
|
/**
|
||||||
* Get the 0x asset proxy allowance of assetData for userAddress
|
* Get the 0x asset proxy allowance of assetData for userAddress
|
||||||
* @param assetData AssetData for which to fetch the allowance
|
* @param assetData AssetData for which to fetch the allowance
|
||||||
* @param userAddress Ethereum address for which to fetch the allowance
|
* @param userAddress Ethereum address for which to fetch the allowance
|
||||||
* @return Allowance amount in base units
|
* @return Allowance amount in base units
|
||||||
*/
|
*/
|
||||||
public abstract async getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
public abstract getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
import { BigNumber } from '@0x/utils';
|
import { BigNumber } from '@0x/utils';
|
||||||
|
|
||||||
export abstract class AbstractBalanceAndProxyAllowanceLazyStore {
|
export abstract class AbstractBalanceAndProxyAllowanceLazyStore {
|
||||||
public abstract async getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
public abstract getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
||||||
public abstract async getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
public abstract getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
|
||||||
public abstract setBalance(assetData: string, userAddress: string, balance: BigNumber): void;
|
public abstract setBalance(assetData: string, userAddress: string, balance: BigNumber): void;
|
||||||
public abstract deleteBalance(assetData: string, userAddress: string): void;
|
public abstract deleteBalance(assetData: string, userAddress: string): void;
|
||||||
public abstract setProxyAllowance(assetData: string, userAddress: string, proxyAllowance: BigNumber): void;
|
public abstract setProxyAllowance(assetData: string, userAddress: string, proxyAllowance: BigNumber): void;
|
||||||
|
@@ -11,5 +11,5 @@ export abstract class AbstractOrderFilledCancelledFetcher {
|
|||||||
* @param orderHash OrderHash of order we are interested in
|
* @param orderHash OrderHash of order we are interested in
|
||||||
* @return FilledTakerAmount
|
* @return FilledTakerAmount
|
||||||
*/
|
*/
|
||||||
public abstract async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
|
public abstract getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { BigNumber } from '@0x/utils';
|
import { BigNumber } from '@0x/utils';
|
||||||
|
|
||||||
export abstract class AbstractOrderFilledCancelledLazyStore {
|
export abstract class AbstractOrderFilledCancelledLazyStore {
|
||||||
public abstract async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
|
public abstract getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
|
||||||
public abstract setFilledTakerAmount(orderHash: string, balance: BigNumber): void;
|
public abstract setFilledTakerAmount(orderHash: string, balance: BigNumber): void;
|
||||||
public abstract deleteFilledTakerAmount(orderHash: string): void;
|
public abstract deleteFilledTakerAmount(orderHash: string): void;
|
||||||
public abstract setIsCancelled(orderHash: string, isCancelled: boolean): void;
|
public abstract setIsCancelled(orderHash: string, isCancelled: boolean): void;
|
||||||
|
@@ -109,7 +109,11 @@ export class ExchangeWrapper {
|
|||||||
opts: { makerAssetFillAmount: BigNumber; gas?: number; gasPrice?: BigNumber },
|
opts: { makerAssetFillAmount: BigNumber; gas?: number; gasPrice?: BigNumber },
|
||||||
): Promise<TransactionReceiptWithDecodedLogs> {
|
): Promise<TransactionReceiptWithDecodedLogs> {
|
||||||
return this.exchangeContract
|
return this.exchangeContract
|
||||||
.marketBuyOrdersNoThrow(orders, opts.makerAssetFillAmount, orders.map(signedOrder => signedOrder.signature))
|
.marketBuyOrdersNoThrow(
|
||||||
|
orders,
|
||||||
|
opts.makerAssetFillAmount,
|
||||||
|
orders.map(signedOrder => signedOrder.signature),
|
||||||
|
)
|
||||||
.awaitTransactionSuccessAsync({ from, gas: opts.gas });
|
.awaitTransactionSuccessAsync({ from, gas: opts.gas });
|
||||||
}
|
}
|
||||||
public async marketSellOrdersFillOrKillAsync(
|
public async marketSellOrdersFillOrKillAsync(
|
||||||
|
@@ -18,6 +18,7 @@ import {
|
|||||||
IsolatedExchangeFillEventArgs as FillEventArgs,
|
IsolatedExchangeFillEventArgs as FillEventArgs,
|
||||||
} from '../wrappers';
|
} from '../wrappers';
|
||||||
|
|
||||||
|
export { Order } from '@0x/types';
|
||||||
export interface AssetBalances {
|
export interface AssetBalances {
|
||||||
[assetData: string]: { [address: string]: BigNumber };
|
[assetData: string]: { [address: string]: BigNumber };
|
||||||
}
|
}
|
||||||
@@ -27,7 +28,6 @@ export interface IsolatedExchangeEvents {
|
|||||||
transferFromCalls: DispatchTransferFromCallArgs[];
|
transferFromCalls: DispatchTransferFromCallArgs[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Order = Order;
|
|
||||||
export type Numberish = string | number | BigNumber;
|
export type Numberish = string | number | BigNumber;
|
||||||
|
|
||||||
export const DEFAULT_GOOD_SIGNATURE = createGoodSignature();
|
export const DEFAULT_GOOD_SIGNATURE = createGoodSignature();
|
||||||
|
@@ -12,7 +12,6 @@ import { ReferenceFunctions as UtilReferenceFunctions, SafeMathRevertErrors } fr
|
|||||||
import { FillResults, Order } from '@0x/types';
|
import { FillResults, Order } from '@0x/types';
|
||||||
import { AnyRevertError, BigNumber, ExchangeRevertErrors, hexUtils, StringRevertError } from '@0x/utils';
|
import { AnyRevertError, BigNumber, ExchangeRevertErrors, hexUtils, StringRevertError } from '@0x/utils';
|
||||||
import { LogEntry, LogWithDecodedArgs } from 'ethereum-types';
|
import { LogEntry, LogWithDecodedArgs } from 'ethereum-types';
|
||||||
import * as ethjs from 'ethereumjs-util';
|
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
import { artifacts } from './artifacts';
|
import { artifacts } from './artifacts';
|
||||||
@@ -104,7 +103,7 @@ blockchainTests('Exchange wrapper functions unit tests.', env => {
|
|||||||
// Creates a deterministic order signature, even though no signature validation
|
// Creates a deterministic order signature, even though no signature validation
|
||||||
// actually occurs in the test contract.
|
// actually occurs in the test contract.
|
||||||
function createOrderSignature(order: Order): string {
|
function createOrderSignature(order: Order): string {
|
||||||
return ethjs.bufferToHex(ethjs.sha3(ethjs.toBuffer(orderHashUtils.getOrderHashHex(order))));
|
return hexUtils.hash(orderHashUtils.getOrderHashHex(order));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Asserts that `_fillOrder()` was called in the same order and with the same
|
// Asserts that `_fillOrder()` was called in the same order and with the same
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "6.2.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "6.2.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "6.2.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "6.2.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "6.2.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "6.2.27",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "6.2.26",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "6.2.25",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "6.2.24",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "6.2.23",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "6.2.22",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "6.2.21",
|
"version": "6.2.21",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v6.2.32 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.31 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.30 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.29 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.28 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.27 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.26 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.25 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.24 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.23 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v6.2.22 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v6.2.21 - _March 17, 2021_
|
## v6.2.21 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-extensions",
|
"name": "@0x/contracts-extensions",
|
||||||
"version": "6.2.21",
|
"version": "6.2.32",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -52,23 +52,23 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-dev-utils": "^1.3.25",
|
"@0x/contracts-dev-utils": "^1.3.36",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-erc721": "^3.1.26",
|
"@0x/contracts-erc721": "^3.1.37",
|
||||||
"@0x/contracts-exchange": "^3.2.27",
|
"@0x/contracts-exchange": "^3.2.38",
|
||||||
"@0x/contracts-exchange-libs": "^4.3.26",
|
"@0x/contracts-exchange-libs": "^4.3.37",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereumjs-abi": "0.6.5",
|
"ethereumjs-abi": "0.6.5",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^7.0.10",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.0",
|
||||||
@@ -87,13 +87,13 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"ethereum-types": "^3.4.0"
|
"ethereum-types": "^3.5.0"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-integrations",
|
"name": "@0x/contracts-integrations",
|
||||||
"version": "2.7.29",
|
"version": "2.7.64",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
@@ -52,25 +52,25 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contract-addresses": "^5.11.0",
|
"@0x/contract-addresses": "^6.6.0",
|
||||||
"@0x/contract-wrappers": "^13.14.0",
|
"@0x/contract-wrappers": "^13.17.4",
|
||||||
"@0x/contracts-broker": "^1.1.26",
|
"@0x/contracts-broker": "^1.1.37",
|
||||||
"@0x/contracts-coordinator": "^3.1.27",
|
"@0x/contracts-coordinator": "^3.1.38",
|
||||||
"@0x/contracts-dev-utils": "^1.3.25",
|
"@0x/contracts-dev-utils": "^1.3.36",
|
||||||
"@0x/contracts-exchange-forwarder": "^4.2.27",
|
"@0x/contracts-exchange-forwarder": "^4.2.38",
|
||||||
"@0x/contracts-exchange-libs": "^4.3.26",
|
"@0x/contracts-exchange-libs": "^4.3.37",
|
||||||
"@0x/contracts-extensions": "^6.2.21",
|
"@0x/contracts-extensions": "^6.2.32",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/coordinator-server": "^1.0.5",
|
"@0x/coordinator-server": "^1.0.5",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/migrations": "^7.0.1",
|
"@0x/migrations": "^8.1.1",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/protocol-utils": "^1.3.1",
|
"@0x/protocol-utils": "^1.8.2",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@azure/core-asynciterator-polyfill": "^1.0.0",
|
"@azure/core-asynciterator-polyfill": "^1.0.0",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
@@ -90,26 +90,26 @@
|
|||||||
"solhint": "^1.4.1",
|
"solhint": "^1.4.1",
|
||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/asset-swapper": "^6.3.0",
|
"@0x/asset-swapper": "^16.25.0",
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-erc1155": "^2.1.26",
|
"@0x/contracts-erc1155": "^2.1.37",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-erc721": "^3.1.26",
|
"@0x/contracts-erc721": "^3.1.37",
|
||||||
"@0x/contracts-exchange": "^3.2.27",
|
"@0x/contracts-exchange": "^3.2.38",
|
||||||
"@0x/contracts-multisig": "^4.1.27",
|
"@0x/contracts-multisig": "^4.1.38",
|
||||||
"@0x/contracts-staking": "^2.0.34",
|
"@0x/contracts-staking": "^2.0.45",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-zero-ex": "^0.20.0",
|
"@0x/contracts-zero-ex": "^0.28.0",
|
||||||
"@0x/subproviders": "^6.4.1",
|
"@0x/subproviders": "^6.5.3",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"ethereumjs-util": "^6.2.0",
|
"ethereumjs-util": "^7.0.10",
|
||||||
"lodash": "^4.17.11"
|
"lodash": "^4.17.11"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
|
@@ -534,9 +534,14 @@ blockchainTests.skip('Coordinator Client', env => {
|
|||||||
const signedOrders = [signedOrder, signedOrderWithDifferentFeeRecipient];
|
const signedOrders = [signedOrder, signedOrderWithDifferentFeeRecipient];
|
||||||
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
|
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
|
||||||
await coordinatorClient
|
await coordinatorClient
|
||||||
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
|
.batchFillOrdersAsync(
|
||||||
from: takerAddress,
|
signedOrders,
|
||||||
})
|
takerAssetFillAmounts,
|
||||||
|
signedOrders.map(o => o.signature),
|
||||||
|
{
|
||||||
|
from: takerAddress,
|
||||||
|
},
|
||||||
|
)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
expect(res).to.be.undefined();
|
expect(res).to.be.undefined();
|
||||||
})
|
})
|
||||||
@@ -570,9 +575,14 @@ blockchainTests.skip('Coordinator Client', env => {
|
|||||||
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
|
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
|
||||||
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
|
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
|
||||||
await coordinatorClient
|
await coordinatorClient
|
||||||
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
|
.batchFillOrdersAsync(
|
||||||
from: takerAddress,
|
signedOrders,
|
||||||
})
|
takerAssetFillAmounts,
|
||||||
|
signedOrders.map(o => o.signature),
|
||||||
|
{
|
||||||
|
from: takerAddress,
|
||||||
|
},
|
||||||
|
)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
expect(res).to.be.undefined();
|
expect(res).to.be.undefined();
|
||||||
})
|
})
|
||||||
@@ -600,9 +610,14 @@ blockchainTests.skip('Coordinator Client', env => {
|
|||||||
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
|
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
|
||||||
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
|
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
|
||||||
await coordinatorClient
|
await coordinatorClient
|
||||||
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
|
.batchFillOrdersAsync(
|
||||||
from: takerAddress,
|
signedOrders,
|
||||||
})
|
takerAssetFillAmounts,
|
||||||
|
signedOrders.map(o => o.signature),
|
||||||
|
{
|
||||||
|
from: takerAddress,
|
||||||
|
},
|
||||||
|
)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
expect(res).to.be.undefined();
|
expect(res).to.be.undefined();
|
||||||
})
|
})
|
||||||
|
@@ -267,7 +267,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
|
|||||||
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
|
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
|
||||||
await balanceStore.updateBalancesAsync();
|
await balanceStore.updateBalancesAsync();
|
||||||
balanceStore.assertEquals(expectedBalances);
|
balanceStore.assertEquals(expectedBalances);
|
||||||
verifyEvents(txReceipt, orders.map(order => expectedFillEvent(order)), ExchangeEvents.Fill);
|
verifyEvents(
|
||||||
|
txReceipt,
|
||||||
|
orders.map(order => expectedFillEvent(order)),
|
||||||
|
ExchangeEvents.Fill,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
it(`${fnName} should fill the orders if called by approver (eth fee, no refund)`, async () => {
|
it(`${fnName} should fill the orders if called by approver (eth fee, no refund)`, async () => {
|
||||||
await balanceStore.updateBalancesAsync();
|
await balanceStore.updateBalancesAsync();
|
||||||
@@ -280,7 +284,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
|
|||||||
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
|
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
|
||||||
await balanceStore.updateBalancesAsync();
|
await balanceStore.updateBalancesAsync();
|
||||||
balanceStore.assertEquals(expectedBalances);
|
balanceStore.assertEquals(expectedBalances);
|
||||||
verifyEvents(txReceipt, orders.map(order => expectedFillEvent(order)), ExchangeEvents.Fill);
|
verifyEvents(
|
||||||
|
txReceipt,
|
||||||
|
orders.map(order => expectedFillEvent(order)),
|
||||||
|
ExchangeEvents.Fill,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
it(`${fnName} should fill the orders if called by approver (mixed fees, refund)`, async () => {
|
it(`${fnName} should fill the orders if called by approver (mixed fees, refund)`, async () => {
|
||||||
await balanceStore.updateBalancesAsync();
|
await balanceStore.updateBalancesAsync();
|
||||||
@@ -293,7 +301,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
|
|||||||
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
|
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
|
||||||
await balanceStore.updateBalancesAsync();
|
await balanceStore.updateBalancesAsync();
|
||||||
balanceStore.assertEquals(expectedBalances);
|
balanceStore.assertEquals(expectedBalances);
|
||||||
verifyEvents(txReceipt, orders.map(order => expectedFillEvent(order)), ExchangeEvents.Fill);
|
verifyEvents(
|
||||||
|
txReceipt,
|
||||||
|
orders.map(order => expectedFillEvent(order)),
|
||||||
|
ExchangeEvents.Fill,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
it(`${fnName} should revert with an invalid approval signature`, async () => {
|
it(`${fnName} should revert with an invalid approval signature`, async () => {
|
||||||
const approvalSignature = hexUtils.concat(
|
const approvalSignature = hexUtils.concat(
|
||||||
@@ -360,7 +372,11 @@ blockchainTests.resets('Coordinator integration tests', env => {
|
|||||||
.executeTransaction(transaction, maker.address, transaction.signature, [])
|
.executeTransaction(transaction, maker.address, transaction.signature, [])
|
||||||
.awaitTransactionSuccessAsync({ from: maker.address });
|
.awaitTransactionSuccessAsync({ from: maker.address });
|
||||||
|
|
||||||
verifyEvents(txReceipt, orders.map(order => expectedCancelEvent(order)), ExchangeEvents.Cancel);
|
verifyEvents(
|
||||||
|
txReceipt,
|
||||||
|
orders.map(order => expectedCancelEvent(order)),
|
||||||
|
ExchangeEvents.Cancel,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
it('cancelOrdersUpTo call should be successful without an approval', async () => {
|
it('cancelOrdersUpTo call should be successful without an approval', async () => {
|
||||||
const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrdersUpTo, []);
|
const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrdersUpTo, []);
|
||||||
|
@@ -63,11 +63,9 @@ blockchainTests.fork('DevUtils dydx order validation tests', env => {
|
|||||||
let dai: ERC20TokenContract;
|
let dai: ERC20TokenContract;
|
||||||
let usdc: ERC20TokenContract;
|
let usdc: ERC20TokenContract;
|
||||||
let devUtils: DevUtilsContract;
|
let devUtils: DevUtilsContract;
|
||||||
let accountOwner: string;
|
|
||||||
let minMarginRatio: number;
|
let minMarginRatio: number;
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
[accountOwner] = await env.getAccountAddressesAsync();
|
|
||||||
dydx = new IDydxContract(DYDX_ADDRESS, env.provider, env.txDefaults);
|
dydx = new IDydxContract(DYDX_ADDRESS, env.provider, env.txDefaults);
|
||||||
dai = new ERC20TokenContract(DAI_ADDRESS, env.provider, env.txDefaults);
|
dai = new ERC20TokenContract(DAI_ADDRESS, env.provider, env.txDefaults);
|
||||||
usdc = new ERC20TokenContract(USDC_ADDRESS, env.provider, env.txDefaults);
|
usdc = new ERC20TokenContract(USDC_ADDRESS, env.provider, env.txDefaults);
|
||||||
|
@@ -186,13 +186,13 @@ blockchainTests.resets('LibAssetData', env => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should decode multiasset data', async () => {
|
it('should decode multiasset data', async () => {
|
||||||
expect(await devUtils.decodeMultiAssetData(KNOWN_MULTI_ASSET_ENCODING.assetData).callAsync()).to.deep.equal(
|
expect(
|
||||||
[
|
await devUtils.decodeMultiAssetData(KNOWN_MULTI_ASSET_ENCODING.assetData).callAsync(),
|
||||||
AssetProxyId.MultiAsset,
|
).to.deep.equal([
|
||||||
KNOWN_MULTI_ASSET_ENCODING.amounts,
|
AssetProxyId.MultiAsset,
|
||||||
KNOWN_MULTI_ASSET_ENCODING.nestedAssetData,
|
KNOWN_MULTI_ASSET_ENCODING.amounts,
|
||||||
],
|
KNOWN_MULTI_ASSET_ENCODING.nestedAssetData,
|
||||||
);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should encode StaticCall data', async () => {
|
it('should encode StaticCall data', async () => {
|
||||||
|
@@ -278,15 +278,21 @@ blockchainTests.resets('matchOrders integration tests', env => {
|
|||||||
ExchangeRevertErrors.BatchMatchOrdersErrorCodes.InvalidLengthRightSignatures,
|
ExchangeRevertErrors.BatchMatchOrdersErrorCodes.InvalidLengthRightSignatures,
|
||||||
);
|
);
|
||||||
let tx = deployment.exchange
|
let tx = deployment.exchange
|
||||||
.batchMatchOrders(leftOrders, rightOrders, leftOrders.map(order => order.signature), [
|
.batchMatchOrders(
|
||||||
rightOrders[0].signature,
|
leftOrders,
|
||||||
])
|
rightOrders,
|
||||||
|
leftOrders.map(order => order.signature),
|
||||||
|
[rightOrders[0].signature],
|
||||||
|
)
|
||||||
.awaitTransactionSuccessAsync({ from: matcher.address });
|
.awaitTransactionSuccessAsync({ from: matcher.address });
|
||||||
await expect(tx).to.revertWith(expectedError);
|
await expect(tx).to.revertWith(expectedError);
|
||||||
tx = deployment.exchange
|
tx = deployment.exchange
|
||||||
.batchMatchOrdersWithMaximalFill(leftOrders, rightOrders, leftOrders.map(order => order.signature), [
|
.batchMatchOrdersWithMaximalFill(
|
||||||
rightOrders[0].signature,
|
leftOrders,
|
||||||
])
|
rightOrders,
|
||||||
|
leftOrders.map(order => order.signature),
|
||||||
|
[rightOrders[0].signature],
|
||||||
|
)
|
||||||
.awaitTransactionSuccessAsync({ from: matcher.address });
|
.awaitTransactionSuccessAsync({ from: matcher.address });
|
||||||
return expect(tx).to.revertWith(expectedError);
|
return expect(tx).to.revertWith(expectedError);
|
||||||
});
|
});
|
||||||
@@ -475,7 +481,10 @@ blockchainTests.resets('matchOrders integration tests', env => {
|
|||||||
],
|
],
|
||||||
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
||||||
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
|
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
|
||||||
matchIndices: [[0, 0], [1, 0]],
|
matchIndices: [
|
||||||
|
[0, 0],
|
||||||
|
[1, 0],
|
||||||
|
],
|
||||||
shouldMaximallyFill: false,
|
shouldMaximallyFill: false,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -524,7 +533,10 @@ blockchainTests.resets('matchOrders integration tests', env => {
|
|||||||
],
|
],
|
||||||
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
|
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
|
||||||
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
||||||
matchIndices: [[0, 0], [0, 1]],
|
matchIndices: [
|
||||||
|
[0, 0],
|
||||||
|
[0, 1],
|
||||||
|
],
|
||||||
shouldMaximallyFill: false,
|
shouldMaximallyFill: false,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -626,7 +638,11 @@ blockchainTests.resets('matchOrders integration tests', env => {
|
|||||||
],
|
],
|
||||||
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
||||||
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
||||||
matchIndices: [[0, 0], [0, 1], [1, 1]],
|
matchIndices: [
|
||||||
|
[0, 0],
|
||||||
|
[0, 1],
|
||||||
|
[1, 1],
|
||||||
|
],
|
||||||
shouldMaximallyFill: false,
|
shouldMaximallyFill: false,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -801,7 +817,11 @@ blockchainTests.resets('matchOrders integration tests', env => {
|
|||||||
],
|
],
|
||||||
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
||||||
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
|
||||||
matchIndices: [[0, 0], [1, 0], [1, 1]],
|
matchIndices: [
|
||||||
|
[0, 0],
|
||||||
|
[1, 0],
|
||||||
|
[1, 1],
|
||||||
|
],
|
||||||
shouldMaximallyFill: true,
|
shouldMaximallyFill: true,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -106,7 +106,12 @@ blockchainTests.fork.resets('Forwarder mainnet tests', env => {
|
|||||||
orders[1].takerAssetAmount.dividedToIntegerBy(2),
|
orders[1].takerAssetAmount.dividedToIntegerBy(2),
|
||||||
);
|
);
|
||||||
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
|
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
|
||||||
.marketSellOrdersWithEth(orders, orders.map(o => o.signature), [], [])
|
.marketSellOrdersWithEth(
|
||||||
|
orders,
|
||||||
|
orders.map(o => o.signature),
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
)
|
||||||
.callAsync({
|
.callAsync({
|
||||||
from: takerAddress,
|
from: takerAddress,
|
||||||
value: ethSellAmount,
|
value: ethSellAmount,
|
||||||
@@ -161,7 +166,13 @@ blockchainTests.fork.resets('Forwarder mainnet tests', env => {
|
|||||||
orders[1].makerAssetAmount.dividedToIntegerBy(2),
|
orders[1].makerAssetAmount.dividedToIntegerBy(2),
|
||||||
);
|
);
|
||||||
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
|
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
|
||||||
.marketBuyOrdersWithEth(orders, makerAssetBuyAmount, orders.map(o => o.signature), [], [])
|
.marketBuyOrdersWithEth(
|
||||||
|
orders,
|
||||||
|
makerAssetBuyAmount,
|
||||||
|
orders.map(o => o.signature),
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
)
|
||||||
.callAsync({
|
.callAsync({
|
||||||
from: takerAddress,
|
from: takerAddress,
|
||||||
value: ethSellAmount,
|
value: ethSellAmount,
|
||||||
|
@@ -190,9 +190,14 @@ export function MakerMixin<TBase extends Constructor>(Base: TBase): TBase & Cons
|
|||||||
rightTakerAssetData,
|
rightTakerAssetData,
|
||||||
makerFeeAssetData,
|
makerFeeAssetData,
|
||||||
takerFeeAssetData,
|
takerFeeAssetData,
|
||||||
] = [leftMakerToken, leftTakerToken, rightMakerToken, rightTakerToken, makerFeeToken, takerFeeToken].map(
|
] = [
|
||||||
token => encodeERC20AssetData(token.address),
|
leftMakerToken,
|
||||||
);
|
leftTakerToken,
|
||||||
|
rightMakerToken,
|
||||||
|
rightTakerToken,
|
||||||
|
makerFeeToken,
|
||||||
|
takerFeeToken,
|
||||||
|
].map(token => encodeERC20AssetData(token.address));
|
||||||
|
|
||||||
// Construct and sign the left order
|
// Construct and sign the left order
|
||||||
const leftOrder = await this.signOrderAsync({
|
const leftOrder = await this.signOrderAsync({
|
||||||
|
@@ -8,7 +8,10 @@ import { Actor, Constructor } from './base';
|
|||||||
* Useful for BalanceStore.
|
* Useful for BalanceStore.
|
||||||
*/
|
*/
|
||||||
export function actorAddressesByName(actors: Actor[]): ObjectMap<string> {
|
export function actorAddressesByName(actors: Actor[]): ObjectMap<string> {
|
||||||
return _.zipObject(actors.map(actor => actor.name), actors.map(actor => actor.address));
|
return _.zipObject(
|
||||||
|
actors.map(actor => actor.name),
|
||||||
|
actors.map(actor => actor.address),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,5 +22,5 @@ export function filterActorsByRole<TClass extends Constructor>(
|
|||||||
actors: Actor[],
|
actors: Actor[],
|
||||||
role: TClass,
|
role: TClass,
|
||||||
): Array<InstanceType<typeof role>> {
|
): Array<InstanceType<typeof role>> {
|
||||||
return actors.filter(actor => actor.mixins.includes(role.name)) as InstanceType<typeof role>;
|
return actors.filter(actor => actor.mixins.includes(role.name)) as Array<InstanceType<typeof role>>;
|
||||||
}
|
}
|
||||||
|
@@ -77,19 +77,24 @@ tests('Exchange signature validation fuzz tests', env => {
|
|||||||
before(async () => {
|
before(async () => {
|
||||||
chainId = await env.web3Wrapper.getChainIdAsync();
|
chainId = await env.web3Wrapper.getChainIdAsync();
|
||||||
accounts = await env.getAccountAddressesAsync();
|
accounts = await env.getAccountAddressesAsync();
|
||||||
privateKeys = _.zipObject(accounts, accounts.map((a, i) => constants.TESTRPC_PRIVATE_KEYS[i]));
|
privateKeys = _.zipObject(
|
||||||
|
accounts,
|
||||||
|
accounts.map((a, i) => constants.TESTRPC_PRIVATE_KEYS[i]),
|
||||||
|
);
|
||||||
deployment = await DeploymentManager.deployAsync(env, {
|
deployment = await DeploymentManager.deployAsync(env, {
|
||||||
numErc20TokensToDeploy: 0,
|
numErc20TokensToDeploy: 0,
|
||||||
numErc721TokensToDeploy: 0,
|
numErc721TokensToDeploy: 0,
|
||||||
numErc1155TokensToDeploy: 0,
|
numErc1155TokensToDeploy: 0,
|
||||||
});
|
});
|
||||||
exchange = deployment.exchange;
|
exchange = deployment.exchange;
|
||||||
walletContractAddress = (await TestSignatureValidationWalletContract.deployFrom0xArtifactAsync(
|
walletContractAddress = (
|
||||||
artifacts.TestSignatureValidationWallet,
|
await TestSignatureValidationWalletContract.deployFrom0xArtifactAsync(
|
||||||
env.provider,
|
artifacts.TestSignatureValidationWallet,
|
||||||
env.txDefaults,
|
env.provider,
|
||||||
{},
|
env.txDefaults,
|
||||||
)).address;
|
{},
|
||||||
|
)
|
||||||
|
).address;
|
||||||
// This just has to be a contract address that doesn't implement the
|
// This just has to be a contract address that doesn't implement the
|
||||||
// wallet spec.
|
// wallet spec.
|
||||||
notWalletContractAddress = exchange.address;
|
notWalletContractAddress = exchange.address;
|
||||||
@@ -715,7 +720,7 @@ tests('Exchange signature validation fuzz tests', env => {
|
|||||||
invalidTestTransactionMangledSignature(),
|
invalidTestTransactionMangledSignature(),
|
||||||
];
|
];
|
||||||
const simulationEnvironment = new SimulationEnvironment(deployment, new BlockchainBalanceStore({}, {}), []);
|
const simulationEnvironment = new SimulationEnvironment(deployment, new BlockchainBalanceStore({}, {}), []);
|
||||||
const simulation = new class extends Simulation {
|
const simulation = new (class extends Simulation {
|
||||||
// tslint:disable-next-line: prefer-function-over-method
|
// tslint:disable-next-line: prefer-function-over-method
|
||||||
protected async *_assertionGenerator(): AsyncIterableIterator<AssertionResult | void> {
|
protected async *_assertionGenerator(): AsyncIterableIterator<AssertionResult | void> {
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -723,7 +728,7 @@ tests('Exchange signature validation fuzz tests', env => {
|
|||||||
yield (await action!.next()).value;
|
yield (await action!.next()).value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}(simulationEnvironment);
|
})(simulationEnvironment);
|
||||||
simulation.resets = true;
|
simulation.resets = true;
|
||||||
return simulation.fuzzAsync();
|
return simulation.fuzzAsync();
|
||||||
});
|
});
|
||||||
|
@@ -1,4 +1,103 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "4.1.38",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "4.1.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "4.1.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "4.1.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "4.1.34",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "4.1.33",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "4.1.32",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "4.1.31",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "4.1.30",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "4.1.29",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "4.1.28",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "4.1.27",
|
"version": "4.1.27",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v4.1.38 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.37 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.36 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.35 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.34 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.33 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.32 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.31 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.30 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.29 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v4.1.28 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v4.1.27 - _March 17, 2021_
|
## v4.1.27 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-multisig",
|
"name": "@0x/contracts-multisig",
|
||||||
"version": "4.1.27",
|
"version": "4.1.38",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -49,18 +49,18 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/multisig",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/multisig",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
@@ -75,12 +75,12 @@
|
|||||||
"shx": "^0.2.2",
|
"shx": "^0.2.2",
|
||||||
"solhint": "^1.4.1",
|
"solhint": "^1.4.1",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"ethereum-types": "^3.4.0"
|
"ethereum-types": "^3.5.0"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -1,4 +1,104 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "2.0.45",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "2.0.44",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "2.0.43",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "2.0.42",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "2.0.41",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "2.0.40",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "2.0.39",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "2.0.38",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "2.0.37",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Patch epoch finalization issue",
|
||||||
|
"pr": 221
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1620214333
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "2.0.36",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "2.0.35",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "2.0.34",
|
"version": "2.0.34",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.0.45 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.44 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.43 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.42 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.41 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.40 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.39 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.38 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.37 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Patch epoch finalization issue (#221)
|
||||||
|
|
||||||
|
## v2.0.36 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v2.0.35 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v2.0.34 - _March 17, 2021_
|
## v2.0.34 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
55
contracts/staking/contracts/src/StakingPatch.sol
Normal file
55
contracts/staking/contracts/src/StakingPatch.sol
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright 2019 ZeroEx Intl.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
pragma solidity ^0.5.9;
|
||||||
|
pragma experimental ABIEncoderV2;
|
||||||
|
|
||||||
|
import "./interfaces/IStaking.sol";
|
||||||
|
import "./sys/MixinParams.sol";
|
||||||
|
import "./stake/MixinStake.sol";
|
||||||
|
import "./fees/MixinExchangeFees.sol";
|
||||||
|
|
||||||
|
|
||||||
|
contract StakingPatch is
|
||||||
|
IStaking,
|
||||||
|
MixinParams,
|
||||||
|
MixinStake,
|
||||||
|
MixinExchangeFees
|
||||||
|
{
|
||||||
|
/// @dev Initialize storage owned by this contract.
|
||||||
|
/// This function should not be called directly.
|
||||||
|
/// The StakingProxy contract will call it in `attachStakingContract()`.
|
||||||
|
function init()
|
||||||
|
public
|
||||||
|
onlyAuthorized
|
||||||
|
{
|
||||||
|
uint256 currentEpoch_ = currentEpoch;
|
||||||
|
uint256 prevEpoch = currentEpoch_.safeSub(1);
|
||||||
|
|
||||||
|
// Patch corrupted state
|
||||||
|
aggregatedStatsByEpoch[prevEpoch].numPoolsToFinalize = 0;
|
||||||
|
this.endEpoch();
|
||||||
|
|
||||||
|
uint256 lastPoolId_ = 57;
|
||||||
|
for (uint256 i = 1; i <= lastPoolId_; i++) {
|
||||||
|
this.finalizePool(bytes32(i));
|
||||||
|
}
|
||||||
|
// Ensure that current epoch's state is not corrupted
|
||||||
|
aggregatedStatsByEpoch[currentEpoch_].numPoolsToFinalize = 0;
|
||||||
|
}
|
||||||
|
}
|
@@ -53,6 +53,10 @@ contract MixinExchangeFees is
|
|||||||
{
|
{
|
||||||
_assertValidProtocolFee(protocolFee);
|
_assertValidProtocolFee(protocolFee);
|
||||||
|
|
||||||
|
if (protocolFee == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Transfer the protocol fee to this address if it should be paid in
|
// Transfer the protocol fee to this address if it should be paid in
|
||||||
// WETH.
|
// WETH.
|
||||||
if (msg.value == 0) {
|
if (msg.value == 0) {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-staking",
|
"name": "@0x/contracts-staking",
|
||||||
"version": "2.0.34",
|
"version": "2.0.45",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"config": {
|
"config": {
|
||||||
"publicInterfaceContracts": "IStaking,IStakingEvents,IStakingProxy,IZrxVault,LibStakingRichErrors,Staking,StakingProxy,ZrxVault,TestStaking",
|
"publicInterfaceContracts": "IStaking,IStakingEvents,IStakingProxy,IZrxVault,LibStakingRichErrors,Staking,StakingProxy,ZrxVault,TestStaking",
|
||||||
"abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually.",
|
"abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually.",
|
||||||
"abis": "./test/generated-artifacts/@(IStaking|IStakingEvents|IStakingProxy|IStorage|IStorageInit|IStructs|IZrxVault|LibCobbDouglas|LibFixedMath|LibFixedMathRichErrors|LibSafeDowncast|LibStakingRichErrors|MixinAbstract|MixinConstants|MixinCumulativeRewards|MixinDeploymentConstants|MixinExchangeFees|MixinExchangeManager|MixinFinalizer|MixinParams|MixinScheduler|MixinStake|MixinStakeBalances|MixinStakeStorage|MixinStakingPool|MixinStakingPoolRewards|MixinStorage|Staking|StakingProxy|TestAssertStorageParams|TestCobbDouglas|TestCumulativeRewardTracking|TestDelegatorRewards|TestExchangeManager|TestFinalizer|TestInitTarget|TestLibFixedMath|TestLibSafeDowncast|TestMixinCumulativeRewards|TestMixinParams|TestMixinScheduler|TestMixinStake|TestMixinStakeBalances|TestMixinStakeStorage|TestMixinStakingPool|TestMixinStakingPoolRewards|TestProtocolFees|TestProxyDestination|TestStaking|TestStakingNoWETH|TestStakingProxy|TestStakingProxyUnit|TestStorageLayoutAndConstants|ZrxVault).json"
|
"abis": "./test/generated-artifacts/@(IStaking|IStakingEvents|IStakingProxy|IStorage|IStorageInit|IStructs|IZrxVault|LibCobbDouglas|LibFixedMath|LibFixedMathRichErrors|LibSafeDowncast|LibStakingRichErrors|MixinAbstract|MixinConstants|MixinCumulativeRewards|MixinDeploymentConstants|MixinExchangeFees|MixinExchangeManager|MixinFinalizer|MixinParams|MixinScheduler|MixinStake|MixinStakeBalances|MixinStakeStorage|MixinStakingPool|MixinStakingPoolRewards|MixinStorage|Staking|StakingPatch|StakingProxy|TestAssertStorageParams|TestCobbDouglas|TestCumulativeRewardTracking|TestDelegatorRewards|TestExchangeManager|TestFinalizer|TestInitTarget|TestLibFixedMath|TestLibSafeDowncast|TestMixinCumulativeRewards|TestMixinParams|TestMixinScheduler|TestMixinStake|TestMixinStakeBalances|TestMixinStakeStorage|TestMixinStakingPool|TestMixinStakingPoolRewards|TestProtocolFees|TestProxyDestination|TestStaking|TestStakingNoWETH|TestStakingProxy|TestStakingProxyUnit|TestStorageLayoutAndConstants|ZrxVault).json"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -53,20 +53,20 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-dev-utils": "^1.3.25",
|
"@0x/contracts-dev-utils": "^1.3.36",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-exchange-libs": "^4.3.26",
|
"@0x/contracts-exchange-libs": "^4.3.37",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-utils": "^4.7.5",
|
"@0x/contracts-utils": "^4.7.16",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/node": "12.12.54",
|
"@types/node": "12.12.54",
|
||||||
"chai": "^4.0.1",
|
"chai": "^4.0.1",
|
||||||
@@ -84,15 +84,15 @@
|
|||||||
"truffle": "^5.0.32",
|
"truffle": "^5.0.32",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"ethereumjs-util": "^5.1.1"
|
"ethereumjs-util": "^7.0.10"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -4,6 +4,7 @@ import { DecodedLogArgs, LogWithDecodedArgs } from 'ethereum-types';
|
|||||||
|
|
||||||
import { constants as stakingConstants } from './constants';
|
import { constants as stakingConstants } from './constants';
|
||||||
|
|
||||||
|
export { Numberish } from '@0x/contracts-test-utils';
|
||||||
// tslint:disable:max-classes-per-file
|
// tslint:disable:max-classes-per-file
|
||||||
|
|
||||||
export interface StakingParams {
|
export interface StakingParams {
|
||||||
@@ -259,5 +260,3 @@ export class AggregatedStats {
|
|||||||
export interface AggregatedStatsByEpoch {
|
export interface AggregatedStatsByEpoch {
|
||||||
[epoch: string]: AggregatedStats;
|
[epoch: string]: AggregatedStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Numberish = Numberish;
|
|
||||||
|
@@ -157,11 +157,11 @@ export class FinalizerActor extends BaseActor {
|
|||||||
const delegators = delegatorsByPoolId[poolId];
|
const delegators = delegatorsByPoolId[poolId];
|
||||||
delegatorBalancesByPoolId[poolId] = {};
|
delegatorBalancesByPoolId[poolId] = {};
|
||||||
for (const delegator of delegators) {
|
for (const delegator of delegators) {
|
||||||
delegatorBalancesByPoolId[poolId][
|
delegatorBalancesByPoolId[poolId][delegator] = (
|
||||||
delegator
|
await this._stakingApiWrapper.stakingContract
|
||||||
] = (await this._stakingApiWrapper.stakingContract
|
.getStakeDelegatedToPoolByOwner(delegator, poolId)
|
||||||
.getStakeDelegatedToPoolByOwner(delegator, poolId)
|
.callAsync()
|
||||||
.callAsync()).currentEpochBalance;
|
).currentEpochBalance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return delegatorBalancesByPoolId;
|
return delegatorBalancesByPoolId;
|
||||||
@@ -253,7 +253,10 @@ export class FinalizerActor extends BaseActor {
|
|||||||
const totalFeesCollected = BigNumber.sum(...activePools.map(p => p.feesCollected));
|
const totalFeesCollected = BigNumber.sum(...activePools.map(p => p.feesCollected));
|
||||||
const totalWeightedStake = BigNumber.sum(...activePools.map(p => p.weightedStake));
|
const totalWeightedStake = BigNumber.sum(...activePools.map(p => p.weightedStake));
|
||||||
if (totalRewards.eq(0) || totalFeesCollected.eq(0) || totalWeightedStake.eq(0)) {
|
if (totalRewards.eq(0) || totalFeesCollected.eq(0) || totalWeightedStake.eq(0)) {
|
||||||
return _.zipObject(poolIds, _.times(poolIds.length, () => new BigNumber(0)));
|
return _.zipObject(
|
||||||
|
poolIds,
|
||||||
|
_.times(poolIds.length, () => new BigNumber(0)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
const rewards = await Promise.all(
|
const rewards = await Promise.all(
|
||||||
activePools.map(async pool =>
|
activePools.map(async pool =>
|
||||||
|
@@ -33,6 +33,7 @@ import * as MixinStakingPool from '../test/generated-artifacts/MixinStakingPool.
|
|||||||
import * as MixinStakingPoolRewards from '../test/generated-artifacts/MixinStakingPoolRewards.json';
|
import * as MixinStakingPoolRewards from '../test/generated-artifacts/MixinStakingPoolRewards.json';
|
||||||
import * as MixinStorage from '../test/generated-artifacts/MixinStorage.json';
|
import * as MixinStorage from '../test/generated-artifacts/MixinStorage.json';
|
||||||
import * as Staking from '../test/generated-artifacts/Staking.json';
|
import * as Staking from '../test/generated-artifacts/Staking.json';
|
||||||
|
import * as StakingPatch from '../test/generated-artifacts/StakingPatch.json';
|
||||||
import * as StakingProxy from '../test/generated-artifacts/StakingProxy.json';
|
import * as StakingProxy from '../test/generated-artifacts/StakingProxy.json';
|
||||||
import * as TestAssertStorageParams from '../test/generated-artifacts/TestAssertStorageParams.json';
|
import * as TestAssertStorageParams from '../test/generated-artifacts/TestAssertStorageParams.json';
|
||||||
import * as TestCobbDouglas from '../test/generated-artifacts/TestCobbDouglas.json';
|
import * as TestCobbDouglas from '../test/generated-artifacts/TestCobbDouglas.json';
|
||||||
@@ -61,6 +62,7 @@ import * as TestStorageLayoutAndConstants from '../test/generated-artifacts/Test
|
|||||||
import * as ZrxVault from '../test/generated-artifacts/ZrxVault.json';
|
import * as ZrxVault from '../test/generated-artifacts/ZrxVault.json';
|
||||||
export const artifacts = {
|
export const artifacts = {
|
||||||
Staking: Staking as ContractArtifact,
|
Staking: Staking as ContractArtifact,
|
||||||
|
StakingPatch: StakingPatch as ContractArtifact,
|
||||||
StakingProxy: StakingProxy as ContractArtifact,
|
StakingProxy: StakingProxy as ContractArtifact,
|
||||||
ZrxVault: ZrxVault as ContractArtifact,
|
ZrxVault: ZrxVault as ContractArtifact,
|
||||||
MixinExchangeFees: MixinExchangeFees as ContractArtifact,
|
MixinExchangeFees: MixinExchangeFees as ContractArtifact,
|
||||||
|
@@ -102,13 +102,15 @@ blockchainTests('Migration tests', env => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should set the correct initial params', async () => {
|
it('should set the correct initial params', async () => {
|
||||||
const stakingProxyContractAddress = (await StakingProxyContract.deployFrom0xArtifactAsync(
|
const stakingProxyContractAddress = (
|
||||||
artifacts.StakingProxy,
|
await StakingProxyContract.deployFrom0xArtifactAsync(
|
||||||
env.provider,
|
artifacts.StakingProxy,
|
||||||
env.txDefaults,
|
env.provider,
|
||||||
artifacts,
|
env.txDefaults,
|
||||||
stakingContract.address,
|
artifacts,
|
||||||
)).address;
|
stakingContract.address,
|
||||||
|
)
|
||||||
|
).address;
|
||||||
|
|
||||||
const stakingProxyContract = new StakingContract(
|
const stakingProxyContract = new StakingContract(
|
||||||
stakingProxyContractAddress,
|
stakingProxyContractAddress,
|
||||||
|
66
contracts/staking/test/patch_mainnet_test.ts
Normal file
66
contracts/staking/test/patch_mainnet_test.ts
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
import { blockchainTests, constants, expect, filterLogsToArguments } from '@0x/contracts-test-utils';
|
||||||
|
import { BigNumber, logUtils } from '@0x/utils';
|
||||||
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
|
import { artifacts } from './artifacts';
|
||||||
|
import { StakingEvents, StakingPatchContract, StakingProxyContract, StakingProxyEvents } from './wrappers';
|
||||||
|
|
||||||
|
const abis = _.mapValues(artifacts, v => v.compilerOutput.abi);
|
||||||
|
const STAKING_PROXY = '0xa26e80e7dea86279c6d778d702cc413e6cffa777';
|
||||||
|
const STAKING_OWNER = '0x7d3455421bbc5ed534a83c88fd80387dc8271392';
|
||||||
|
const EXCHANGE_PROXY = '0xdef1c0ded9bec7f1a1670819833240f027b25eff';
|
||||||
|
blockchainTests.configure({
|
||||||
|
fork: {
|
||||||
|
unlockedAccounts: [STAKING_OWNER, EXCHANGE_PROXY],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
blockchainTests.fork('Staking patch mainnet fork tests', env => {
|
||||||
|
let stakingProxyContract: StakingProxyContract;
|
||||||
|
let patchedStakingPatchContract: StakingPatchContract;
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
stakingProxyContract = new StakingProxyContract(STAKING_PROXY, env.provider, undefined, abis);
|
||||||
|
patchedStakingPatchContract = await StakingPatchContract.deployFrom0xArtifactAsync(
|
||||||
|
artifacts.Staking,
|
||||||
|
env.provider,
|
||||||
|
env.txDefaults,
|
||||||
|
artifacts,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Staking proxy successfully attaches to patched logic', async () => {
|
||||||
|
const tx = await stakingProxyContract
|
||||||
|
.attachStakingContract(patchedStakingPatchContract.address)
|
||||||
|
.awaitTransactionSuccessAsync({ from: STAKING_OWNER, gasPrice: 0 }, { shouldValidate: false });
|
||||||
|
expect(filterLogsToArguments(tx.logs, StakingProxyEvents.StakingContractAttachedToProxy)).to.deep.equal([
|
||||||
|
{
|
||||||
|
newStakingPatchContractAddress: patchedStakingPatchContract.address,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
expect(filterLogsToArguments(tx.logs, StakingEvents.EpochEnded).length).to.equal(1);
|
||||||
|
expect(filterLogsToArguments(tx.logs, StakingEvents.EpochFinalized).length).to.equal(1);
|
||||||
|
logUtils.log(`${tx.gasUsed} gas used`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Patched staking handles 0 gas protocol fees', async () => {
|
||||||
|
const staking = new StakingPatchContract(STAKING_PROXY, env.provider, undefined, abis);
|
||||||
|
const maker = '0x7b1886e49ab5433bb46f7258548092dc8cdca28b';
|
||||||
|
const zeroFeeTx = await staking
|
||||||
|
.payProtocolFee(maker, constants.NULL_ADDRESS, constants.ZERO_AMOUNT)
|
||||||
|
.awaitTransactionSuccessAsync({ from: EXCHANGE_PROXY, gasPrice: 0 }, { shouldValidate: false });
|
||||||
|
// StakingPoolEarnedRewardsInEpoch should _not_ be emitted for a zero protocol fee.
|
||||||
|
// tslint:disable-next-line:no-unused-expression
|
||||||
|
expect(filterLogsToArguments(zeroFeeTx.logs, StakingEvents.StakingPoolEarnedRewardsInEpoch)).to.be.empty;
|
||||||
|
|
||||||
|
// Coincidentally there's some ETH in the ExchangeProxy
|
||||||
|
const nonZeroFeeTx = await staking
|
||||||
|
.payProtocolFee(maker, constants.NULL_ADDRESS, new BigNumber(1))
|
||||||
|
.awaitTransactionSuccessAsync({ from: EXCHANGE_PROXY, gasPrice: 0, value: 1 }, { shouldValidate: false });
|
||||||
|
// StakingPoolEarnedRewardsInEpoch _should_ be emitted for a non-zero protocol fee.
|
||||||
|
expect(
|
||||||
|
filterLogsToArguments(nonZeroFeeTx.logs, StakingEvents.StakingPoolEarnedRewardsInEpoch),
|
||||||
|
).to.have.lengthOf(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// tslint:enable:no-unnecessary-type-assertion
|
@@ -12,7 +12,6 @@ import {
|
|||||||
|
|
||||||
blockchainTests.resets('Exchange Unit Tests', env => {
|
blockchainTests.resets('Exchange Unit Tests', env => {
|
||||||
// Addresses
|
// Addresses
|
||||||
let nonOwner: string;
|
|
||||||
let owner: string;
|
let owner: string;
|
||||||
let nonExchange: string;
|
let nonExchange: string;
|
||||||
let exchange: string;
|
let exchange: string;
|
||||||
@@ -24,7 +23,7 @@ blockchainTests.resets('Exchange Unit Tests', env => {
|
|||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
// Set up addresses for testing.
|
// Set up addresses for testing.
|
||||||
[nonOwner, owner, nonExchange, exchange, nonAuthority, authority] = await env.getAccountAddressesAsync();
|
[, owner, nonExchange, exchange, nonAuthority, authority] = await env.getAccountAddressesAsync();
|
||||||
|
|
||||||
// Deploy the Exchange Manager contract.
|
// Deploy the Exchange Manager contract.
|
||||||
exchangeManager = await TestExchangeManagerContract.deployFrom0xArtifactAsync(
|
exchangeManager = await TestExchangeManagerContract.deployFrom0xArtifactAsync(
|
||||||
|
@@ -543,7 +543,7 @@ blockchainTests.resets('Finalizer unit tests', env => {
|
|||||||
const expectedPoolRewards = await calculatePoolRewardsAsync(INITIAL_BALANCE, pools);
|
const expectedPoolRewards = await calculatePoolRewardsAsync(INITIAL_BALANCE, pools);
|
||||||
const [pool, reward] = _.sampleSize(shortZip(pools, expectedPoolRewards), 1)[0];
|
const [pool, reward] = _.sampleSize(shortZip(pools, expectedPoolRewards), 1)[0];
|
||||||
return assertUnfinalizedPoolRewardsAsync(pool.poolId, {
|
return assertUnfinalizedPoolRewardsAsync(pool.poolId, {
|
||||||
totalReward: (reward as any) as BigNumber,
|
totalReward: reward,
|
||||||
membersStake: pool.membersStake,
|
membersStake: pool.membersStake,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -12,17 +12,13 @@ import * as _ from 'lodash';
|
|||||||
import { artifacts } from '../artifacts';
|
import { artifacts } from '../artifacts';
|
||||||
import { TestCobbDouglasContract } from '../wrappers';
|
import { TestCobbDouglasContract } from '../wrappers';
|
||||||
|
|
||||||
// tslint:disable: no-unnecessary-type-assertion
|
|
||||||
blockchainTests('LibCobbDouglas unit tests', env => {
|
blockchainTests('LibCobbDouglas unit tests', env => {
|
||||||
const FUZZ_COUNT = 1024;
|
const FUZZ_COUNT = 1024;
|
||||||
const PRECISION = 15;
|
const PRECISION = 15;
|
||||||
|
|
||||||
let testContract: TestCobbDouglasContract;
|
let testContract: TestCobbDouglasContract;
|
||||||
let ownerAddress: string;
|
|
||||||
let notOwnerAddress: string;
|
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
[ownerAddress, notOwnerAddress] = await env.getAccountAddressesAsync();
|
|
||||||
testContract = await TestCobbDouglasContract.deployFrom0xArtifactAsync(
|
testContract = await TestCobbDouglasContract.deployFrom0xArtifactAsync(
|
||||||
artifacts.TestCobbDouglas,
|
artifacts.TestCobbDouglas,
|
||||||
env.provider,
|
env.provider,
|
||||||
@@ -211,4 +207,3 @@ blockchainTests('LibCobbDouglas unit tests', env => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// tslint:enable:no-unnecessary-type-assertion
|
|
||||||
|
@@ -31,6 +31,7 @@ export * from '../test/generated-wrappers/mixin_staking_pool';
|
|||||||
export * from '../test/generated-wrappers/mixin_staking_pool_rewards';
|
export * from '../test/generated-wrappers/mixin_staking_pool_rewards';
|
||||||
export * from '../test/generated-wrappers/mixin_storage';
|
export * from '../test/generated-wrappers/mixin_storage';
|
||||||
export * from '../test/generated-wrappers/staking';
|
export * from '../test/generated-wrappers/staking';
|
||||||
|
export * from '../test/generated-wrappers/staking_patch';
|
||||||
export * from '../test/generated-wrappers/staking_proxy';
|
export * from '../test/generated-wrappers/staking_proxy';
|
||||||
export * from '../test/generated-wrappers/test_assert_storage_params';
|
export * from '../test/generated-wrappers/test_assert_storage_params';
|
||||||
export * from '../test/generated-wrappers/test_cobb_douglas';
|
export * from '../test/generated-wrappers/test_cobb_douglas';
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
"test/generated-artifacts/MixinStakingPoolRewards.json",
|
"test/generated-artifacts/MixinStakingPoolRewards.json",
|
||||||
"test/generated-artifacts/MixinStorage.json",
|
"test/generated-artifacts/MixinStorage.json",
|
||||||
"test/generated-artifacts/Staking.json",
|
"test/generated-artifacts/Staking.json",
|
||||||
|
"test/generated-artifacts/StakingPatch.json",
|
||||||
"test/generated-artifacts/StakingProxy.json",
|
"test/generated-artifacts/StakingProxy.json",
|
||||||
"test/generated-artifacts/TestAssertStorageParams.json",
|
"test/generated-artifacts/TestAssertStorageParams.json",
|
||||||
"test/generated-artifacts/TestCobbDouglas.json",
|
"test/generated-artifacts/TestCobbDouglas.json",
|
||||||
|
@@ -1,4 +1,104 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "5.4.8",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "5.4.7",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628225642,
|
||||||
|
"version": "5.4.6",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "5.4.5",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "5.4.4",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "5.4.3",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "5.4.2",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "5.4.1",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "5.4.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Set default ganache gas limit to 100e6",
|
||||||
|
"pr": 197
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1620214333
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "5.3.25",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "5.3.24",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1616005394,
|
"timestamp": 1616005394,
|
||||||
"version": "5.3.23",
|
"version": "5.3.23",
|
||||||
|
@@ -5,6 +5,50 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v5.4.8 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.7 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.6 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.5 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.4 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.3 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.2 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.1 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.4.0 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Set default ganache gas limit to 100e6 (#197)
|
||||||
|
|
||||||
|
## v5.3.25 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v5.3.24 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v5.3.23 - _March 17, 2021_
|
## v5.3.23 - _March 17, 2021_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-test-utils",
|
"name": "@0x/contracts-test-utils",
|
||||||
"version": "5.3.23",
|
"version": "5.4.8",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -34,28 +34,28 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/test-utils",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/test-utils",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"npm-run-all": "^4.1.2",
|
"npm-run-all": "^4.1.2",
|
||||||
"shx": "^0.2.2",
|
"shx": "^0.2.2",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/assert": "^3.0.21",
|
"@0x/assert": "^3.0.27",
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/contract-addresses": "^5.11.0",
|
"@0x/contract-addresses": "^6.6.0",
|
||||||
"@0x/dev-utils": "^4.2.1",
|
"@0x/dev-utils": "^4.2.7",
|
||||||
"@0x/json-schemas": "^5.4.1",
|
"@0x/json-schemas": "^6.1.3",
|
||||||
"@0x/order-utils": "^10.4.18",
|
"@0x/order-utils": "^10.4.28",
|
||||||
"@0x/sol-coverage": "^4.0.31",
|
"@0x/sol-coverage": "^4.0.37",
|
||||||
"@0x/sol-profiler": "^4.1.21",
|
"@0x/sol-profiler": "^4.1.27",
|
||||||
"@0x/sol-trace": "^3.0.31",
|
"@0x/sol-trace": "^3.0.37",
|
||||||
"@0x/subproviders": "^6.4.1",
|
"@0x/subproviders": "^6.5.3",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"@types/bn.js": "^4.11.0",
|
"@types/bn.js": "^4.11.0",
|
||||||
"@types/js-combinatorics": "^0.5.29",
|
"@types/js-combinatorics": "^0.5.29",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
@@ -67,8 +67,8 @@
|
|||||||
"chai-bignumber": "^3.0.0",
|
"chai-bignumber": "^3.0.0",
|
||||||
"decimal.js": "^10.2.0",
|
"decimal.js": "^10.2.0",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^7.0.10",
|
||||||
"ethers": "~4.0.4",
|
"ethers": "~4.0.4",
|
||||||
"js-combinatorics": "^0.5.3",
|
"js-combinatorics": "^0.5.3",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
|
@@ -77,7 +77,7 @@ export const constants = {
|
|||||||
ZERO_AMOUNT: new BigNumber(0),
|
ZERO_AMOUNT: new BigNumber(0),
|
||||||
PERCENTAGE_DENOMINATOR: new BigNumber(10).pow(18),
|
PERCENTAGE_DENOMINATOR: new BigNumber(10).pow(18),
|
||||||
TIME_BUFFER: new BigNumber(1000),
|
TIME_BUFFER: new BigNumber(1000),
|
||||||
KECCAK256_NULL: ethUtil.addHexPrefix(ethUtil.bufferToHex(ethUtil.SHA3_NULL)),
|
KECCAK256_NULL: ethUtil.bufferToHex(ethUtil.keccak256(Buffer.alloc(0))),
|
||||||
MAX_UINT256_ROOT: new BigNumber('340282366920938463463374607431768211456'),
|
MAX_UINT256_ROOT: new BigNumber('340282366920938463463374607431768211456'),
|
||||||
ONE_ETHER: new BigNumber(1e18),
|
ONE_ETHER: new BigNumber(1e18),
|
||||||
EIP712_DOMAIN_NAME: '0x Protocol',
|
EIP712_DOMAIN_NAME: '0x Protocol',
|
||||||
|
@@ -14,6 +14,6 @@ export function shortZip<T1, T2>(a: T1[], b: T2[]): Array<[T1, T2]> {
|
|||||||
export function replaceKeysDeep(obj: {}, mapKeys: (key: string) => string | void): _.Dictionary<{}> {
|
export function replaceKeysDeep(obj: {}, mapKeys: (key: string) => string | void): _.Dictionary<{}> {
|
||||||
return _.transform(obj, (result, value, key) => {
|
return _.transform(obj, (result, value, key) => {
|
||||||
const currentKey = mapKeys(key) || key;
|
const currentKey = mapKeys(key) || key;
|
||||||
result[currentKey] = _.isObject(value) ? replaceKeysDeep(value, mapKeys) : value;
|
result[currentKey] = _.isObject(value) ? replaceKeysDeep(value as {}, mapKeys) : (value as {});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -40,6 +40,6 @@ export function verifyEventsFromLogs<TEventArgs>(
|
|||||||
const _logs = filterLogsToArguments<TEventArgs>(logs, eventName);
|
const _logs = filterLogsToArguments<TEventArgs>(logs, eventName);
|
||||||
expect(_logs.length, `Number of ${eventName} events emitted`).to.eq(expectedEvents.length);
|
expect(_logs.length, `Number of ${eventName} events emitted`).to.eq(expectedEvents.length);
|
||||||
_logs.forEach((log, index) => {
|
_logs.forEach((log, index) => {
|
||||||
expect(log, `${eventName} event ${index}`).to.deep.equal(expectedEvents[index]);
|
expect(log, `${eventName} event ${index}`).to.deep.equal({ ...log, ...expectedEvents[index] });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -22,14 +22,14 @@ export class OrderFactory {
|
|||||||
): Promise<SignedOrder> {
|
): Promise<SignedOrder> {
|
||||||
const fifteenMinutesInSeconds = 15 * 60;
|
const fifteenMinutesInSeconds = 15 * 60;
|
||||||
const currentBlockTimestamp = await getLatestBlockTimestampAsync();
|
const currentBlockTimestamp = await getLatestBlockTimestampAsync();
|
||||||
const order = ({
|
const order = {
|
||||||
takerAddress: constants.NULL_ADDRESS,
|
takerAddress: constants.NULL_ADDRESS,
|
||||||
senderAddress: constants.NULL_ADDRESS,
|
senderAddress: constants.NULL_ADDRESS,
|
||||||
expirationTimeSeconds: new BigNumber(currentBlockTimestamp).plus(fifteenMinutesInSeconds),
|
expirationTimeSeconds: new BigNumber(currentBlockTimestamp).plus(fifteenMinutesInSeconds),
|
||||||
salt: generatePseudoRandomSalt(),
|
salt: generatePseudoRandomSalt(),
|
||||||
...this._defaultOrderParams,
|
...this._defaultOrderParams,
|
||||||
...customOrderParams,
|
...customOrderParams,
|
||||||
} as any) as Order;
|
} as Order; // tslint:disable-line:no-object-literal-type-assertion
|
||||||
const orderHashBuff = orderHashUtils.getOrderHashBuffer(order);
|
const orderHashBuff = orderHashUtils.getOrderHashBuffer(order);
|
||||||
const signature = signingUtils.signMessage(orderHashBuff, this._privateKey, signatureType);
|
const signature = signingUtils.signMessage(orderHashBuff, this._privateKey, signatureType);
|
||||||
const signedOrder = {
|
const signedOrder = {
|
||||||
|
@@ -30,7 +30,8 @@ export const orderUtils = {
|
|||||||
return cancel;
|
return cancel;
|
||||||
},
|
},
|
||||||
createOrderWithoutSignature(signedOrder: SignedOrder): Order {
|
createOrderWithoutSignature(signedOrder: SignedOrder): Order {
|
||||||
return _.omit(signedOrder, ['signature']) as Order;
|
const { signature, ...order } = signedOrder;
|
||||||
|
return order;
|
||||||
},
|
},
|
||||||
createBatchMatchOrders(signedOrdersLeft: SignedOrder[], signedOrdersRight: SignedOrder[]): BatchMatchOrder {
|
createBatchMatchOrders(signedOrdersLeft: SignedOrder[], signedOrdersRight: SignedOrder[]): BatchMatchOrder {
|
||||||
return {
|
return {
|
||||||
|
@@ -108,9 +108,7 @@ export async function testWithReferenceFuncAsync(
|
|||||||
return expect.fail(
|
return expect.fail(
|
||||||
actualError,
|
actualError,
|
||||||
expectedError,
|
expectedError,
|
||||||
`${testCaseString}: expected error message '${actualError.message}' to equal '${
|
`${testCaseString}: expected error message '${actualError.message}' to equal '${expectedError.message}'`,
|
||||||
expectedError.message
|
|
||||||
}'`,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,7 @@ export let providerConfigs: Web3Config = {
|
|||||||
shouldUseInProcessGanache: true,
|
shouldUseInProcessGanache: true,
|
||||||
shouldAllowUnlimitedContractSize: true,
|
shouldAllowUnlimitedContractSize: true,
|
||||||
hardfork: 'istanbul',
|
hardfork: 'istanbul',
|
||||||
|
gasLimit: 100e6,
|
||||||
unlocked_accounts: [
|
unlocked_accounts: [
|
||||||
'0x6cc5f688a315f3dc28a7781717a9a798a59fda7b',
|
'0x6cc5f688a315f3dc28a7781717a9a798a59fda7b',
|
||||||
'0x55dc8f21d20d4c6ed3c82916a438a413ca68e335',
|
'0x55dc8f21d20d4c6ed3c82916a438a413ca68e335',
|
||||||
|
@@ -57,9 +57,7 @@ describe('Order hashing', () => {
|
|||||||
...order,
|
...order,
|
||||||
takerAddress: (null as any) as string,
|
takerAddress: (null as any) as string,
|
||||||
};
|
};
|
||||||
const expectedErrorMessage = `Order taker must be of type string. If you want anyone to be able to fill an order - pass ${
|
const expectedErrorMessage = `Expected order to conform to schema`;
|
||||||
constants.NULL_ADDRESS
|
|
||||||
}`;
|
|
||||||
expect(() => orderHashUtils.getOrderHashHex(orderWithInvalidtakerFormat)).to.throw(expectedErrorMessage);
|
expect(() => orderHashUtils.getOrderHashHex(orderWithInvalidtakerFormat)).to.throw(expectedErrorMessage);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -1,4 +1,142 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1629079369,
|
||||||
|
"version": "1.3.2",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1628665757,
|
||||||
|
"version": "1.3.1",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "1.3.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Added proposal 1 params and test",
|
||||||
|
"pr": 298
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1628225642
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1624356181,
|
||||||
|
"version": "1.2.3",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1623382456,
|
||||||
|
"version": "1.2.2",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1622609597,
|
||||||
|
"version": "1.2.1",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "1.2.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Added proposal 0 params and test",
|
||||||
|
"pr": 252
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1622154125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621944788,
|
||||||
|
"version": "1.1.8",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1621600614,
|
||||||
|
"version": "1.1.7",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1620214333,
|
||||||
|
"version": "1.1.6",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "1.1.5",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Patched votingPower logic",
|
||||||
|
"pr": 214
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1619825976
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619596077,
|
||||||
|
"version": "1.1.4",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1619481586,
|
||||||
|
"version": "1.1.3",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1618259868,
|
||||||
|
"version": "1.1.2",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": 1617311315,
|
||||||
|
"version": "1.1.1",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@@ -5,6 +5,66 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.3.2 - _August 16, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.1 - _August 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.3.0 - _August 6, 2021_
|
||||||
|
|
||||||
|
* Added proposal 1 params and test (#298)
|
||||||
|
|
||||||
|
## v1.2.3 - _June 22, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.2.2 - _June 11, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.2.1 - _June 2, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.2.0 - _May 27, 2021_
|
||||||
|
|
||||||
|
* Added proposal 0 params and test (#252)
|
||||||
|
|
||||||
|
## v1.1.8 - _May 25, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.7 - _May 21, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.6 - _May 5, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.5 - _April 30, 2021_
|
||||||
|
|
||||||
|
* Patched votingPower logic (#214)
|
||||||
|
|
||||||
|
## v1.1.4 - _April 28, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.3 - _April 26, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.2 - _April 12, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.1.1 - _April 1, 2021_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.1.0 - _March 17, 2021_
|
## v1.1.0 - _March 17, 2021_
|
||||||
|
|
||||||
* Make the proposal/quorum thresholds updatable (#165)
|
* Make the proposal/quorum thresholds updatable (#165)
|
||||||
|
@@ -21,13 +21,10 @@ pragma solidity ^0.6.12;
|
|||||||
pragma experimental ABIEncoderV2;
|
pragma experimental ABIEncoderV2;
|
||||||
|
|
||||||
import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol";
|
import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol";
|
||||||
import "@0x/contracts-erc20/contracts/src/v06/LibERC20TokenV06.sol";
|
|
||||||
import "./IStaking.sol";
|
import "./IStaking.sol";
|
||||||
|
|
||||||
|
|
||||||
contract DefaultPoolOperator {
|
contract DefaultPoolOperator {
|
||||||
using LibERC20TokenV06 for IERC20TokenV06;
|
|
||||||
|
|
||||||
// Immutables
|
// Immutables
|
||||||
IStaking public immutable stakingProxy;
|
IStaking public immutable stakingProxy;
|
||||||
IERC20TokenV06 public immutable weth;
|
IERC20TokenV06 public immutable weth;
|
||||||
@@ -57,7 +54,7 @@ contract DefaultPoolOperator {
|
|||||||
function returnStakingRewards()
|
function returnStakingRewards()
|
||||||
external
|
external
|
||||||
{
|
{
|
||||||
uint256 wethBalance = weth.compatBalanceOf(address(this));
|
uint256 wethBalance = weth.balanceOf(address(this));
|
||||||
weth.compatTransfer(address(stakingProxy), wethBalance);
|
weth.transfer(address(stakingProxy), wethBalance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -30,6 +30,7 @@ interface IZrxTreasury {
|
|||||||
uint256 votingPeriod;
|
uint256 votingPeriod;
|
||||||
uint256 proposalThreshold;
|
uint256 proposalThreshold;
|
||||||
uint256 quorumThreshold;
|
uint256 quorumThreshold;
|
||||||
|
bytes32 defaultPoolId;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ProposedAction {
|
struct ProposedAction {
|
||||||
|
@@ -20,8 +20,6 @@
|
|||||||
pragma solidity ^0.6.12;
|
pragma solidity ^0.6.12;
|
||||||
pragma experimental ABIEncoderV2;
|
pragma experimental ABIEncoderV2;
|
||||||
|
|
||||||
import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol";
|
|
||||||
import "@0x/contracts-erc20/contracts/src/v06/LibERC20TokenV06.sol";
|
|
||||||
import "@0x/contracts-utils/contracts/src/v06/LibBytesV06.sol";
|
import "@0x/contracts-utils/contracts/src/v06/LibBytesV06.sol";
|
||||||
import "@0x/contracts-utils/contracts/src/v06/LibSafeMathV06.sol";
|
import "@0x/contracts-utils/contracts/src/v06/LibSafeMathV06.sol";
|
||||||
import "@0x/contracts-utils/contracts/src/v06/errors/LibRichErrorsV06.sol";
|
import "@0x/contracts-utils/contracts/src/v06/errors/LibRichErrorsV06.sol";
|
||||||
@@ -32,7 +30,6 @@ import "./IZrxTreasury.sol";
|
|||||||
contract ZrxTreasury is
|
contract ZrxTreasury is
|
||||||
IZrxTreasury
|
IZrxTreasury
|
||||||
{
|
{
|
||||||
using LibERC20TokenV06 for IERC20TokenV06;
|
|
||||||
using LibSafeMathV06 for uint256;
|
using LibSafeMathV06 for uint256;
|
||||||
using LibRichErrorsV06 for bytes;
|
using LibRichErrorsV06 for bytes;
|
||||||
using LibBytesV06 for bytes;
|
using LibBytesV06 for bytes;
|
||||||
@@ -52,11 +49,9 @@ contract ZrxTreasury is
|
|||||||
/// @dev Initializes the ZRX treasury and creates the default
|
/// @dev Initializes the ZRX treasury and creates the default
|
||||||
/// staking pool.
|
/// staking pool.
|
||||||
/// @param stakingProxy_ The 0x staking proxy contract.
|
/// @param stakingProxy_ The 0x staking proxy contract.
|
||||||
/// @param weth_ The WETH token contract.
|
|
||||||
/// @param params Immutable treasury parameters.
|
/// @param params Immutable treasury parameters.
|
||||||
constructor(
|
constructor(
|
||||||
IStaking stakingProxy_,
|
IStaking stakingProxy_,
|
||||||
IERC20TokenV06 weth_,
|
|
||||||
TreasuryParameters memory params
|
TreasuryParameters memory params
|
||||||
)
|
)
|
||||||
public
|
public
|
||||||
@@ -66,15 +61,12 @@ contract ZrxTreasury is
|
|||||||
"VOTING_PERIOD_TOO_LONG"
|
"VOTING_PERIOD_TOO_LONG"
|
||||||
);
|
);
|
||||||
stakingProxy = stakingProxy_;
|
stakingProxy = stakingProxy_;
|
||||||
DefaultPoolOperator defaultPoolOperator_ = new DefaultPoolOperator(
|
|
||||||
stakingProxy_,
|
|
||||||
weth_
|
|
||||||
);
|
|
||||||
defaultPoolOperator = defaultPoolOperator_;
|
|
||||||
defaultPoolId = defaultPoolOperator_.poolId();
|
|
||||||
votingPeriod = params.votingPeriod;
|
votingPeriod = params.votingPeriod;
|
||||||
proposalThreshold = params.proposalThreshold;
|
proposalThreshold = params.proposalThreshold;
|
||||||
quorumThreshold = params.quorumThreshold;
|
quorumThreshold = params.quorumThreshold;
|
||||||
|
defaultPoolId = params.defaultPoolId;
|
||||||
|
IStaking.Pool memory defaultPool = stakingProxy_.getStakingPool(params.defaultPoolId);
|
||||||
|
defaultPoolOperator = DefaultPoolOperator(defaultPool.operator);
|
||||||
}
|
}
|
||||||
|
|
||||||
// solhint-disable
|
// solhint-disable
|
||||||
@@ -286,6 +278,12 @@ contract ZrxTreasury is
|
|||||||
|
|
||||||
// Add voting power for operated staking pools.
|
// Add voting power for operated staking pools.
|
||||||
for (uint256 i = 0; i != operatedPoolIds.length; i++) {
|
for (uint256 i = 0; i != operatedPoolIds.length; i++) {
|
||||||
|
for (uint256 j = 0; j != i; j++) {
|
||||||
|
require(
|
||||||
|
operatedPoolIds[i] != operatedPoolIds[j],
|
||||||
|
"getVotingPower/DUPLICATE_POOL_ID"
|
||||||
|
);
|
||||||
|
}
|
||||||
IStaking.Pool memory pool = stakingProxy.getStakingPool(operatedPoolIds[i]);
|
IStaking.Pool memory pool = stakingProxy.getStakingPool(operatedPoolIds[i]);
|
||||||
require(
|
require(
|
||||||
pool.operator == account,
|
pool.operator == account,
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contracts-treasury",
|
"name": "@0x/contracts-treasury",
|
||||||
"version": "1.1.0",
|
"version": "1.3.2",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -46,16 +46,16 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/treasury",
|
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/treasury",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^5.4.21",
|
"@0x/abi-gen": "^5.6.0",
|
||||||
"@0x/contract-addresses": "^5.11.0",
|
"@0x/contract-addresses": "^6.6.0",
|
||||||
"@0x/contracts-asset-proxy": "^3.7.8",
|
"@0x/contracts-asset-proxy": "^3.7.19",
|
||||||
"@0x/contracts-erc20": "^3.3.5",
|
"@0x/contracts-erc20": "^3.3.16",
|
||||||
"@0x/contracts-gen": "^2.0.32",
|
"@0x/contracts-gen": "^2.0.38",
|
||||||
"@0x/contracts-staking": "^2.0.34",
|
"@0x/contracts-staking": "^2.0.45",
|
||||||
"@0x/contracts-test-utils": "^5.3.23",
|
"@0x/contracts-test-utils": "^5.4.8",
|
||||||
"@0x/sol-compiler": "^4.6.1",
|
"@0x/sol-compiler": "^4.7.3",
|
||||||
"@0x/ts-doc-gen": "^0.0.28",
|
"@0x/ts-doc-gen": "^0.0.28",
|
||||||
"@0x/tslint-config": "^4.1.3",
|
"@0x/tslint-config": "^4.1.4",
|
||||||
"@types/isomorphic-fetch": "^0.0.35",
|
"@types/isomorphic-fetch": "^0.0.35",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
@@ -69,18 +69,18 @@
|
|||||||
"solhint": "^1.4.1",
|
"solhint": "^1.4.1",
|
||||||
"tslint": "5.11.0",
|
"tslint": "5.11.0",
|
||||||
"typedoc": "~0.16.11",
|
"typedoc": "~0.16.11",
|
||||||
"typescript": "3.0.1"
|
"typescript": "4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^6.2.18",
|
"@0x/base-contract": "^6.4.0",
|
||||||
"@0x/protocol-utils": "^1.3.1",
|
"@0x/protocol-utils": "^1.8.2",
|
||||||
"@0x/subproviders": "^6.4.1",
|
"@0x/subproviders": "^6.5.3",
|
||||||
"@0x/types": "^3.3.1",
|
"@0x/types": "^3.3.3",
|
||||||
"@0x/typescript-typings": "^5.1.6",
|
"@0x/typescript-typings": "^5.2.0",
|
||||||
"@0x/utils": "^6.2.0",
|
"@0x/utils": "^6.4.3",
|
||||||
"@0x/web3-wrapper": "^7.4.1",
|
"@0x/web3-wrapper": "^7.5.3",
|
||||||
"ethereum-types": "^3.4.0",
|
"ethereum-types": "^3.5.0",
|
||||||
"ethereumjs-util": "^5.1.1"
|
"ethereumjs-util": "^7.0.10"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
57
contracts/treasury/src/proposals.ts
Normal file
57
contracts/treasury/src/proposals.ts
Normal file
File diff suppressed because one or more lines are too long
222
contracts/treasury/test/proposal_test.ts
Normal file
222
contracts/treasury/test/proposal_test.ts
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
import { artifacts as erc20Artifacts, ERC20TokenEvents } from '@0x/contracts-erc20';
|
||||||
|
import { StakingContract, StakingProxyContract } from '@0x/contracts-staking';
|
||||||
|
import { blockchainTests, constants, verifyEventsFromLogs } from '@0x/contracts-test-utils';
|
||||||
|
import { BigNumber, hexUtils, logUtils } from '@0x/utils';
|
||||||
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
|
import { proposals } from '../src/proposals';
|
||||||
|
|
||||||
|
import { artifacts } from './artifacts';
|
||||||
|
import { ZrxTreasuryContract, ZrxTreasuryEvents } from './wrappers';
|
||||||
|
|
||||||
|
const SUBGRAPH_URL = 'https://api.thegraph.com/subgraphs/name/mzhu25/zeroex-staking';
|
||||||
|
const STAKING_PROXY_ADDRESS = '0xa26e80e7dea86279c6d778d702cc413e6cffa777';
|
||||||
|
const TREASURY_ADDRESS = '0x0bb1810061c2f5b2088054ee184e6c79e1591101';
|
||||||
|
const PROPOSER = process.env.PROPOSER || constants.NULL_ADDRESS;
|
||||||
|
const VOTER = '0xba4f44e774158408e2dc6c5cb65bc995f0a89180';
|
||||||
|
const VOTER_OPERATED_POOLS = ['0x0000000000000000000000000000000000000000000000000000000000000017'];
|
||||||
|
blockchainTests.configure({
|
||||||
|
fork: {
|
||||||
|
unlockedAccounts: [PROPOSER, VOTER],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
async function querySubgraphAsync(operatorAddress: string): Promise<string[]> {
|
||||||
|
const query = `
|
||||||
|
{
|
||||||
|
stakingActor(id: "${operatorAddress}") {
|
||||||
|
operatedPools {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
const response = await fetch(SUBGRAPH_URL, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
query,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
const {
|
||||||
|
data: { stakingActor },
|
||||||
|
} = await response.json();
|
||||||
|
if (stakingActor) {
|
||||||
|
return stakingActor.operatedPools.map((pool: { id: string }) => hexUtils.leftPad(pool.id));
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
blockchainTests.fork.skip('Treasury proposal mainnet fork tests', env => {
|
||||||
|
let staking: StakingContract;
|
||||||
|
let stakingProxy: StakingProxyContract;
|
||||||
|
let treasury: ZrxTreasuryContract;
|
||||||
|
let votingPeriod: BigNumber;
|
||||||
|
|
||||||
|
async function fastForwardToNextEpochAsync(): Promise<void> {
|
||||||
|
const epochEndTime = await staking.getCurrentEpochEarliestEndTimeInSeconds().callAsync();
|
||||||
|
const lastBlockTime = await env.web3Wrapper.getBlockTimestampAsync('latest');
|
||||||
|
const dt = Math.max(0, epochEndTime.minus(lastBlockTime).toNumber());
|
||||||
|
await env.web3Wrapper.increaseTimeAsync(dt);
|
||||||
|
// mine next block
|
||||||
|
await env.web3Wrapper.mineBlockAsync();
|
||||||
|
const lastPoolId = new BigNumber(await staking.lastPoolId().callAsync(), 16);
|
||||||
|
const batchExecuteCalldata = [
|
||||||
|
...[...new Array(lastPoolId.toNumber())].map((_x, i) =>
|
||||||
|
staking.finalizePool(hexUtils.leftPad(i + 1)).getABIEncodedTransactionData(),
|
||||||
|
),
|
||||||
|
staking.endEpoch().getABIEncodedTransactionData(),
|
||||||
|
...[...new Array(lastPoolId.toNumber())].map((_x, i) =>
|
||||||
|
staking.finalizePool(hexUtils.leftPad(i + 1)).getABIEncodedTransactionData(),
|
||||||
|
),
|
||||||
|
...[...new Array(lastPoolId.toNumber())].map((_x, i) =>
|
||||||
|
staking.finalizePool(hexUtils.leftPad(i + 1)).getABIEncodedTransactionData(),
|
||||||
|
),
|
||||||
|
];
|
||||||
|
await stakingProxy.batchExecute(batchExecuteCalldata).awaitTransactionSuccessAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
const abis = _.mapValues({ ...artifacts, ...erc20Artifacts }, v => v.compilerOutput.abi);
|
||||||
|
treasury = new ZrxTreasuryContract(TREASURY_ADDRESS, env.provider, env.txDefaults, abis);
|
||||||
|
votingPeriod = await treasury.votingPeriod().callAsync();
|
||||||
|
staking = new StakingContract(STAKING_PROXY_ADDRESS, env.provider, env.txDefaults);
|
||||||
|
stakingProxy = new StakingProxyContract(STAKING_PROXY_ADDRESS, env.provider, env.txDefaults);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Proposal 0', () => {
|
||||||
|
it('works', async () => {
|
||||||
|
const proposal = proposals[0];
|
||||||
|
let executionEpoch: BigNumber;
|
||||||
|
if (proposal.executionEpoch) {
|
||||||
|
executionEpoch = proposal.executionEpoch;
|
||||||
|
} else {
|
||||||
|
const currentEpoch = await staking.currentEpoch().callAsync();
|
||||||
|
executionEpoch = currentEpoch.plus(2);
|
||||||
|
}
|
||||||
|
const pools = await querySubgraphAsync(PROPOSER);
|
||||||
|
const proposeTx = treasury.propose(proposal.actions, executionEpoch, proposal.description, pools);
|
||||||
|
|
||||||
|
const calldata = proposeTx.getABIEncodedTransactionData();
|
||||||
|
logUtils.log('ZrxTreasury.propose calldata:');
|
||||||
|
logUtils.log(calldata);
|
||||||
|
|
||||||
|
const proposalId = await proposeTx.callAsync({ from: PROPOSER });
|
||||||
|
const receipt = await proposeTx.awaitTransactionSuccessAsync({ from: PROPOSER });
|
||||||
|
verifyEventsFromLogs(
|
||||||
|
receipt.logs,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
...proposal,
|
||||||
|
proposalId,
|
||||||
|
executionEpoch,
|
||||||
|
proposer: PROPOSER,
|
||||||
|
operatedPoolIds: pools,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ZrxTreasuryEvents.ProposalCreated,
|
||||||
|
);
|
||||||
|
await fastForwardToNextEpochAsync();
|
||||||
|
await fastForwardToNextEpochAsync();
|
||||||
|
await treasury
|
||||||
|
.castVote(proposalId, true, VOTER_OPERATED_POOLS)
|
||||||
|
.awaitTransactionSuccessAsync({ from: VOTER });
|
||||||
|
await env.web3Wrapper.increaseTimeAsync(votingPeriod.plus(1).toNumber());
|
||||||
|
await env.web3Wrapper.mineBlockAsync();
|
||||||
|
const executeTx = await treasury.execute(proposalId, proposal.actions).awaitTransactionSuccessAsync();
|
||||||
|
verifyEventsFromLogs(
|
||||||
|
executeTx.logs,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
proposalId,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ZrxTreasuryEvents.ProposalExecuted,
|
||||||
|
);
|
||||||
|
const recipient = '0xf9347f751a6a1467abc722ec7d80ba2698dd9d6c';
|
||||||
|
verifyEventsFromLogs(
|
||||||
|
executeTx.logs,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
_from: TREASURY_ADDRESS,
|
||||||
|
_to: recipient,
|
||||||
|
_value: new BigNumber(400_000).times('1e18'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ERC20TokenEvents.Transfer,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('Proposal 1', () => {
|
||||||
|
it('works', async () => {
|
||||||
|
const proposal = proposals[1];
|
||||||
|
let executionEpoch: BigNumber;
|
||||||
|
if (proposal.executionEpoch) {
|
||||||
|
executionEpoch = proposal.executionEpoch;
|
||||||
|
} else {
|
||||||
|
const currentEpoch = await staking.currentEpoch().callAsync();
|
||||||
|
executionEpoch = currentEpoch.plus(2);
|
||||||
|
}
|
||||||
|
const pools = await querySubgraphAsync(PROPOSER);
|
||||||
|
const proposeTx = treasury.propose(proposal.actions, executionEpoch, proposal.description, pools);
|
||||||
|
|
||||||
|
const calldata = proposeTx.getABIEncodedTransactionData();
|
||||||
|
logUtils.log('ZrxTreasury.propose calldata:');
|
||||||
|
logUtils.log(calldata);
|
||||||
|
|
||||||
|
const proposalId = await proposeTx.callAsync({ from: PROPOSER });
|
||||||
|
const receipt = await proposeTx.awaitTransactionSuccessAsync({ from: PROPOSER });
|
||||||
|
verifyEventsFromLogs(
|
||||||
|
receipt.logs,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
...proposal,
|
||||||
|
proposalId,
|
||||||
|
executionEpoch,
|
||||||
|
proposer: PROPOSER,
|
||||||
|
operatedPoolIds: pools,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ZrxTreasuryEvents.ProposalCreated,
|
||||||
|
);
|
||||||
|
await fastForwardToNextEpochAsync();
|
||||||
|
await fastForwardToNextEpochAsync();
|
||||||
|
await treasury
|
||||||
|
.castVote(proposalId, true, VOTER_OPERATED_POOLS)
|
||||||
|
.awaitTransactionSuccessAsync({ from: VOTER });
|
||||||
|
await env.web3Wrapper.increaseTimeAsync(votingPeriod.plus(1).toNumber());
|
||||||
|
await env.web3Wrapper.mineBlockAsync();
|
||||||
|
const executeTx = await treasury.execute(proposalId, proposal.actions).awaitTransactionSuccessAsync();
|
||||||
|
verifyEventsFromLogs(
|
||||||
|
executeTx.logs,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
proposalId,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ZrxTreasuryEvents.ProposalExecuted,
|
||||||
|
);
|
||||||
|
const recipient = '0xab66cc8fd10457ebc9d13b9760c835f0a4cbc487';
|
||||||
|
verifyEventsFromLogs(
|
||||||
|
executeTx.logs,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
_from: TREASURY_ADDRESS,
|
||||||
|
_to: recipient,
|
||||||
|
_value: new BigNumber(330_813).times('1e18'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_from: TREASURY_ADDRESS,
|
||||||
|
_to: recipient,
|
||||||
|
_value: new BigNumber(420000).times('1e18'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ERC20TokenEvents.Transfer,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user