Add KnightSwap on BSC (#498)

* Curve pool script to generate pools and their info. Still need to integrate into API

* Added MDEX to BSC

* Removed curve automation scripts from this PR

* Fixed typo

* Changelog

* fix formatting

* Fixed yarn lint

* Add KnightSwap

* Changelog

* update changelog

* changelog again...
This commit is contained in:
eobbad 2022-06-10 16:57:42 +02:00 committed by GitHub
parent 2838cb9420
commit d6bc702550
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 34 additions and 4 deletions

View File

@ -1,4 +1,17 @@
[ [
{
"version": "16.62.0",
"changes": [
{
"note": "Add MDEX on BSC",
"pr": 496
},
{
"note": "Add KnightSwap on BSC",
"pr": 498
}
]
}
{ {
"version": "16.61.0", "version": "16.61.0",
"changes": [ "changes": [
@ -13,10 +26,6 @@
{ {
"note": "Add MeshSwap on Polygon", "note": "Add MeshSwap on Polygon",
"pr": 491 "pr": 491
},
{
"note": "Add MDEX on BSC",
"pr": 496
} }
], ],
"timestamp": 1654284040 "timestamp": 1654284040

View File

@ -8,6 +8,7 @@ import {
BELT_BSC_INFOS, BELT_BSC_INFOS,
BISWAP_ROUTER_BY_CHAIN_ID, BISWAP_ROUTER_BY_CHAIN_ID,
MDEX_ROUTER_BY_CHAIN_ID, MDEX_ROUTER_BY_CHAIN_ID,
KNIGHTSWAP_ROUTER_BY_CHAIN_ID,
CAFESWAP_ROUTER_BY_CHAIN_ID, CAFESWAP_ROUTER_BY_CHAIN_ID,
CHEESESWAP_ROUTER_BY_CHAIN_ID, CHEESESWAP_ROUTER_BY_CHAIN_ID,
COMETHSWAP_ROUTER_BY_CHAIN_ID, COMETHSWAP_ROUTER_BY_CHAIN_ID,
@ -547,6 +548,7 @@ export function uniswapV2LikeRouterAddress(
| ERC20BridgeSource.BiSwap | ERC20BridgeSource.BiSwap
| ERC20BridgeSource.Yoshi | ERC20BridgeSource.Yoshi
| ERC20BridgeSource.MDex | ERC20BridgeSource.MDex
| ERC20BridgeSource.KnightSwap
| ERC20BridgeSource.MeshSwap, | ERC20BridgeSource.MeshSwap,
): string { ): string {
switch (source) { switch (source) {
@ -604,6 +606,8 @@ export function uniswapV2LikeRouterAddress(
return MESHSWAP_ROUTER_BY_CHAIN_ID[chainId]; return MESHSWAP_ROUTER_BY_CHAIN_ID[chainId];
case ERC20BridgeSource.MDex: case ERC20BridgeSource.MDex:
return MDEX_ROUTER_BY_CHAIN_ID[chainId]; return MDEX_ROUTER_BY_CHAIN_ID[chainId];
case ERC20BridgeSource.KnightSwap:
return KNIGHTSWAP_ROUTER_BY_CHAIN_ID[chainId];
default: default:
throw new Error(`Unknown UniswapV2 like source ${source}`); throw new Error(`Unknown UniswapV2 like source ${source}`);
} }

View File

@ -148,6 +148,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.KyberDmm, ERC20BridgeSource.KyberDmm,
ERC20BridgeSource.BiSwap, ERC20BridgeSource.BiSwap,
ERC20BridgeSource.MDex, ERC20BridgeSource.MDex,
ERC20BridgeSource.KnightSwap,
]), ]),
[ChainId.Polygon]: new SourceFilters([ [ChainId.Polygon]: new SourceFilters([
ERC20BridgeSource.SushiSwap, ERC20BridgeSource.SushiSwap,
@ -295,6 +296,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.KyberDmm, ERC20BridgeSource.KyberDmm,
ERC20BridgeSource.BiSwap, ERC20BridgeSource.BiSwap,
ERC20BridgeSource.MDex, ERC20BridgeSource.MDex,
ERC20BridgeSource.KnightSwap,
]), ]),
[ChainId.Polygon]: new SourceFilters([ [ChainId.Polygon]: new SourceFilters([
ERC20BridgeSource.SushiSwap, ERC20BridgeSource.SushiSwap,
@ -1982,6 +1984,13 @@ export const MDEX_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
NULL_ADDRESS, NULL_ADDRESS,
); );
export const KNIGHTSWAP_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
{
[ChainId.BSC]: '0x05E61E0cDcD2170a76F9568a110CEe3AFdD6c46f',
},
NULL_ADDRESS,
);
export const MOONISWAP_REGISTRIES_BY_CHAIN_ID = valueByChainId( export const MOONISWAP_REGISTRIES_BY_CHAIN_ID = valueByChainId(
{ {
[ChainId.Mainnet]: ['0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643'], [ChainId.Mainnet]: ['0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643'],
@ -2490,6 +2499,7 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = {
[ERC20BridgeSource.ShibaSwap]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.ShibaSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.BiSwap]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.BiSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.MDex]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.MDex]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.KnightSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.Balancer]: () => 120e3, [ERC20BridgeSource.Balancer]: () => 120e3,
[ERC20BridgeSource.BalancerV2]: (fillData?: FillData) => { [ERC20BridgeSource.BalancerV2]: (fillData?: FillData) => {
return 100e3 + ((fillData as BalancerV2BatchSwapFillData).swapSteps.length - 1) * 50e3; return 100e3 + ((fillData as BalancerV2BatchSwapFillData).swapSteps.length - 1) * 50e3;

View File

@ -204,6 +204,8 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'BiSwap'); return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'BiSwap');
case ERC20BridgeSource.MDex: case ERC20BridgeSource.MDex:
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'MDex'); return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'MDex');
case ERC20BridgeSource.KnightSwap:
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'KnightSwap');
case ERC20BridgeSource.GMX: case ERC20BridgeSource.GMX:
return encodeBridgeSourceId(BridgeProtocol.GMX, 'GMX'); return encodeBridgeSourceId(BridgeProtocol.GMX, 'GMX');
case ERC20BridgeSource.Platypus: case ERC20BridgeSource.Platypus:
@ -303,6 +305,7 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder
case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.MorpheusSwap:
case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.BiSwap:
case ERC20BridgeSource.MDex: case ERC20BridgeSource.MDex:
case ERC20BridgeSource.KnightSwap:
case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.Yoshi:
case ERC20BridgeSource.MeshSwap: case ERC20BridgeSource.MeshSwap:
const uniswapV2FillData = (order as OptimizedMarketBridgeOrder<UniswapV2FillData>).fillData; const uniswapV2FillData = (order as OptimizedMarketBridgeOrder<UniswapV2FillData>).fillData;
@ -529,6 +532,7 @@ export const BRIDGE_ENCODERS: {
[ERC20BridgeSource.MorpheusSwap]: routerAddressPathEncoder, [ERC20BridgeSource.MorpheusSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.BiSwap]: routerAddressPathEncoder, [ERC20BridgeSource.BiSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.MDex]: routerAddressPathEncoder, [ERC20BridgeSource.MDex]: routerAddressPathEncoder,
[ERC20BridgeSource.KnightSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.Yoshi]: routerAddressPathEncoder, [ERC20BridgeSource.Yoshi]: routerAddressPathEncoder,
[ERC20BridgeSource.MeshSwap]: routerAddressPathEncoder, [ERC20BridgeSource.MeshSwap]: routerAddressPathEncoder,
// Avalanche // Avalanche

View File

@ -1449,6 +1449,7 @@ export class SamplerOperations {
case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.MorpheusSwap:
case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.BiSwap:
case ERC20BridgeSource.MDex: case ERC20BridgeSource.MDex:
case ERC20BridgeSource.KnightSwap:
case ERC20BridgeSource.MeshSwap: case ERC20BridgeSource.MeshSwap:
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
if (!isValidAddress(uniLikeRouter)) { if (!isValidAddress(uniLikeRouter)) {
@ -1792,6 +1793,7 @@ export class SamplerOperations {
case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.MorpheusSwap:
case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.BiSwap:
case ERC20BridgeSource.MDex: case ERC20BridgeSource.MDex:
case ERC20BridgeSource.KnightSwap:
case ERC20BridgeSource.MeshSwap: case ERC20BridgeSource.MeshSwap:
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
if (!isValidAddress(uniLikeRouter)) { if (!isValidAddress(uniLikeRouter)) {

View File

@ -72,6 +72,7 @@ export enum ERC20BridgeSource {
PancakeSwapV2 = 'PancakeSwap_V2', PancakeSwapV2 = 'PancakeSwap_V2',
BiSwap = 'BiSwap', BiSwap = 'BiSwap',
MDex = 'MDex', MDex = 'MDex',
KnightSwap = 'KnightSwap',
BakerySwap = 'BakerySwap', BakerySwap = 'BakerySwap',
Nerve = 'Nerve', Nerve = 'Nerve',
Belt = 'Belt', Belt = 'Belt',