Updated remaining tests to use maker signatures when adding to pool

This commit is contained in:
Greg Hysen
2019-06-24 15:31:43 -07:00
parent e1a5ba9864
commit 78805b1c39
2 changed files with 97 additions and 41 deletions

View File

@@ -61,7 +61,7 @@ describe('Staking Core', () => {
[zrxTokenContract] = await erc20Wrapper.deployDummyTokensAsync(1, ZRX_TOKEN_DECIMALS);
await erc20Wrapper.setBalancesAndAllowancesAsync();
// deploy staking contracts
stakingWrapper = new StakingWrapper(provider, owner, erc20ProxyContract, zrxTokenContract);
stakingWrapper = new StakingWrapper(provider, owner, erc20ProxyContract, zrxTokenContract, accounts);
await stakingWrapper.deployAndConfigureContracts();
});
beforeEach(async () => {
@@ -608,16 +608,27 @@ describe('Staking Core', () => {
stakingWrapper.toBaseUnitAmount(4.54522236),
stakingWrapper.toBaseUnitAmount(0)
];
const makerSignatures = [
// pool 0
stakingWrapper.signApprovalForStakingPool(poolIds[0], makersByPoolId[0][0]).signature,
// pool 1
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][1]).signature,
// pool 2
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][1]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][2]).signature,
]
await Promise.all([
// pool 0
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], "0x00", poolOperators[0]),
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], makerSignatures[0], poolOperators[0]),
// pool 1
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], makerSignatures[1], poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], makerSignatures[2], poolOperators[1]),
// pool 2
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], makerSignatures[3], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], makerSignatures[4], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], makerSignatures[5], poolOperators[2]),
]);
///// 2 PAY FEES /////
await Promise.all([
@@ -775,7 +786,7 @@ describe('Staking Core', () => {
expect(ownerRewardFloatingPoint).to.be.bignumber.equal(expectedOwnerReward);
});
it.only('pool management', async() => {
it('pool management', async() => {
// create first pool
const operatorAddress = stakers[0];
const operatorShare = 39;
@@ -787,8 +798,7 @@ describe('Staking Core', () => {
expect(nextPoolId).to.be.equal(expectedNextPoolId);
// add maker to pool
const makerAddress = makers[0];
const makerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
const makerApproval = stakingWrapper.getSignedApprovalForStakingPool(poolId, makerAddress, makerPrivateKey);
const makerApproval = stakingWrapper.signApprovalForStakingPool(poolId, makerAddress);
await stakingWrapper.addMakerToPoolAsync(poolId, makerAddress, makerApproval.signature, operatorAddress);
// check the pool id of the maker
const poolIdOfMaker = await stakingWrapper.getMakerPoolId(makerAddress);
@@ -804,8 +814,7 @@ describe('Staking Core', () => {
// try to add a new maker address from an address other than the pool operator
const notOperatorAddress = owner;
const anotherMakerAddress = makers[1];
const anotherMakerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(anotherMakerAddress)];
const anotherMakerApproval = stakingWrapper.getSignedApprovalForStakingPool(poolId, anotherMakerAddress, anotherMakerPrivateKey);
const anotherMakerApproval = stakingWrapper.signApprovalForStakingPool(poolId, anotherMakerAddress);
await expectTransactionFailedAsync(
stakingWrapper.addMakerToPoolAsync(poolId, anotherMakerAddress, anotherMakerApproval.signature, notOperatorAddress),
RevertReason.OnlyCallableByPoolOperator
@@ -861,16 +870,27 @@ describe('Staking Core', () => {
stakingWrapper.toBaseUnitAmount(4.54522236),
stakingWrapper.toBaseUnitAmount(0)
];
const makerSignatures = [
// pool 0
stakingWrapper.signApprovalForStakingPool(poolIds[0], makersByPoolId[0][0]).signature,
// pool 1
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][1]).signature,
// pool 2
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][1]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][2]).signature,
]
await Promise.all([
// pool 0
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], "0x00", poolOperators[0]),
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], makerSignatures[0], poolOperators[0]),
// pool 1
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], makerSignatures[1], poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], makerSignatures[2], poolOperators[1]),
// pool 2
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], makerSignatures[3], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], makerSignatures[4], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], makerSignatures[5], poolOperators[2]),
]);
///// 2 PAY FEES /////
await Promise.all([
@@ -1009,16 +1029,27 @@ describe('Staking Core', () => {
stakingWrapper.toBaseUnitAmount(4.54522236),
stakingWrapper.toBaseUnitAmount(0)
];
const makerSignatures = [
// pool 0
stakingWrapper.signApprovalForStakingPool(poolIds[0], makersByPoolId[0][0]).signature,
// pool 1
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][1]).signature,
// pool 2
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][1]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][2]).signature,
]
await Promise.all([
// pool 0
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], "0x00", poolOperators[0]),
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], makerSignatures[0], poolOperators[0]),
// pool 1
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], makerSignatures[1], poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], makerSignatures[2], poolOperators[1]),
// pool 2
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], makerSignatures[3], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], makerSignatures[4], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], makerSignatures[5], poolOperators[2]),
]);
///// 2 PAY FEES /////
await Promise.all([
@@ -1253,16 +1284,27 @@ describe('Staking Core', () => {
stakingWrapper.toBaseUnitAmount(4.54522236),
stakingWrapper.toBaseUnitAmount(0)
];
const makerSignatures = [
// pool 0
stakingWrapper.signApprovalForStakingPool(poolIds[0], makersByPoolId[0][0]).signature,
// pool 1
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][1]).signature,
// pool 2
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][1]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][2]).signature,
]
await Promise.all([
// pool 0
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], "0x00", poolOperators[0]),
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], makerSignatures[0], poolOperators[0]),
// pool 1
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], makerSignatures[1], poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], makerSignatures[2], poolOperators[1]),
// pool 2
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], makerSignatures[3], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], makerSignatures[4], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], makerSignatures[5], poolOperators[2]),
]);
///// 2 PAY FEES /////
await Promise.all([
@@ -1439,16 +1481,27 @@ describe('Staking Core', () => {
stakingWrapper.toBaseUnitAmount(4.54522236),
stakingWrapper.toBaseUnitAmount(0)
];
const makerSignatures = [
// pool 0
stakingWrapper.signApprovalForStakingPool(poolIds[0], makersByPoolId[0][0]).signature,
// pool 1
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[1], makersByPoolId[1][1]).signature,
// pool 2
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][0]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][1]).signature,
stakingWrapper.signApprovalForStakingPool(poolIds[2], makersByPoolId[2][2]).signature,
]
await Promise.all([
// pool 0
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], "0x00", poolOperators[0]),
stakingWrapper.addMakerToPoolAsync(poolIds[0], makersByPoolId[0][0], makerSignatures[0], poolOperators[0]),
// pool 1
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], "0x00", poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][0], makerSignatures[1], poolOperators[1]),
stakingWrapper.addMakerToPoolAsync(poolIds[1], makersByPoolId[1][1], makerSignatures[2], poolOperators[1]),
// pool 2
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], "0x00", poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][0], makerSignatures[3], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][1], makerSignatures[4], poolOperators[2]),
stakingWrapper.addMakerToPoolAsync(poolIds[2], makersByPoolId[2][2], makerSignatures[5], poolOperators[2]),
]);
///// 2 PAY FEES /////
await Promise.all([

View File

@@ -1,4 +1,4 @@
import { LogDecoder, txDefaults } from '@0x/contracts-test-utils';
import { constants as testUtilsConstants, LogDecoder, txDefaults } from '@0x/contracts-test-utils';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as chai from 'chai';
@@ -23,13 +23,14 @@ export class StakingWrapper {
private readonly _ownerAddres: string;
private readonly _erc20ProxyContract: ERC20ProxyContract;
private readonly _zrxTokenContract: DummyERC20TokenContract;
private readonly _accounts: string[];
private _stakingContractIfExists?: StakingContract;
private _stakingProxyContractIfExists?: StakingProxyContract;
private _zrxVaultContractIfExists?: ZrxVaultContract;
private _rewardVaultContractIfExists?: RewardVaultContract;
private _libMathTestContractIfExists?: LibMathTestContract;
constructor(provider: Provider, ownerAddres: string, erc20ProxyContract: ERC20ProxyContract, zrxTokenContract: DummyERC20TokenContract) {
constructor(provider: Provider, ownerAddres: string, erc20ProxyContract: ERC20ProxyContract, zrxTokenContract: DummyERC20TokenContract, accounts: string[]) {
this._web3Wrapper = new Web3Wrapper(provider);
this._provider = provider;
const decoderArtifacts = _.merge(artifacts, erc20Artifacts);
@@ -37,6 +38,7 @@ export class StakingWrapper {
this._ownerAddres= ownerAddres;
this._erc20ProxyContract = erc20ProxyContract;
this._zrxTokenContract = zrxTokenContract;
this._accounts = accounts;
}
public getStakingContract(): StakingContract {
this._validateDeployedOrThrow();
@@ -288,8 +290,9 @@ export class StakingWrapper {
const messageHash = this.getStakingContract().getStakingPoolApprovalMessageHash.getABIDecodedReturnData(returndata);
return messageHash;
}
public getSignedApprovalForStakingPool(poolId: string, makerAddress: string, makerPrivateKey: Buffer, signatureType: SignatureType = SignatureType.EthSign): SignedStakingPoolApproval {
const signedStakingPoolApproval = this.getSignedApprovalForStakingPoolFlexible(
public signApprovalForStakingPool(poolId: string, makerAddress: string, signatureType: SignatureType = SignatureType.EthSign): SignedStakingPoolApproval {
const makerPrivateKey = testUtilsConstants.TESTRPC_PRIVATE_KEYS[this._accounts.indexOf(makerAddress)];
const signedStakingPoolApproval = this.signApprovalForStakingPoolFlexible(
poolId,
makerAddress,
makerPrivateKey,
@@ -299,7 +302,7 @@ export class StakingWrapper {
);
return signedStakingPoolApproval;
}
public getSignedApprovalForStakingPoolFlexible(
public signApprovalForStakingPoolFlexible(
poolId: string,
makerAddress: string,
makerPrivateKey: Buffer,