From 2b308927d704bbe5627426a5dbee5c92076ef5c8 Mon Sep 17 00:00:00 2001 From: "Utkir S." Date: Fri, 26 Jul 2024 17:57:47 +0500 Subject: [PATCH] fix: fallback to cgl based on paid fee (#222) --- 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 | 24 ++++++++++++++++++------ 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 ++-- 12 files changed, 55 insertions(+), 43 deletions(-) diff --git a/lerna.json b/lerna.json index 3c9f88d2..8130a36a 100644 --- a/lerna.json +++ b/lerna.json @@ -3,7 +3,7 @@ "packages/*" ], "npmClient": "yarn", - "version": "2.0.8", + "version": "2.0.9", "stream": "true", "command": { "version": { diff --git a/package.json b/package.json index f3ce32f9..de735f25 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "root", "private": true, - "version": "2.0.8", + "version": "2.0.9", "engines": { "node": ">=18.0.0" }, diff --git a/packages/api/package.json b/packages/api/package.json index 576c7dd8..e063c6f2 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.8", - "@skandha/monitoring": "^2.0.8", - "@skandha/types": "^2.0.8", - "@skandha/utils": "^2.0.8", + "@skandha/executor": "^2.0.9", + "@skandha/monitoring": "^2.0.9", + "@skandha/types": "^2.0.9", + "@skandha/utils": "^2.0.9", "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 696135e8..33f7e8ab 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.8", - "@skandha/db": "^2.0.8", - "@skandha/executor": "^2.0.8", - "@skandha/monitoring": "^2.0.8", - "@skandha/node": "^2.0.8", - "@skandha/types": "^2.0.8", + "@skandha/api": "^2.0.9", + "@skandha/db": "^2.0.9", + "@skandha/executor": "^2.0.9", + "@skandha/monitoring": "^2.0.9", + "@skandha/node": "^2.0.9", + "@skandha/types": "^2.0.9", "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 b8e697d0..75a6aff3 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.8" + "@skandha/types": "^2.0.9" }, "devDependencies": { "@types/rocksdb": "3.0.1", diff --git a/packages/executor/package.json b/packages/executor/package.json index 3dd6bbb8..9f8fc022 100644 --- a/packages/executor/package.json +++ b/packages/executor/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.8", - "@skandha/params": "^2.0.8", - "@skandha/types": "^2.0.8", - "@skandha/utils": "^2.0.8", + "@skandha/monitoring": "^2.0.9", + "@skandha/params": "^2.0.9", + "@skandha/types": "^2.0.9", + "@skandha/utils": "^2.0.9", "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 c33002e7..80aea7de 100644 --- a/packages/executor/src/modules/eth.ts +++ b/packages/executor/src/modules/eth.ts @@ -178,14 +178,14 @@ export class Eth { } // eslint-disable-next-line prefer-const - let { returnInfo, callGasLimit } = + let { returnInfo, callGasLimit: binarySearchCGL } = await this.userOpValidationService.validateForEstimation( userOp, entryPoint ); // eslint-disable-next-line prefer-const - let { preOpGas, validAfter, validUntil } = returnInfo; + let { preOpGas, validAfter, validUntil, paid } = returnInfo; const verificationGasLimit = BigNumber.from(preOpGas) .sub(userOp.preVerificationGas) @@ -194,15 +194,23 @@ export class Eth { .add(this.config.vglMarkup) .toNumber(); - // calculate callGasLimit based on paid fee const { cglMarkup } = this.config; - callGasLimit = callGasLimit + // calculate callGasLimit based on paid fee + const totalGas: BigNumber = BigNumber.from(paid).div(userOp.maxFeePerGas); + const paidFeeCGL = totalGas + .sub(preOpGas) .mul(10000 + this.config.cglMarkupPercent) .div(10000) // % markup .add(cglMarkup || 0); - if (callGasLimit.lt(cglMarkup)) { - callGasLimit = BigNumber.from(cglMarkup); + // callGasLimit based on binary search + binarySearchCGL = binarySearchCGL + .mul(10000 + this.config.cglMarkupPercent) + .div(10000) // % markup + .add(cglMarkup || 0); + + if (binarySearchCGL.lt(cglMarkup)) { + binarySearchCGL = BigNumber.from(cglMarkup); } //< checking for execution revert @@ -219,6 +227,10 @@ export class Eth { }); //> + let callGasLimit = binarySearchCGL; + if (callGasLimit.gt(paidFeeCGL)) { + callGasLimit = paidFeeCGL; + } userOp.callGasLimit = callGasLimit; let preVerificationGas: BigNumberish = this.entryPointService.calcPreverificationGas(entryPoint, userOp); diff --git a/packages/monitoring/package.json b/packages/monitoring/package.json index 53c4ea90..d1fb0308 100644 --- a/packages/monitoring/package.json +++ b/packages/monitoring/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.8", + "@skandha/types": "^2.0.9", "prom-client": "15.1.0" } } diff --git a/packages/node/package.json b/packages/node/package.json index 49baff0c..465da435 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.8", - "@skandha/db": "^2.0.8", - "@skandha/executor": "^2.0.8", - "@skandha/monitoring": "^2.0.8", - "@skandha/params": "^2.0.8", - "@skandha/types": "^2.0.8", - "@skandha/utils": "^2.0.8", + "@skandha/api": "^2.0.9", + "@skandha/db": "^2.0.9", + "@skandha/executor": "^2.0.9", + "@skandha/monitoring": "^2.0.9", + "@skandha/params": "^2.0.9", + "@skandha/types": "^2.0.9", + "@skandha/utils": "^2.0.9", "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 e38df36f..e055ce69 100644 --- a/packages/params/package.json +++ b/packages/params/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.10.1", "@mantleio/sdk": "0.2.1", - "@skandha/types": "^2.0.8", - "@skandha/utils": "^2.0.8", + "@skandha/types": "^2.0.9", + "@skandha/utils": "^2.0.9", "ethers": "5.7.2" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index b0400e06..31be469a 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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 54a106eb..a40c4644 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "2.0.8", + "version": "2.0.9", "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.8", + "@skandha/types": "^2.0.9", "any-signal": "3.0.1", "bigint-buffer": "1.1.5", "case": "^1.6.3",