From c412e9ebadec8d5f8debf2db5310168d7ece2fab Mon Sep 17 00:00:00 2001 From: "Utkir S." Date: Tue, 13 Aug 2024 18:43:19 +0500 Subject: [PATCH] test binary searched cgl with eth_call (#235) --- lerna.json | 2 +- package.json | 2 +- packages/api/package.json | 10 +++++----- packages/cli/package.json | 14 +++++++------- packages/db/package.json | 4 ++-- packages/executor/package.json | 10 +++++----- packages/executor/src/modules/eth.ts | 23 +++++++++++++++-------- packages/executor/src/utils/bignumber.ts | 9 +++++++++ packages/monitoring/package.json | 4 ++-- packages/node/package.json | 16 ++++++++-------- packages/params/package.json | 6 +++--- packages/types/package.json | 2 +- packages/utils/package.json | 4 ++-- 13 files changed, 61 insertions(+), 45 deletions(-) create mode 100644 packages/executor/src/utils/bignumber.ts diff --git a/lerna.json b/lerna.json index 0b41f06f..88ff1cee 100644 --- a/lerna.json +++ b/lerna.json @@ -3,7 +3,7 @@ "packages/*" ], "npmClient": "yarn", - "version": "2.0.15", + "version": "2.0.16", "stream": "true", "command": { "version": { diff --git a/package.json b/package.json index d2e565d1..e75e1f70 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "root", "private": true, - "version": "2.0.15", + "version": "2.0.16", "engines": { "node": ">=18.0.0" }, diff --git a/packages/api/package.json b/packages/api/package.json index a430d736..00efb6bd 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "The API module of Etherspot bundler client", "author": "Etherspot", "homepage": "https://https://github.com/etherspot/skandha#readme", @@ -34,10 +34,10 @@ "dependencies": { "@fastify/cors": "9.0.1", "@fastify/websocket": "10.0.1", - "@skandha/executor": "^2.0.15", - "@skandha/monitoring": "^2.0.15", - "@skandha/types": "^2.0.15", - "@skandha/utils": "^2.0.15", + "@skandha/executor": "^2.0.16", + "@skandha/monitoring": "^2.0.16", + "@skandha/types": "^2.0.16", + "@skandha/utils": "^2.0.16", "class-transformer": "0.5.1", "class-validator": "0.14.1", "ethers": "5.7.2", diff --git a/packages/cli/package.json b/packages/cli/package.json index 648d2b72..5ab68e2b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "> TODO: description", "author": "zincoshine ", "homepage": "https://https://github.com/etherspot/skandha#readme", @@ -40,12 +40,12 @@ "@libp2p/peer-id-factory": "2.0.1", "@libp2p/prometheus-metrics": "1.1.3", "@multiformats/multiaddr": "12.1.3", - "@skandha/api": "^2.0.15", - "@skandha/db": "^2.0.15", - "@skandha/executor": "^2.0.15", - "@skandha/monitoring": "^2.0.15", - "@skandha/node": "^2.0.15", - "@skandha/types": "^2.0.15", + "@skandha/api": "^2.0.16", + "@skandha/db": "^2.0.16", + "@skandha/executor": "^2.0.16", + "@skandha/monitoring": "^2.0.16", + "@skandha/node": "^2.0.16", + "@skandha/types": "^2.0.16", "find-up": "5.0.0", "got": "12.5.3", "js-yaml": "4.1.0", diff --git a/packages/db/package.json b/packages/db/package.json index c262df04..bc3ed344 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "The DB module of Etherspot bundler client", "author": "Etherspot", "homepage": "https://github.com/etherspot/etherspot-bundler#readme", @@ -34,7 +34,7 @@ "dependencies": { "@chainsafe/ssz": "0.10.1", "@farcaster/rocksdb": "5.5.0", - "@skandha/types": "^2.0.15" + "@skandha/types": "^2.0.16" }, "devDependencies": { "@types/rocksdb": "3.0.1", diff --git a/packages/executor/package.json b/packages/executor/package.json index 37dc1ca1..b1df7c5d 100644 --- a/packages/executor/package.json +++ b/packages/executor/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "The Relayer module of Etherspot bundler client", "author": "Etherspot", "homepage": "https://https://github.com/etherspot/skandha#readme", @@ -35,10 +35,10 @@ }, "dependencies": { "@flashbots/ethers-provider-bundle": "0.6.2", - "@skandha/monitoring": "^2.0.15", - "@skandha/params": "^2.0.15", - "@skandha/types": "^2.0.15", - "@skandha/utils": "^2.0.15", + "@skandha/monitoring": "^2.0.16", + "@skandha/params": "^2.0.16", + "@skandha/types": "^2.0.16", + "@skandha/utils": "^2.0.16", "async-mutex": "0.4.0", "ethers": "5.7.2", "strict-event-emitter-types": "2.0.0", diff --git a/packages/executor/src/modules/eth.ts b/packages/executor/src/modules/eth.ts index ee1348a5..edf0521c 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -28,6 +28,7 @@ import { import { GetNodeAPI, NetworkConfig } from "../interfaces"; import { EntryPointVersion } from "../services/EntryPointService/interfaces"; import { getUserOpGasLimit } from "../services/BundlingService/utils"; +import { maxBn, minBn } from "../utils/bignumber"; import { EstimateUserOperationGasArgs, SendUserOperationGasArgs, @@ -209,12 +210,8 @@ export class Eth { .div(10000) // % markup .add(cglMarkup || 0); - if (binarySearchCGL.lt(cglMarkup)) { - binarySearchCGL = BigNumber.from(cglMarkup); - } - //< checking for execution revert - await this.provider + const ethEstimateGas = await this.provider .estimateGas({ from: entryPoint, to: userOp.sender, @@ -227,15 +224,25 @@ export class Eth { }); //> - let callGasLimit = binarySearchCGL; - if (callGasLimit.gt(paidFeeCGL)) { - callGasLimit = paidFeeCGL; + let callGasLimit = minBn(binarySearchCGL, paidFeeCGL); + if (userOp.factoryData !== undefined && userOp.factoryData.length > 2) { + await this.provider + .estimateGas({ + from: entryPoint, + to: userOp.sender, + data: userOp.callData, + gasLimit: callGasLimit, + }) + .catch((_) => { + callGasLimit = maxBn(binarySearchCGL, paidFeeCGL); + }); } this.logger.debug( { callGasLimit, paidFeeCGL, binarySearchCGL, + ethEstimateGas, }, "estimated CGL" ); diff --git a/packages/executor/src/utils/bignumber.ts b/packages/executor/src/utils/bignumber.ts new file mode 100644 index 00000000..bbe9164c --- /dev/null +++ b/packages/executor/src/utils/bignumber.ts @@ -0,0 +1,9 @@ +import { BigNumber } from "ethers"; + +export function minBn(lhs: BigNumber, rhs: BigNumber): BigNumber { + return lhs.gt(rhs) ? rhs : lhs; +} + +export function maxBn(lhs: BigNumber, rhs: BigNumber): BigNumber { + return lhs.lt(rhs) ? rhs : lhs; +} diff --git a/packages/monitoring/package.json b/packages/monitoring/package.json index 50706e3f..010ba85b 100644 --- a/packages/monitoring/package.json +++ b/packages/monitoring/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "The Monitoring module of Etherspot bundler client", "author": "Etherspot", "homepage": "https://github.com/etherspot/etherspot-bundler#readme", @@ -32,7 +32,7 @@ "check-readme": "typescript-docs-verifier" }, "dependencies": { - "@skandha/types": "^2.0.15", + "@skandha/types": "^2.0.16", "prom-client": "15.1.0" } } diff --git a/packages/node/package.json b/packages/node/package.json index fc5eb341..970bcd14 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "The bundler node module of Etherspot bundler client", "author": "Etherspot", "homepage": "https://https://github.com/etherspot/skandha#readme", @@ -56,13 +56,13 @@ "@libp2p/prometheus-metrics": "1.1.3", "@libp2p/tcp": "6.1.0", "@multiformats/multiaddr": "11.4.0", - "@skandha/api": "^2.0.15", - "@skandha/db": "^2.0.15", - "@skandha/executor": "^2.0.15", - "@skandha/monitoring": "^2.0.15", - "@skandha/params": "^2.0.15", - "@skandha/types": "^2.0.15", - "@skandha/utils": "^2.0.15", + "@skandha/api": "^2.0.16", + "@skandha/db": "^2.0.16", + "@skandha/executor": "^2.0.16", + "@skandha/monitoring": "^2.0.16", + "@skandha/params": "^2.0.16", + "@skandha/types": "^2.0.16", + "@skandha/utils": "^2.0.16", "abstract-leveldown": "7.2.0", "datastore-core": "8.0.1", "ethers": "5.7.2", diff --git a/packages/params/package.json b/packages/params/package.json index 3a8fd178..aabcd9fc 100644 --- a/packages/params/package.json +++ b/packages/params/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "Various bundler parameters", "author": "Etherspot", "homepage": "https://github.com/etherspot/skandha#readme", @@ -28,8 +28,8 @@ "@arbitrum/sdk": "3.1.4", "@chainsafe/ssz": "0.16.0", "@mantleio/sdk": "0.2.1", - "@skandha/types": "^2.0.15", - "@skandha/utils": "^2.0.15", + "@skandha/types": "^2.0.16", + "@skandha/utils": "^2.0.16", "ethers": "5.7.2" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index c46e443b..2bc60925 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "The types of Etherspot bundler client", "author": "Etherspot", "homepage": "https://https://github.com/etherspot/skandha#readme", diff --git a/packages/utils/package.json b/packages/utils/package.json index e43a6b8f..f2a16fd0 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.15", + "version": "2.0.16", "description": "utils of Etherspot bundler client", "author": "Etherspot", "homepage": "https://https://github.com/etherspot/skandha#readme", @@ -33,7 +33,7 @@ }, "dependencies": { "@chainsafe/as-sha256": "0.3.1", - "@skandha/types": "^2.0.15", + "@skandha/types": "^2.0.16", "any-signal": "3.0.1", "bigint-buffer": "1.1.5", "case": "^1.6.3",