Update coordinator
, exchange-forwarder
, exchange-libs
, exchange
, and extensions
contract tests to use new order and transaction structure
This commit is contained in:
parent
259b463b73
commit
b8f056b82f
@ -101,13 +101,15 @@ describe('Coordinator tests', () => {
|
|||||||
// Configure order defaults
|
// Configure order defaults
|
||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
...devConstants.STATIC_ORDER_PARAMS,
|
...devConstants.STATIC_ORDER_PARAMS,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
senderAddress: coordinatorContract.address,
|
senderAddress: coordinatorContract.address,
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(erc20TokenA.address),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(erc20TokenA.address),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(erc20TokenB.address),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(erc20TokenB.address),
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchange.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const makerPrivateKey = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
const makerPrivateKey = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
||||||
const takerPrivateKey = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(takerAddress)];
|
const takerPrivateKey = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(takerAddress)];
|
||||||
@ -115,7 +117,7 @@ describe('Coordinator tests', () => {
|
|||||||
orderFactory = new OrderFactory(makerPrivateKey, defaultOrderParams);
|
orderFactory = new OrderFactory(makerPrivateKey, defaultOrderParams);
|
||||||
makerTransactionFactory = new TransactionFactory(makerPrivateKey, exchange.address, chainId);
|
makerTransactionFactory = new TransactionFactory(makerPrivateKey, exchange.address, chainId);
|
||||||
takerTransactionFactory = new TransactionFactory(takerPrivateKey, exchange.address, chainId);
|
takerTransactionFactory = new TransactionFactory(takerPrivateKey, exchange.address, chainId);
|
||||||
approvalFactory = new ApprovalFactory(feeRecipientPrivateKey, coordinatorContract.address, chainId);
|
approvalFactory = new ApprovalFactory(feeRecipientPrivateKey, coordinatorContract.address);
|
||||||
});
|
});
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await blockchainLifecycle.startAsync();
|
await blockchainLifecycle.startAsync();
|
||||||
|
@ -41,11 +41,13 @@ describe('Libs tests', () => {
|
|||||||
describe('getTransactionHash', () => {
|
describe('getTransactionHash', () => {
|
||||||
it('should return the correct transaction hash', async () => {
|
it('should return the correct transaction hash', async () => {
|
||||||
const tx = {
|
const tx = {
|
||||||
verifyingContractAddress: exchangeAddress,
|
|
||||||
chainId,
|
|
||||||
salt: new BigNumber(0),
|
salt: new BigNumber(0),
|
||||||
signerAddress: constants.NULL_ADDRESS,
|
signerAddress: constants.NULL_ADDRESS,
|
||||||
data: '0x1234',
|
data: '0x1234',
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchangeAddress,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const expectedTxHash = transactionHashUtils.getTransactionHashHex(tx);
|
const expectedTxHash = transactionHashUtils.getTransactionHashHex(tx);
|
||||||
const txHash = await coordinatorContract.getTransactionHash.callAsync(tx);
|
const txHash = await coordinatorContract.getTransactionHash.callAsync(tx);
|
||||||
@ -56,12 +58,14 @@ describe('Libs tests', () => {
|
|||||||
describe('getApprovalHash', () => {
|
describe('getApprovalHash', () => {
|
||||||
it('should return the correct approval hash', async () => {
|
it('should return the correct approval hash', async () => {
|
||||||
const signedTx = {
|
const signedTx = {
|
||||||
verifyingContractAddress: exchangeAddress,
|
|
||||||
chainId,
|
|
||||||
salt: new BigNumber(0),
|
salt: new BigNumber(0),
|
||||||
signerAddress: constants.NULL_ADDRESS,
|
signerAddress: constants.NULL_ADDRESS,
|
||||||
data: '0x1234',
|
data: '0x1234',
|
||||||
signature: '0x5678',
|
signature: '0x5678',
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchangeAddress,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const approvalExpirationTimeSeconds = new BigNumber(0);
|
const approvalExpirationTimeSeconds = new BigNumber(0);
|
||||||
const txOrigin = constants.NULL_ADDRESS;
|
const txOrigin = constants.NULL_ADDRESS;
|
||||||
|
@ -11,7 +11,12 @@ import {
|
|||||||
} from '@0x/contracts-test-utils';
|
} from '@0x/contracts-test-utils';
|
||||||
import { BlockchainLifecycle } from '@0x/dev-utils';
|
import { BlockchainLifecycle } from '@0x/dev-utils';
|
||||||
import { transactionHashUtils } from '@0x/order-utils';
|
import { transactionHashUtils } from '@0x/order-utils';
|
||||||
import { RevertReason, SignatureType, SignedOrder } from '@0x/types';
|
import {
|
||||||
|
EIP712DomainWithDefaultSchema,
|
||||||
|
RevertReason,
|
||||||
|
SignatureType,
|
||||||
|
SignedOrder
|
||||||
|
} from '@0x/types';
|
||||||
import { BigNumber, providerUtils } from '@0x/utils';
|
import { BigNumber, providerUtils } from '@0x/utils';
|
||||||
import * as chai from 'chai';
|
import * as chai from 'chai';
|
||||||
import * as ethUtil from 'ethereumjs-util';
|
import * as ethUtil from 'ethereumjs-util';
|
||||||
@ -33,6 +38,7 @@ describe('Mixins tests', () => {
|
|||||||
let approvalFactory2: ApprovalFactory;
|
let approvalFactory2: ApprovalFactory;
|
||||||
let defaultOrder: SignedOrder;
|
let defaultOrder: SignedOrder;
|
||||||
const exchangeAddress = addressUtils.generatePseudoRandomAddress();
|
const exchangeAddress = addressUtils.generatePseudoRandomAddress();
|
||||||
|
let exchangeDomain: EIP712DomainWithDefaultSchema;
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
await blockchainLifecycle.startAsync();
|
await blockchainLifecycle.startAsync();
|
||||||
@ -51,9 +57,11 @@ describe('Mixins tests', () => {
|
|||||||
);
|
);
|
||||||
const accounts = await web3Wrapper.getAvailableAddressesAsync();
|
const accounts = await web3Wrapper.getAvailableAddressesAsync();
|
||||||
[transactionSignerAddress, approvalSignerAddress1, approvalSignerAddress2] = accounts.slice(0, 3);
|
[transactionSignerAddress, approvalSignerAddress1, approvalSignerAddress2] = accounts.slice(0, 3);
|
||||||
defaultOrder = {
|
exchangeDomain = {
|
||||||
exchangeAddress: devConstants.NULL_ADDRESS,
|
verifyingContractAddress: devConstants.NULL_ADDRESS,
|
||||||
chainId,
|
chainId,
|
||||||
|
};
|
||||||
|
defaultOrder = {
|
||||||
makerAddress: devConstants.NULL_ADDRESS,
|
makerAddress: devConstants.NULL_ADDRESS,
|
||||||
takerAddress: devConstants.NULL_ADDRESS,
|
takerAddress: devConstants.NULL_ADDRESS,
|
||||||
senderAddress: mixins.address,
|
senderAddress: mixins.address,
|
||||||
@ -67,14 +75,15 @@ describe('Mixins tests', () => {
|
|||||||
expirationTimeSeconds: devConstants.ZERO_AMOUNT,
|
expirationTimeSeconds: devConstants.ZERO_AMOUNT,
|
||||||
salt: devConstants.ZERO_AMOUNT,
|
salt: devConstants.ZERO_AMOUNT,
|
||||||
signature: devConstants.NULL_BYTES,
|
signature: devConstants.NULL_BYTES,
|
||||||
|
domain: exchangeDomain,
|
||||||
};
|
};
|
||||||
const transactionSignerPrivateKey =
|
const transactionSignerPrivateKey =
|
||||||
devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(transactionSignerAddress)];
|
devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(transactionSignerAddress)];
|
||||||
const approvalSignerPrivateKey1 = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(approvalSignerAddress1)];
|
const approvalSignerPrivateKey1 = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(approvalSignerAddress1)];
|
||||||
const approvalSignerPrivateKey2 = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(approvalSignerAddress2)];
|
const approvalSignerPrivateKey2 = devConstants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(approvalSignerAddress2)];
|
||||||
transactionFactory = new TransactionFactory(transactionSignerPrivateKey, exchangeAddress, chainId);
|
transactionFactory = new TransactionFactory(transactionSignerPrivateKey, exchangeAddress, chainId);
|
||||||
approvalFactory1 = new ApprovalFactory(approvalSignerPrivateKey1, mixins.address, chainId);
|
approvalFactory1 = new ApprovalFactory(approvalSignerPrivateKey1, mixins.address);
|
||||||
approvalFactory2 = new ApprovalFactory(approvalSignerPrivateKey2, mixins.address, chainId);
|
approvalFactory2 = new ApprovalFactory(approvalSignerPrivateKey2, mixins.address);
|
||||||
});
|
});
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await blockchainLifecycle.startAsync();
|
await blockchainLifecycle.startAsync();
|
||||||
@ -147,9 +156,8 @@ describe('Mixins tests', () => {
|
|||||||
const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data);
|
const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data);
|
||||||
const decodedSignedOrders = decodedOrders.map(order => ({
|
const decodedSignedOrders = decodedOrders.map(order => ({
|
||||||
...order,
|
...order,
|
||||||
exchangeAddress: devConstants.NULL_ADDRESS,
|
|
||||||
chainId,
|
|
||||||
signature: devConstants.NULL_BYTES,
|
signature: devConstants.NULL_BYTES,
|
||||||
|
domain: exchangeDomain,
|
||||||
}));
|
}));
|
||||||
expect(orders).to.deep.eq(decodedSignedOrders);
|
expect(orders).to.deep.eq(decodedSignedOrders);
|
||||||
});
|
});
|
||||||
@ -161,9 +169,8 @@ describe('Mixins tests', () => {
|
|||||||
const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data);
|
const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data);
|
||||||
const decodedSignedOrders = decodedOrders.map(order => ({
|
const decodedSignedOrders = decodedOrders.map(order => ({
|
||||||
...order,
|
...order,
|
||||||
exchangeAddress: devConstants.NULL_ADDRESS,
|
|
||||||
chainId,
|
|
||||||
signature: devConstants.NULL_BYTES,
|
signature: devConstants.NULL_BYTES,
|
||||||
|
domain: exchangeDomain,
|
||||||
}));
|
}));
|
||||||
expect(orders).to.deep.eq(decodedSignedOrders);
|
expect(orders).to.deep.eq(decodedSignedOrders);
|
||||||
});
|
});
|
||||||
@ -175,9 +182,8 @@ describe('Mixins tests', () => {
|
|||||||
const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data);
|
const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data);
|
||||||
const decodedSignedOrders = decodedOrders.map(order => ({
|
const decodedSignedOrders = decodedOrders.map(order => ({
|
||||||
...order,
|
...order,
|
||||||
exchangeAddress: devConstants.NULL_ADDRESS,
|
|
||||||
chainId,
|
|
||||||
signature: devConstants.NULL_BYTES,
|
signature: devConstants.NULL_BYTES,
|
||||||
|
domain: exchangeDomain,
|
||||||
}));
|
}));
|
||||||
expect(orders).to.deep.eq(decodedSignedOrders);
|
expect(orders).to.deep.eq(decodedSignedOrders);
|
||||||
});
|
});
|
||||||
|
@ -9,7 +9,7 @@ export class ApprovalFactory {
|
|||||||
private readonly _privateKey: Buffer;
|
private readonly _privateKey: Buffer;
|
||||||
private readonly _verifyingContractAddress: string;
|
private readonly _verifyingContractAddress: string;
|
||||||
|
|
||||||
constructor(privateKey: Buffer, verifyingContractAddress: string, chainId: number) {
|
constructor(privateKey: Buffer, verifyingContractAddress: string) {
|
||||||
this._privateKey = privateKey;
|
this._privateKey = privateKey;
|
||||||
this._verifyingContractAddress = verifyingContractAddress;
|
this._verifyingContractAddress = verifyingContractAddress;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,11 @@ export const hashUtils = {
|
|||||||
approvalExpirationTimeSeconds: BigNumber,
|
approvalExpirationTimeSeconds: BigNumber,
|
||||||
): string {
|
): string {
|
||||||
const hashHex = `0x${hashUtils
|
const hashHex = `0x${hashUtils
|
||||||
.getApprovalHashBuffer(transaction, verifyingContractAddress, txOrigin, approvalExpirationTimeSeconds)
|
.getApprovalHashBuffer(
|
||||||
|
transaction,
|
||||||
|
verifyingContractAddress,
|
||||||
|
txOrigin, approvalExpirationTimeSeconds,
|
||||||
|
)
|
||||||
.toString('hex')}`;
|
.toString('hex')}`;
|
||||||
return hashHex;
|
return hashHex;
|
||||||
},
|
},
|
||||||
|
@ -119,8 +119,6 @@ describe(ContractName.Forwarder, () => {
|
|||||||
defaultMakerAssetAddress = erc20TokenA.address;
|
defaultMakerAssetAddress = erc20TokenA.address;
|
||||||
const defaultTakerAssetAddress = wethContract.address;
|
const defaultTakerAssetAddress = wethContract.address;
|
||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
exchangeAddress: exchangeInstance.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
||||||
@ -129,6 +127,10 @@ describe(ContractName.Forwarder, () => {
|
|||||||
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), DECIMALS_DEFAULT),
|
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), DECIMALS_DEFAULT),
|
||||||
makerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), DECIMALS_DEFAULT),
|
makerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), DECIMALS_DEFAULT),
|
||||||
takerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(0), DECIMALS_DEFAULT),
|
takerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(0), DECIMALS_DEFAULT),
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchangeInstance.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
||||||
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
||||||
|
@ -59,12 +59,14 @@ describe('Exchange libs', () => {
|
|||||||
|
|
||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
exchangeAddress: libs.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress: addressUtils.generatePseudoRandomAddress(),
|
feeRecipientAddress: addressUtils.generatePseudoRandomAddress(),
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: libs.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
||||||
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
||||||
|
@ -208,12 +208,14 @@ describe('Exchange core', () => {
|
|||||||
defaultTakerAssetAddress = erc20TokenB.address;
|
defaultTakerAssetAddress = erc20TokenB.address;
|
||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerAssetAddress),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerAssetAddress),
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchange.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
||||||
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
||||||
|
@ -36,10 +36,12 @@ const emptyOrder: Order = {
|
|||||||
makerAssetData: '0x',
|
makerAssetData: '0x',
|
||||||
takerAssetData: '0x',
|
takerAssetData: '0x',
|
||||||
salt: new BigNumber(0),
|
salt: new BigNumber(0),
|
||||||
exchangeAddress: constants.NULL_ADDRESS,
|
|
||||||
chainId: 0, // To be filled in later.
|
|
||||||
feeRecipientAddress: constants.NULL_ADDRESS,
|
feeRecipientAddress: constants.NULL_ADDRESS,
|
||||||
expirationTimeSeconds: new BigNumber(0),
|
expirationTimeSeconds: new BigNumber(0),
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: constants.NULL_ADDRESS,
|
||||||
|
chainId: 0, // To be filled in later.
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const emptySignedOrder: SignedOrder = {
|
const emptySignedOrder: SignedOrder = {
|
||||||
@ -64,8 +66,8 @@ describe('Exchange core internal functions', () => {
|
|||||||
});
|
});
|
||||||
before(async () => {
|
before(async () => {
|
||||||
chainId = await providerUtils.getChainIdAsync(provider);
|
chainId = await providerUtils.getChainIdAsync(provider);
|
||||||
emptyOrder.chainId = chainId;
|
emptyOrder.domain.chainId = chainId;
|
||||||
emptySignedOrder.chainId = chainId;
|
emptySignedOrder.domain.chainId = chainId;
|
||||||
|
|
||||||
testExchange = await TestExchangeInternalsContract.deployFrom0xArtifactAsync(
|
testExchange = await TestExchangeInternalsContract.deployFrom0xArtifactAsync(
|
||||||
artifacts.TestExchangeInternals,
|
artifacts.TestExchangeInternals,
|
||||||
|
@ -152,24 +152,26 @@ describe('matchOrders', () => {
|
|||||||
defaultERC20MakerAssetAddress = erc20TokenA.address;
|
defaultERC20MakerAssetAddress = erc20TokenA.address;
|
||||||
defaultERC20TakerAssetAddress = erc20TokenB.address;
|
defaultERC20TakerAssetAddress = erc20TokenB.address;
|
||||||
defaultERC721AssetAddress = erc721Token.address;
|
defaultERC721AssetAddress = erc721Token.address;
|
||||||
|
const domain = {
|
||||||
|
verifyingContractAddress: exchange.address,
|
||||||
|
chainId,
|
||||||
|
};
|
||||||
// Create default order parameters
|
// Create default order parameters
|
||||||
const defaultOrderParamsLeft = {
|
const defaultOrderParamsLeft = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
makerAddress: makerAddressLeft,
|
makerAddress: makerAddressLeft,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20MakerAssetAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20MakerAssetAddress),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20TakerAssetAddress),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20TakerAssetAddress),
|
||||||
feeRecipientAddress: feeRecipientAddressLeft,
|
feeRecipientAddress: feeRecipientAddressLeft,
|
||||||
|
domain,
|
||||||
};
|
};
|
||||||
const defaultOrderParamsRight = {
|
const defaultOrderParamsRight = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
makerAddress: makerAddressRight,
|
makerAddress: makerAddressRight,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20TakerAssetAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20TakerAssetAddress),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20MakerAssetAddress),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20MakerAssetAddress),
|
||||||
feeRecipientAddress: feeRecipientAddressRight,
|
feeRecipientAddress: feeRecipientAddressRight,
|
||||||
|
domain,
|
||||||
};
|
};
|
||||||
const privateKeyLeft = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddressLeft)];
|
const privateKeyLeft = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddressLeft)];
|
||||||
orderFactoryLeft = new OrderFactory(privateKeyLeft, defaultOrderParamsLeft);
|
orderFactoryLeft = new OrderFactory(privateKeyLeft, defaultOrderParamsLeft);
|
||||||
|
@ -101,12 +101,14 @@ describe('MixinSignatureValidator', () => {
|
|||||||
|
|
||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
exchangeAddress: signatureValidator.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress: addressUtils.generatePseudoRandomAddress(),
|
feeRecipientAddress: addressUtils.generatePseudoRandomAddress(),
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(addressUtils.generatePseudoRandomAddress()),
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: signatureValidator.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
signerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
signerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
||||||
notSignerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(notSignerAddress)];
|
notSignerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(notSignerAddress)];
|
||||||
|
@ -14,7 +14,13 @@ import {
|
|||||||
} from '@0x/contracts-test-utils';
|
} from '@0x/contracts-test-utils';
|
||||||
import { BlockchainLifecycle } from '@0x/dev-utils';
|
import { BlockchainLifecycle } from '@0x/dev-utils';
|
||||||
import { assetDataUtils, generatePseudoRandomSalt } from '@0x/order-utils';
|
import { assetDataUtils, generatePseudoRandomSalt } from '@0x/order-utils';
|
||||||
import { OrderWithoutExchangeAddress, RevertReason, SignedOrder, SignedZeroExTransaction } from '@0x/types';
|
import {
|
||||||
|
EIP712DomainWithDefaultSchema,
|
||||||
|
OrderWithoutDomain,
|
||||||
|
RevertReason,
|
||||||
|
SignedOrder,
|
||||||
|
SignedZeroExTransaction
|
||||||
|
} from '@0x/types';
|
||||||
import { BigNumber, providerUtils } from '@0x/utils';
|
import { BigNumber, providerUtils } from '@0x/utils';
|
||||||
import * as chai from 'chai';
|
import * as chai from 'chai';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
@ -40,9 +46,10 @@ describe('Exchange transactions', () => {
|
|||||||
let erc20Proxy: ERC20ProxyContract;
|
let erc20Proxy: ERC20ProxyContract;
|
||||||
|
|
||||||
let erc20Balances: ERC20BalancesByOwner;
|
let erc20Balances: ERC20BalancesByOwner;
|
||||||
|
let domain: EIP712DomainWithDefaultSchema;
|
||||||
let signedOrder: SignedOrder;
|
let signedOrder: SignedOrder;
|
||||||
let signedTx: SignedZeroExTransaction;
|
let signedTx: SignedZeroExTransaction;
|
||||||
let orderWithoutExchangeAddress: OrderWithoutExchangeAddress;
|
let orderWithoutExchangeAddress: OrderWithoutDomain;
|
||||||
let orderFactory: OrderFactory;
|
let orderFactory: OrderFactory;
|
||||||
let makerTransactionFactory: TransactionFactory;
|
let makerTransactionFactory: TransactionFactory;
|
||||||
let takerTransactionFactory: TransactionFactory;
|
let takerTransactionFactory: TransactionFactory;
|
||||||
@ -103,15 +110,19 @@ describe('Exchange transactions', () => {
|
|||||||
defaultMakerTokenAddress = erc20TokenA.address;
|
defaultMakerTokenAddress = erc20TokenA.address;
|
||||||
defaultTakerTokenAddress = erc20TokenB.address;
|
defaultTakerTokenAddress = erc20TokenB.address;
|
||||||
|
|
||||||
|
domain = {
|
||||||
|
verifyingContractAddress: exchange.address,
|
||||||
|
chainId,
|
||||||
|
};
|
||||||
|
|
||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
senderAddress,
|
senderAddress,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerTokenAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerTokenAddress),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerTokenAddress),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerTokenAddress),
|
||||||
|
domain,
|
||||||
};
|
};
|
||||||
makerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
makerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
||||||
takerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(takerAddress)];
|
takerPrivateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(takerAddress)];
|
||||||
@ -125,7 +136,7 @@ describe('Exchange transactions', () => {
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
signedOrder = await orderFactory.newSignedOrderAsync();
|
signedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
orderWithoutExchangeAddress = orderUtils.getOrderWithoutExchangeAddress(signedOrder);
|
orderWithoutExchangeAddress = orderUtils.getOrderWithoutDomain(signedOrder);
|
||||||
|
|
||||||
takerAssetFillAmount = signedOrder.takerAssetAmount.div(2);
|
takerAssetFillAmount = signedOrder.takerAssetAmount.div(2);
|
||||||
const data = exchange.fillOrder.getABIEncodedTransactionData(
|
const data = exchange.fillOrder.getABIEncodedTransactionData(
|
||||||
@ -246,7 +257,7 @@ describe('Exchange transactions', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
||||||
orderWithoutExchangeAddress = orderUtils.getOrderWithoutExchangeAddress(signedOrder);
|
orderWithoutExchangeAddress = orderUtils.getOrderWithoutDomain(signedOrder);
|
||||||
const fillData = exchange.fillOrder.getABIEncodedTransactionData(
|
const fillData = exchange.fillOrder.getABIEncodedTransactionData(
|
||||||
orderWithoutExchangeAddress,
|
orderWithoutExchangeAddress,
|
||||||
takerAssetFillAmount,
|
takerAssetFillAmount,
|
||||||
@ -277,7 +288,7 @@ describe('Exchange transactions', () => {
|
|||||||
|
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
||||||
orderWithoutExchangeAddress = orderUtils.getOrderWithoutExchangeAddress(signedOrder);
|
orderWithoutExchangeAddress = orderUtils.getOrderWithoutDomain(signedOrder);
|
||||||
const data = exchange.fillOrder.getABIEncodedTransactionData(
|
const data = exchange.fillOrder.getABIEncodedTransactionData(
|
||||||
orderWithoutExchangeAddress,
|
orderWithoutExchangeAddress,
|
||||||
takerAssetFillAmount,
|
takerAssetFillAmount,
|
||||||
@ -349,12 +360,11 @@ describe('Exchange transactions', () => {
|
|||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
senderAddress: whitelist.address,
|
senderAddress: whitelist.address,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerTokenAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerTokenAddress),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerTokenAddress),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerTokenAddress),
|
||||||
|
domain,
|
||||||
};
|
};
|
||||||
whitelistOrderFactory = new OrderFactory(makerPrivateKey, defaultOrderParams);
|
whitelistOrderFactory = new OrderFactory(makerPrivateKey, defaultOrderParams);
|
||||||
});
|
});
|
||||||
@ -371,7 +381,7 @@ describe('Exchange transactions', () => {
|
|||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
);
|
);
|
||||||
|
|
||||||
orderWithoutExchangeAddress = orderUtils.getOrderWithoutExchangeAddress(signedOrder);
|
orderWithoutExchangeAddress = orderUtils.getOrderWithoutDomain(signedOrder);
|
||||||
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
||||||
const salt = generatePseudoRandomSalt();
|
const salt = generatePseudoRandomSalt();
|
||||||
return expectTransactionFailedAsync(
|
return expectTransactionFailedAsync(
|
||||||
@ -393,7 +403,7 @@ describe('Exchange transactions', () => {
|
|||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
);
|
);
|
||||||
|
|
||||||
orderWithoutExchangeAddress = orderUtils.getOrderWithoutExchangeAddress(signedOrder);
|
orderWithoutExchangeAddress = orderUtils.getOrderWithoutDomain(signedOrder);
|
||||||
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
||||||
const salt = generatePseudoRandomSalt();
|
const salt = generatePseudoRandomSalt();
|
||||||
return expectTransactionFailedAsync(
|
return expectTransactionFailedAsync(
|
||||||
@ -420,7 +430,7 @@ describe('Exchange transactions', () => {
|
|||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
);
|
);
|
||||||
|
|
||||||
orderWithoutExchangeAddress = orderUtils.getOrderWithoutExchangeAddress(signedOrder);
|
orderWithoutExchangeAddress = orderUtils.getOrderWithoutDomain(signedOrder);
|
||||||
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
const takerAssetFillAmount = signedOrder.takerAssetAmount;
|
||||||
const salt = generatePseudoRandomSalt();
|
const salt = generatePseudoRandomSalt();
|
||||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||||
|
@ -287,10 +287,12 @@ export class OrderFactoryFromScenario {
|
|||||||
makerAssetData,
|
makerAssetData,
|
||||||
takerAssetData,
|
takerAssetData,
|
||||||
salt: generatePseudoRandomSalt(),
|
salt: generatePseudoRandomSalt(),
|
||||||
exchangeAddress: this._exchangeAddress,
|
|
||||||
chainId: this._chainId,
|
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
expirationTimeSeconds,
|
expirationTimeSeconds,
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: this._exchangeAddress,
|
||||||
|
chainId: this._chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return order;
|
return order;
|
||||||
|
@ -121,12 +121,14 @@ describe('Exchange wrappers', () => {
|
|||||||
|
|
||||||
const defaultOrderParams = {
|
const defaultOrderParams = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerAssetAddress),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerAssetAddress),
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchange.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
|
||||||
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
orderFactory = new OrderFactory(privateKey, defaultOrderParams);
|
||||||
|
@ -167,8 +167,6 @@ describe(ContractName.BalanceThresholdFilter, () => {
|
|||||||
);
|
);
|
||||||
// Default order parameters
|
// Default order parameters
|
||||||
defaultOrderParams = {
|
defaultOrderParams = {
|
||||||
exchangeAddress: exchangeInstance.address,
|
|
||||||
chainId,
|
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultMakerAssetAddress),
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerAssetAddress),
|
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultTakerAssetAddress),
|
||||||
@ -177,6 +175,10 @@ describe(ContractName.BalanceThresholdFilter, () => {
|
|||||||
makerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), DECIMALS_DEFAULT),
|
makerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), DECIMALS_DEFAULT),
|
||||||
takerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(150), DECIMALS_DEFAULT),
|
takerFee: Web3Wrapper.toBaseUnitAmount(new BigNumber(150), DECIMALS_DEFAULT),
|
||||||
senderAddress: erc721BalanceThresholdFilterInstance.address,
|
senderAddress: erc721BalanceThresholdFilterInstance.address,
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchangeInstance.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
// Create two order factories with valid makers (who meet the threshold balance), and
|
// Create two order factories with valid makers (who meet the threshold balance), and
|
||||||
// one factory for an invalid address (that does not meet the threshold balance)
|
// one factory for an invalid address (that does not meet the threshold balance)
|
||||||
|
@ -148,8 +148,6 @@ describe(ContractName.DutchAuction, () => {
|
|||||||
// Default sell order and buy order are exact mirrors
|
// Default sell order and buy order are exact mirrors
|
||||||
const sellerDefaultOrderParams = {
|
const sellerDefaultOrderParams = {
|
||||||
salt: generatePseudoRandomSalt(),
|
salt: generatePseudoRandomSalt(),
|
||||||
exchangeAddress: exchangeInstance.address,
|
|
||||||
chainId,
|
|
||||||
makerAddress,
|
makerAddress,
|
||||||
feeRecipientAddress,
|
feeRecipientAddress,
|
||||||
// taker address or sender address should be set to the ducth auction contract
|
// taker address or sender address should be set to the ducth auction contract
|
||||||
@ -165,6 +163,10 @@ describe(ContractName.DutchAuction, () => {
|
|||||||
expirationTimeSeconds: auctionEndTimeSeconds,
|
expirationTimeSeconds: auctionEndTimeSeconds,
|
||||||
makerFee: constants.ZERO_AMOUNT,
|
makerFee: constants.ZERO_AMOUNT,
|
||||||
takerFee: constants.ZERO_AMOUNT,
|
takerFee: constants.ZERO_AMOUNT,
|
||||||
|
domain: {
|
||||||
|
verifyingContractAddress: exchangeInstance.address,
|
||||||
|
chainId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
// Default buy order is for the auction begin price
|
// Default buy order is for the auction begin price
|
||||||
const buyerDefaultOrderParams = {
|
const buyerDefaultOrderParams = {
|
||||||
|
@ -163,28 +163,32 @@ describe('OrderMatcher', () => {
|
|||||||
),
|
),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const domain = {
|
||||||
|
verifyingContractAddress: exchange.address,
|
||||||
|
chainId,
|
||||||
|
};
|
||||||
|
|
||||||
// Create default order parameters
|
// Create default order parameters
|
||||||
const defaultOrderParamsLeft = {
|
const defaultOrderParamsLeft = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
makerAddress: makerAddressLeft,
|
makerAddress: makerAddressLeft,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAssetData: leftMakerAssetData,
|
makerAssetData: leftMakerAssetData,
|
||||||
takerAssetData: leftTakerAssetData,
|
takerAssetData: leftTakerAssetData,
|
||||||
feeRecipientAddress: feeRecipientAddressLeft,
|
feeRecipientAddress: feeRecipientAddressLeft,
|
||||||
makerFee: constants.ZERO_AMOUNT,
|
makerFee: constants.ZERO_AMOUNT,
|
||||||
takerFee: constants.ZERO_AMOUNT,
|
takerFee: constants.ZERO_AMOUNT,
|
||||||
|
domain,
|
||||||
};
|
};
|
||||||
const defaultOrderParamsRight = {
|
const defaultOrderParamsRight = {
|
||||||
...constants.STATIC_ORDER_PARAMS,
|
...constants.STATIC_ORDER_PARAMS,
|
||||||
makerAddress: makerAddressRight,
|
makerAddress: makerAddressRight,
|
||||||
exchangeAddress: exchange.address,
|
|
||||||
chainId,
|
|
||||||
makerAssetData: leftTakerAssetData,
|
makerAssetData: leftTakerAssetData,
|
||||||
takerAssetData: leftMakerAssetData,
|
takerAssetData: leftMakerAssetData,
|
||||||
feeRecipientAddress: feeRecipientAddressRight,
|
feeRecipientAddress: feeRecipientAddressRight,
|
||||||
makerFee: constants.ZERO_AMOUNT,
|
makerFee: constants.ZERO_AMOUNT,
|
||||||
takerFee: constants.ZERO_AMOUNT,
|
takerFee: constants.ZERO_AMOUNT,
|
||||||
|
domain,
|
||||||
};
|
};
|
||||||
const privateKeyLeft = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddressLeft)];
|
const privateKeyLeft = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddressLeft)];
|
||||||
orderFactoryLeft = new OrderFactory(privateKeyLeft, defaultOrderParamsLeft);
|
orderFactoryLeft = new OrderFactory(privateKeyLeft, defaultOrderParamsLeft);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user