Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat/Add Defira connector #5422

Merged
merged 81 commits into from Aug 11, 2022
Merged
Show file tree
Hide file tree
Changes from 80 commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
7b169a1
Add Defira gateway scaffold w/ correct ABI
navijation May 11, 2022
120f269
Revert some spurious renaming
navijation May 11, 2022
9070edb
Use Harmony as chain
navijation May 11, 2022
b4a89b9
Merge pull request #1 from NavneethJayendran/gateway-connector-scaffold
navijation May 13, 2022
8988be0
Fix gateway build
navijation May 14, 2022
b584f8e
feat remove v3 files and edit defira config
zuzu-cat May 14, 2022
b448266
Add Defira to `GET /connectors`
navijation May 14, 2022
3cebbc8
Merge pull request #2 from NavneethJayendran/defira/add-defira-to-con…
zuzu-cat May 15, 2022
00b5b83
Add starter Tranquil token list
navijation May 15, 2022
f7983a5
Add logo URIs from Sushiswap tokens list
navijation May 18, 2022
7273314
Merge pull request #3 from NavneethJayendran/feat/add-tokens-json
navijation May 18, 2022
04d156a
Update Defira address
navijation May 21, 2022
6f57718
Add correct Defira testnet DEX address
navijation Jun 1, 2022
51e20a2
Merge pull request #4 from NavneethJayendran/add-defira-testnet-address
navijation Jun 2, 2022
a29b064
Rename Defira connector, fix testnet router address
navijation Jun 3, 2022
ba582f9
Add newline
navijation Jun 3, 2022
9c3a3a7
Remove one newline
navijation Jun 3, 2022
b5c1710
Merge pull request #5 from NavneethJayendran/add-defira-testnet-address
navijation Jun 3, 2022
0909651
Add defira-sdk dep
navijation Jun 8, 2022
7858375
Revert to functioning code with TODOs
navijation Jun 8, 2022
5fecef0
Add @types/node-fetch dep
navijation Jun 15, 2022
f2f7986
Merge pull request #10 from NavneethJayendran/types-node-fetch-dep
navijation Jun 15, 2022
25170bc
Add @types/node-fetch dep
navijation Jun 15, 2022
ddc3372
Add Defira gateway config schema
navijation Jun 15, 2022
4648ebd
defira.yaml -> defira.yml
navijation Jun 15, 2022
4d88353
Fix JSON schema and YAML access
navijation Jun 15, 2022
d9651e9
Fix reference to renamed method
navijation Jun 15, 2022
7c6cf77
Merge pull request #9 from NavneethJayendran/nav/add-defira-config-sc…
navijation Jun 16, 2022
e6256fa
Add @types/node-fetch dep
navijation Jun 15, 2022
80de234
Add Defira gateway config schema
navijation Jun 15, 2022
0533874
defira.yaml -> defira.yml
navijation Jun 15, 2022
9b6ab93
Fix JSON schema and YAML access
navijation Jun 15, 2022
2e214da
feat use defira-sdk and sdk-core
zuzu-cat Jun 12, 2022
7a5a616
Fix type naming
navijation Jun 16, 2022
2e5ca4d
Finish adoption of Defira SDK
navijation Jun 16, 2022
152072a
Remove TODOs
navijation Jun 16, 2022
b74b853
Latest version of defira-sdk
navijation Jun 16, 2022
99e6fe5
Improve variable naming
navijation Jun 16, 2022
c0fb854
Fix `allowedSlippage` config access
navijation Jun 16, 2022
cc06385
Support Defira for `getConnector`
navijation Jun 16, 2022
7e10616
Supply missing provider to Defira Fetcher
navijation Jun 16, 2022
4cf6b00
Add Defira to root.yaml
navijation Jun 16, 2022
dc32110
Add testnet tokens JSON, tranquil -> defira
navijation Jun 16, 2022
cf2c068
Merge pull request #6 from NavneethJayendran/feat/change-dependencies
navijation Jun 16, 2022
ffc5dba
Merge pull request #11 from NavneethJayendran/feat/add-defira-tokens
navijation Jun 16, 2022
03098a6
Merge branch 'defira-connector' into add-defira-sdk-dep
navijation Jun 16, 2022
f2db9ff
Merge pull request #12 from NavneethJayendran/add-defira-sdk-dep
navijation Jun 16, 2022
559134a
Fix automated gas calc, add Defira approve alias
navijation Jun 17, 2022
d36c7d8
Merge branch 'development' into defira-connector
navijation Jun 17, 2022
646f7d4
Merge pull request #13 from NavneethJayendran/fix-automatic-gas-calcu…
navijation Jun 17, 2022
9700481
Pin latest defira-sdk
navijation Jun 17, 2022
4896929
Add curl tests for Defira price & trade
navijation Jun 19, 2022
473e01c
Add FIRA to sushiswap JSON
navijation Jun 19, 2022
83ec3ad
Fix trade test
navijation Jun 21, 2022
bebd8f4
Merge branch 'development' into defira-connector
navijation Jun 21, 2022
87b8d9c
Merge branch 'development' into defira-connector
navijation Jun 30, 2022
fe839b9
Use `getNextNonce` for Defira
navijation Jun 30, 2022
6c6be75
Merge branch 'development' into defira-connector
navijation Jul 11, 2022
812b512
Add unit tests, regularize connector init
navijation Jul 12, 2022
c355a60
Use defira-sdk NPM package
navijation Jul 12, 2022
9bccb57
Add test for factory computation
navijation Jul 12, 2022
50a61bb
Merge branch 'development' into defira-connector
navijation Jul 12, 2022
12fe4cf
Add more unit test coverage
navijation Jul 13, 2022
e694140
Reject EIP 1559 arguments explicitly
navijation Jul 13, 2022
76ea5f7
Removes defira.controllers.ts entirely
navijation Jul 13, 2022
56c05ea
Merge branch 'development' into defira-connector
JeremyKono Jul 14, 2022
8446952
Sed out Harmony RPC URL in test workflows
navijation Jul 15, 2022
e99ce7b
Merge branch 'development' into defira-connector
navijation Jul 18, 2022
875196f
Fix merge related issues
navijation Jul 18, 2022
886fb5f
Update spender validator to support defira
navijation Jul 18, 2022
1a32159
Merge branch 'development' into defira-connector
JeremyKono Jul 27, 2022
b3f9e7d
Merge branch 'development' into defira-connector
navijation Jul 31, 2022
e35a9b8
Fix `transactionGasLimit` bug in ethereum-base
navijation Jul 31, 2022
5e966cc
gasLimit -> gasLimitEstimate
navijation Jul 31, 2022
5be52a2
Fix lingering gasLimit -> gasLimitEstimate
navijation Aug 1, 2022
c1229aa
Add Harmony native token to client map
navijation Aug 2, 2022
632ca68
Fix actual `getSpender` validation
navijation Aug 2, 2022
19ecdb9
Merge branch 'development' into defira-connector
JeremyKono Aug 2, 2022
e16b952
Merge branch 'development' into defira-connector
JeremyKono Aug 5, 2022
d135db1
Merge branch 'development' into defira-connector
navijation Aug 5, 2022
99ae46d
Merge branch 'development' into defira-connector
JeremyKono Aug 10, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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'],
},
],
};
}