Skip to content

Commit

Permalink
Merge pull request #5422 from NavneethJayendran/defira-connector
Browse files Browse the repository at this point in the history
feat/Add Defira connector
  • Loading branch information
JeremyKono committed Aug 11, 2022
2 parents e50e5db + 99ae46d commit 6a4f759
Show file tree
Hide file tree
Showing 30 changed files with 2,536 additions and 17 deletions.
6 changes: 5 additions & 1 deletion gateway/manual-tests/curl.sh
Expand Up @@ -60,13 +60,17 @@ curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: app

curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/price_dfk.json)" https://localhost:5000/amm/price

curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/price_defira.json)" https://localhost:5000/amm/price | jq

## trade

curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/eth_uniswap_trade.json)" https://localhost:5000/amm/trade | jq

curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/avalanche_traderjoe_trade.json)" https://localhost:5000/amm/trade | jq

curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/harmony_dfk_trade.json)" https://localhost:5000/amm/trade
curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/harmony_dfk_trade.json)" https://localhost:5000/amm/trade | jq

curl -s -X POST -k --key $GATEWAY_KEY --cert $GATEWAY_CERT -H "Content-Type: application/json" -d "$(envsubst < ./requests/harmony_testnet_defira_trade.json)" https://localhost:5000/amm/trade | jq

## Perp - curie

Expand Down
10 changes: 10 additions & 0 deletions gateway/manual-tests/requests/harmony_testnet_defira_trade.json
@@ -0,0 +1,10 @@
{
"address": "$ETH_ADDRESS",
"quote": "1ETH",
"base": "WONE74",
"amount": "0.01",
"side": "SELL",
"chain": "harmony",
"network": "testnet",
"connector": "defira"
}
9 changes: 9 additions & 0 deletions gateway/manual-tests/requests/price_defira.json
@@ -0,0 +1,9 @@
{
"connector": "defira",
"chain": "harmony",
"network": "mainnet",
"quote": "USDC",
"base": "FIRA",
"amount": "0.1",
"side": "SELL"
}
2 changes: 2 additions & 0 deletions gateway/package.json
Expand Up @@ -43,6 +43,7 @@
"@uniswap/v3-core": "^1.0.0",
"@uniswap/v3-periphery": "^1.1.1",
"@uniswap/v3-sdk": "^3.7.0",
"@zuzu-cat/defira-sdk": "^1.0.0",
"abi-decoder": "^2.4.0",
"add": "^2.0.6",
"ajv": "^8.6.3",
Expand Down Expand Up @@ -98,6 +99,7 @@
"eslint-plugin-standard": "^4.0.1",
"jest": "^27.3.1",
"jest-extended": "^0.11.5",
"mock-ethers-provider": "^1.0.2",
"node-cache": "5.1.2",
"nodemon": "^2.0.4",
"nohup": "^0.1.0",
Expand Down
1 change: 1 addition & 0 deletions gateway/src/chains/ethereum/ethereum.validators.ts
Expand Up @@ -58,6 +58,7 @@ export const validateSpender: Validator = mkValidator(
val === 'openocean' ||
val === 'quickswap' ||
val === 'defikingdoms' ||
val === 'defira' ||
isAddress(val))
);

Expand Down
4 changes: 3 additions & 1 deletion gateway/src/chains/harmony/harmony.ts
Expand Up @@ -136,14 +136,16 @@ export class Harmony extends EthereumBase implements Ethereumish {
}

