From b13b76e81617a65b8a6739e8301179081ddea970 Mon Sep 17 00:00:00 2001 From: Oleg Nechiporenko Date: Mon, 21 Aug 2023 00:47:04 +0200 Subject: [PATCH 1/3] fix: resubscription --- src/services/Aggregator/ws/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index c014e6c..4e8932b 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -292,6 +292,9 @@ class AggregatorWS { const prevSub = this.subscriptions[type]?.[prevSubscriptionId]; if (prevSub) { this.subIdReplacements[prevSubscriptionId] = id; // Save mapping for future use (unsubscribe) + if (this.subscriptions[type]?.[prevSubscriptionId]) { + delete this.subscriptions[type]?.[prevSubscriptionId]; + } this.subscriptions[type] = { ...this.subscriptions[type], [subKey]: { From 4259c04caf811a6e2b6c1a02a61c3d5c5e3193a5 Mon Sep 17 00:00:00 2001 From: Oleg Nechiporenko Date: Mon, 21 Aug 2023 00:50:14 +0200 Subject: [PATCH 2/3] Bump version 53 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7c1a0e9..7ba49cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.52", + "version": "0.19.53", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", @@ -108,4 +108,4 @@ "overrides": { "tsconfig-paths": "^4.0.0" } -} \ No newline at end of file +} From c118230818c60e4768673ac750f1c0ae95bc6394 Mon Sep 17 00:00:00 2001 From: lomonoshka Date: Mon, 21 Aug 2023 09:15:29 +0300 Subject: [PATCH 3/3] Convert ZeroAddress to WETH in path --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 31 ++++++++++------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 187a515..4c48708 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.48-dev.2", + "version": "0.19.48-dev.3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 15f7399..2d866c8 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -64,14 +64,11 @@ export default async function generateSwapCalldata({ const wethAddress = safeGet(unit.contracts, "WETH") const curveRegistryAddress = safeGet(unit.contracts, "curveRegistry") const {assetToAddress, swapExecutorContractAddress, exchangeContractAddress} = await simpleFetch(unit.blockchainService.getInfo)(); - - const path = SafeArray.from(path_).map((swapInfo) => { - const swapInfoWithAddresses: SwapInfo = swapInfo - swapInfoWithAddresses.assetIn = safeGet(assetToAddress, swapInfo.assetIn); - swapInfoWithAddresses.assetOut = safeGet(assetToAddress, swapInfo.assetOut); - return swapInfoWithAddresses; - }); - + let path = SafeArray.from(path_).map((swapInfo) => { + swapInfo.assetIn = safeGet(assetToAddress, swapInfo.assetIn); + swapInfo.assetOut = safeGet(assetToAddress, swapInfo.assetOut); + return swapInfo; + }) const factory = path.first().factory if (!path.every(swapInfo => swapInfo.factory === factory)) { throw new Error(`Supporting only swaps with single factory`); @@ -86,6 +83,12 @@ export default async function generateSwapCalldata({ minReturnAmount: minReturnAmount, flags: 0 } + path = SafeArray.from(path_).map((swapInfo) => { + if (swapInfo.assetIn == ethers.constants.AddressZero) swapInfo.assetIn = wethAddress + if (swapInfo.assetOut == ethers.constants.AddressZero) swapInfo.assetOut = wethAddress + return swapInfo; + }); + let calldata: string switch (exchangeToType[factory]) { @@ -100,11 +103,11 @@ export default async function generateSwapCalldata({ break; } case "UniswapV3": { - calldata = await generateUni3Calls(amount, exchangeContractAddress, wethAddress, path, unit.provider) + calldata = await generateUni3Calls(amount, exchangeContractAddress, path, unit.provider) break; } case "OrionV3": { - calldata = await generateOrion3Calls(amount, exchangeContractAddress, wethAddress, path, unit.provider) + calldata = await generateOrion3Calls(amount, exchangeContractAddress, path, unit.provider) break; } case "Curve": { @@ -163,7 +166,6 @@ export async function generateUni2Calls( async function generateUni3Calls( amount: string, exchangeContractAddress: string, - weth: string, path: SafeArray, provider: ethers.providers.JsonRpcProvider ) { @@ -173,9 +175,6 @@ async function generateUni3Calls( const token0 = await pool.token0() const zeroForOne = token0 === swap.assetIn const unwrapWETH = swap.assetOut === ethers.constants.AddressZero - if (unwrapWETH) { - swap.assetOut = weth - } let encodedPool = ethers.utils.solidityPack(["uint256"], [pool.address]) encodedPool = ethers.utils.hexDataSlice(encodedPool, 1) @@ -196,7 +195,6 @@ async function generateUni3Calls( async function generateOrion3Calls( amount: string, exchangeContractAddress: string, - weth: string, path: SafeArray, provider: ethers.providers.JsonRpcProvider ) { @@ -206,9 +204,6 @@ async function generateOrion3Calls( const token0 = await pool.token0() const zeroForOne = token0 === swap.assetIn const unwrapWETH = swap.assetOut === ethers.constants.AddressZero - if (unwrapWETH) { - swap.assetOut = weth - } let encodedPool = ethers.utils.solidityPack(["uint256"], [pool.address]) encodedPool = ethers.utils.hexDataSlice(encodedPool, 1)