diff --git a/contracts/asset-proxy/contracts/src/bridges/DexForwarderBridge.sol b/contracts/asset-proxy/contracts/src/bridges/DexForwarderBridge.sol index 17c56ee181..70409719db 100644 --- a/contracts/asset-proxy/contracts/src/bridges/DexForwarderBridge.sol +++ b/contracts/asset-proxy/contracts/src/bridges/DexForwarderBridge.sol @@ -54,14 +54,6 @@ contract DexForwarderBridge is BridgeCall[] calls; } - event DexForwarderBridgeCallFailed( - address indexed target, - address inputToken, - address outputToken, - uint256 inputTokenAmount, - uint256 outputTokenAmount - ); - /// @dev Spends this contract's entire balance of input tokens by forwarding /// them to other bridges. Reverts if the entire balance is not spent. /// @param outputToken The token being bought. @@ -118,16 +110,7 @@ contract DexForwarderBridge is call.bridgeData )); - if (!didSucceed) { - // Log errors. - emit DexForwarderBridgeCallFailed( - call.target, - state.inputToken, - outputToken, - state.callInputTokenAmount, - state.callOutputTokenAmount - ); - } else { + if (didSucceed) { // Increase the amount of tokens sold. state.totalInputTokenSold = state.totalInputTokenSold.safeAdd( state.callInputTokenAmount @@ -168,7 +151,7 @@ contract DexForwarderBridge is // Must be called through `bridgeTransferFrom()`. require(msg.sender == address(this), "DexForwarderBridge/ONLY_SELF"); // `bridge` must not be this contract. - require(bridge != address(this), "DexForwarderBridge/ILLEGAL_BRIDGE"); + require(bridge != address(this)); // Get the starting balance of output tokens for `to`. uint256 initialRecipientBalance = IERC20Token(outputToken).balanceOf(to); diff --git a/contracts/asset-proxy/src/dex_forwarder_bridge.ts b/contracts/asset-proxy/src/dex_forwarder_bridge.ts index 77c76b06b9..bb155cb214 100644 --- a/contracts/asset-proxy/src/dex_forwarder_bridge.ts +++ b/contracts/asset-proxy/src/dex_forwarder_bridge.ts @@ -1,6 +1,6 @@ import { AbiEncoder, BigNumber } from '@0x/utils'; -export interface DexForwaderBridgeCall { +export interface DexForwarderBridgeCall { target: string; inputTokenAmount: BigNumber; outputTokenAmount: BigNumber; @@ -9,7 +9,7 @@ export interface DexForwaderBridgeCall { export interface DexForwaderBridgeData { inputToken: string; - calls: DexForwaderBridgeCall[]; + calls: DexForwarderBridgeCall[]; } export const dexForwarderBridgeDataEncoder = AbiEncoder.create([ diff --git a/contracts/asset-proxy/test/dex_forwarder_bridge.ts b/contracts/asset-proxy/test/dex_forwarder_bridge.ts index 737710a969..2397711432 100644 --- a/contracts/asset-proxy/test/dex_forwarder_bridge.ts +++ b/contracts/asset-proxy/test/dex_forwarder_bridge.ts @@ -7,17 +7,15 @@ import { getRandomInteger, randomAddress, shortZip, - verifyEventsFromLogs, } from '@0x/contracts-test-utils'; import { BigNumber, hexUtils } from '@0x/utils'; import { DecodedLogs } from 'ethereum-types'; import * as _ from 'lodash'; -import { DexForwaderBridgeCall, dexForwarderBridgeDataEncoder } from '../src/dex_forwarder_bridge'; +import { DexForwarderBridgeCall, dexForwarderBridgeDataEncoder } from '../src/dex_forwarder_bridge'; import { artifacts } from './artifacts'; import { - DexForwarderBridgeEvents, TestDexForwarderBridgeBridgeTransferFromCalledEventArgs as BtfCalledEventArgs, TestDexForwarderBridgeContract, TestDexForwarderBridgeEvents as TestEvents, @@ -59,8 +57,8 @@ blockchainTests.resets('DexForwarderBridge unit tests', env => { function getRandomBridgeCall( bridgeAddress: string, - fields: Partial = {}, - ): DexForwaderBridgeCall { + fields: Partial = {}, + ): DexForwarderBridgeCall { return { target: bridgeAddress, inputTokenAmount: getRandomInteger(1, '100e18'), @@ -71,10 +69,10 @@ blockchainTests.resets('DexForwarderBridge unit tests', env => { } describe('bridgeTransferFrom()', () => { - let goodBridgeCalls: DexForwaderBridgeCall[]; - let revertingBridgeCall: DexForwaderBridgeCall; - let failingBridgeCall: DexForwaderBridgeCall; - let allBridgeCalls: DexForwaderBridgeCall[]; + let goodBridgeCalls: DexForwarderBridgeCall[]; + let revertingBridgeCall: DexForwarderBridgeCall; + let failingBridgeCall: DexForwarderBridgeCall; + let allBridgeCalls: DexForwarderBridgeCall[]; let totalFillableOutputAmount: BigNumber; let totalFillableInputAmount: BigNumber; let recipientOutputBalance: BigNumber; @@ -109,10 +107,10 @@ blockchainTests.resets('DexForwarderBridge unit tests', env => { opts: Partial<{ returnCode: string; revertError: string; - callFields: Partial; + callFields: Partial; outputFillAmount: BigNumber; }>, - ): Promise { + ): Promise { const { returnCode, revertError, callFields, outputFillAmount } = { returnCode: BRIDGE_SUCCESS, revertError: '', @@ -232,26 +230,6 @@ blockchainTests.resets('DexForwarderBridge unit tests', env => { expect(currentRecipientOutputBalance).to.bignumber.eq(totalFillableOutputAmount); }); - it('emits failure events for failing bridge calls', async () => { - const calls = [revertingBridgeCall, failingBridgeCall, ...goodBridgeCalls]; - const bridgeData = dexForwarderBridgeDataEncoder.encode({ - inputToken, - calls, - }); - const logs = await callBridgeTransferFromAsync({ bridgeData }); - verifyEventsFromLogs( - logs, - [revertingBridgeCall, failingBridgeCall].map(c => ({ - inputToken, - outputToken, - target: c.target, - inputTokenAmount: c.inputTokenAmount, - outputTokenAmount: c.outputTokenAmount, - })), - DexForwarderBridgeEvents.DexForwarderBridgeCallFailed, - ); - }); - it("transfers only up to each call's input amount to each bridge", async () => { const calls = goodBridgeCalls; const bridgeData = dexForwarderBridgeDataEncoder.encode({ @@ -302,19 +280,6 @@ blockchainTests.resets('DexForwarderBridge unit tests', env => { calls, }); const logs = await callBridgeTransferFromAsync({ bridgeData }); - verifyEventsFromLogs( - logs, - [ - { - inputToken, - outputToken, - target: badCall.target, - inputTokenAmount: badCall.inputTokenAmount, - outputTokenAmount: badCall.outputTokenAmount, - }, - ], - TestEvents.DexForwarderBridgeCallFailed, - ); const btfs = filterLogsToArguments(logs, TestEvents.BridgeTransferFromCalled); expect(btfs).to.be.length(goodBridgeCalls.length); }); @@ -332,19 +297,6 @@ blockchainTests.resets('DexForwarderBridge unit tests', env => { calls, }); const logs = await callBridgeTransferFromAsync({ bridgeData }); - verifyEventsFromLogs( - logs, - [ - { - inputToken, - outputToken, - target: badCall.target, - inputTokenAmount: badCall.inputTokenAmount, - outputTokenAmount: badCall.outputTokenAmount, - }, - ], - TestEvents.DexForwarderBridgeCallFailed, - ); const btfs = filterLogsToArguments(logs, TestEvents.BridgeTransferFromCalled); expect(btfs).to.be.length(goodBridgeCalls.length); }); @@ -365,19 +317,6 @@ blockchainTests.resets('DexForwarderBridge unit tests', env => { calls, }); const logs = await callBridgeTransferFromAsync({ bridgeData }); - verifyEventsFromLogs( - logs, - [ - { - inputToken, - outputToken, - target: badCall.target, - inputTokenAmount: badCall.inputTokenAmount, - outputTokenAmount: badCall.outputTokenAmount, - }, - ], - TestEvents.DexForwarderBridgeCallFailed, - ); const btfs = filterLogsToArguments(logs, TestEvents.BridgeTransferFromCalled); expect(btfs).to.be.length(goodBridgeCalls.length); });