78 lines
3.3 KiB
Markdown
78 lines
3.3 KiB
Markdown
# TokenBridge Burner Wallet 2 Plugin
|
|
|
|
This plugin defines a Bridge trading pair to be used in the Exchange Plugin.
|
|
|
|
Bridge trading pairs and assets supported:
|
|
* ETC - WETC Bridge
|
|
* MOON - xMOON Bridge
|
|
* DAI - qDAI Bridge (For qDAI Bridge, it's necessary to use a custom DAI token from this repo instead of the DAI asset provided by burner-wallet)
|
|
|
|
It also provides some generic resources that can be used and extended:
|
|
* **ERC677Asset** - A representation of an Erc677 token.
|
|
* **BridgeableERC20Asset** - A representation of Erc20 token with a possibility of bridging it via a call to `relayTokens`.
|
|
* **NativeMediatorAsset** - Represents a native token that interacts with a Mediator extension.
|
|
* **Mediator Pair** - Represents an Exchange Pair that interacts with mediators extensions.
|
|
* **MediatorErcToNative Pair** - Represents a modified Mediator Pair that interacts with a tokenbridge erc-to-native mediators contracts.
|
|
* **TokenBridgeGateway** - A gateway to operate with ETC, POA Sokol, POA Core and qDAI networks.
|
|
|
|
### Install package
|
|
```
|
|
yarn add @poanet/tokenbridge-bw-exchange
|
|
```
|
|
|
|
### Usage
|
|
|
|
#### WETCBridge example
|
|
In this example, we use `TokenBridgeGateway` for connecting to the Ethereum Classic and `InfuraGateway` for connecting to the Ethereum Mainnet.
|
|
|
|
`WETCBridge` operates with two assets: `WETC` (Ethereum Mainnet) and `ETC` (Ethereum Classic), they should be added in the assets list.
|
|
|
|
```javascript
|
|
import BurnerCore from '@burner-wallet/core'
|
|
import Exchange from '@burner-wallet/exchange'
|
|
import { LocalSigner } from '@burner-wallet/core/signers'
|
|
import { Etc, Wetc, TokenBridgeGateway, WETCBridge } from '@poanet/tokenbridge-bw-exchange'
|
|
import { InfuraGateway } from '@burner-wallet/core/gateways'
|
|
|
|
const core = new BurnerCore({
|
|
signers: [new LocalSigner()],
|
|
gateways: [new TokenBridgeGateway(), new InfuraGateway(process.env.REACT_APP_INFURA_KEY)],
|
|
assets: [Wetc, Etc]
|
|
})
|
|
|
|
const exchange = new Exchange({
|
|
pairs: [new WETCBridge()]
|
|
})
|
|
```
|
|
|
|
### Using several exchanges simultaneously
|
|
In this example, we use `TokenBridgeGateway` for connecting to the qDAI chain, `XDaiGatewai` for connecting to the xDAI chain and `InfuraGateway` for connecting to the Ethereum Mainnet and Rinkeby Network.
|
|
|
|
`QDAIBridge` operates with two assets: `qDAI` (qDAI chain) and `DAI` (Ethereum Mainnet). Note that we use a custom DAI token from the `@poanet/tokenbridge-bw-exchange`, this is necessary for allowing bridge operations on this token.
|
|
|
|
`MOONBridge` operates with two assets: `MOON` (Rinkeby network) and `xMOON` (xDAI chain).
|
|
|
|
All four assets should be added to the assets list.
|
|
|
|
```javascript
|
|
import BurnerCore from '@burner-wallet/core'
|
|
import Exchange from '@burner-wallet/exchange'
|
|
import { LocalSigner } from '@burner-wallet/core/signers'
|
|
import { InfuraGateway, XDaiGateway } from '@burner-wallet/core/gateways'
|
|
import { Dai, qDai, MOON, xMOON, TokenBridgeGateway, QDAIBridge, MOONBridge } from '@poanet/tokenbridge-bw-exchange'
|
|
|
|
const core = new BurnerCore({
|
|
signers: [new LocalSigner()],
|
|
gateways: [new TokenBridgeGateway(), new XDaiGateway(), new InfuraGateway(process.env.REACT_APP_INFURA_KEY)],
|
|
assets: [Dai, qDai, MOON, xMOON]
|
|
})
|
|
|
|
const exchange = new Exchange({
|
|
pairs: [new QDAIBridge(), new MOONBridge()]
|
|
})
|
|
```
|
|
|
|
This is how the exchange plugin will look like:
|
|
|
|
![exchange-wetc](https://user-images.githubusercontent.com/4614574/80991095-e40d0900-8e0d-11ea-9915-1b4e4a052694.png)
|