From 2edd8f2783214b5b15a3bc50fd4561954b2edf0b Mon Sep 17 00:00:00 2001 From: Kirill Fedoseev Date: Tue, 7 Jul 2020 21:26:14 +0700 Subject: [PATCH] Add bw plugin assets (#387) --- burner-wallet-plugin/staging/src/index.tsx | 28 ++++++++-- burner-wallet-plugin/testing/src/index.tsx | 3 +- .../src/bridges/MOONBridge.ts | 12 +++++ .../src/bridges/QDAIBridge.ts | 12 +++++ .../{wetc-bridge => bridges}/WETCBridge.ts | 10 ++-- .../src/bridges/index.ts | 3 ++ .../assets/BridgeableERC20Asset.ts | 53 ++++++++++++------- .../src/burner-wallet/assets/Dai.ts | 11 ++++ .../src/burner-wallet/assets/ERC677Asset.ts | 6 +-- .../src/burner-wallet/assets/Etc.ts | 4 +- .../src/burner-wallet/assets/MOON.ts | 10 ++++ .../assets/NativeMediatorAsset.ts | 6 +-- .../src/burner-wallet/assets/qDai.ts | 9 ++++ .../src/burner-wallet/assets/xMOON.ts | 9 ++++ .../gateways/TokenBridgeGateway.ts | 5 +- .../src/burner-wallet/index.ts | 4 ++ .../tokenbridge-bw-exchange/src/index.ts | 6 ++- .../src/utils/abis/Mediator.ts | 14 +++++ .../src/utils/index.ts | 2 +- .../src/utils/utils.ts | 14 ++++- .../src/wetc-bridge/index.ts | 1 - 21 files changed, 174 insertions(+), 48 deletions(-) create mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/MOONBridge.ts create mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/QDAIBridge.ts rename burner-wallet-plugin/tokenbridge-bw-exchange/src/{wetc-bridge => bridges}/WETCBridge.ts (90%) create mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/index.ts create mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Dai.ts create mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/MOON.ts create mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/qDai.ts create mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/xMOON.ts delete mode 100644 burner-wallet-plugin/tokenbridge-bw-exchange/src/wetc-bridge/index.ts diff --git a/burner-wallet-plugin/staging/src/index.tsx b/burner-wallet-plugin/staging/src/index.tsx index 1571830a..f57c3a7f 100644 --- a/burner-wallet-plugin/staging/src/index.tsx +++ b/burner-wallet-plugin/staging/src/index.tsx @@ -2,19 +2,37 @@ import React from 'react' import ReactDOM from 'react-dom' import BurnerCore from '@burner-wallet/core' import { InjectedSigner, LocalSigner } from '@burner-wallet/core/signers' -import { InfuraGateway, InjectedGateway } from '@burner-wallet/core/gateways' +import { XDaiBridge } from '@burner-wallet/exchange' +import { xdai } from '@burner-wallet/assets' +import { InfuraGateway, InjectedGateway, XDaiGateway } from '@burner-wallet/core/gateways' import Exchange from '@burner-wallet/exchange' import ModernUI from '@burner-wallet/modern-ui' -import { Etc, Wetc, TokenBridgeGateway, WETCBridge } from '@poanet/tokenbridge-bw-exchange' +import { + Etc, + Wetc, + Dai, + qDai, + MOON, + xMOON, + TokenBridgeGateway, + WETCBridge, + QDAIBridge, + MOONBridge +} from '@poanet/tokenbridge-bw-exchange' import MetamaskPlugin from '@burner-wallet/metamask-plugin' const core = new BurnerCore({ signers: [new InjectedSigner(), new LocalSigner()], - gateways: [new InjectedGateway(), new InfuraGateway(process.env.REACT_APP_INFURA_KEY), new TokenBridgeGateway()], - assets: [Wetc, Etc] + gateways: [ + new InjectedGateway(), + new XDaiGateway(), + new InfuraGateway(process.env.REACT_APP_INFURA_KEY), + new TokenBridgeGateway() + ], + assets: [xdai, Wetc, Etc, Dai, qDai, MOON, xMOON] }) -const exchange = new Exchange([new WETCBridge()]) +const exchange = new Exchange([new XDaiBridge(), new WETCBridge(), new QDAIBridge(), new MOONBridge()]) const BurnerWallet = () => diff --git a/burner-wallet-plugin/testing/src/index.tsx b/burner-wallet-plugin/testing/src/index.tsx index 11ef314b..55fe875d 100644 --- a/burner-wallet-plugin/testing/src/index.tsx +++ b/burner-wallet-plugin/testing/src/index.tsx @@ -93,8 +93,7 @@ if (process.env.REACT_APP_MODE === 'AMB_NATIVE_TO_ERC677') { network: process.env.REACT_APP_FOREIGN_NETWORK, // @ts-ignore address: process.env.REACT_APP_FOREIGN_TOKEN_ADDRESS, - // @ts-ignore - bridgeAddress: process.env.REACT_APP_FOREIGN_MEDIATOR_ADDRESS + bridgeModes: ['erc-to-native-amb'] }) testBridge = new MediatorErcToNative({ diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/MOONBridge.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/MOONBridge.ts new file mode 100644 index 00000000..055cfbe0 --- /dev/null +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/MOONBridge.ts @@ -0,0 +1,12 @@ +import { Mediator } from '../burner-wallet' + +export default class MOONBridge extends Mediator { + constructor() { + super({ + assetA: 'xmoon', + assetABridge: '0x1E0507046130c31DEb20EC2f870ad070Ff266079', + assetB: 'moon', + assetBBridge: '0xFEaB457D95D9990b7eb6c943c839258245541754' + }) + } +} diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/QDAIBridge.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/QDAIBridge.ts new file mode 100644 index 00000000..7ad5c1bc --- /dev/null +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/QDAIBridge.ts @@ -0,0 +1,12 @@ +import { MediatorErcToNative } from '../burner-wallet' + +export default class QDAIBridge extends MediatorErcToNative { + constructor() { + super({ + assetA: 'qdai', + assetABridge: '0xFEaB457D95D9990b7eb6c943c839258245541754', + assetB: 'dai', + assetBBridge: '0xf6edFA16926f30b0520099028A145F4E06FD54ed' + }) + } +} diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/wetc-bridge/WETCBridge.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/WETCBridge.ts similarity index 90% rename from burner-wallet-plugin/tokenbridge-bw-exchange/src/wetc-bridge/WETCBridge.ts rename to burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/WETCBridge.ts index 498e17fb..e573bac1 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/wetc-bridge/WETCBridge.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/WETCBridge.ts @@ -1,6 +1,6 @@ import { Mediator } from '../burner-wallet' import { HOME_NATIVE_TO_ERC_ABI, FOREIGN_NATIVE_TO_ERC_ABI } from '../utils' -import { waitForEvent, isBridgeContract, constants } from '../utils' +import { waitForEvent, isVanillaBridgeContract, constants } from '../utils' import { ValueTypes } from '@burner-wallet/exchange' import { toBN, fromWei } from 'web3-utils' @@ -19,7 +19,7 @@ export default class WETCBridge extends Mediator { .getAsset(this.assetA) .getWeb3() const contract = new web3.eth.Contract(HOME_NATIVE_TO_ERC_ABI, this.assetABridge) - const listenToBridgeEvent = await isBridgeContract(contract) + const listenToBridgeEvent = await isVanillaBridgeContract(contract) if (listenToBridgeEvent) { await waitForEvent(web3, contract, 'AffirmationCompleted', this.processBridgeEvents(sendResult.txHash)) } else { @@ -32,7 +32,7 @@ export default class WETCBridge extends Mediator { .getAsset(this.assetB) .getWeb3() const contract = new web3.eth.Contract(FOREIGN_NATIVE_TO_ERC_ABI, this.assetBBridge) - const listenToBridgeEvent = await isBridgeContract(contract) + const listenToBridgeEvent = await isVanillaBridgeContract(contract) if (listenToBridgeEvent) { await waitForEvent(web3, contract, 'RelayedMessage', this.processBridgeEvents(sendResult.txHash)) } else { @@ -53,7 +53,7 @@ export default class WETCBridge extends Mediator { .getWeb3() const contract = new web3.eth.Contract(FOREIGN_NATIVE_TO_ERC_ABI, this.assetBBridge) - const useBridgeContract = await isBridgeContract(contract) + const useBridgeContract = await isVanillaBridgeContract(contract) if (useBridgeContract) { const fee = toBN(await contract.methods.getHomeFee().call()) @@ -79,7 +79,7 @@ export default class WETCBridge extends Mediator { .getWeb3() const contract = new web3.eth.Contract(HOME_NATIVE_TO_ERC_ABI, this.assetABridge) - const useBridgeContract = await isBridgeContract(contract) + const useBridgeContract = await isVanillaBridgeContract(contract) if (useBridgeContract) { const fee = toBN(await contract.methods.getForeignFee().call()) diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/index.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/index.ts new file mode 100644 index 00000000..ab3128d0 --- /dev/null +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/bridges/index.ts @@ -0,0 +1,3 @@ +export { default as WETCBridge } from './WETCBridge' +export { default as QDAIBridge } from './QDAIBridge' +export { default as MOONBridge } from './MOONBridge' diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/BridgeableERC20Asset.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/BridgeableERC20Asset.ts index e1175cef..35337657 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/BridgeableERC20Asset.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/BridgeableERC20Asset.ts @@ -1,42 +1,55 @@ import { ERC20Asset } from '@burner-wallet/assets' -import { MEDIATOR_ABI, constants } from '../../utils' -import { toBN } from 'web3-utils' +import { AssetConstructor } from '@burner-wallet/assets/Asset' +import { MEDIATOR_ABI, constants, isBridgeContract } from '../../utils' +import { toBN, soliditySha3 } from 'web3-utils' -interface BridgeableERC20Constructor { +interface BridgeableERC20Constructor extends AssetConstructor { abi?: object address: string - id: string - name: string - network: string - bridgeAddress: string + bridgeModes: string[] } export default class BridgeableERC20Asset extends ERC20Asset { - protected bridgeAddress: string - private _bridge + private _bridgeModes + private _bridges: { [addr: string]: object | false } - constructor({ bridgeAddress, ...params }: BridgeableERC20Constructor) { - super({ ...params }) - this.bridgeAddress = bridgeAddress.toLowerCase() + public set bridgeModes(bridgeModes: string[]) { + this._bridgeModes = bridgeModes.map(s => soliditySha3(s)!.slice(0, 10)) } - getBridgeContract() { - if (!this._bridge) { + public get bridgeModes() { + return this._bridgeModes + } + + constructor({ + bridgeModes = ['erc-to-native-core', 'erc-to-native-amb', 'erc-to-erc-core', 'erc-to-erc-amb'], + ...params + }: BridgeableERC20Constructor) { + super(params) + this._bridges = {} + this.bridgeModes = bridgeModes + } + + async getBridgeContract(addr: string) { + if (typeof this._bridges[addr] === 'undefined') { const Contract = this.getWeb3().eth.Contract - this._bridge = new Contract(MEDIATOR_ABI, this.bridgeAddress) + const bridge = new Contract(MEDIATOR_ABI, addr) + if (await isBridgeContract(bridge, this.bridgeModes)) { + return (this._bridges[addr] = bridge) + } + return (this._bridges[addr] = false) } - return this._bridge + return this._bridges[addr] } async _send({ from, to, value }) { - if (to.toLowerCase() === this.bridgeAddress) { + const bridge = await this.getBridgeContract(to) + if (bridge) { const allowance = await this.allowance(from, to) if (toBN(allowance).lt(toBN(value))) { await this.approve(from, to, value) } - const receipt = await this.getBridgeContract() - .methods.relayTokens(from, value) - .send({ from }) + const receipt = await bridge.methods.relayTokens(from, value).send({ from }) const transferLog = Object.values(receipt.events as object).find( e => e.raw.topics[0] === constants.TRANSFER_TOPIC ) diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Dai.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Dai.ts new file mode 100644 index 00000000..7ad36821 --- /dev/null +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Dai.ts @@ -0,0 +1,11 @@ +import BridgeableERC20Asset from './BridgeableERC20Asset' + +export default new BridgeableERC20Asset({ + id: 'dai', + name: 'Dai', + network: '1', + address: '0x6b175474e89094c44da98b954eedeac495271d0f', + usdPrice: 1, + icon: 'https://static.burnerfactory.com/icons/mcd.svg', + bridgeModes: ['erc-to-native-amb'] +}) diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/ERC677Asset.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/ERC677Asset.ts index ecd5364b..8d5125c6 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/ERC677Asset.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/ERC677Asset.ts @@ -1,14 +1,12 @@ import { ERC20Asset } from '@burner-wallet/assets' +import { AssetConstructor } from '@burner-wallet/assets/Asset' import { ERC677_ABI, constants } from '../../utils' const BLOCK_LOOKBACK = 250 -interface ERC677Constructor { +interface ERC677Constructor extends AssetConstructor { abi?: object address: string - id: string - name: string - network: string } export default class ERC677Asset extends ERC20Asset { diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Etc.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Etc.ts index 2bbcc56d..7cc00131 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Etc.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/Etc.ts @@ -1,5 +1,5 @@ import NativeMediatorAsset from './NativeMediatorAsset' -import { isBridgeContract, HOME_NATIVE_TO_ERC_ABI } from '../../utils' +import { isVanillaBridgeContract, HOME_NATIVE_TO_ERC_ABI } from '../../utils' class EtcNativeAsset extends NativeMediatorAsset { constructor(props) { @@ -9,7 +9,7 @@ class EtcNativeAsset extends NativeMediatorAsset { async scanMediatorEvents(address, fromBlock, toBlock) { const web3 = this.getWeb3() const contract = new web3.eth.Contract(HOME_NATIVE_TO_ERC_ABI, this.mediatorAddress) - const listenToBridgeEvent = await isBridgeContract(contract) + const listenToBridgeEvent = await isVanillaBridgeContract(contract) if (listenToBridgeEvent && this.mediatorAddress != '') { const events = await contract.getPastEvents('AffirmationCompleted', { fromBlock, diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/MOON.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/MOON.ts new file mode 100644 index 00000000..c3fc08ba --- /dev/null +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/MOON.ts @@ -0,0 +1,10 @@ +import BridgeableERC20Asset from './BridgeableERC20Asset' + +export default new BridgeableERC20Asset({ + id: 'moon', + name: 'MOON', + network: '4', + address: '0xDF82c9014F127243CE1305DFE54151647d74B27A', + icon: 'https://blockscout.com/poa/xdai/images/icons/moon.png', + bridgeModes: ['erc-to-erc-amb'] +}) diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/NativeMediatorAsset.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/NativeMediatorAsset.ts index 58b5db57..3cee4915 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/NativeMediatorAsset.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/NativeMediatorAsset.ts @@ -1,12 +1,10 @@ import { NativeAsset } from '@burner-wallet/assets' import { Contract, EventData } from 'web3-eth-contract' import { MEDIATOR_ABI } from '../../utils' +import { AssetConstructor } from '@burner-wallet/assets/Asset' -interface NativeMediatorConstructor { +interface NativeMediatorConstructor extends AssetConstructor { mediatorAddress?: string - id: string - name: string - network: string } export default class NativeMediatorAsset extends NativeAsset { diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/qDai.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/qDai.ts new file mode 100644 index 00000000..3b5f6d53 --- /dev/null +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/qDai.ts @@ -0,0 +1,9 @@ +import NativeMediatorAsset from './NativeMediatorAsset' + +export default new NativeMediatorAsset({ + id: 'qdai', + name: 'qDai', + network: '181', + usdPrice: 1, + mediatorAddress: '0xFEaB457D95D9990b7eb6c943c839258245541754' +}) diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/xMOON.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/xMOON.ts new file mode 100644 index 00000000..81d86061 --- /dev/null +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/assets/xMOON.ts @@ -0,0 +1,9 @@ +import { default as ERC677Asset } from './ERC677Asset' + +export default new ERC677Asset({ + id: 'xmoon', + name: 'xMOON', + network: '100', + address: '0x1e16aa4Df73d29C029d94CeDa3e3114EC191E25A', + icon: 'https://blockscout.com/poa/xdai/images/icons/moon.png' +}) diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/gateways/TokenBridgeGateway.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/gateways/TokenBridgeGateway.ts index 302786a4..1b9c2726 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/gateways/TokenBridgeGateway.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/gateways/TokenBridgeGateway.ts @@ -9,7 +9,8 @@ export default class TokenBridgeGateway extends Gateway { this.providerStrings = { '61': `https://www.ethercluster.com/etc`, '77': 'https://sokol.poa.network', - '99': 'https://core.poa.network' + '99': 'https://core.poa.network', + '181': 'https://quorum-rpc.tokenbridge.net' } this.providers = {} } @@ -19,7 +20,7 @@ export default class TokenBridgeGateway extends Gateway { } getNetworks() { - return ['61', '77', '99'] + return ['61', '77', '99', '181'] } _provider(network) { diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/index.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/index.ts index 90af2375..ccf990e9 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/index.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/burner-wallet/index.ts @@ -1,6 +1,10 @@ export { default as sPOA } from './assets/sPOA' export { default as Etc } from './assets/Etc' export { default as Wetc } from './assets/Wetc' +export { default as Dai } from './assets/Dai' +export { default as qDai } from './assets/qDai' +export { default as MOON } from './assets/MOON' +export { default as xMOON } from './assets/xMOON' export { default as ERC677Asset } from './assets/ERC677Asset' export { default as BridgeableERC20Asset } from './assets/BridgeableERC20Asset' export { default as NativeMediatorAsset } from './assets/NativeMediatorAsset' diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/index.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/index.ts index f43b67b1..933653e6 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/index.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/index.ts @@ -5,8 +5,12 @@ export { sPOA, Etc, Wetc, + qDai, + Dai, + MOON, + xMOON, TokenBridgeGateway, Mediator, MediatorErcToNative } from './burner-wallet' -export { WETCBridge } from './wetc-bridge' +export { WETCBridge, QDAIBridge, MOONBridge } from './bridges' diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/abis/Mediator.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/abis/Mediator.ts index f52a578e..1682f149 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/abis/Mediator.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/abis/Mediator.ts @@ -52,5 +52,19 @@ export default [ payable: false, stateMutability: 'nonpayable', type: 'function' + }, + { + constant: true, + inputs: [], + name: 'getBridgeMode', + outputs: [ + { + name: '', + type: 'bytes4' + } + ], + payable: false, + stateMutability: 'pure', + type: 'function' } ] diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/index.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/index.ts index dad1b86c..4d92f381 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/index.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/index.ts @@ -1,4 +1,4 @@ -export { constants, wait, waitForEvent, isBridgeContract } from './utils' +export { constants, wait, waitForEvent, isVanillaBridgeContract, isBridgeContract } from './utils' export { ERC677_ABI, FOREIGN_NATIVE_TO_ERC_ABI, diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/utils.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/utils.ts index 766087da..e6b6a45e 100644 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/utils.ts +++ b/burner-wallet-plugin/tokenbridge-bw-exchange/src/utils/utils.ts @@ -34,7 +34,7 @@ export const waitForEvent = async (web3, contract: Contract, event: string, call } } -export const isBridgeContract = async (contract: Contract): Promise => { +export const isVanillaBridgeContract = async (contract: Contract): Promise => { try { await contract.methods.deployedAtBlock().call() return true @@ -42,3 +42,15 @@ export const isBridgeContract = async (contract: Contract): Promise => return false } } + +export const isBridgeContract = async (contract: Contract, allowedModes?: string[]): Promise => { + try { + const mode = await contract.methods.getBridgeMode().call() + if (typeof allowedModes === 'undefined') { + return true + } + return allowedModes.includes(mode) + } catch (e) { + return false + } +} diff --git a/burner-wallet-plugin/tokenbridge-bw-exchange/src/wetc-bridge/index.ts b/burner-wallet-plugin/tokenbridge-bw-exchange/src/wetc-bridge/index.ts deleted file mode 100644 index e9d04fa9..00000000 --- a/burner-wallet-plugin/tokenbridge-bw-exchange/src/wetc-bridge/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as WETCBridge } from './WETCBridge'