Compare commits

..

5 Commits

Author SHA1 Message Date
Github Actions
2a6d66cc2a Publish
- @0x/contracts-asset-proxy@3.7.8-multiplex.0
 - @0x/contracts-broker@1.1.26-multiplex.0
 - @0x/contracts-coordinator@3.1.27-multiplex.0
 - @0x/contracts-dev-utils@1.3.25-multiplex.0
 - @0x/contracts-erc1155@2.1.26-multiplex.0
 - @0x/contracts-erc20@3.3.5-multiplex.0
 - @0x/contracts-erc721@3.1.26-multiplex.0
 - @0x/contracts-exchange-forwarder@4.2.27-multiplex.0
 - @0x/contracts-exchange-libs@4.3.26-multiplex.0
 - @0x/contracts-exchange@3.2.27-multiplex.0
 - @0x/contracts-extensions@6.2.21-multiplex.0
 - @0x/contracts-integrations@2.7.29-multiplex.0
 - @0x/contracts-multisig@4.1.27-multiplex.0
 - @0x/contracts-staking@2.0.34-multiplex.0
 - @0x/contracts-test-utils@5.3.23-multiplex.0
 - @0x/contracts-treasury@1.1.0-multiplex
 - @0x/contracts-utils@4.7.5-multiplex.0
 - @0x/contracts-zero-ex@0.20.0-multiplex
 - @0x/asset-swapper@6.3.0-multiplex
 - @0x/contract-artifacts@3.13.0-multiplex
 - @0x/contract-wrappers-test@12.2.38-multiplex.0
 - @0x/contract-wrappers@13.14.0-multiplex
 - @0x/migrations@7.0.1-multiplex.0
 - @0x/order-utils@10.4.18-multiplex.0
 - @0x/protocol-utils@1.3.1-multiplex.0
2021-03-16 22:15:04 +00:00
Github Actions
b02992a373 Updated CHANGELOGS & MD docs 2021-03-16 22:14:58 +00:00
Michael Zhu
92ad924965 Update changelogs 2021-03-16 14:47:42 -07:00
Michael Zhu
138383e95c Address PR feedback 2021-03-16 14:46:12 -07:00
Michael Zhu
0487cb7d39 Update asset-swapper to support MultiplexFeature 2021-03-16 14:46:12 -07:00
347 changed files with 6482 additions and 20554 deletions

View File

@@ -1,25 +1,25 @@
version: 2.1
version: 2
jobs:
build:
resource_class: xlarge
resource_class: medium+
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
environment:
NODE_OPTIONS: '--max-old-space-size=16384'
CONTRACTS_COMMIT_HASH: '9ed05f5'
working_directory: ~/repo
steps:
- checkout
- run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV
- run:
name: install-yarn
command: npm install --force --global yarn@1.22.0
command: npm install --force --global yarn@1.17.0
- run:
name: yarn
command: yarn --frozen-lockfile --ignore-engines install || yarn --frozen-lockfile --ignore-engines install
- setup_remote_docker
- run: yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci || yarn build:ci
- run: yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts || yarn build:ts
- run: yarn build:ci
- run: yarn build:ts
- save_cache:
key: repo-{{ .Environment.CIRCLE_SHA1 }}
paths:
@@ -31,59 +31,57 @@ jobs:
test-exchange-ganache:
resource_class: medium+
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun -p @0x/contracts-exchange -m --serial -c test:circleci
- run: yarn wsrun test:circleci @0x/contracts-exchange
test-integrations-ganache:
resource_class: medium+
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun -p @0x/contracts-integrations -m --serial -c test:circleci
- run: yarn wsrun test:circleci @0x/contracts-integrations
test-contracts-staking-ganache:
resource_class: medium+
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun -p @0x/contracts-staking -m --serial -c test:circleci
- run: yarn wsrun test:circleci @0x/contracts-staking
test-contracts-extra-ganache:
resource_class: medium+
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun -p @0x/contracts-exchange-forwarder -p @0x/contracts-coordinator -m --serial -c test:circleci
- run: yarn wsrun test:circleci @0x/contracts-exchange-forwarder @0x/contracts-coordinator
test-contracts-rest-ganache:
resource_class: medium+
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- 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
- 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
test-publish:
resource_class: large
environment:
NODE_OPTIONS: '--max-old-space-size=6442'
resource_class: medium+
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
- image: 0xorg/verdaccio
working_directory: ~/repo
steps:
@@ -97,7 +95,7 @@ jobs:
path: ~/.npm/_logs
test-doc-generation:
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:
@@ -108,18 +106,18 @@ jobs:
no_output_timeout: 1200
test-rest:
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun -p @0x/contracts-test-utils -m --serial -c test:circleci
- run: yarn wsrun -p @0x/contract-artifacts -m --serial -c test:circleci
- run: yarn wsrun -p @0x/contract-wrappers-test -m --serial -c test:circleci
- run: yarn wsrun -p @0x/migrations -m --serial -c test:circleci
- run: yarn wsrun -p @0x/order-utils -m --serial -c test:circleci
- run: yarn wsrun -p @0x/asset-swapper -m --serial -c test:circleci
- run: yarn wsrun test:circleci @0x/contracts-test-utils
- run: yarn wsrun test:circleci @0x/contract-artifacts
- run: yarn wsrun test:circleci @0x/contract-wrappers-test
- run: yarn wsrun test:circleci @0x/migrations
- run: yarn wsrun test:circleci @0x/order-utils
- run: yarn wsrun test:circleci @0x/asset-swapper
- save_cache:
key: coverage-contract-wrappers-test-{{ .Environment.CIRCLE_SHA1 }}
paths:
@@ -136,7 +134,7 @@ jobs:
resource_class: large
working_directory: ~/repo
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
steps:
- restore_cache:
keys:
@@ -147,7 +145,7 @@ jobs:
- run: yarn diff_md_docs:ci
submit-coverage:
docker:
- image: node:12
- image: nikolaik/python-nodejs:python3.7-nodejs10
working_directory: ~/repo
steps:
- restore_cache:

View File

@@ -3,6 +3,5 @@
"tabWidth": 4,
"singleQuote": true,
"trailingComma": "all",
"bracketSpacing": true,
"arrowParens": "avoid"
"bracketSpacing": true
}

View File

@@ -49,6 +49,7 @@
| Package | Version |
| ------: | :------ |
<!-- For example:
| `0x.js` | 2.0.4 |
| `Exchange Contract` | v2 |

View File

