Skip to content

Commit

Permalink
Merge pull request hummingbot#258 from hummingbot/staging
Browse files Browse the repository at this point in the history
Sync Gateway / Gateway staging -> master for Hummingbot version 1.23.0
  • Loading branch information
nikspz authored Dec 26, 2023
2 parents a5d7f8a + 6923d45 commit 74a9158
Show file tree
Hide file tree
Showing 57 changed files with 20,550 additions and 18,637 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
/dist
/db
/.idea
/*.iml
package-lock.json
/certs
/coverage
Expand All @@ -13,4 +14,7 @@ package-lock.json

# VSCode
.vscode/
.history
.history

# Yarn
yarn-error.log
2 changes: 1 addition & 1 deletion docs/swagger/definitions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2103,4 +2103,4 @@ definitions:
example: 0.5
txHash:
type: 'string'
example: '0x...'
example: '0x...'
12 changes: 11 additions & 1 deletion docs/swagger/wallet-routes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ paths:
operationId: 'get'
produces:
- 'application/json'
parameters:
- in: 'body'
name: 'body'
required: true
schema:
$ref: '#/definitions/GetWalletRequest'
responses:
'200':
description: 'Wallet list'
Expand All @@ -27,7 +33,11 @@ paths:
required: true
schema:
$ref: '#/definitions/AddWalletRequest'
responses: '200'
responses:
'200':
description: 'Added wallet address'
schema:
$ref: '#/definitions/AddWalletResponse'

/wallet/remove:
delete:
Expand Down
17 changes: 11 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hummingbot-gateway",
"version": "1.22.0",
"version": "1.23.0",
"description": "Middleware that helps Hummingbot clients access standardized DEX API endpoints on different blockchain networks",
"main": "index.js",
"license": "Apache-2.0",
Expand Down Expand Up @@ -37,6 +37,10 @@
"@harmony-js/utils": "^0.1.56",
"@improbable-eng/grpc-web": "^0.13.0",
"@pancakeswap/sdk": "^2.4.5",
"@pancakeswap/swap-sdk-core": "^1.0.0",
"@pancakeswap/v3-core": "^1.0.2",
"@pancakeswap/v3-periphery": "^1.0.2",
"@pancakeswap/v3-sdk": "^3.7.0",
"@pangolindex/sdk": "^1.1.0",
"@perp/sdk-curie": "^1.16.0",
"@sushiswap/sdk": "^5.0.0-canary.116",
Expand All @@ -60,7 +64,7 @@
"ajv": "^8.6.3",
"algosdk": "^2.2.0",
"app-root-path": "^3.0.0",
"axios": "^0.21.1",
"axios": "^1.6.0",
"big.js": "6.1.1",
"bn.js": "^5.2.1",
"body-parser": "^1.19.0",
Expand Down Expand Up @@ -94,6 +98,7 @@
"winston": "^3.3.3",
"winston-daily-rotate-file": "^4.5.5",
"xsswap-sdk": "^1.0.1",
"xrpl": "^2.7.0",
"yarn": "^1.22.17"
},
"devDependencies": {
Expand All @@ -107,7 +112,7 @@
"@types/bs58": "^4.0.1",
"@types/express": "^4.17.12",
"@types/fs-extra": "^9.0.13",
"@types/jest": "^27.4.1",
"@types/jest": "^29.5.11",
"@types/js-yaml": "^4.0.2",
"@types/level": "^6.0.0",
"@types/lodash": "^4.14.178",
Expand All @@ -134,7 +139,7 @@
"eslint-plugin-standard": "^4.0.1",
"google-protobuf": "^3.2.0",
"hardhat": "^2.13.0",
"jest": "^27.3.1",
"jest": "^29.7.0",
"jest-extended": "^0.11.5",
"jsbi": "^3.2.0",
"mock-ethers-provider": "^1.0.2",
Expand All @@ -145,9 +150,9 @@
"react-dom": "^18",
"rimraf": "^3.0.2",
"supertest": "^6.1.6",
"ts-jest": "^27.0.5",
"ts-jest": "^29.1.1",
"ts-node": "^10.0.0",
"typescript": "^4.3.2",
"typescript": "^5.3.2",
"viem": "^0.3.x"
},
"resolutions": {
Expand Down
4 changes: 2 additions & 2 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,14 @@ export const startSwagger = async () => {

export const startGateway = async () => {
const port = ConfigManagerV2.getInstance().get('server.port');
const gateway_version="1.22.0"; // gateway version
const gateway_version="1.23.0"; // gateway version
if (!ConfigManagerV2.getInstance().get('server.id')) {
ConfigManagerV2.getInstance().set(
'server.id',
Math.random().toString(16).substr(2, 14)
);
}
logger.info(`Gateway Version: ${gateway_version}`) // display gateway version
logger.info(`Gateway Version: ${gateway_version}`); // display gateway version
logger.info(`⚡️ Starting Gateway API on port ${port}...`);
if (ConfigManagerV2.getInstance().get('server.unsafeDevModeWithHTTP')) {
logger.info('Running in UNSAFE HTTP! This could expose private keys.');
Expand Down
4 changes: 4 additions & 0 deletions src/chains/binance-smart-chain/binance-smart-chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ export class BinanceSmartChain extends EthereumBase implements Ethereumish {
let spender: string;
if (reqSpender === 'pancakeswap') {
spender = PancakeSwapConfig.config.routerAddress(this._chain);
} else if (reqSpender === 'pancakeswapLP') {
spender = PancakeSwapConfig.config.pancakeswapV3NftManagerAddress(
this._chain
);
} else if (reqSpender === 'sushiswap') {
spender = SushiswapConfig.config.sushiswapRouterAddress(
'binance-smart-chain',
Expand Down
1 change: 1 addition & 0 deletions src/chains/ethereum/ethereum.validators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export const validateSpender: Validator = mkValidator(
val === 'mad_meerkat' ||
val === 'vvs' ||
val === 'pancakeswap' ||
val === 'pancakeswapLP' ||
val === 'xsswap' ||
val === 'curve' ||
isAddress(val))
Expand Down
24 changes: 24 additions & 0 deletions src/chains/xrpl/xrpl-middlewares.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { HttpException } from '../../services/error-handler';
import { XRPL } from './xrpl';
import { NextFunction, Request, Response } from 'express';

export const verifyXRPLIsAvailable = async (
req: Request,
_res: Response,
next: NextFunction
) => {
if (!req || !req.body || !req.body.network) {
throw new HttpException(404, 'No XRPL network informed.');
}

const xrpl = await XRPL.getInstance(req.body.network);
if (!xrpl.ready) {
await xrpl.init();
}

if (!xrpl.isConnected()) {
await xrpl.client.connect();
}

return next();
};
62 changes: 62 additions & 0 deletions src/chains/xrpl/xrpl.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import { ConfigManagerV2 } from '../../services/config-manager-v2';

export interface NetworkConfig {
name: string;
nodeUrl: string; // example: wss://xrplcluster.com/
tokenListType: string; // default: FILE
tokenListSource: string; // default: src/chains/xrpl/xrpl_tokens.json
marketListType: string; // default: FILE
marketListSource: string; // default: src/chains/xrpl/xrpl_markets.json
nativeCurrencySymbol: string; // XRP
maxLRUCacheInstances: number;
}

export interface Config {
// "mainnet" | "testnet" | "devnet"
network: NetworkConfig;
requestTimeout: number; // default: 20
connectionTimeout: number; // default: 5
feeCushion: number; // default: 1.2
maxFeeXRP: string; // default: 2
orderDbPath: string;
}

// @todo: find out which configs are required
export function getXRPLConfig(chainName: string, networkName: string): Config {
const configManager = ConfigManagerV2.getInstance();
return {
network: {
name: networkName,
nodeUrl: configManager.get(
chainName + '.networks.' + networkName + '.nodeURL'
),
tokenListType: ConfigManagerV2.getInstance().get(
chainName + '.networks.' + networkName + '.tokenListType'
),
tokenListSource: ConfigManagerV2.getInstance().get(
chainName + '.networks.' + networkName + '.tokenListSource'
),
marketListType: ConfigManagerV2.getInstance().get(
chainName + '.networks.' + networkName + '.marketListType'
),
marketListSource: ConfigManagerV2.getInstance().get(
chainName + '.networks.' + networkName + '.marketListSource'
),
nativeCurrencySymbol: ConfigManagerV2.getInstance().get(
chainName + '.networks.' + networkName + '.nativeCurrencySymbol'
),
maxLRUCacheInstances: ConfigManagerV2.getInstance().get(
chainName + '.maxLRUCacheInstances'
),
},
requestTimeout: ConfigManagerV2.getInstance().get(
chainName + '.requestTimeout'
),
connectionTimeout: ConfigManagerV2.getInstance().get(
chainName + '.connectionTimeout'
),
feeCushion: ConfigManagerV2.getInstance().get(chainName + '.feeCushion'),
maxFeeXRP: ConfigManagerV2.getInstance().get(chainName + '.maxFeeXRP'),
orderDbPath: ConfigManagerV2.getInstance().get(chainName + '.orderDbPath'),
};
}
26 changes: 26 additions & 0 deletions src/chains/xrpl/xrpl.constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { ConfigManagerV2 } from '../../services/config-manager-v2';

const configManager = ConfigManagerV2.getInstance();

export const constants = {
retry: {
all: {
maxNumberOfRetries:
configManager.get('xrpl.retry.all.maxNumberOfRetries') || 0, // 0 means no retries
delayBetweenRetries:
configManager.get('xrpl.retry.all.delayBetweenRetries') || 0, // 0 means no delay (milliseconds)
},
},
timeout: {
all: configManager.get('xrpl.timeout.all') || 0, // 0 means no timeout (milliseconds)
},
parallel: {
all: {
batchSize: configManager.get('xrpl.parallel.all.batchSize') || 0, // 0 means no batching (group all)
delayBetweenBatches:
configManager.get('xrpl.parallel.all.delayBetweenBatches') || 0, // 0 means no delay (milliseconds)
},
},
};

export default constants;
Loading

0 comments on commit 74a9158

Please sign in to comment.