Skip to content

Commit e041a98

Browse files
authored
Merge pull request #110 from 1inch/feature/patch-connectors
Measure Gas of CurveOracle calculations
2 parents 92ecd69 + d97d78b commit e041a98

File tree

3 files changed

+1037
-58
lines changed

3 files changed

+1037
-58
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
"@openzeppelin/contracts": "5.0.1"
1212
},
1313
"devDependencies": {
14-
"@1inch/solidity-utils": "3.5.5",
14+
"@1inch/solidity-utils": "3.7.1",
1515
"@matterlabs/hardhat-zksync-deploy": "1.1.1",
1616
"@matterlabs/hardhat-zksync-solc": "1.0.5",
1717
"@matterlabs/hardhat-zksync-verify": "1.2.1",
1818
"@nomicfoundation/hardhat-chai-matchers": "2.0.2",
1919
"@nomicfoundation/hardhat-ethers": "3.0.5",
2020
"@nomicfoundation/hardhat-network-helpers": "1.0.10",
2121
"@nomicfoundation/hardhat-verify": "2.0.2",
22-
"chai": "4.3.10",
22+
"chai": "4.4.0",
2323
"chai-bn": "0.3.1",
2424
"dotenv": "16.3.1",
2525
"dotenv-cli": "7.3.0",

test/oracles/CurveOracle.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ describe('CurveOracle', function () {
2121
assertRoughlyEqualValues(rate.rate.toString(), expectedRate.rate.toString(), '0.05');
2222
});
2323

24-
it('wbtc -> usdc', async function () {
24+
it('wbtc -> usdt', async function () {
2525
const { curveOracle, uniswapV3Oracle } = await loadFixture(initContracts);
2626
const expectedRate = await uniswapV3Oracle.getRate(tokens.WBTC, tokens.USDT, tokens.NONE, thresholdFilter);
2727
const rate = await curveOracle.getRate(tokens.WBTC, tokens.USDT, tokens.NONE, thresholdFilter);
@@ -41,6 +41,31 @@ describe('CurveOracle', function () {
4141
expect(rate.rate).to.gt('0');
4242
});
4343

44+
describe('measure gas', function () {
45+
it('usdt -> wbtc', async function () {
46+
const { curveOracle, uniswapV3Oracle } = await loadFixture(initContracts);
47+
await measureGas(await curveOracle.getFunction('getRate').send(tokens.USDT, tokens.WBTC, tokens.NONE, thresholdFilter), 'CurveOracle usdt -> wbtc');
48+
await measureGas(await uniswapV3Oracle.getFunction('getRate').send(tokens.USDT, tokens.WBTC, tokens.NONE, thresholdFilter), 'UniswapV3Oracle usdt -> wbtc');
49+
});
50+
51+
it('wbtc -> usdt', async function () {
52+
const { curveOracle, uniswapV3Oracle } = await loadFixture(initContracts);
53+
await measureGas(await curveOracle.getFunction('getRate').send(tokens.WBTC, tokens.USDT, tokens.NONE, thresholdFilter), 'CurveOracle wbtc -> usdt');
54+
await measureGas(await uniswapV3Oracle.getFunction('getRate').send(tokens.WBTC, tokens.USDT, tokens.NONE, thresholdFilter), 'UniswapV3Oracle wbtc -> usdt');
55+
});
56+
57+
it('wbtc -> weth', async function () {
58+
const { curveOracle, uniswapV3Oracle } = await loadFixture(initContracts);
59+
await measureGas(await curveOracle.getFunction('getRate').send(tokens.WBTC, tokens.WETH, tokens.NONE, thresholdFilter), 'CurveOracle wbtc -> weth');
60+
await measureGas(await uniswapV3Oracle.getFunction('getRate').send(tokens.WBTC, tokens.WETH, tokens.NONE, thresholdFilter), 'UniswapV3Oracle wbtc -> weth');
61+
});
62+
63+
async function measureGas (tx, comment) {
64+
const receipt = await tx.wait();
65+
console.log('gasUsed', comment, receipt.gasUsed.toString());
66+
}
67+
});
68+
4469
describe('doesn\'t ruin various registry with different selectors', function () {
4570
it('Main Registry', async function () {
4671
await testNotRuins(0, 2n);

0 commit comments

Comments
 (0)