@@ -43,12 +43,12 @@ These packages are all under development. See [/contracts/README.md](/contracts/
#### 0x-specific packages
| Package | Version | Description |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| [`@0x/contract-addresses`](/packages/contract-addresses) | [![npm](https://img.shields.io/npm/v/@0x/contract-addresses.svg)](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) | [![npm](https://img.shields.io/npm/v/@0x/contract-wrappers.svg)](https://www.npmjs.com/package/@0x/contract-wrappers) | JS/TS wrappers for interacting with the 0x smart contracts |
| [`@0x/order-utils`](/packages/order-utils) | [![npm](https://img.shields.io/npm/v/@0x/order-utils.svg)](https://www.npmjs.com/package/@0x/order-utils) | A set of utilities for generating, parsing, signing and validating 0x orders |
| [`@0x/migrations`](/packages/migrations) | [![npm](https://img.shields.io/npm/v/@0x/migrations.svg)](https://www.npmjs.com/package/@0x/migrations) | Migration tool for deploying 0x smart contracts on private testnets |
| [`@0x/contract-artifacts`](/packages/contract-artifacts) | [![npm](https://img.shields.io/npm/v/@0x/contract-artifacts.svg)](https://www.npmjs.com/package/@0x/contract-artifacts) | 0x smart contract compilation artifacts | |
| [`@0x/contract-artifacts`](/packages/contract-artifacts) | [![npm](https://img.shields.io/npm/v/@0x/contract-artifacts.svg)](https://www.npmjs.com/package/@0x/contract-artifacts) | 0x smart contract compilation artifacts | |
## Usage

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "3.7.8",
"timestamp": 1615932869,
"version": "3.7.8-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-asset-proxy",
"version": "3.7.14",
"version": "3.7.8-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -51,15 +51,15 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contract-wrappers": "^13.17.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contract-wrappers": "^13.14.0-multiplex",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/tslint-config": "^4.1.3",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -67,7 +67,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereumjs-util": "^7.0.10",
"ethereumjs-util": "^5.1.1",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
"npm-run-all": "^4.1.2",
@@ -76,20 +76,20 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/contracts-erc1155": "^2.1.32",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-erc721": "^3.1.32",
"@0x/contracts-exchange-libs": "^4.3.32",
"@0x/order-utils": "^10.4.24",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"ethereum-types": "^3.5.0",
"@0x/base-contract": "^6.2.18",
"@0x/contracts-erc1155": "^2.1.26-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-erc721": "^3.1.26-multiplex.0",
"@0x/contracts-exchange-libs": "^4.3.26-multiplex.0",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"ethereum-types": "^3.4.0",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -0,0 +1,354 @@
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');
});
});
});

View File

@@ -168,7 +168,7 @@ describe('StaticCallProxy', () => {
it('should revert if the hash of the output is different than expected expected', async () => {
const staticCallData = staticCallTarget.isOddNumber(new BigNumber(0)).getABIEncodedTransactionData();
const trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
const expectedResultHash = ethUtil.bufferToHex(ethUtil.keccak256(trueAsBuffer));
const expectedResultHash = ethUtil.bufferToHex(ethUtil.sha3(trueAsBuffer));
const assetData = assetDataInterface
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
.getABIEncodedTransactionData();
@@ -199,7 +199,7 @@ describe('StaticCallProxy', () => {
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 trueAsBuffer = ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000001');
const expectedResultHash = ethUtil.bufferToHex(ethUtil.keccak256(trueAsBuffer));
const expectedResultHash = ethUtil.bufferToHex(ethUtil.sha3(trueAsBuffer));
const assetData = assetDataInterface
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)
.getABIEncodedTransactionData();
@@ -232,7 +232,7 @@ describe('StaticCallProxy', () => {
const offset = '0000000000000000000000000000000000000000000000000000000000000020';
const encodedExpectedResultWithOffset = `0x${offset}${abiEncoder.encode(expectedResults).slice(2)}`;
const expectedResultHash = ethUtil.bufferToHex(
ethUtil.keccak256(ethUtil.toBuffer(encodedExpectedResultWithOffset)),
ethUtil.sha3(ethUtil.toBuffer(encodedExpectedResultWithOffset)),
);
const assetData = assetDataInterface
.StaticCall(staticCallTarget.address, staticCallData, expectedResultHash)

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "1.1.26",
"timestamp": 1615932869,
"version": "1.1.26-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-broker",
"version": "1.1.32",
"version": "1.1.26-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -51,20 +51,20 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-erc721": "^3.1.32",
"@0x/contracts-exchange": "^3.2.33",
"@0x/contracts-exchange-libs": "^4.3.32",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-erc721": "^3.1.26-multiplex.0",
"@0x/contracts-exchange": "^3.2.27-multiplex.0",
"@0x/contracts-exchange-libs": "^4.3.26-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -81,14 +81,14 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/order-utils": "^10.4.24",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0"
"@0x/base-contract": "^6.2.18",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"ethereum-types": "^3.4.0"
},
"publishConfig": {
"access": "public"

View File

@@ -7,10 +7,7 @@ export interface GodsUnchainedProperties {
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([
{ name: 'godsUnchainedAddress', type: 'address' },
{ name: 'validatorAddress', type: 'address' },

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "3.1.27",
"timestamp": 1615932869,
"version": "3.1.27-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-coordinator",
"version": "3.1.33",
"version": "3.1.27-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -52,17 +52,17 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-dev-utils": "^1.3.31",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-gen": "^2.0.38",
"@0x/dev-utils": "^4.2.7",
"@0x/order-utils": "^10.4.24",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-dev-utils": "^1.3.25-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/dev-utils": "^4.2.1",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -79,20 +79,20 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/assert": "^3.0.27",
"@0x/base-contract": "^6.4.0",
"@0x/contract-addresses": "^6.3.0",
"@0x/contracts-exchange": "^3.2.33",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/json-schemas": "^6.1.3",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0",
"@0x/assert": "^3.0.21",
"@0x/base-contract": "^6.2.18",
"@0x/contract-addresses": "^5.11.0",
"@0x/contracts-exchange": "^3.2.27-multiplex.0",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/json-schemas": "^5.4.1",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"ethereum-types": "^3.4.0",
"http-status-codes": "^1.3.2"
},
"publishConfig": {

View File

@@ -1,4 +1,8 @@
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';
export const assert = {

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "1.3.25",
"timestamp": 1615932869,
"version": "1.3.25-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-dev-utils",
"version": "1.3.31",
"version": "1.3.25-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -41,18 +41,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/dev-utils",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/assert": "^3.0.27",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/assert": "^3.0.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/utils": "^6.2.0",
"ethereum-types": "^3.4.0",
"ethers": "~4.0.4",
"npm-run-all": "^4.1.2",
"shx": "^0.2.2",
@@ -60,10 +60,10 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/base-contract": "^6.2.18",
"@types/node": "12.12.54"
},
"publishConfig": {

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "2.1.26",
"timestamp": 1615932869,
"version": "2.1.26-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-erc1155",
"version": "2.1.32",
"version": "2.1.26-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -52,15 +52,15 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -68,7 +68,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.5.0",
"ethereum-types": "^3.4.0",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
"npm-run-all": "^4.1.2",
@@ -77,13 +77,13 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/base-contract": "^6.2.18",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "3.3.5",
"timestamp": 1615932869,
"version": "3.3.5-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-erc20",
"version": "3.3.11",
"version": "3.3.5-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -51,18 +51,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -70,7 +70,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.5.0",
"ethereum-types": "^3.4.0",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -79,10 +79,10 @@
"solhint": "^1.4.1",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0"
"@0x/base-contract": "^6.2.18"
},
"publishConfig": {
"access": "public"

View File

@@ -39,8 +39,8 @@ describe('EtherToken', () => {
artifacts.WETH9,
provider,
{
...txDefaults,
gasPrice,
...txDefaults,
},
artifacts,
);

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "3.1.26",
"timestamp": 1615932869,
"version": "3.1.26-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-erc721",
"version": "3.1.32",
"version": "3.1.26-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -52,18 +52,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -71,7 +71,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.5.0",
"ethereum-types": "^3.4.0",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -81,10 +81,10 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0"
"@0x/base-contract": "^6.2.18"
},
"publishConfig": {
"access": "public"

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "4.2.27",
"timestamp": 1615932869,
"version": "4.2.27-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-exchange-forwarder",
"version": "4.2.33",
"version": "4.2.27-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -52,25 +52,25 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-dev-utils": "^1.3.31",
"@0x/contracts-erc1155": "^2.1.32",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-erc721": "^3.1.32",
"@0x/contracts-exchange": "^3.2.33",
"@0x/contracts-exchange-libs": "^4.3.32",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/order-utils": "^10.4.24",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-dev-utils": "^1.3.25-multiplex.0",
"@0x/contracts-erc1155": "^2.1.26-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-erc721": "^3.1.26-multiplex.0",
"@0x/contracts-exchange": "^3.2.27-multiplex.0",
"@0x/contracts-exchange-libs": "^4.3.26-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -87,12 +87,12 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/typescript-typings": "^5.2.0",
"ethereum-types": "^3.5.0"
"@0x/base-contract": "^6.2.18",
"@0x/typescript-typings": "^5.1.6",
"ethereum-types": "^3.4.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "4.3.26",
"timestamp": 1615932869,
"version": "4.3.26-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-exchange-libs",
"version": "4.3.32",
"version": "4.3.26-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -52,14 +52,14 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/libs",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-gen": "^2.0.38",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/subproviders": "^6.5.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-gen": "^2.0.32",
"@0x/dev-utils": "^4.2.1",
"@0x/sol-compiler": "^4.6.1",
"@0x/subproviders": "^6.4.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -67,7 +67,7 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereumjs-util": "^7.0.10",
"ethereumjs-util": "^5.1.1",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -77,17 +77,17 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/order-utils": "^10.4.24",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0"
"@0x/base-contract": "^6.2.18",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"ethereum-types": "^3.4.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "3.2.27",
"timestamp": 1615932869,
"version": "3.2.27-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-exchange",
"version": "3.2.33",
"version": "3.2.27-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -52,21 +52,21 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/protocol",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-exchange-libs": "^4.3.32",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-multisig": "^4.1.33",
"@0x/contracts-staking": "^2.0.40",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-exchange-libs": "^4.3.26-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-multisig": "^4.1.27-multiplex.0",
"@0x/contracts-staking": "^2.0.34-multiplex.0",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -74,8 +74,8 @@
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.5.0",
"ethereumjs-util": "^7.0.10",
"ethereum-types": "^3.4.0",
"ethereumjs-util": "^5.1.1",
"js-combinatorics": "^0.5.3",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -85,16 +85,16 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/contracts-dev-utils": "^1.3.31",
"@0x/contracts-erc1155": "^2.1.32",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-erc721": "^3.1.32",
"@0x/order-utils": "^10.4.24",
"@0x/utils": "^6.4.3",
"@0x/base-contract": "^6.2.18",
"@0x/contracts-dev-utils": "^1.3.25-multiplex.0",
"@0x/contracts-erc1155": "^2.1.26-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-erc721": "^3.1.26-multiplex.0",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/utils": "^6.2.0",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -13,11 +13,7 @@ export const exchangeDataEncoder = {
.getABIEncodedTransactionData();
} else if (constants.BATCH_FILL_FN_NAMES.indexOf(fnName) !== -1) {
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();
} else if (constants.MARKET_FILL_FN_NAMES.indexOf(fnName) !== -1) {
const fillAsset = /Buy/.test(fnName) ? 'makerAssetAmount' : 'takerAssetAmount';

View File

@@ -39,10 +39,7 @@ blockchainTests.resets('Reentrancy Tests', env => {
// Handle tuples.
if (item.type === 'tuple') {
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.
if (item.type === 'string') {

View File

@@ -86,7 +86,7 @@ blockchainTests.resets('MixinSignatureValidator', env => {
const SIGNATURE_LENGTH = 65;
const generateRandomSignature = (): string => hexUtils.random(SIGNATURE_LENGTH);
const hashBytes = (bytesHex: string): string => hexUtils.hash(bytesHex);
const hashBytes = (bytesHex: string): string => ethUtil.bufferToHex(ethUtil.sha3(ethUtil.toBuffer(bytesHex)));
const signDataHex = (dataHex: string, privateKey: Buffer): string => {
const ecSignature = ethUtil.ecsign(ethUtil.toBuffer(dataHex), privateKey);
return hexUtils.concat(ecSignature.v, ecSignature.r, ecSignature.s);

View File

@@ -12,12 +12,12 @@ export abstract class AbstractBalanceAndProxyAllowanceFetcher {
* @param userAddress Ethereum address for which to fetch the balance
* @return Balance amount in base units
*/
public abstract getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract async getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
/**
* Get the 0x asset proxy allowance of assetData for userAddress
* @param assetData AssetData for which to fetch the allowance
* @param userAddress Ethereum address for which to fetch the allowance
* @return Allowance amount in base units
*/
public abstract getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract async getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
}

View File

@@ -1,8 +1,8 @@
import { BigNumber } from '@0x/utils';
export abstract class AbstractBalanceAndProxyAllowanceLazyStore {
public abstract getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract async getBalanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract async getProxyAllowanceAsync(assetData: string, userAddress: string): Promise<BigNumber>;
public abstract setBalance(assetData: string, userAddress: string, balance: BigNumber): void;
public abstract deleteBalance(assetData: string, userAddress: string): void;
public abstract setProxyAllowance(assetData: string, userAddress: string, proxyAllowance: BigNumber): void;

View File

@@ -11,5 +11,5 @@ export abstract class AbstractOrderFilledCancelledFetcher {
* @param orderHash OrderHash of order we are interested in
* @return FilledTakerAmount
*/
public abstract getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
public abstract async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
}

View File

@@ -1,7 +1,7 @@
import { BigNumber } from '@0x/utils';
export abstract class AbstractOrderFilledCancelledLazyStore {
public abstract getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
public abstract async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
public abstract setFilledTakerAmount(orderHash: string, balance: BigNumber): void;
public abstract deleteFilledTakerAmount(orderHash: string): void;
public abstract setIsCancelled(orderHash: string, isCancelled: boolean): void;

View File

@@ -109,11 +109,7 @@ export class ExchangeWrapper {
opts: { makerAssetFillAmount: BigNumber; gas?: number; gasPrice?: BigNumber },
): Promise<TransactionReceiptWithDecodedLogs> {
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 });
}
public async marketSellOrdersFillOrKillAsync(

View File

@@ -18,7 +18,6 @@ import {
IsolatedExchangeFillEventArgs as FillEventArgs,
} from '../wrappers';
export { Order } from '@0x/types';
export interface AssetBalances {
[assetData: string]: { [address: string]: BigNumber };
}
@@ -28,6 +27,7 @@ export interface IsolatedExchangeEvents {
transferFromCalls: DispatchTransferFromCallArgs[];
}
export type Order = Order;
export type Numberish = string | number | BigNumber;
export const DEFAULT_GOOD_SIGNATURE = createGoodSignature();

View File

@@ -12,6 +12,7 @@ import { ReferenceFunctions as UtilReferenceFunctions, SafeMathRevertErrors } fr
import { FillResults, Order } from '@0x/types';
import { AnyRevertError, BigNumber, ExchangeRevertErrors, hexUtils, StringRevertError } from '@0x/utils';
import { LogEntry, LogWithDecodedArgs } from 'ethereum-types';
import * as ethjs from 'ethereumjs-util';
import * as _ from 'lodash';
import { artifacts } from './artifacts';
@@ -103,7 +104,7 @@ blockchainTests('Exchange wrapper functions unit tests.', env => {
// Creates a deterministic order signature, even though no signature validation
// actually occurs in the test contract.
function createOrderSignature(order: Order): string {
return hexUtils.hash(orderHashUtils.getOrderHashHex(order));
return ethjs.bufferToHex(ethjs.sha3(ethjs.toBuffer(orderHashUtils.getOrderHashHex(order))));
}
// Asserts that `_fillOrder()` was called in the same order and with the same

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "6.2.21",
"timestamp": 1615932869,
"version": "6.2.21-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-extensions",
"version": "6.2.27",
"version": "6.2.21-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -52,23 +52,23 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-dev-utils": "^1.3.31",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-erc721": "^3.1.32",
"@0x/contracts-exchange": "^3.2.33",
"@0x/contracts-exchange-libs": "^4.3.32",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/order-utils": "^10.4.24",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-dev-utils": "^1.3.25-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-erc721": "^3.1.26-multiplex.0",
"@0x/contracts-exchange": "^3.2.27-multiplex.0",
"@0x/contracts-exchange-libs": "^4.3.26-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -77,7 +77,7 @@
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereumjs-abi": "0.6.5",
"ethereumjs-util": "^7.0.10",
"ethereumjs-util": "^5.1.1",
"lodash": "^4.17.11",
"make-promises-safe": "^1.1.0",
"mocha": "^6.2.0",
@@ -87,13 +87,13 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/typescript-typings": "^5.2.0",
"ethereum-types": "^3.5.0"
"@0x/base-contract": "^6.2.18",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/typescript-typings": "^5.1.6",
"ethereum-types": "^3.4.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-integrations",
"version": "2.7.48",
"version": "2.7.29-multiplex.0",
"private": true,
"engines": {
"node": ">=6.12"
@@ -52,25 +52,25 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/extensions",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contract-addresses": "^6.3.0",
"@0x/contract-wrappers": "^13.17.0",
"@0x/contracts-broker": "^1.1.32",
"@0x/contracts-coordinator": "^3.1.33",
"@0x/contracts-dev-utils": "^1.3.31",
"@0x/contracts-exchange-forwarder": "^4.2.33",
"@0x/contracts-exchange-libs": "^4.3.32",
"@0x/contracts-extensions": "^6.2.27",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-utils": "^4.7.11",
"@0x/abi-gen": "^5.4.21",
"@0x/contract-addresses": "^5.11.0",
"@0x/contract-wrappers": "^13.14.0-multiplex",
"@0x/contracts-broker": "^1.1.26-multiplex.0",
"@0x/contracts-coordinator": "^3.1.27-multiplex.0",
"@0x/contracts-dev-utils": "^1.3.25-multiplex.0",
"@0x/contracts-exchange-forwarder": "^4.2.27-multiplex.0",
"@0x/contracts-exchange-libs": "^4.3.26-multiplex.0",
"@0x/contracts-extensions": "^6.2.21-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/coordinator-server": "^1.0.5",
"@0x/dev-utils": "^4.2.7",
"@0x/migrations": "^8.0.9",
"@0x/order-utils": "^10.4.24",
"@0x/protocol-utils": "^1.7.0",
"@0x/sol-compiler": "^4.7.3",
"@0x/tslint-config": "^4.1.4",
"@0x/web3-wrapper": "^7.5.3",
"@0x/dev-utils": "^4.2.1",
"@0x/migrations": "^7.0.1-multiplex.0",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/protocol-utils": "^1.3.1-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/tslint-config": "^4.1.3",
"@0x/web3-wrapper": "^7.4.1",
"@azure/core-asynciterator-polyfill": "^1.0.0",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
@@ -90,26 +90,26 @@
"solhint": "^1.4.1",
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/asset-swapper": "^6.17.1",
"@0x/base-contract": "^6.4.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-erc1155": "^2.1.32",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-erc721": "^3.1.32",
"@0x/contracts-exchange": "^3.2.33",
"@0x/contracts-multisig": "^4.1.33",
"@0x/contracts-staking": "^2.0.40",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-zero-ex": "^0.25.0",
"@0x/subproviders": "^6.5.3",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0",
"ethereumjs-util": "^7.0.10",
"@0x/asset-swapper": "^6.3.0-multiplex",
"@0x/base-contract": "^6.2.18",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-erc1155": "^2.1.26-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-erc721": "^3.1.26-multiplex.0",
"@0x/contracts-exchange": "^3.2.27-multiplex.0",
"@0x/contracts-multisig": "^4.1.27-multiplex.0",
"@0x/contracts-staking": "^2.0.34-multiplex.0",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-zero-ex": "^0.20.0-multiplex",
"@0x/subproviders": "^6.4.1",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"ethereum-types": "^3.4.0",
"ethereumjs-util": "^6.2.0",
"lodash": "^4.17.11"
},
"publishConfig": {

View File

@@ -534,14 +534,9 @@ blockchainTests.skip('Coordinator Client', env => {
const signedOrders = [signedOrder, signedOrderWithDifferentFeeRecipient];
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
await coordinatorClient
.batchFillOrdersAsync(
signedOrders,
takerAssetFillAmounts,
signedOrders.map(o => o.signature),
{
from: takerAddress,
},
)
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
from: takerAddress,
})
.then(res => {
expect(res).to.be.undefined();
})
@@ -575,14 +570,9 @@ blockchainTests.skip('Coordinator Client', env => {
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
await coordinatorClient
.batchFillOrdersAsync(
signedOrders,
takerAssetFillAmounts,
signedOrders.map(o => o.signature),
{
from: takerAddress,
},
)
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
from: takerAddress,
})
.then(res => {
expect(res).to.be.undefined();
})
@@ -610,14 +600,9 @@ blockchainTests.skip('Coordinator Client', env => {
const signedOrders = [signedOrder, signedOrderWithDifferentCoordinatorOperator];
const takerAssetFillAmounts = [takerTokenFillAmount, takerTokenFillAmount, takerTokenFillAmount];
await coordinatorClient
.batchFillOrdersAsync(
signedOrders,
takerAssetFillAmounts,
signedOrders.map(o => o.signature),
{
from: takerAddress,
},
)
.batchFillOrdersAsync(signedOrders, takerAssetFillAmounts, signedOrders.map(o => o.signature), {
from: takerAddress,
})
.then(res => {
expect(res).to.be.undefined();
})

View File

@@ -267,11 +267,7 @@ blockchainTests.resets('Coordinator integration tests', env => {
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
await balanceStore.updateBalancesAsync();
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 () => {
await balanceStore.updateBalancesAsync();
@@ -284,11 +280,7 @@ blockchainTests.resets('Coordinator integration tests', env => {
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
await balanceStore.updateBalancesAsync();
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 () => {
await balanceStore.updateBalancesAsync();
@@ -301,11 +293,7 @@ blockchainTests.resets('Coordinator integration tests', env => {
expectedBalances.simulateFills(orders, taker.address, txReceipt, deployment, value);
await balanceStore.updateBalancesAsync();
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 () => {
const approvalSignature = hexUtils.concat(
@@ -372,11 +360,7 @@ blockchainTests.resets('Coordinator integration tests', env => {
.executeTransaction(transaction, maker.address, transaction.signature, [])
.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 () => {
const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrdersUpTo, []);

View File

@@ -63,9 +63,11 @@ blockchainTests.fork('DevUtils dydx order validation tests', env => {
let dai: ERC20TokenContract;
let usdc: ERC20TokenContract;
let devUtils: DevUtilsContract;
let accountOwner: string;
let minMarginRatio: number;
before(async () => {
[accountOwner] = await env.getAccountAddressesAsync();
dydx = new IDydxContract(DYDX_ADDRESS, env.provider, env.txDefaults);
dai = new ERC20TokenContract(DAI_ADDRESS, env.provider, env.txDefaults);
usdc = new ERC20TokenContract(USDC_ADDRESS, env.provider, env.txDefaults);

View File

@@ -186,13 +186,13 @@ blockchainTests.resets('LibAssetData', env => {
});
it('should decode multiasset data', async () => {
expect(
await devUtils.decodeMultiAssetData(KNOWN_MULTI_ASSET_ENCODING.assetData).callAsync(),
).to.deep.equal([
AssetProxyId.MultiAsset,
KNOWN_MULTI_ASSET_ENCODING.amounts,
KNOWN_MULTI_ASSET_ENCODING.nestedAssetData,
]);
expect(await devUtils.decodeMultiAssetData(KNOWN_MULTI_ASSET_ENCODING.assetData).callAsync()).to.deep.equal(
[
AssetProxyId.MultiAsset,
KNOWN_MULTI_ASSET_ENCODING.amounts,
KNOWN_MULTI_ASSET_ENCODING.nestedAssetData,
],
);
});
it('should encode StaticCall data', async () => {

View File

@@ -278,21 +278,15 @@ blockchainTests.resets('matchOrders integration tests', env => {
ExchangeRevertErrors.BatchMatchOrdersErrorCodes.InvalidLengthRightSignatures,
);
let tx = deployment.exchange
.batchMatchOrders(
leftOrders,
rightOrders,
leftOrders.map(order => order.signature),
[rightOrders[0].signature],
)
.batchMatchOrders(leftOrders, rightOrders, leftOrders.map(order => order.signature), [
rightOrders[0].signature,
])
.awaitTransactionSuccessAsync({ from: matcher.address });
await expect(tx).to.revertWith(expectedError);
tx = deployment.exchange
.batchMatchOrdersWithMaximalFill(
leftOrders,
rightOrders,
leftOrders.map(order => order.signature),
[rightOrders[0].signature],
)
.batchMatchOrdersWithMaximalFill(leftOrders, rightOrders, leftOrders.map(order => order.signature), [
rightOrders[0].signature,
])
.awaitTransactionSuccessAsync({ from: matcher.address });
return expect(tx).to.revertWith(expectedError);
});
@@ -481,10 +475,7 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
matchIndices: [
[0, 0],
[1, 0],
],
matchIndices: [[0, 0], [1, 0]],
shouldMaximallyFill: false,
});
});
@@ -533,10 +524,7 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT],
rightOrdersTakerAssetFilledAmounts: [constants.ZERO_AMOUNT, constants.ZERO_AMOUNT],
matchIndices: [
[0, 0],
[0, 1],
],
matchIndices: [[0, 0], [0, 1]],
shouldMaximallyFill: false,
});
});
@@ -638,11 +626,7 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [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,
});
});
@@ -817,11 +801,7 @@ blockchainTests.resets('matchOrders integration tests', env => {
],
leftOrdersTakerAssetFilledAmounts: [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,
});
});

View File

@@ -106,12 +106,7 @@ blockchainTests.fork.resets('Forwarder mainnet tests', env => {
orders[1].takerAssetAmount.dividedToIntegerBy(2),
);
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
.marketSellOrdersWithEth(
orders,
orders.map(o => o.signature),
[],
[],
)
.marketSellOrdersWithEth(orders, orders.map(o => o.signature), [], [])
.callAsync({
from: takerAddress,
value: ethSellAmount,
@@ -166,13 +161,7 @@ blockchainTests.fork.resets('Forwarder mainnet tests', env => {
orders[1].makerAssetAmount.dividedToIntegerBy(2),
);
const [wethSpentAmount, makerAssetAcquiredAmount] = await forwarder
.marketBuyOrdersWithEth(
orders,
makerAssetBuyAmount,
orders.map(o => o.signature),
[],
[],
)
.marketBuyOrdersWithEth(orders, makerAssetBuyAmount, orders.map(o => o.signature), [], [])
.callAsync({
from: takerAddress,
value: ethSellAmount,

View File

@@ -190,14 +190,9 @@ export function MakerMixin<TBase extends Constructor>(Base: TBase): TBase & Cons
rightTakerAssetData,
makerFeeAssetData,
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
const leftOrder = await this.signOrderAsync({

View File

@@ -8,10 +8,7 @@ import { Actor, Constructor } from './base';
* Useful for BalanceStore.
*/
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));
}
/**
@@ -22,5 +19,5 @@ export function filterActorsByRole<TClass extends Constructor>(
actors: Actor[],
role: TClass,
): Array<InstanceType<typeof role>> {
return actors.filter(actor => actor.mixins.includes(role.name)) as Array<InstanceType<typeof role>>;
return actors.filter(actor => actor.mixins.includes(role.name)) as InstanceType<typeof role>;
}

View File

@@ -77,24 +77,19 @@ tests('Exchange signature validation fuzz tests', env => {
before(async () => {
chainId = await env.web3Wrapper.getChainIdAsync();
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, {
numErc20TokensToDeploy: 0,
numErc721TokensToDeploy: 0,
numErc1155TokensToDeploy: 0,
});
exchange = deployment.exchange;
walletContractAddress = (
await TestSignatureValidationWalletContract.deployFrom0xArtifactAsync(
artifacts.TestSignatureValidationWallet,
env.provider,
env.txDefaults,
{},
)
).address;
walletContractAddress = (await TestSignatureValidationWalletContract.deployFrom0xArtifactAsync(
artifacts.TestSignatureValidationWallet,
env.provider,
env.txDefaults,
{},
)).address;
// This just has to be a contract address that doesn't implement the
// wallet spec.
notWalletContractAddress = exchange.address;
@@ -720,7 +715,7 @@ tests('Exchange signature validation fuzz tests', env => {
invalidTestTransactionMangledSignature(),
];
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
protected async *_assertionGenerator(): AsyncIterableIterator<AssertionResult | void> {
while (true) {
@@ -728,7 +723,7 @@ tests('Exchange signature validation fuzz tests', env => {
yield (await action!.next()).value;
}
}
})(simulationEnvironment);
}(simulationEnvironment);
simulation.resets = true;
return simulation.fuzzAsync();
});

View File

@@ -1,61 +1,7 @@
[
{
"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,
"version": "4.1.27",
"timestamp": 1615932869,
"version": "4.1.27-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-multisig",
"version": "4.1.33",
"version": "4.1.27-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -49,18 +49,18 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/multisig",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/sol-compiler": "^4.7.3",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/sol-compiler": "^4.6.1",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
"@types/node": "12.12.54",
@@ -75,12 +75,12 @@
"shx": "^0.2.2",
"solhint": "^1.4.1",
"tslint": "5.11.0",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/typescript-typings": "^5.2.0",
"ethereum-types": "^3.5.0"
"@0x/base-contract": "^6.2.18",
"@0x/typescript-typings": "^5.1.6",
"ethereum-types": "^3.4.0"
},
"publishConfig": {
"access": "public"

View File

@@ -1,62 +1,7 @@
[
{
"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,
"version": "2.0.34",
"timestamp": 1615932869,
"version": "2.0.34-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,55 +0,0 @@
/*
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;
}
}

View File

@@ -53,10 +53,6 @@ contract MixinExchangeFees is
{
_assertValidProtocolFee(protocolFee);
if (protocolFee == 0) {
return;
}
// Transfer the protocol fee to this address if it should be paid in
// WETH.
if (msg.value == 0) {

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-staking",
"version": "2.0.40",
"version": "2.0.34-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -41,7 +41,7 @@
"config": {
"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": "./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"
"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"
},
"repository": {
"type": "git",
@@ -53,20 +53,20 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/tokens",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-dev-utils": "^1.3.31",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-exchange-libs": "^4.3.32",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-utils": "^4.7.11",
"@0x/dev-utils": "^4.2.7",
"@0x/order-utils": "^10.4.24",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-dev-utils": "^1.3.25-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-exchange-libs": "^4.3.26-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-utils": "^4.7.5-multiplex.0",
"@0x/dev-utils": "^4.2.1",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/types": "^3.3.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/tslint-config": "^4.1.3",
"@0x/types": "^3.3.1",
"@0x/web3-wrapper": "^7.4.1",
"@types/lodash": "4.14.104",
"@types/node": "12.12.54",
"chai": "^4.0.1",
@@ -84,15 +84,15 @@
"truffle": "^5.0.32",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"ethereum-types": "^3.5.0",
"ethereumjs-util": "^7.0.10"
"@0x/base-contract": "^6.2.18",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"ethereum-types": "^3.4.0",
"ethereumjs-util": "^5.1.1"
},
"publishConfig": {
"access": "public"

View File

@@ -4,7 +4,6 @@ import { DecodedLogArgs, LogWithDecodedArgs } from 'ethereum-types';
import { constants as stakingConstants } from './constants';
export { Numberish } from '@0x/contracts-test-utils';
// tslint:disable:max-classes-per-file
export interface StakingParams {
@@ -260,3 +259,5 @@ export class AggregatedStats {
export interface AggregatedStatsByEpoch {
[epoch: string]: AggregatedStats;
}
export type Numberish = Numberish;

View File

@@ -157,11 +157,11 @@ export class FinalizerActor extends BaseActor {
const delegators = delegatorsByPoolId[poolId];
delegatorBalancesByPoolId[poolId] = {};
for (const delegator of delegators) {
delegatorBalancesByPoolId[poolId][delegator] = (
await this._stakingApiWrapper.stakingContract
.getStakeDelegatedToPoolByOwner(delegator, poolId)
.callAsync()
).currentEpochBalance;
delegatorBalancesByPoolId[poolId][
delegator
] = (await this._stakingApiWrapper.stakingContract
.getStakeDelegatedToPoolByOwner(delegator, poolId)
.callAsync()).currentEpochBalance;
}
}
return delegatorBalancesByPoolId;
@@ -253,10 +253,7 @@ export class FinalizerActor extends BaseActor {
const totalFeesCollected = BigNumber.sum(...activePools.map(p => p.feesCollected));
const totalWeightedStake = BigNumber.sum(...activePools.map(p => p.weightedStake));
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(
activePools.map(async pool =>

View File

@@ -33,7 +33,6 @@ import * as MixinStakingPool from '../test/generated-artifacts/MixinStakingPool.
import * as MixinStakingPoolRewards from '../test/generated-artifacts/MixinStakingPoolRewards.json';
import * as MixinStorage from '../test/generated-artifacts/MixinStorage.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 TestAssertStorageParams from '../test/generated-artifacts/TestAssertStorageParams.json';
import * as TestCobbDouglas from '../test/generated-artifacts/TestCobbDouglas.json';
@@ -62,7 +61,6 @@ import * as TestStorageLayoutAndConstants from '../test/generated-artifacts/Test
import * as ZrxVault from '../test/generated-artifacts/ZrxVault.json';
export const artifacts = {
Staking: Staking as ContractArtifact,
StakingPatch: StakingPatch as ContractArtifact,
StakingProxy: StakingProxy as ContractArtifact,
ZrxVault: ZrxVault as ContractArtifact,
MixinExchangeFees: MixinExchangeFees as ContractArtifact,

View File

@@ -102,15 +102,13 @@ blockchainTests('Migration tests', env => {
});
it('should set the correct initial params', async () => {
const stakingProxyContractAddress = (
await StakingProxyContract.deployFrom0xArtifactAsync(
artifacts.StakingProxy,
env.provider,
env.txDefaults,
artifacts,
stakingContract.address,
)
).address;
const stakingProxyContractAddress = (await StakingProxyContract.deployFrom0xArtifactAsync(
artifacts.StakingProxy,
env.provider,
env.txDefaults,
artifacts,
stakingContract.address,
)).address;
const stakingProxyContract = new StakingContract(
stakingProxyContractAddress,

View File

@@ -1,66 +0,0 @@
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

View File

@@ -12,6 +12,7 @@ import {
blockchainTests.resets('Exchange Unit Tests', env => {
// Addresses
let nonOwner: string;
let owner: string;
let nonExchange: string;
let exchange: string;
@@ -23,7 +24,7 @@ blockchainTests.resets('Exchange Unit Tests', env => {
before(async () => {
// Set up addresses for testing.
[, owner, nonExchange, exchange, nonAuthority, authority] = await env.getAccountAddressesAsync();
[nonOwner, owner, nonExchange, exchange, nonAuthority, authority] = await env.getAccountAddressesAsync();
// Deploy the Exchange Manager contract.
exchangeManager = await TestExchangeManagerContract.deployFrom0xArtifactAsync(

View File

@@ -543,7 +543,7 @@ blockchainTests.resets('Finalizer unit tests', env => {
const expectedPoolRewards = await calculatePoolRewardsAsync(INITIAL_BALANCE, pools);
const [pool, reward] = _.sampleSize(shortZip(pools, expectedPoolRewards), 1)[0];
return assertUnfinalizedPoolRewardsAsync(pool.poolId, {
totalReward: reward,
totalReward: (reward as any) as BigNumber,
membersStake: pool.membersStake,
});
});

View File

@@ -12,13 +12,17 @@ import * as _ from 'lodash';
import { artifacts } from '../artifacts';
import { TestCobbDouglasContract } from '../wrappers';
// tslint:disable: no-unnecessary-type-assertion
blockchainTests('LibCobbDouglas unit tests', env => {
const FUZZ_COUNT = 1024;
const PRECISION = 15;
let testContract: TestCobbDouglasContract;
let ownerAddress: string;
let notOwnerAddress: string;
before(async () => {
[ownerAddress, notOwnerAddress] = await env.getAccountAddressesAsync();
testContract = await TestCobbDouglasContract.deployFrom0xArtifactAsync(
artifacts.TestCobbDouglas,
env.provider,
@@ -207,3 +211,4 @@ blockchainTests('LibCobbDouglas unit tests', env => {
});
});
});
// tslint:enable:no-unnecessary-type-assertion

View File

@@ -31,7 +31,6 @@ export * from '../test/generated-wrappers/mixin_staking_pool';
export * from '../test/generated-wrappers/mixin_staking_pool_rewards';
export * from '../test/generated-wrappers/mixin_storage';
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/test_assert_storage_params';
export * from '../test/generated-wrappers/test_cobb_douglas';

View File

@@ -40,7 +40,6 @@
"test/generated-artifacts/MixinStakingPoolRewards.json",
"test/generated-artifacts/MixinStorage.json",
"test/generated-artifacts/Staking.json",
"test/generated-artifacts/StakingPatch.json",
"test/generated-artifacts/StakingProxy.json",
"test/generated-artifacts/TestAssertStorageParams.json",
"test/generated-artifacts/TestCobbDouglas.json",

View File

@@ -1,62 +1,7 @@
[
{
"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,
"version": "5.3.23",
"timestamp": 1615932869,
"version": "5.3.23-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex.0 - _March 16, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-test-utils",
"version": "5.4.3",
"version": "5.3.23-multiplex.0",
"engines": {
"node": ">=6.12"
},
@@ -34,28 +34,28 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/test-utils",
"devDependencies": {
"@0x/sol-compiler": "^4.7.3",
"@0x/tslint-config": "^4.1.4",
"@0x/sol-compiler": "^4.6.1",
"@0x/tslint-config": "^4.1.3",
"npm-run-all": "^4.1.2",
"shx": "^0.2.2",
"tslint": "5.11.0",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/assert": "^3.0.27",
"@0x/base-contract": "^6.4.0",
"@0x/contract-addresses": "^6.3.0",
"@0x/dev-utils": "^4.2.7",
"@0x/json-schemas": "^6.1.3",
"@0x/order-utils": "^10.4.24",
"@0x/sol-coverage": "^4.0.37",
"@0x/sol-profiler": "^4.1.27",
"@0x/sol-trace": "^3.0.37",
"@0x/subproviders": "^6.5.3",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"@0x/assert": "^3.0.21",
"@0x/base-contract": "^6.2.18",
"@0x/contract-addresses": "^5.11.0",
"@0x/dev-utils": "^4.2.1",
"@0x/json-schemas": "^5.4.1",
"@0x/order-utils": "^10.4.18-multiplex.0",
"@0x/sol-coverage": "^4.0.31",
"@0x/sol-profiler": "^4.1.21",
"@0x/sol-trace": "^3.0.31",
"@0x/subproviders": "^6.4.1",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"@types/bn.js": "^4.11.0",
"@types/js-combinatorics": "^0.5.29",
"@types/lodash": "4.14.104",
@@ -67,8 +67,8 @@
"chai-bignumber": "^3.0.0",
"decimal.js": "^10.2.0",
"dirty-chai": "^2.0.1",
"ethereum-types": "^3.5.0",
"ethereumjs-util": "^7.0.10",
"ethereum-types": "^3.4.0",
"ethereumjs-util": "^5.1.1",
"ethers": "~4.0.4",
"js-combinatorics": "^0.5.3",
"lodash": "^4.17.11",

View File

@@ -77,7 +77,7 @@ export const constants = {
ZERO_AMOUNT: new BigNumber(0),
PERCENTAGE_DENOMINATOR: new BigNumber(10).pow(18),
TIME_BUFFER: new BigNumber(1000),
KECCAK256_NULL: ethUtil.bufferToHex(ethUtil.keccak256(Buffer.alloc(0))),
KECCAK256_NULL: ethUtil.addHexPrefix(ethUtil.bufferToHex(ethUtil.SHA3_NULL)),
MAX_UINT256_ROOT: new BigNumber('340282366920938463463374607431768211456'),
ONE_ETHER: new BigNumber(1e18),
EIP712_DOMAIN_NAME: '0x Protocol',

View File

@@ -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<{}> {
return _.transform(obj, (result, value, key) => {
const currentKey = mapKeys(key) || key;
result[currentKey] = _.isObject(value) ? replaceKeysDeep(value as {}, mapKeys) : (value as {});
result[currentKey] = _.isObject(value) ? replaceKeysDeep(value, mapKeys) : value;
});
}

View File

@@ -22,14 +22,14 @@ export class OrderFactory {
): Promise<SignedOrder> {
const fifteenMinutesInSeconds = 15 * 60;
const currentBlockTimestamp = await getLatestBlockTimestampAsync();
const order = {
const order = ({
takerAddress: constants.NULL_ADDRESS,
senderAddress: constants.NULL_ADDRESS,
expirationTimeSeconds: new BigNumber(currentBlockTimestamp).plus(fifteenMinutesInSeconds),
salt: generatePseudoRandomSalt(),
...this._defaultOrderParams,
...customOrderParams,
} as Order; // tslint:disable-line:no-object-literal-type-assertion
} as any) as Order;
const orderHashBuff = orderHashUtils.getOrderHashBuffer(order);
const signature = signingUtils.signMessage(orderHashBuff, this._privateKey, signatureType);
const signedOrder = {

View File

@@ -30,8 +30,7 @@ export const orderUtils = {
return cancel;
},
createOrderWithoutSignature(signedOrder: SignedOrder): Order {
const { signature, ...order } = signedOrder;
return order;
return _.omit(signedOrder, ['signature']) as Order;
},
createBatchMatchOrders(signedOrdersLeft: SignedOrder[], signedOrdersRight: SignedOrder[]): BatchMatchOrder {
return {

View File

@@ -108,7 +108,9 @@ export async function testWithReferenceFuncAsync(
return expect.fail(
actualError,
expectedError,
`${testCaseString}: expected error message '${actualError.message}' to equal '${expectedError.message}'`,
`${testCaseString}: expected error message '${actualError.message}' to equal '${
expectedError.message
}'`,
);
}
}

View File

@@ -20,7 +20,6 @@ export let providerConfigs: Web3Config = {
shouldUseInProcessGanache: true,
shouldAllowUnlimitedContractSize: true,
hardfork: 'istanbul',
gasLimit: 100e6,
unlocked_accounts: [
'0x6cc5f688a315f3dc28a7781717a9a798a59fda7b',
'0x55dc8f21d20d4c6ed3c82916a438a413ca68e335',

View File

@@ -57,7 +57,9 @@ describe('Order hashing', () => {
...order,
takerAddress: (null as any) as string,
};
const expectedErrorMessage = `Expected order to conform to schema`;
const expectedErrorMessage = `Order taker must be of type string. If you want anyone to be able to fill an order - pass ${
constants.NULL_ADDRESS
}`;
expect(() => orderHashUtils.getOrderHashHex(orderWithInvalidtakerFormat)).to.throw(expectedErrorMessage);
});
});

View File

@@ -1,105 +1,13 @@
[
{
"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-multiplex",
"changes": [
{
"note": "Make the proposal/quorum thresholds updatable",
"pr": 165
}
],
"timestamp": 1616005394
"timestamp": 1615932869
},
{
"timestamp": 1614141718,

View File

@@ -5,47 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## 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-multiplex - _March 16, 2021_
* Make the proposal/quorum thresholds updatable (#165)

View File

@@ -30,7 +30,6 @@ interface IZrxTreasury {
uint256 votingPeriod;
uint256 proposalThreshold;
uint256 quorumThreshold;
bytes32 defaultPoolId;
}
struct ProposedAction {

View File

@@ -20,6 +20,8 @@
pragma solidity ^0.6.12;
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/LibSafeMathV06.sol";
import "@0x/contracts-utils/contracts/src/v06/errors/LibRichErrorsV06.sol";
@@ -30,6 +32,7 @@ import "./IZrxTreasury.sol";
contract ZrxTreasury is
IZrxTreasury
{
using LibERC20TokenV06 for IERC20TokenV06;
using LibSafeMathV06 for uint256;
using LibRichErrorsV06 for bytes;
using LibBytesV06 for bytes;
@@ -49,9 +52,11 @@ contract ZrxTreasury is
/// @dev Initializes the ZRX treasury and creates the default
/// staking pool.
/// @param stakingProxy_ The 0x staking proxy contract.
/// @param weth_ The WETH token contract.
/// @param params Immutable treasury parameters.
constructor(
IStaking stakingProxy_,
IERC20TokenV06 weth_,
TreasuryParameters memory params
)
public
@@ -61,12 +66,15 @@ contract ZrxTreasury is
"VOTING_PERIOD_TOO_LONG"
);
stakingProxy = stakingProxy_;
DefaultPoolOperator defaultPoolOperator_ = new DefaultPoolOperator(
stakingProxy_,
weth_
);
defaultPoolOperator = defaultPoolOperator_;
defaultPoolId = defaultPoolOperator_.poolId();
votingPeriod = params.votingPeriod;
proposalThreshold = params.proposalThreshold;
quorumThreshold = params.quorumThreshold;
defaultPoolId = params.defaultPoolId;
IStaking.Pool memory defaultPool = stakingProxy_.getStakingPool(params.defaultPoolId);
defaultPoolOperator = DefaultPoolOperator(defaultPool.operator);
}
// solhint-disable
@@ -278,12 +286,6 @@ contract ZrxTreasury is
// Add voting power for operated staking pools.
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]);
require(
pool.operator == account,

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-treasury",
"version": "1.2.1",
"version": "1.1.0-multiplex",
"engines": {
"node": ">=6.12"
},
@@ -46,16 +46,16 @@
},
"homepage": "https://github.com/0xProject/protocol/tree/main/contracts/treasury",
"devDependencies": {
"@0x/abi-gen": "^5.6.0",
"@0x/contract-addresses": "^6.3.0",
"@0x/contracts-asset-proxy": "^3.7.14",
"@0x/contracts-erc20": "^3.3.11",
"@0x/contracts-gen": "^2.0.38",
"@0x/contracts-staking": "^2.0.40",
"@0x/contracts-test-utils": "^5.4.3",
"@0x/sol-compiler": "^4.7.3",
"@0x/abi-gen": "^5.4.21",
"@0x/contract-addresses": "^5.11.0",
"@0x/contracts-asset-proxy": "^3.7.8-multiplex.0",
"@0x/contracts-erc20": "^3.3.5-multiplex.0",
"@0x/contracts-gen": "^2.0.32",
"@0x/contracts-staking": "^2.0.34-multiplex.0",
"@0x/contracts-test-utils": "^5.3.23-multiplex.0",
"@0x/sol-compiler": "^4.6.1",
"@0x/ts-doc-gen": "^0.0.28",
"@0x/tslint-config": "^4.1.4",
"@0x/tslint-config": "^4.1.3",
"@types/isomorphic-fetch": "^0.0.35",
"@types/lodash": "4.14.104",
"@types/mocha": "^5.2.7",
@@ -69,18 +69,18 @@
"solhint": "^1.4.1",
"tslint": "5.11.0",
"typedoc": "~0.16.11",
"typescript": "4.2.2"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^6.4.0",
"@0x/protocol-utils": "^1.7.0",
"@0x/subproviders": "^6.5.3",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",
"@0x/web3-wrapper": "^7.5.3",
"ethereum-types": "^3.5.0",
"ethereumjs-util": "^7.0.10"
"@0x/base-contract": "^6.2.18",
"@0x/protocol-utils": "^1.3.1-multiplex.0",
"@0x/subproviders": "^6.4.1",
"@0x/types": "^3.3.1",
"@0x/typescript-typings": "^5.1.6",
"@0x/utils": "^6.2.0",
"@0x/web3-wrapper": "^7.4.1",
"ethereum-types": "^3.4.0",
"ethereumjs-util": "^5.1.1"
},
"publishConfig": {
"access": "public"

File diff suppressed because one or more lines are too long

View File

@@ -1,154 +0,0 @@
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,
);
});
});
});

View File

@@ -28,7 +28,6 @@ blockchainTests.resets('Treasury governance', env => {
votingPeriod: new BigNumber(3).times(stakingConstants.ONE_DAY_IN_SECONDS),
proposalThreshold: new BigNumber(100),
quorumThreshold: new BigNumber(1000),
defaultPoolId: stakingConstants.INITIAL_POOL_ID,
};
const PROPOSAL_DESCRIPTION = 'A very compelling proposal!';
const TREASURY_BALANCE = constants.INITIAL_ERC20_BALANCE;
@@ -136,16 +135,6 @@ blockchainTests.resets('Treasury governance', env => {
.approve(erc20ProxyContract.address, constants.INITIAL_ERC20_ALLOWANCE)
.awaitTransactionSuccessAsync({ from: delegator });
defaultPoolOperator = await DefaultPoolOperatorContract.deployFrom0xArtifactAsync(
artifacts.DefaultPoolOperator,
env.provider,
env.txDefaults,
{ ...artifacts, ...erc20Artifacts },
staking.address,
weth.address,
);
defaultPoolId = stakingConstants.INITIAL_POOL_ID;
const createStakingPoolTx = staking.createStakingPool(stakingConstants.PPM, false);
nonDefaultPoolId = await createStakingPoolTx.callAsync({ from: poolOperator });
await createStakingPoolTx.awaitTransactionSuccessAsync({ from: poolOperator });
@@ -156,9 +145,9 @@ blockchainTests.resets('Treasury governance', env => {
env.txDefaults,
{ ...artifacts, ...erc20Artifacts },
staking.address,
weth.address,
TREASURY_PARAMS,
);
await zrx.mint(TREASURY_BALANCE).awaitTransactionSuccessAsync();
await zrx.transfer(treasury.address, TREASURY_BALANCE).awaitTransactionSuccessAsync();
actions = [
@@ -177,6 +166,10 @@ blockchainTests.resets('Treasury governance', env => {
value: constants.ZERO_AMOUNT,
},
];
defaultPoolId = await treasury.defaultPoolId().callAsync();
const defaultPoolOperatorAddress = await treasury.defaultPoolOperator().callAsync();
defaultPoolOperator = new DefaultPoolOperatorContract(defaultPoolOperatorAddress, env.provider, env.txDefaults);
});
describe('getVotingPower()', () => {
it('Unstaked ZRX has no voting power', async () => {
@@ -229,19 +222,6 @@ blockchainTests.resets('Treasury governance', env => {
const operatorVotingPower = await treasury.getVotingPower(poolOperator, [nonDefaultPoolId]).callAsync();
expect(operatorVotingPower).to.bignumber.equal(TREASURY_PARAMS.proposalThreshold.dividedBy(2));
});
it('Reverts if given duplicate pool IDs', async () => {
await staking.stake(TREASURY_PARAMS.proposalThreshold).awaitTransactionSuccessAsync({ from: delegator });
await staking
.moveStake(
new StakeInfo(StakeStatus.Undelegated),
new StakeInfo(StakeStatus.Delegated, nonDefaultPoolId),
TREASURY_PARAMS.proposalThreshold,
)
.awaitTransactionSuccessAsync({ from: delegator });
await fastForwardToNextEpochAsync();
const tx = treasury.getVotingPower(poolOperator, [nonDefaultPoolId, nonDefaultPoolId]).callAsync();
return expect(tx).to.revertWith('getVotingPower/DUPLICATE_POOL_ID');
});
it('Correctly sums voting power delegated to multiple pools', async () => {
await staking
.stake(TREASURY_PARAMS.proposalThreshold.times(2))

View File

@@ -1,61 +1,7 @@
[
{
"timestamp": 1622609597,
"version": "4.7.11",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621944788,
"version": "4.7.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1621600614,
"version": "4.7.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1620214333,
"version": "4.7.8",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1619596077,
"version": "4.7.7",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1617311315,
"version": "4.7.6",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1616005394,
"version": "4.7.5",
"timestamp": 1615932869,
"version": "4.7.5-multiplex.0",
"changes": [
{
"note": "Dependencies updated"

View File

@@ -5,31 +5,7 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v4.7.11 - _June 2, 2021_
* Dependencies updated
## v4.7.10 - _May 25, 2021_
* Dependencies updated
## v4.7.9 - _May 21, 2021_
* Dependencies updated
## v4.7.8 - _May 5, 2021_
* Dependencies updated
## v4.7.7 - _April 28, 2021_
* Dependencies updated
## v4.7.6 - _April 1, 2021_
* Dependencies updated
## v4.7.5 - _March 17, 2021_
## v4.7.5-multiplex.0 - _March 16, 2021_
* Dependencies updated

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