From ac3d72f4e8700b7adfba6cbf8b2ce85168348a99 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:31:02 +0300 Subject: [PATCH 01/23] Use Tenderly testnets instead of forks for e2e tests --- tests/tenderly-simulation.ts | 192 ++++++++++++++--------------------- tests/utils-e2e.ts | 8 +- 2 files changed, 84 insertions(+), 116 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 63358876d..871f72389 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -1,17 +1,15 @@ /* eslint-disable no-console */ -import axios from 'axios'; -import { Address } from '@paraswap/core'; +import axios, { AxiosError } from 'axios'; import { TxObject } from '../src/types'; -import { StateOverrides, StateSimulateApiOverride } from './smart-tokens'; -import { StaticJsonRpcProvider, Provider } from '@ethersproject/providers'; -import Web3 from 'web3'; +import { StateOverrides } from './smart-tokens'; +import { Provider, StaticJsonRpcProvider } from '@ethersproject/providers'; +import { ethers } from 'ethers'; +import { Network } from '../build/constants'; const TENDERLY_TOKEN = process.env.TENDERLY_TOKEN; const TENDERLY_ACCOUNT_ID = process.env.TENDERLY_ACCOUNT_ID; const TENDERLY_PROJECT = process.env.TENDERLY_PROJECT; -const TENDERLY_FORK_ID = process.env.TENDERLY_FORK_ID; -const TENDERLY_TEST_NET_RPC = process.env.TENDERLY_TEST_NET_RPC; -const TENDERLY_FORK_LAST_TX_ID = process.env.TENDERLY_FORK_LAST_TX_ID; +const TENDERLY_VNET_ID = process.env.TENDERLY_VNET_ID; export type SimulationResult = { success: boolean; @@ -21,7 +19,7 @@ export type SimulationResult = { }; export interface TransactionSimulator { - forkId: string; + vnetId: string; setup(): Promise; simulate( @@ -31,7 +29,7 @@ export interface TransactionSimulator { } export class EstimateGasSimulation implements TransactionSimulator { - forkId: string = '0'; + vnetId: string = '0'; constructor(private provider: Provider) {} @@ -58,108 +56,99 @@ export class EstimateGasSimulation implements TransactionSimulator { export class TenderlySimulation implements TransactionSimulator { testNetRPC: StaticJsonRpcProvider | null = null; - lastTx: string = ''; - forkId: string = ''; + // lastTx: string = ''; + vnetId: string = ''; maxGasLimit = 80000000; - constructor( - private network: Number = 1, - forkId?: string, - lastTransactionId?: string, - ) { - if (forkId && lastTransactionId) { - this.forkId = forkId; - this.lastTx = lastTransactionId; + private readonly chainIdToChainNameMap: { [key: number]: string } = { + [Network.MAINNET]: 'mainnet', + [Network.BSC]: 'bnb', + [Network.POLYGON]: 'polygon', + [Network.AVALANCHE]: 'avalanche-mainnet', + [Network.FANTOM]: 'fantom', + [Network.ARBITRUM]: 'arbitrum', + [Network.OPTIMISM]: 'optimistic', + [Network.GNOSIS]: 'gnosis-chain', + [Network.BASE]: 'base', + }; + + constructor(private network: number = 1, vnetId?: string) { + if (vnetId) { + this.vnetId = vnetId; } } async setup() { - // Fork the mainnet if (!TENDERLY_TOKEN) throw new Error( `TenderlySimulation_setup: TENDERLY_TOKEN not found in the env`, ); - if (this.forkId && this.lastTx) return; + if (this.vnetId) return; - if (TENDERLY_FORK_ID) { - if (!TENDERLY_FORK_LAST_TX_ID) throw new Error('Always set last tx id'); - this.forkId = TENDERLY_FORK_ID; - this.lastTx = TENDERLY_FORK_LAST_TX_ID; - return; - } - - if (TENDERLY_TEST_NET_RPC) { - this.testNetRPC = new StaticJsonRpcProvider(TENDERLY_TEST_NET_RPC); + if (TENDERLY_VNET_ID) { + this.vnetId = TENDERLY_VNET_ID; return; } try { await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express let res = await axios.post( - `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/fork`, + `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/vnets`, { - network_id: this.network.toString(), + slug: `e2e-tests-testnetwork-${this.network.toString()}-${Date.now()}`, + fork_config: { + network_id: this.network, + }, + virtual_network_config: { + chain_config: { + chain_id: this.network, + }, + }, + sync_state_config: { + enabled: false, + }, + explorer_page_config: { + enabled: true, + verification_visibility: 'bytecode', + }, }, { - timeout: 20000, + timeout: 200000, headers: { - 'x-access-key': TENDERLY_TOKEN, + 'X-Access-Key': TENDERLY_TOKEN, }, }, ); - this.forkId = res.data.simulation_fork.id; - this.lastTx = res.data.root_transaction.id; + this.vnetId = res.data.id; } catch (e) { - console.error(`TenderlySimulation_setup:`, e); + console.log(`TenderlySimulation_setup:`, e); throw e; } } async simulate(params: TxObject, stateOverrides?: StateOverrides) { - let _params = { - from: params.from, - to: params.to, - save: true, - root: this.lastTx, - value: params.value || '0', - gas: this.maxGasLimit, - input: params.data, - state_objects: {}, - }; try { - if (this.testNetRPC) return this.executeTransactionOnTestnet(params); - - if (stateOverrides) { - await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express - const result = await axios.post( - ` - https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/contracts/encode-states`, - stateOverrides, - { - headers: { - 'x-access-key': TENDERLY_TOKEN!, - }, - }, - ); - - _params.state_objects = Object.keys(result.data.stateOverrides).reduce( - (acc, contract) => { - const _storage = result.data.stateOverrides[contract].value; - - acc[contract] = { - storage: _storage, - }; - return acc; - }, - {} as Record, - ); - } - await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express const { data } = await axios.post( - `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/fork/${this.forkId}/simulate`, - _params, + `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/vnets/${this.vnetId}/transactions`, + { + callArgs: { + from: params.from, + to: params.to, + value: + params.value === '0' + ? '0x0' + : ethers.utils.hexStripZeros( + ethers.utils.hexlify(BigInt(params.value)), + ), + gas: ethers.utils.hexStripZeros( + ethers.utils.hexlify(BigInt(this.maxGasLimit)), + ), + data: params.data, + }, + blockNumber: 'pending', + }, { timeout: 30 * 1000, headers: { @@ -168,54 +157,29 @@ export class TenderlySimulation implements TransactionSimulator { }, ); - const lastTx = data.simulation.id; - if (data.transaction.status) { - this.lastTx = lastTx; + if (data.status === 'success') { return { success: true, - gasUsed: data.transaction.gas_used, - url: `https://dashboard.tenderly.co/${TENDERLY_ACCOUNT_ID}/${TENDERLY_PROJECT}/fork/${this.forkId}/simulation/${lastTx}`, - transaction: data.transaction, + gasUsed: data.gasUsed, + url: `https://dashboard.tenderly.co/${TENDERLY_ACCOUNT_ID}/${TENDERLY_PROJECT}/testnet/${ + this.vnetId + }/tx/${this.chainIdToChainNameMap[this.network]}/${data.id}`, + transaction: data.input, }; } else { return { success: false, - url: `https://dashboard.tenderly.co/${TENDERLY_ACCOUNT_ID}/${TENDERLY_PROJECT}/fork/${this.forkId}/simulation/${lastTx}`, - error: `Simulation failed: ${data.transaction.error_info.error_message} at ${data.transaction.error_info.address}`, + url: `https://dashboard.tenderly.co/${TENDERLY_ACCOUNT_ID}/${TENDERLY_PROJECT}/testnet/${ + this.vnetId + }/tx/${this.chainIdToChainNameMap[this.network]}/${data.id}`, + error: `Simulation failed`, }; } } catch (e) { + const err = e as AxiosError; return { success: false, }; } } - - async executeTransactionOnTestnet(params: TxObject) { - const txParams = { - from: params.from, - to: params.to, - value: Web3.utils.toHex(params.value || '0'), - data: params.data, - gas: '0x4c4b40', // 5,000,000 - gasPrice: '0x0', // 0 - }; - const txHash = await this.testNetRPC!.send('eth_sendTransaction', [ - txParams, - ]); - const transaction = await this.testNetRPC!.waitForTransaction(txHash); - if (transaction.status) { - return { - success: true, - url: txHash, - gasUsed: transaction.gasUsed.toString(), - transaction, - }; - } else { - return { - success: false, - error: `Transaction on testnet failed, hash: ${txHash}`, - }; - } - } } diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index a0343d057..6f52d9ef8 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -446,7 +446,7 @@ export async function testE2E( formatDeployMessage( 'adapter', contractAddress, - ts.forkId, + ts.vnetId, testContractName || '', testContractRelativePath || '', ), @@ -486,7 +486,8 @@ export async function testE2E( if (paraswap.dexHelper?.replaceProviderWithRPC) { paraswap.dexHelper?.replaceProviderWithRPC( - `https://rpc.tenderly.co/fork/${ts.forkId}`, + // `https://rpc.tenderly.co/fork/${ts.forkId}`, + `https://virtual.base.rpc.tenderly.co/${ts.vnetId}`, ); } @@ -572,6 +573,9 @@ export async function testE2E( ); const swapTx = await ts.simulate(swapParams); + + console.log('swapTx: ', swapTx); + // Only log gas estimate if testing against API if (useAPI) { const gasUsed = swapTx.gasUsed || '0'; From 28a36c7c6e720e69fc0a34b82048c0ca32713d37 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:32:52 +0300 Subject: [PATCH 02/23] remove commented and useless lines --- tests/tenderly-simulation.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 871f72389..e3e01f994 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -55,8 +55,6 @@ export class EstimateGasSimulation implements TransactionSimulator { } export class TenderlySimulation implements TransactionSimulator { - testNetRPC: StaticJsonRpcProvider | null = null; - // lastTx: string = ''; vnetId: string = ''; maxGasLimit = 80000000; @@ -176,7 +174,6 @@ export class TenderlySimulation implements TransactionSimulator { }; } } catch (e) { - const err = e as AxiosError; return { success: false, }; From 8a0c21b495714175fc0341c6711b37650897f248 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:33:38 +0300 Subject: [PATCH 03/23] return back console.error --- tests/tenderly-simulation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index e3e01f994..f79726b40 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -120,7 +120,7 @@ export class TenderlySimulation implements TransactionSimulator { ); this.vnetId = res.data.id; } catch (e) { - console.log(`TenderlySimulation_setup:`, e); + console.error(`TenderlySimulation_setup:`, e); throw e; } } From 3e774f63d84ba7e2695e3397e3e486075e1b763f Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:40:42 +0300 Subject: [PATCH 04/23] fixes --- tests/tenderly-simulation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index f79726b40..134d24425 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -170,7 +170,7 @@ export class TenderlySimulation implements TransactionSimulator { url: `https://dashboard.tenderly.co/${TENDERLY_ACCOUNT_ID}/${TENDERLY_PROJECT}/testnet/${ this.vnetId }/tx/${this.chainIdToChainNameMap[this.network]}/${data.id}`, - error: `Simulation failed`, + error: `Simulation failed ${data.error_reason}`, }; } } catch (e) { From 5cb1e52591802e830c6530fd32de38703a610903 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:47:39 +0300 Subject: [PATCH 05/23] add fix --- tests/tenderly-simulation.ts | 10 ++++++++++ tests/utils-e2e.ts | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 134d24425..adce1e2ea 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -22,6 +22,8 @@ export interface TransactionSimulator { vnetId: string; setup(): Promise; + getChainNameByChainId(network: number): string; + simulate( params: TxObject, stateOverrides?: StateOverrides, @@ -35,6 +37,10 @@ export class EstimateGasSimulation implements TransactionSimulator { async setup() {} + getChainNameByChainId(network: number) { + return ''; + } + async simulate( params: TxObject, _: StateOverrides, @@ -76,6 +82,10 @@ export class TenderlySimulation implements TransactionSimulator { } } + getChainNameByChainId(network: number): string { + return this.chainIdToChainNameMap[network]; + } + async setup() { if (!TENDERLY_TOKEN) throw new Error( diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index 6f52d9ef8..d387607ce 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -59,6 +59,7 @@ import * as util from 'util'; import { GenericSwapTransactionBuilder } from '../src/generic-swap-transaction-builder'; import { DexAdapterService, PricingHelper } from '../src'; import { v4 as uuid } from 'uuid'; +import * as net from 'net'; export const testingEndpoint = process.env.E2E_TEST_ENDPOINT; @@ -486,8 +487,9 @@ export async function testE2E( if (paraswap.dexHelper?.replaceProviderWithRPC) { paraswap.dexHelper?.replaceProviderWithRPC( - // `https://rpc.tenderly.co/fork/${ts.forkId}`, - `https://virtual.base.rpc.tenderly.co/${ts.vnetId}`, + `https://virtual.${ts.getChainNameByChainId(network)}.rpc.tenderly.co/${ + ts.vnetId + }`, ); } From bcd0c1617e41b55435be8bc5d77779e12c5de7a1 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:48:44 +0300 Subject: [PATCH 06/23] remove useless import --- tests/utils-e2e.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index d387607ce..93e8c1a9f 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -59,7 +59,6 @@ import * as util from 'util'; import { GenericSwapTransactionBuilder } from '../src/generic-swap-transaction-builder'; import { DexAdapterService, PricingHelper } from '../src'; import { v4 as uuid } from 'uuid'; -import * as net from 'net'; export const testingEndpoint = process.env.E2E_TEST_ENDPOINT; From d1910927e7efe61d1d11354fbe6e081c0e7b6f25 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:49:13 +0300 Subject: [PATCH 07/23] remove useless import --- tests/tenderly-simulation.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index adce1e2ea..9784b8b31 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -1,8 +1,8 @@ /* eslint-disable no-console */ -import axios, { AxiosError } from 'axios'; +import axios from 'axios'; import { TxObject } from '../src/types'; import { StateOverrides } from './smart-tokens'; -import { Provider, StaticJsonRpcProvider } from '@ethersproject/providers'; +import { Provider } from '@ethersproject/providers'; import { ethers } from 'ethers'; import { Network } from '../build/constants'; From 422ac4dca391970fc7d1eced63744508c7f359fc Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Thu, 16 Jan 2025 20:50:04 +0300 Subject: [PATCH 08/23] remove console.log --- tests/utils-e2e.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index 93e8c1a9f..1c74b820a 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -575,8 +575,6 @@ export async function testE2E( const swapTx = await ts.simulate(swapParams); - console.log('swapTx: ', swapTx); - // Only log gas estimate if testing against API if (useAPI) { const gasUsed = swapTx.gasUsed || '0'; From a07b8c36ecfc479165b4110cd4e35aedadb9f10e Mon Sep 17 00:00:00 2001 From: Danylo Kanievskyi Date: Fri, 17 Jan 2025 13:43:31 +0200 Subject: [PATCH 09/23] temp: rfq tests --- src/dex/generic-rfq/e2e-test-config.ts | 16 ++++++++-------- src/dex/generic-rfq/generic-rfq-e2e.test.ts | 10 ++++++---- tests/constants-e2e.ts | 2 +- tests/utils-e2e.ts | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/dex/generic-rfq/e2e-test-config.ts b/src/dex/generic-rfq/e2e-test-config.ts index 42b289646..7c4b5861b 100644 --- a/src/dex/generic-rfq/e2e-test-config.ts +++ b/src/dex/generic-rfq/e2e-test-config.ts @@ -8,16 +8,16 @@ export const testConfig: { amount: string; }>; } = { - [Network.ARBITRUM]: [ - { - srcToken: 'WETH', - destToken: 'USDC', - amount: '10000', - swapSide: SwapSide.BUY, - }, + [Network.MAINNET]: [ + // { + // srcToken: 'USDT', + // destToken: 'USDC', + // amount: '10000', + // swapSide: SwapSide.BUY, + // }, { srcToken: 'USDC', - destToken: 'WETH', + destToken: 'USDT', amount: '10000', swapSide: SwapSide.SELL, }, diff --git a/src/dex/generic-rfq/generic-rfq-e2e.test.ts b/src/dex/generic-rfq/generic-rfq-e2e.test.ts index 54de508eb..de59bd3c4 100644 --- a/src/dex/generic-rfq/generic-rfq-e2e.test.ts +++ b/src/dex/generic-rfq/generic-rfq-e2e.test.ts @@ -118,18 +118,20 @@ describe(`GenericRFQ ${dexKey} E2E`, () => { srcToken = smartTokens[testCase.srcToken]; destToken = smartTokens[testCase.destToken]; - srcToken.addBalance(testAccount.address, MAX_UINT); + const amount = (BigInt(MAX_UINT) / 10n ** 10n).toString(); + + srcToken.addBalance(testAccount.address, amount); srcToken.addAllowance( testAccount.address, config.augustusRFQAddress, - MAX_UINT, + amount, ); - destToken.addBalance(testAccount.address, MAX_UINT); + destToken.addBalance(testAccount.address, amount); destToken.addAllowance( testAccount.address, config.augustusRFQAddress, - MAX_UINT, + amount, ); } const contractMethod = diff --git a/tests/constants-e2e.ts b/tests/constants-e2e.ts index f9eec28c1..1f6c30739 100644 --- a/tests/constants-e2e.ts +++ b/tests/constants-e2e.ts @@ -128,7 +128,7 @@ export const Tokens: { address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', decimals: 6, symbol: 'USDC', - addBalance: balancesFn, + addBalance: balanceAndBlacklistStatesFn, addAllowance: allowedFn, }, INST: { diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index 1c74b820a..1354d82ee 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -702,7 +702,7 @@ export async function newTestE2E({ stateOverrides: {}, }; - destToken.addBalance(GIFTER_ADDRESS, MAX_UINT); + destToken.addBalance(GIFTER_ADDRESS, (BigInt(MAX_UINT) / 4n).toString()); destToken.applyOverrides(stateOverrides); const giftTx = makeFakeTransferToSenderAddress( From 527527035bc2faa4501067b7cfb98e72616094d7 Mon Sep 17 00:00:00 2001 From: Danylo Kanievskyi Date: Fri, 17 Jan 2025 13:43:31 +0200 Subject: [PATCH 10/23] temp: rfq tests --- src/dex/generic-rfq/e2e-test-config.ts | 16 ++++++++-------- src/dex/generic-rfq/generic-rfq-e2e.test.ts | 10 ++++++---- tests/constants-e2e.ts | 2 +- tests/utils-e2e.ts | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/dex/generic-rfq/e2e-test-config.ts b/src/dex/generic-rfq/e2e-test-config.ts index 42b289646..7c4b5861b 100644 --- a/src/dex/generic-rfq/e2e-test-config.ts +++ b/src/dex/generic-rfq/e2e-test-config.ts @@ -8,16 +8,16 @@ export const testConfig: { amount: string; }>; } = { - [Network.ARBITRUM]: [ - { - srcToken: 'WETH', - destToken: 'USDC', - amount: '10000', - swapSide: SwapSide.BUY, - }, + [Network.MAINNET]: [ + // { + // srcToken: 'USDT', + // destToken: 'USDC', + // amount: '10000', + // swapSide: SwapSide.BUY, + // }, { srcToken: 'USDC', - destToken: 'WETH', + destToken: 'USDT', amount: '10000', swapSide: SwapSide.SELL, }, diff --git a/src/dex/generic-rfq/generic-rfq-e2e.test.ts b/src/dex/generic-rfq/generic-rfq-e2e.test.ts index 54de508eb..de59bd3c4 100644 --- a/src/dex/generic-rfq/generic-rfq-e2e.test.ts +++ b/src/dex/generic-rfq/generic-rfq-e2e.test.ts @@ -118,18 +118,20 @@ describe(`GenericRFQ ${dexKey} E2E`, () => { srcToken = smartTokens[testCase.srcToken]; destToken = smartTokens[testCase.destToken]; - srcToken.addBalance(testAccount.address, MAX_UINT); + const amount = (BigInt(MAX_UINT) / 10n ** 10n).toString(); + + srcToken.addBalance(testAccount.address, amount); srcToken.addAllowance( testAccount.address, config.augustusRFQAddress, - MAX_UINT, + amount, ); - destToken.addBalance(testAccount.address, MAX_UINT); + destToken.addBalance(testAccount.address, amount); destToken.addAllowance( testAccount.address, config.augustusRFQAddress, - MAX_UINT, + amount, ); } const contractMethod = diff --git a/tests/constants-e2e.ts b/tests/constants-e2e.ts index f9eec28c1..1f6c30739 100644 --- a/tests/constants-e2e.ts +++ b/tests/constants-e2e.ts @@ -128,7 +128,7 @@ export const Tokens: { address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', decimals: 6, symbol: 'USDC', - addBalance: balancesFn, + addBalance: balanceAndBlacklistStatesFn, addAllowance: allowedFn, }, INST: { diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index a0343d057..bbf06a7a6 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -699,7 +699,7 @@ export async function newTestE2E({ stateOverrides: {}, }; - destToken.addBalance(GIFTER_ADDRESS, MAX_UINT); + destToken.addBalance(GIFTER_ADDRESS, (BigInt(MAX_UINT) / 4n).toString()); destToken.applyOverrides(stateOverrides); const giftTx = makeFakeTransferToSenderAddress( From b5e5f8d972baf78f165a2be58eac1ffa3345603e Mon Sep 17 00:00:00 2001 From: Danylo Kanievskyi Date: Fri, 17 Jan 2025 17:36:19 +0200 Subject: [PATCH 11/23] fix: revert amounts update for generic-rfq e2e tests --- src/dex/generic-rfq/generic-rfq-e2e.test.ts | 10 ++++------ tests/utils-e2e.ts | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/dex/generic-rfq/generic-rfq-e2e.test.ts b/src/dex/generic-rfq/generic-rfq-e2e.test.ts index de59bd3c4..54de508eb 100644 --- a/src/dex/generic-rfq/generic-rfq-e2e.test.ts +++ b/src/dex/generic-rfq/generic-rfq-e2e.test.ts @@ -118,20 +118,18 @@ describe(`GenericRFQ ${dexKey} E2E`, () => { srcToken = smartTokens[testCase.srcToken]; destToken = smartTokens[testCase.destToken]; - const amount = (BigInt(MAX_UINT) / 10n ** 10n).toString(); - - srcToken.addBalance(testAccount.address, amount); + srcToken.addBalance(testAccount.address, MAX_UINT); srcToken.addAllowance( testAccount.address, config.augustusRFQAddress, - amount, + MAX_UINT, ); - destToken.addBalance(testAccount.address, amount); + destToken.addBalance(testAccount.address, MAX_UINT); destToken.addAllowance( testAccount.address, config.augustusRFQAddress, - amount, + MAX_UINT, ); } const contractMethod = diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index bbf06a7a6..a0343d057 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -699,7 +699,7 @@ export async function newTestE2E({ stateOverrides: {}, }; - destToken.addBalance(GIFTER_ADDRESS, (BigInt(MAX_UINT) / 4n).toString()); + destToken.addBalance(GIFTER_ADDRESS, MAX_UINT); destToken.applyOverrides(stateOverrides); const giftTx = makeFakeTransferToSenderAddress( From 37d23b9c5031d0e770c9da5e1e6c05dd8c6e73c1 Mon Sep 17 00:00:00 2001 From: Danylo Kanievskyi Date: Fri, 17 Jan 2025 17:37:01 +0200 Subject: [PATCH 12/23] chore: use SELL and BUY e2e test config on Mainnet --- src/dex/generic-rfq/e2e-test-config.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dex/generic-rfq/e2e-test-config.ts b/src/dex/generic-rfq/e2e-test-config.ts index 7c4b5861b..3731078af 100644 --- a/src/dex/generic-rfq/e2e-test-config.ts +++ b/src/dex/generic-rfq/e2e-test-config.ts @@ -9,12 +9,12 @@ export const testConfig: { }>; } = { [Network.MAINNET]: [ - // { - // srcToken: 'USDT', - // destToken: 'USDC', - // amount: '10000', - // swapSide: SwapSide.BUY, - // }, + { + srcToken: 'USDT', + destToken: 'USDC', + amount: '10000', + swapSide: SwapSide.BUY, + }, { srcToken: 'USDC', destToken: 'USDT', From 63e8342b6f68acb432dc03eff2ba3252f8a120cb Mon Sep 17 00:00:00 2001 From: Danylo Kanievskyi Date: Fri, 17 Jan 2025 17:40:23 +0200 Subject: [PATCH 13/23] fix: prevent smart tokens state collisions between test cases --- src/dex/generic-rfq/generic-rfq-e2e.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dex/generic-rfq/generic-rfq-e2e.test.ts b/src/dex/generic-rfq/generic-rfq-e2e.test.ts index 54de508eb..f7836840f 100644 --- a/src/dex/generic-rfq/generic-rfq-e2e.test.ts +++ b/src/dex/generic-rfq/generic-rfq-e2e.test.ts @@ -115,8 +115,8 @@ describe(`GenericRFQ ${dexKey} E2E`, () => { `Please add "addBalance" and "addAllowance" functions for ${testCase.destToken} on ${Network[network]} (in constants-e2e.ts).`, ); } - srcToken = smartTokens[testCase.srcToken]; - destToken = smartTokens[testCase.destToken]; + srcToken = new SmartToken(tokens[testCase.srcToken]); + destToken = new SmartToken(tokens[testCase.destToken]); srcToken.addBalance(testAccount.address, MAX_UINT); srcToken.addAllowance( From f4fa734e2002d6c1a3bdc9fbdff11c0be0a7a13e Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Fri, 17 Jan 2025 17:40:55 +0300 Subject: [PATCH 14/23] solve merge conflicts --- tests/tenderly-simulation.ts | 66 +++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 9784b8b31..241c00a50 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -1,10 +1,11 @@ /* eslint-disable no-console */ import axios from 'axios'; import { TxObject } from '../src/types'; -import { StateOverrides } from './smart-tokens'; +import { StateOverrides, StateSimulateApiOverride } from './smart-tokens'; import { Provider } from '@ethersproject/providers'; import { ethers } from 'ethers'; import { Network } from '../build/constants'; +import { Address } from '@paraswap/core'; const TENDERLY_TOKEN = process.env.TENDERLY_TOKEN; const TENDERLY_ACCOUNT_ID = process.env.TENDERLY_ACCOUNT_ID; @@ -137,6 +138,40 @@ export class TenderlySimulation implements TransactionSimulator { async simulate(params: TxObject, stateOverrides?: StateOverrides) { try { + let stateOverridesParams = {}; + + console.log('stateOverrides: ', stateOverrides); + + if (stateOverrides) { + await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express + const result = await axios.post( + ` + https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/contracts/encode-states`, + stateOverrides, + { + headers: { + 'x-access-key': TENDERLY_TOKEN!, + }, + }, + ); + + console.log('result.data.stateOverrides: ', result.data.stateOverrides); + + stateOverridesParams = Object.keys(result.data.stateOverrides).reduce( + (acc, contract) => { + const _storage = result.data.stateOverrides[contract].value; + + acc[contract] = { + storage: _storage, + }; + return acc; + }, + {} as Record, + ); + } + + console.log('stateOverridesParams: ', stateOverridesParams); + await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express const { data } = await axios.post( `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/vnets/${this.vnetId}/transactions`, @@ -156,6 +191,7 @@ export class TenderlySimulation implements TransactionSimulator { data: params.data, }, blockNumber: 'pending', + stateOverrides: stateOverridesParams, }, { timeout: 30 * 1000, @@ -165,6 +201,34 @@ export class TenderlySimulation implements TransactionSimulator { }, ); + console.log( + 'URL: ', + `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/vnets/${this.vnetId}/transactions`, + ); + console.log( + 'PARAMS: ', + JSON.stringify({ + callArgs: { + from: params.from, + to: params.to, + value: + params.value === '0' + ? '0x0' + : ethers.utils.hexStripZeros( + ethers.utils.hexlify(BigInt(params.value)), + ), + gas: ethers.utils.hexStripZeros( + ethers.utils.hexlify(BigInt(this.maxGasLimit)), + ), + data: params.data, + }, + blockNumber: 'pending', + stateOverrides: stateOverridesParams, + }), + ); + + console.log('TX DATA: ', data); + if (data.status === 'success') { return { success: true, From 63bb318a1cb66eb416864ca4f43afa1ed8dd0ae5 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Fri, 17 Jan 2025 21:09:25 +0300 Subject: [PATCH 15/23] add fixes --- tests/smart-tokens.ts | 4 +- tests/tenderly-simulation.ts | 71 ++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/tests/smart-tokens.ts b/tests/smart-tokens.ts index 5398e0e46..831b6f573 100644 --- a/tests/smart-tokens.ts +++ b/tests/smart-tokens.ts @@ -5,9 +5,7 @@ export type StateOverride = { }; export type StateSimulateApiOverride = { - storage: { - value: Record; - }; + storage: Record; }; export type StateOverrides = { diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 241c00a50..8c851c4bd 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -2,7 +2,7 @@ import axios from 'axios'; import { TxObject } from '../src/types'; import { StateOverrides, StateSimulateApiOverride } from './smart-tokens'; -import { Provider } from '@ethersproject/providers'; +import { Provider, StaticJsonRpcProvider } from '@ethersproject/providers'; import { ethers } from 'ethers'; import { Network } from '../build/constants'; import { Address } from '@paraswap/core'; @@ -63,6 +63,7 @@ export class EstimateGasSimulation implements TransactionSimulator { export class TenderlySimulation implements TransactionSimulator { vnetId: string = ''; + rpcURL: string = ''; maxGasLimit = 80000000; private readonly chainIdToChainNameMap: { [key: number]: string } = { @@ -129,7 +130,14 @@ export class TenderlySimulation implements TransactionSimulator { }, }, ); + + const rpc: { name: string; url: string } = res.data.rpcs.find( + (rpc: { name: string; url: string }) => + rpc.name.toLowerCase() === 'Admin RPC'.toLowerCase(), + ); + this.vnetId = res.data.id; + this.rpcURL = rpc.url; } catch (e) { console.error(`TenderlySimulation_setup:`, e); throw e; @@ -140,8 +148,6 @@ export class TenderlySimulation implements TransactionSimulator { try { let stateOverridesParams = {}; - console.log('stateOverrides: ', stateOverrides); - if (stateOverrides) { await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express const result = await axios.post( @@ -155,8 +161,6 @@ export class TenderlySimulation implements TransactionSimulator { }, ); - console.log('result.data.stateOverrides: ', result.data.stateOverrides); - stateOverridesParams = Object.keys(result.data.stateOverrides).reduce( (acc, contract) => { const _storage = result.data.stateOverrides[contract].value; @@ -168,9 +172,9 @@ export class TenderlySimulation implements TransactionSimulator { }, {} as Record, ); - } - console.log('stateOverridesParams: ', stateOverridesParams); + await this.executeStateOverrides(stateOverridesParams); + } await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express const { data } = await axios.post( @@ -191,7 +195,6 @@ export class TenderlySimulation implements TransactionSimulator { data: params.data, }, blockNumber: 'pending', - stateOverrides: stateOverridesParams, }, { timeout: 30 * 1000, @@ -201,34 +204,6 @@ export class TenderlySimulation implements TransactionSimulator { }, ); - console.log( - 'URL: ', - `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/vnets/${this.vnetId}/transactions`, - ); - console.log( - 'PARAMS: ', - JSON.stringify({ - callArgs: { - from: params.from, - to: params.to, - value: - params.value === '0' - ? '0x0' - : ethers.utils.hexStripZeros( - ethers.utils.hexlify(BigInt(params.value)), - ), - gas: ethers.utils.hexStripZeros( - ethers.utils.hexlify(BigInt(this.maxGasLimit)), - ), - data: params.data, - }, - blockNumber: 'pending', - stateOverrides: stateOverridesParams, - }), - ); - - console.log('TX DATA: ', data); - if (data.status === 'success') { return { success: true, @@ -253,4 +228,28 @@ export class TenderlySimulation implements TransactionSimulator { }; } } + + async executeStateOverrides( + stateOverridesParams: Record, + ) { + const testNetRPC = new StaticJsonRpcProvider(this.rpcURL); + + await Promise.all( + Object.keys(stateOverridesParams).map(address => { + const storage = stateOverridesParams[address].storage; + Object.keys(storage).map(async slot => { + const txHash = await testNetRPC!.send('tenderly_setStorageAt', [ + address, + slot, + storage[slot], + ]); + + const transaction = await testNetRPC!.waitForTransaction(txHash); + if (!transaction.status) { + console.log(`Transaction failed: ${txHash}`); + } + }); + }), + ); + } } From a5cdf566755ab1294566f8d8f57e397efd24fb65 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Mon, 20 Jan 2025 13:41:14 +0300 Subject: [PATCH 16/23] fixes for state overrides --- tests/tenderly-simulation.ts | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 8c851c4bd..26e7ddb1f 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -234,22 +234,22 @@ export class TenderlySimulation implements TransactionSimulator { ) { const testNetRPC = new StaticJsonRpcProvider(this.rpcURL); - await Promise.all( - Object.keys(stateOverridesParams).map(address => { - const storage = stateOverridesParams[address].storage; - Object.keys(storage).map(async slot => { - const txHash = await testNetRPC!.send('tenderly_setStorageAt', [ - address, - slot, - storage[slot], - ]); - - const transaction = await testNetRPC!.waitForTransaction(txHash); - if (!transaction.status) { - console.log(`Transaction failed: ${txHash}`); - } - }); - }), - ); + // need to execute promises sequentially here + for await (const addr of Object.keys(stateOverridesParams)) { + const storage = stateOverridesParams[addr].storage; + + for await (const slot of Object.keys(storage)) { + const txHash = await testNetRPC!.send('tenderly_setStorageAt', [ + addr, + slot, + storage[slot], + ]); + + const transaction = await testNetRPC!.waitForTransaction(txHash); + if (!transaction.status) { + console.log(`Transaction failed: ${txHash}`); + } + } + } } } From 88944bed29246e90d3a8312d1e7a8387ad942a59 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Wed, 22 Jan 2025 14:27:52 +0300 Subject: [PATCH 17/23] add fixes for executeStateOverrides --- tests/tenderly-simulation.ts | 42 +++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 26e7ddb1f..401ef5a38 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -232,24 +232,32 @@ export class TenderlySimulation implements TransactionSimulator { async executeStateOverrides( stateOverridesParams: Record, ) { + if (!this.rpcURL) { + throw new Error( + `rpcURL is not defined for testnet: ${this.vnetId} (https://dashboard.tenderly.co/${TENDERLY_ACCOUNT_ID}/${TENDERLY_PROJECT}/testnet/${this.vnetId}`, + ); + } + const testNetRPC = new StaticJsonRpcProvider(this.rpcURL); + await Promise.all( + Object.keys(stateOverridesParams).map(async addr => { + const storage = stateOverridesParams[addr].storage; - // need to execute promises sequentially here - for await (const addr of Object.keys(stateOverridesParams)) { - const storage = stateOverridesParams[addr].storage; - - for await (const slot of Object.keys(storage)) { - const txHash = await testNetRPC!.send('tenderly_setStorageAt', [ - addr, - slot, - storage[slot], - ]); - - const transaction = await testNetRPC!.waitForTransaction(txHash); - if (!transaction.status) { - console.log(`Transaction failed: ${txHash}`); - } - } - } + await Promise.all( + Object.keys(storage).map(async slot => { + const txHash = await testNetRPC!.send('tenderly_setStorageAt', [ + addr, + slot, + storage[slot], + ]); + + const transaction = await testNetRPC!.waitForTransaction(txHash); + if (!transaction.status) { + console.log(`Transaction failed: ${txHash}`); + } + }), + ); + }), + ); } } From c2d16e041f4b76af919e8447ea7780b3ebe7dc20 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Wed, 22 Jan 2025 14:56:46 +0300 Subject: [PATCH 18/23] add fixes --- tests/tenderly-simulation.ts | 42 ++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 401ef5a38..876242120 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -96,8 +96,38 @@ export class TenderlySimulation implements TransactionSimulator { if (this.vnetId) return; + const findAdminRPC = (rpcs: { name: string; url: string }[]) => { + return rpcs.find( + rpc => rpc.name.toLowerCase() === 'Admin RPC'.toLowerCase(), + ); + }; + if (TENDERLY_VNET_ID) { this.vnetId = TENDERLY_VNET_ID; + + try { + let res = await axios.get( + `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/vnets/${this.vnetId}`, + { + timeout: 200000, + headers: { + 'x-access-key': TENDERLY_TOKEN, + }, + }, + ); + + const rpc = findAdminRPC(res.data.rpcs); + + if (!rpc) { + throw new Error(`RPC url was not found for testnet: ${this.vnetId}`); + } + + this.rpcURL = rpc.url; + } catch (e) { + console.error(`TenderlySimulation_setup:`, e); + throw e; + } + return; } @@ -126,17 +156,17 @@ export class TenderlySimulation implements TransactionSimulator { { timeout: 200000, headers: { - 'X-Access-Key': TENDERLY_TOKEN, + 'x-access-key': TENDERLY_TOKEN, }, }, ); - const rpc: { name: string; url: string } = res.data.rpcs.find( - (rpc: { name: string; url: string }) => - rpc.name.toLowerCase() === 'Admin RPC'.toLowerCase(), - ); - this.vnetId = res.data.id; + const rpc = findAdminRPC(res.data.rpcs); + if (!rpc) { + throw new Error(`RPC url was not found for testnet: ${this.vnetId}`); + } + this.rpcURL = rpc.url; } catch (e) { console.error(`TenderlySimulation_setup:`, e); From b27bdb72a6f2e3962967abffa6a0ec67ca965c67 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Wed, 22 Jan 2025 15:05:03 +0300 Subject: [PATCH 19/23] fix requested changes --- tests/tenderly-simulation.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 876242120..3bca7d8ed 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -78,11 +78,7 @@ export class TenderlySimulation implements TransactionSimulator { [Network.BASE]: 'base', }; - constructor(private network: number = 1, vnetId?: string) { - if (vnetId) { - this.vnetId = vnetId; - } - } + constructor(private network: number = 1) {} getChainNameByChainId(network: number): string { return this.chainIdToChainNameMap[network]; @@ -94,8 +90,6 @@ export class TenderlySimulation implements TransactionSimulator { `TenderlySimulation_setup: TENDERLY_TOKEN not found in the env`, ); - if (this.vnetId) return; - const findAdminRPC = (rpcs: { name: string; url: string }[]) => { return rpcs.find( rpc => rpc.name.toLowerCase() === 'Admin RPC'.toLowerCase(), From 6dd44a57a3d59fec0ae0c235c14daedc159d2c88 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Wed, 22 Jan 2025 16:02:27 +0300 Subject: [PATCH 20/23] removed redundant line --- tests/utils-e2e.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index 1354d82ee..6dd228513 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -702,7 +702,6 @@ export async function newTestE2E({ stateOverrides: {}, }; - destToken.addBalance(GIFTER_ADDRESS, (BigInt(MAX_UINT) / 4n).toString()); destToken.applyOverrides(stateOverrides); const giftTx = makeFakeTransferToSenderAddress( From 7d42cc0f2e9f2f3468795fb767c4928b9a8fd467 Mon Sep 17 00:00:00 2001 From: Danylo Kanievskyi Date: Wed, 22 Jan 2025 15:44:28 +0200 Subject: [PATCH 21/23] chore: tenderly url --- tests/tenderly-simulation.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/tenderly-simulation.ts b/tests/tenderly-simulation.ts index 3bca7d8ed..7cbdd99fb 100644 --- a/tests/tenderly-simulation.ts +++ b/tests/tenderly-simulation.ts @@ -175,8 +175,7 @@ export class TenderlySimulation implements TransactionSimulator { if (stateOverrides) { await process.nextTick(() => {}); // https://stackoverflow.com/questions/69169492/async-external-function-leaves-open-handles-jest-supertest-express const result = await axios.post( - ` - https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/contracts/encode-states`, + `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_ID}/project/${TENDERLY_PROJECT}/contracts/encode-states`, stateOverrides, { headers: { From 0d7304d558d8111d6caf68c21ce80959ae2d8db6 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Wed, 22 Jan 2025 17:38:20 +0300 Subject: [PATCH 22/23] rollback changes for generic rfq e2e tests --- src/dex/generic-rfq/generic-rfq-e2e.test.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/dex/generic-rfq/generic-rfq-e2e.test.ts b/src/dex/generic-rfq/generic-rfq-e2e.test.ts index 64a08fc1d..f7836840f 100644 --- a/src/dex/generic-rfq/generic-rfq-e2e.test.ts +++ b/src/dex/generic-rfq/generic-rfq-e2e.test.ts @@ -118,20 +118,18 @@ describe(`GenericRFQ ${dexKey} E2E`, () => { srcToken = new SmartToken(tokens[testCase.srcToken]); destToken = new SmartToken(tokens[testCase.destToken]); - const amount = (BigInt(MAX_UINT) / 10n ** 10n).toString(); - - srcToken.addBalance(testAccount.address, amount); + srcToken.addBalance(testAccount.address, MAX_UINT); srcToken.addAllowance( testAccount.address, config.augustusRFQAddress, - amount, + MAX_UINT, ); - destToken.addBalance(testAccount.address, amount); + destToken.addBalance(testAccount.address, MAX_UINT); destToken.addAllowance( testAccount.address, config.augustusRFQAddress, - amount, + MAX_UINT, ); } const contractMethod = From ef0b89c9142c2cae828f5f78a5319ecbb2458dd9 Mon Sep 17 00:00:00 2001 From: Alexander Burkut Date: Wed, 22 Jan 2025 17:40:39 +0300 Subject: [PATCH 23/23] returned deleted line --- tests/utils-e2e.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/utils-e2e.ts b/tests/utils-e2e.ts index 6dd228513..1c74b820a 100644 --- a/tests/utils-e2e.ts +++ b/tests/utils-e2e.ts @@ -702,6 +702,7 @@ export async function newTestE2E({ stateOverrides: {}, }; + destToken.addBalance(GIFTER_ADDRESS, MAX_UINT); destToken.applyOverrides(stateOverrides); const giftTx = makeFakeTransferToSenderAddress(