aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contract-wrappers/src/contract_wrappers
diff options
context:
space:
mode:
authorBrandon Millman <brandon@0xproject.com>2018-08-06 05:47:42 +0800
committerGitHub <noreply@github.com>2018-08-06 05:47:42 +0800
commit47fef1f8ff583879fa83a7a44086b14f69c09e21 (patch)
tree333f93d99e32e75739e3f76bbaa8c393249f71ff /packages/contract-wrappers/src/contract_wrappers
parent9f7f61085c1a6989b79df575beb0b5d8f2b3652d (diff)
parent3cb955c136bf47b5f40cdbc44bcc4d19ec6d6453 (diff)
downloaddexon-sol-tools-47fef1f8ff583879fa83a7a44086b14f69c09e21.tar
dexon-sol-tools-47fef1f8ff583879fa83a7a44086b14f69c09e21.tar.gz
dexon-sol-tools-47fef1f8ff583879fa83a7a44086b14f69c09e21.tar.bz2
dexon-sol-tools-47fef1f8ff583879fa83a7a44086b14f69c09e21.tar.lz
dexon-sol-tools-47fef1f8ff583879fa83a7a44086b14f69c09e21.tar.xz
dexon-sol-tools-47fef1f8ff583879fa83a7a44086b14f69c09e21.tar.zst
dexon-sol-tools-47fef1f8ff583879fa83a7a44086b14f69c09e21.zip
Merge pull request #936 from 0xProject/feature/contract-wrappers/forwader-optimizations
ForwarderWrapper order optimizations
Diffstat (limited to 'packages/contract-wrappers/src/contract_wrappers')
-rw-r--r--packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts27
1 files changed, 19 insertions, 8 deletions
diff --git a/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts
index 90cfbe2af..13ef0fe01 100644
--- a/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts
+++ b/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts
@@ -10,6 +10,7 @@ import { orderTxOptsSchema } from '../schemas/order_tx_opts_schema';
import { txOptsSchema } from '../schemas/tx_opts_schema';
import { TransactionOpts } from '../types';
import { assert } from '../utils/assert';
+import { calldataOptimizationUtils } from '../utils/calldata_optimization_utils';
import { constants } from '../utils/constants';
import { ContractWrapper } from './contract_wrapper';
@@ -75,14 +76,19 @@ export class ForwarderWrapper extends ContractWrapper {
this.getZRXTokenAddress(),
this.getEtherTokenAddress(),
);
+ // lowercase input addresses
const normalizedTakerAddress = takerAddress.toLowerCase();
const normalizedFeeRecipientAddress = feeRecipientAddress.toLowerCase();
+ // optimize orders
+ const optimizedMarketOrders = calldataOptimizationUtils.optimizeForwarderOrders(signedOrders);
+ const optimizedFeeOrders = calldataOptimizationUtils.optimizeForwarderFeeOrders(signedFeeOrders);
+ // send transaction
const forwarderContractInstance = await this._getForwarderContractAsync();
const txHash = await forwarderContractInstance.marketSellOrdersWithEth.sendTransactionAsync(
- signedOrders,
- _.map(signedOrders, order => order.signature),
- signedFeeOrders,
- _.map(signedFeeOrders, order => order.signature),
+ optimizedMarketOrders,
+ _.map(optimizedMarketOrders, order => order.signature),
+ optimizedFeeOrders,
+ _.map(optimizedFeeOrders, order => order.signature),
feePercentage,
feeRecipientAddress,
{
@@ -138,15 +144,20 @@ export class ForwarderWrapper extends ContractWrapper {
this.getZRXTokenAddress(),
this.getEtherTokenAddress(),
);
+ // lowercase input addresses
const normalizedTakerAddress = takerAddress.toLowerCase();
const normalizedFeeRecipientAddress = feeRecipientAddress.toLowerCase();
+ // optimize orders
+ const optimizedMarketOrders = calldataOptimizationUtils.optimizeForwarderOrders(signedOrders);
+ const optimizedFeeOrders = calldataOptimizationUtils.optimizeForwarderFeeOrders(signedFeeOrders);
+ // send transaction
const forwarderContractInstance = await this._getForwarderContractAsync();
const txHash = await forwarderContractInstance.marketBuyOrdersWithEth.sendTransactionAsync(
- signedOrders,
+ optimizedMarketOrders,
makerAssetFillAmount,
- _.map(signedOrders, order => order.signature),
- signedFeeOrders,
- _.map(signedFeeOrders, order => order.signature),
+ _.map(optimizedMarketOrders, order => order.signature),
+ optimizedFeeOrders,
+ _.map(optimizedFeeOrders, order => order.signature),
feePercentage,
feeRecipientAddress,
{