getSpender(reqSpender: string): string {
// TODO: add SushiswapConfig and ViperswapConfig
// TODO: add SushiswapConfig and ViperswapConfig and Defira configs (or move `approve` to AMM)
let spender: string;
if (reqSpender === 'sushiswap') {
spender = '0x1b02da8cb0d097eb8d57a175b88c7d8b47997506';
} else if (reqSpender === 'viperswap') {
spender = '0xf012702a5f0e54015362cbca26a26fc90aa832a3';
} else if (reqSpender === 'defikingdoms') {
spender = '0x24ad62502d1C652Cc7684081169D04896aC20f30';
} else if (reqSpender === 'defira') {
spender = '0x3C8BF7e25EbfAaFb863256A4380A8a93490d8065';
} else {
spender = reqSpender;
}
Expand Down
1 change: 1 addition & 0 deletions gateway/src/chains/harmony/harmony.validators.ts
Expand Up @@ -45,6 +45,7 @@ export const validateSpender: Validator = mkValidator(
(val === 'sushiswap' ||
val === 'viperswap' ||
val === 'defikingdoms' ||
val === 'defira' ||
isValidAddress(val))
);

Expand Down
93 changes: 93 additions & 0 deletions gateway/src/chains/harmony/harmony_tokens_defira.json
@@ -0,0 +1,93 @@
{
"name": "Defira Token List",
"logoURI": "https://sushi.com/static/media/logo.dec926df.png",
"version": {
"major": 0,
"minor": 1,
"patch": 1
},
"keywords": [],
"timestamp": "2022-01-30T00:00:00+00:00",
"tokens": [
{
"chainId": 1666600000,
"name": "Staked One",
"address": "0x22D62b19b7039333ad773b7185BB61294F3AdC19",
"symbol": "stONE",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x22D62b19b7039333ad773b7185BB61294F3AdC19/logo.png"
},
{
"chainId": 1666600000,
"name": "Wrapped ONE",
"address": "0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a",
"symbol": "WONE",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/one.jpg"
},
{
"chainId": 1666600000,
"name": "Dai Stablecoin",
"address": "0xEf977d2f931C1978Db5F6747666fa1eACB0d0339",
"symbol": "1DAI",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/dai.jpg"
},
{
"chainId": 1666600000,
"name": "Tether USDT",
"address": "0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f",
"symbol": "1USDT",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/usdt.jpg"
},
{
"chainId": 1666600000,
"name": "1ETH",
"address": "0x6983D1E6DEf3690C4d616b13597A09e6193EA013",
"symbol": "1ETH",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/eth.jpg"
},
{
"chainId": 1666600000,
"name": "Wrapped BTC",
"address": "0x3095c7557bCb296ccc6e363DE01b760bA031F2d9",
"symbol": "1WBTC",
"decimals": 18,
"logoURI": ""
},
{
"chainId": 1666600000,
"address": "0xdc54046c0451f9269FEe1840aeC808D36015697d",
"symbol": "1BTC",
"name": "1BTC",
"decimals": 8,
"logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xdc54046c0451f9269FEe1840aeC808D36015697d/logo.png"
},
{
"chainId": 1666600000,
"address": "0xE176EBE47d621b984a73036B9DA5d834411ef734",
"symbol": "BUSD",
"name": "Binance USD",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/busd.jpg"
},
{
"chainId": 1666600000,
"address": "0x2A719aF848bf365489E548BE5edbEC1D65858e59",
"symbol": "FIRA",
"name": "Fira",
"decimals": 18,
"logoURI": "https://d2w69usg89gc0q.cloudfront.net/tokens/FIRA.png"
},
{
"chainId": 1666600000,
"address": "0xCf1709Ad76A79d5a60210F23e81cE2460542A836",
"symbol": "TRANQ",
"name": "Tranquil",
"decimals": 18,
"logoURI": "https://d2w69usg89gc0q.cloudfront.net/tokens/TRANQ.png"
}
]
}
29 changes: 29 additions & 0 deletions gateway/src/chains/harmony/harmony_tokens_defira_testnet.json
@@ -0,0 +1,29 @@
{
"name": "Defira Token List",
"logoURI": "https://sushi.com/static/media/logo.dec926df.png",
"version": {
"major": 0,
"minor": 1,
"patch": 1
},
"keywords": [],
"timestamp": "2022-01-30T00:00:00+00:00",
"tokens": [
{
"chainId": 1666700000,
"name": "OneETH",
"address": "0x1E120B3b4aF96e7F394ECAF84375b1C661830013",
"symbol": "1ETH",
"decimals": 18,
"logoURI": "https://assets.coingecko.com/coins/images/279/small/ethereum.png"
},
{
"chainId": 1666700000,
"name": "Wrapped ONE",
"address": "0x7466d7d0C21Fa05F32F5a0Fa27e12bdC06348Ce2",
"symbol": "WONE74",
"decimals": 18,
"logoURI": "https://assets.coingecko.com/coins/images/4344/small/Y88JAze.png"
}
]
}
18 changes: 13 additions & 5 deletions gateway/src/chains/harmony/harmony_tokens_sushiswap.json
Expand Up @@ -1017,11 +1017,11 @@
"logoURI": "https://d1xrz6ki9z98vb.cloudfront.net/venomswap/tokens/1WISE.png"
},
{
"chainId": 1666600000,
"name": "Wrapped ONE",
"address": "0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a",
"symbol": "WONE",
"decimals": 18,
"chainId": 1666600000,
"logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/one.jpg"
},
{
Expand Down Expand Up @@ -1161,36 +1161,44 @@
"logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x01A4b054110d57069c1658AFBC46730529A3E326/logo.png"
},
{
"address": "0x0D625029E21540aBdfAFa3BFC6FD44fB4e0A66d0",
"chainId": 1666600000,
"address": "0x0D625029E21540aBdfAFa3BFC6FD44fB4e0A66d0",
"name": "ColonyToken",
"symbol": "CLNY",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x0D625029E21540aBdfAFa3BFC6FD44fB4e0A66d0/logo.png"
},
{
"address": "0x10010078a54396F62c96dF8532dc2B4847d47ED3",
"chainId": 1666600000,
"address": "0x10010078a54396F62c96dF8532dc2B4847d47ED3",
"name": "Hundred Finance",
"symbol": "HND",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x10010078a54396F62c96dF8532dc2B4847d47ED3/logo.png"
},
{
"address": "0xBbD83eF0c9D347C85e60F1b5D2c58796dBE1bA0d",
"chainId": 1666600000,
"address": "0xBbD83eF0c9D347C85e60F1b5D2c58796dBE1bA0d",
"name": "Cheese",
"symbol": "CHEEZ",
"decimals": 9,
"logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xBbD83eF0c9D347C85e60F1b5D2c58796dBE1bA0d/logo.png"
},
{
"address": "0x22D62b19b7039333ad773b7185BB61294F3AdC19",
"chainId": 1666600000,
"address": "0x22D62b19b7039333ad773b7185BB61294F3AdC19",
"name": "Staked One",
"symbol": "stONE",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x22D62b19b7039333ad773b7185BB61294F3AdC19/logo.png"
},
{
"chainId": 1666600000,
"address": "0x2A719aF848bf365489E548BE5edbEC1D65858e59",
"symbol": "FIRA",
"name": "Fira",
"decimals": 18,
"logoURI": "https://d2w69usg89gc0q.cloudfront.net/tokens/FIRA.png"
}
]
}
Expand Down
Expand Up @@ -20,6 +20,14 @@
"harmony testnet"
]
},
{
"name": "Wrapped ONE",
"address": "0x7466d7d0C21Fa05F32F5a0Fa27e12bdC06348Ce2",
"symbol": "WONE74",
"decimals": 18,
"chainId": 1666700000,
"logoURI": "https://assets.coingecko.com/coins/images/4344/small/Y88JAze.png"
},
{
"chainId": 1666700000,
"address": "0x0E80905676226159cC3FF62B1876C907C91F7395",
Expand Down
6 changes: 6 additions & 0 deletions gateway/src/connectors/connectors.routes.ts
@@ -1,5 +1,6 @@
import { Router } from 'express';
import { asyncHandler } from '../services/error-handler';
import { DefiraConfig } from './defira/defira.config';
import { PangolinConfig } from './pangolin/pangolin.config';
import { QuickswapConfig } from './quickswap/quickswap.config';
import { PerpConfig } from './perp/perp.config';
Expand Down Expand Up @@ -63,6 +64,11 @@ export namespace ConnectorsRoutes {
trading_type: DefikingdomsConfig.config.tradingTypes,
available_networks: DefikingdomsConfig.config.availableNetworks,
},
{
name: 'defira',
trading_type: DefiraConfig.config.tradingTypes,
available_networks: DefiraConfig.config.availableNetworks,
},
],
});
})
Expand Down
36 changes: 36 additions & 0 deletions gateway/src/connectors/defira/defira.config.ts
@@ -0,0 +1,36 @@
import { ConfigManagerV2 } from '../../services/config-manager-v2';
import { AvailableNetworks } from '../../services/config-manager-types';
export namespace DefiraConfig {
export interface NetworkConfig {
allowedSlippage: () => string;
gasLimitEstimate: () => number;
ttl: () => number;
routerAddress: (network: string) => string;
initCodeHash: (network: string) => string;
tradingTypes: Array<string>;
availableNetworks: Array<AvailableNetworks>;
}

export const config: NetworkConfig = {
allowedSlippage: () =>
ConfigManagerV2.getInstance().get(`defira.allowedSlippage`),
gasLimitEstimate: () =>
ConfigManagerV2.getInstance().get(`defira.gasLimitEstimate`),
ttl: () => ConfigManagerV2.getInstance().get(`defira.ttl`),
routerAddress: (network: string) =>
ConfigManagerV2.getInstance().get(
`defira.contractAddresses.${network}.routerAddress`
),
initCodeHash: (network: string) =>
ConfigManagerV2.getInstance().get(
`defira.contractAddresses.${network}.initCodeHash`
),
tradingTypes: ['EVM_AMM'],
availableNetworks: [
{
chain: 'harmony',
networks: ['mainnet', 'testnet'],
},
],
};
}

0 comments on commit 6a4f759

Please sign in to comment.