@pimlico/alto 0.0.0-main.20250916T162729 → 0.0.0-main.20250930T125129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/cli/config/bundler.d.ts +12 -0
- package/esm/cli/config/bundler.js +2 -0
- package/esm/cli/config/bundler.js.map +1 -1
- package/esm/cli/config/options.js +11 -0
- package/esm/cli/config/options.js.map +1 -1
- package/esm/cli/setupServer.js +1 -1
- package/esm/cli/setupServer.js.map +1 -1
- package/esm/cli/shutDown.js +15 -55
- package/esm/cli/shutDown.js.map +1 -1
- package/esm/executor/bundleManager.d.ts +1 -1
- package/esm/executor/bundleManager.js +47 -34
- package/esm/executor/bundleManager.js.map +1 -1
- package/esm/executor/executorManager.js +3 -4
- package/esm/executor/executorManager.js.map +1 -1
- package/esm/executor/senderManager/createRedisSenderManager.js +1 -2
- package/esm/executor/senderManager/createRedisSenderManager.js.map +1 -1
- package/esm/handlers/arbitrumGasPriceManager.js +2 -2
- package/esm/handlers/gasPriceManager.js +3 -3
- package/esm/handlers/mantleGasPriceManager.js +4 -4
- package/esm/handlers/optimismManager.js +1 -1
- package/esm/mempool/mempool.d.ts +3 -11
- package/esm/mempool/mempool.js +91 -93
- package/esm/mempool/mempool.js.map +1 -1
- package/esm/mempool/monitoring.d.ts +1 -1
- package/esm/mempool/monitoring.js +30 -21
- package/esm/mempool/monitoring.js.map +1 -1
- package/esm/receiptCache/createMemoryReceiptCache.js +8 -5
- package/esm/receiptCache/createMemoryReceiptCache.js.map +1 -1
- package/esm/receiptCache/createRedisReceiptCache.js +13 -11
- package/esm/receiptCache/createRedisReceiptCache.js.map +1 -1
- package/esm/receiptCache/index.d.ts +4 -1
- package/esm/receiptCache/index.js.map +1 -1
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js +4 -1
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
- package/esm/store/createMempoolStore.d.ts +1 -1
- package/esm/store/createMempoolStore.js +51 -143
- package/esm/store/createMempoolStore.js.map +1 -1
- package/esm/store/index.d.ts +4 -75
- package/esm/store/index.js +4 -1
- package/esm/store/index.js.map +1 -1
- package/esm/store/outstanding/index.d.ts +13 -0
- package/esm/store/outstanding/index.js +16 -0
- package/esm/store/outstanding/index.js.map +1 -0
- package/esm/store/{createMemoryOutstandingStore.d.ts → outstanding/memory.d.ts} +11 -10
- package/esm/store/outstanding/memory.js +249 -0
- package/esm/store/outstanding/memory.js.map +1 -0
- package/esm/store/outstanding/redis.d.ts +11 -0
- package/esm/store/outstanding/redis.js +201 -0
- package/esm/store/outstanding/redis.js.map +1 -0
- package/esm/store/outstanding/types.d.ts +18 -0
- package/esm/store/outstanding/types.js +2 -0
- package/esm/store/outstanding/types.js.map +1 -0
- package/esm/store/processing/index.d.ts +11 -0
- package/esm/store/processing/index.js +17 -0
- package/esm/store/processing/index.js.map +1 -0
- package/esm/store/processing/memory.d.ts +14 -0
- package/esm/store/processing/memory.js +46 -0
- package/esm/store/processing/memory.js.map +1 -0
- package/esm/store/processing/redis.d.ts +21 -0
- package/esm/store/processing/redis.js +69 -0
- package/esm/store/processing/redis.js.map +1 -0
- package/esm/store/processing/types.d.ts +9 -0
- package/esm/store/processing/types.js +2 -0
- package/esm/store/processing/types.js.map +1 -0
- package/esm/store/types.d.ts +49 -0
- package/esm/store/types.js +2 -0
- package/esm/store/types.js.map +1 -0
- package/esm/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +23 -2
- package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js +83 -60
- package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js.map +1 -1
- package/esm/utils/minMaxQueue/index.d.ts +2 -2
- package/esm/utils/minMaxQueue/index.js +2 -2
- package/esm/utils/minMaxQueue/index.js.map +1 -1
- package/esm/utils/userop.d.ts +1 -0
- package/esm/utils/userop.js +6 -0
- package/esm/utils/userop.js.map +1 -1
- package/package.json +1 -1
- package/esm/cli/config/redisKeys.d.ts +0 -9
- package/esm/cli/config/redisKeys.js +0 -16
- package/esm/cli/config/redisKeys.js.map +0 -1
- package/esm/store/createMemoryOutstandingStore.js +0 -240
- package/esm/store/createMemoryOutstandingStore.js.map +0 -1
- package/esm/store/createRedisOutstandingStore.d.ts +0 -28
- package/esm/store/createRedisOutstandingStore.js +0 -341
- package/esm/store/createRedisOutstandingStore.js.map +0 -1
- package/esm/store/createRedisStore.d.ts +0 -10
- package/esm/store/createRedisStore.js +0 -128
- package/esm/store/createRedisStore.js.map +0 -1
- package/esm/store/createStore.d.ts +0 -6
- package/esm/store/createStore.js +0 -66
- package/esm/store/createStore.js.map +0 -1
|
@@ -1,106 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MinMaxQueue implementation in Redis using a single sorted set
|
|
3
|
+
*
|
|
4
|
+
* ## Data Structure
|
|
5
|
+
* - Uses a Redis sorted set where:
|
|
6
|
+
* - Score: timestamp when value was added (seconds since epoch)
|
|
7
|
+
* - Member: the actual bigint value (stored as string)
|
|
8
|
+
*
|
|
9
|
+
* ## Flow
|
|
10
|
+
* 1. **Adding values**: New values are added/updated with current timestamp as score
|
|
11
|
+
* 2. **Reading values**: Queries filter out expired entries based on timestamp
|
|
12
|
+
* 3. **Cleanup**: Background process runs every minute to remove expired entries
|
|
13
|
+
*
|
|
14
|
+
* ## Optimization Strategy
|
|
15
|
+
* - Lazy cleanup: expired entries filtered on read, bulk removed by background process (removing is expensive)
|
|
16
|
+
*
|
|
17
|
+
* ## TTL Management
|
|
18
|
+
* - Entries expire based on `queueValidity` (configured via `gasPriceExpiry`)
|
|
19
|
+
* - Background cleanup prevents unbounded growth
|
|
20
|
+
* - Read operations ignore expired entries without removing them
|
|
21
|
+
*/
|
|
1
22
|
import Redis from "ioredis";
|
|
2
23
|
import * as sentry from "@sentry/node";
|
|
3
|
-
// Sorted TTL queue, one queue to keep track of values and other queue to keep track of TTL.
|
|
4
24
|
class SortedTtlSet {
|
|
5
25
|
redis;
|
|
6
|
-
|
|
7
|
-
timestampKey;
|
|
26
|
+
redisKey; // Single sorted set: score = timestamp, member = value
|
|
8
27
|
queueValidity;
|
|
9
|
-
|
|
28
|
+
cleanupInterval = null;
|
|
29
|
+
constructor({ queueName, config, redisEndpoint }) {
|
|
10
30
|
const redis = new Redis(redisEndpoint);
|
|
11
31
|
const queueValidity = config.gasPriceExpiry;
|
|
12
|
-
const redisKey = `${config.chainId}:${keyPrefix}`;
|
|
13
32
|
this.redis = redis;
|
|
14
|
-
this.
|
|
15
|
-
this.timestampKey = `${redisKey}:timestamp`;
|
|
33
|
+
this.redisKey = `${config.redisKeyPrefix}:${config.chainId}:${queueName}`;
|
|
16
34
|
this.queueValidity = queueValidity;
|
|
35
|
+
// Start background cleanup every minute
|
|
36
|
+
this.startBackgroundCleanup();
|
|
37
|
+
}
|
|
38
|
+
startBackgroundCleanup() {
|
|
39
|
+
// Run cleanup every minute
|
|
40
|
+
this.cleanupInterval = setInterval(() => {
|
|
41
|
+
this.cleanup().catch((err) => {
|
|
42
|
+
sentry.captureException(err);
|
|
43
|
+
});
|
|
44
|
+
}, 60 * 1000);
|
|
45
|
+
// Allow process to exit even if interval is active
|
|
46
|
+
if (this.cleanupInterval.unref) {
|
|
47
|
+
this.cleanupInterval.unref();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async cleanup() {
|
|
51
|
+
const cutoffTime = Date.now() / 1_000 - this.queueValidity * 5;
|
|
52
|
+
await this.redis.zremrangebyscore(this.redisKey, "-inf", `(${cutoffTime}`);
|
|
17
53
|
}
|
|
18
54
|
async add(value, logger) {
|
|
19
55
|
try {
|
|
20
|
-
await this.pruneExpiredEntries(logger);
|
|
21
56
|
if (value === 0n) {
|
|
22
57
|
return;
|
|
23
58
|
}
|
|
24
59
|
const now = Date.now() / 1_000;
|
|
25
60
|
const valueStr = value.toString();
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
if (exists) {
|
|
29
|
-
// If value exists, only update its timestamp
|
|
30
|
-
const multi = this.redis.multi();
|
|
31
|
-
multi.zrem(this.timestampKey, valueStr); // Remove old timestamp
|
|
32
|
-
multi.zadd(this.timestampKey, now, valueStr); // Add new timestamp
|
|
33
|
-
await multi.exec();
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// If it's a new value, add entry to timestamp and value queues
|
|
37
|
-
const multi = this.redis.multi();
|
|
38
|
-
multi.zadd(this.timestampKey, now, valueStr);
|
|
39
|
-
multi.zadd(this.valueKey, valueStr, valueStr);
|
|
40
|
-
await multi.exec();
|
|
41
|
-
}
|
|
61
|
+
// Add or update (if exists) with current timestamp
|
|
62
|
+
await this.redis.zadd(this.redisKey, now, valueStr);
|
|
42
63
|
}
|
|
43
64
|
catch (err) {
|
|
44
65
|
logger.error({ err }, "Failed to save value to minMaxQueue");
|
|
45
66
|
sentry.captureException(err);
|
|
46
67
|
}
|
|
47
68
|
}
|
|
48
|
-
|
|
69
|
+
getValidCutoffTime() {
|
|
70
|
+
return Date.now() / 1_000 - this.queueValidity;
|
|
71
|
+
}
|
|
72
|
+
async getMin(logger) {
|
|
49
73
|
try {
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
);
|
|
55
|
-
if (expiredMembers.length) {
|
|
56
|
-
const multi = this.redis.multi();
|
|
57
|
-
// Remove expired entries from both sets
|
|
58
|
-
multi.zrem(this.timestampKey, ...expiredMembers);
|
|
59
|
-
multi.zrem(this.valueKey, ...expiredMembers);
|
|
60
|
-
await multi.exec();
|
|
74
|
+
// Get all valid (non-expired) values
|
|
75
|
+
const validValues = await this.redis.zrangebyscore(this.redisKey, this.getValidCutoffTime(), "+inf");
|
|
76
|
+
if (validValues.length === 0) {
|
|
77
|
+
return null;
|
|
61
78
|
}
|
|
79
|
+
// Find minimum value among valid entries
|
|
80
|
+
const bigIntValues = validValues.map((v) => BigInt(v));
|
|
81
|
+
return bigIntValues.reduce((min, val) => (val < min ? val : min));
|
|
62
82
|
}
|
|
63
83
|
catch (err) {
|
|
64
|
-
logger.error({ err }, "Failed to
|
|
84
|
+
logger.error({ err }, "Failed to get min value");
|
|
65
85
|
sentry.captureException(err);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async getMin(logger) {
|
|
69
|
-
// Prune expired entries
|
|
70
|
-
await this.pruneExpiredEntries(logger);
|
|
71
|
-
// Get the smallest value from the value set
|
|
72
|
-
const values = await this.redis.zrange(this.valueKey, 0, 0);
|
|
73
|
-
if (values.length === 0) {
|
|
74
86
|
return null;
|
|
75
87
|
}
|
|
76
|
-
return BigInt(values[0]);
|
|
77
88
|
}
|
|
78
89
|
async getMax(logger) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
90
|
+
try {
|
|
91
|
+
// Get all valid (non-expired) values
|
|
92
|
+
const validValues = await this.redis.zrangebyscore(this.redisKey, this.getValidCutoffTime(), "+inf");
|
|
93
|
+
if (validValues.length === 0) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
// Find maximum value among valid entries
|
|
97
|
+
const bigIntValues = validValues.map((v) => BigInt(v));
|
|
98
|
+
return bigIntValues.reduce((max, val) => (val > max ? val : max));
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
logger.error({ err }, "Failed to get max value");
|
|
102
|
+
sentry.captureException(err);
|
|
84
103
|
return null;
|
|
85
104
|
}
|
|
86
|
-
return BigInt(values[0]);
|
|
87
105
|
}
|
|
88
106
|
async getLatestValue(logger) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
107
|
+
try {
|
|
108
|
+
// Get the most recently added value (highest timestamp) that's still valid
|
|
109
|
+
const validValues = await this.redis.zrevrangebyscore(this.redisKey, "+inf", this.getValidCutoffTime(), "LIMIT", 0, 1);
|
|
110
|
+
if (validValues.length === 0) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
return BigInt(validValues[0]);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
logger.error({ err }, "Failed to get latest value");
|
|
117
|
+
sentry.captureException(err);
|
|
94
118
|
return null;
|
|
95
119
|
}
|
|
96
|
-
return BigInt(values[0]);
|
|
97
120
|
}
|
|
98
121
|
}
|
|
99
|
-
export const createRedisMinMaxQueue = ({ config,
|
|
122
|
+
export const createRedisMinMaxQueue = ({ config, queueName, redisEndpoint }) => {
|
|
100
123
|
const queue = new SortedTtlSet({
|
|
101
124
|
config,
|
|
102
125
|
redisEndpoint,
|
|
103
|
-
|
|
126
|
+
queueName
|
|
104
127
|
});
|
|
105
128
|
const logger = config.getLogger({ module: "minMaxQueue" }, {
|
|
106
129
|
level: config.logLevel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRedisMinMaxQueue.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/createRedisMinMaxQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAA;AAG3B,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAItC,
|
|
1
|
+
{"version":3,"file":"createRedisMinMaxQueue.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/createRedisMinMaxQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ export interface MinMaxQueue {
|
|
|
5
5
|
getMinValue(): Promise<bigint | null>;
|
|
6
6
|
getMaxValue(): Promise<bigint | null>;
|
|
7
7
|
}
|
|
8
|
-
export declare const createMinMaxQueue: ({ config,
|
|
8
|
+
export declare const createMinMaxQueue: ({ config, queueName }: {
|
|
9
9
|
config: AltoConfig;
|
|
10
|
-
|
|
10
|
+
queueName: string;
|
|
11
11
|
}) => MinMaxQueue;
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createMemoryMinMaxQueue } from "./createMemoryMinMaxQueue.js";
|
|
2
2
|
import { createRedisMinMaxQueue } from "./createRedisMinMaxQueue.js";
|
|
3
|
-
export const createMinMaxQueue = ({ config,
|
|
3
|
+
export const createMinMaxQueue = ({ config, queueName }) => {
|
|
4
4
|
if (config.enableHorizontalScaling && config.redisEndpoint) {
|
|
5
5
|
return createRedisMinMaxQueue({
|
|
6
6
|
config,
|
|
7
|
-
|
|
7
|
+
queueName: queueName,
|
|
8
8
|
redisEndpoint: config.redisEndpoint
|
|
9
9
|
});
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AASjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAC9B,MAAM,EACN,SAAS,EAC+B,EAAe,EAAE;IACzD,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzD,OAAO,sBAAsB,CAAC;YAC1B,MAAM;YACN,SAAS;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AASjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAC9B,MAAM,EACN,SAAS,EAC+B,EAAe,EAAE;IACzD,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzD,OAAO,sBAAsB,CAAC;YAC1B,MAAM;YACN,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC,CAAA;IACN,CAAC;IAED,OAAO,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAA"}
|
package/esm/utils/userop.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type Address, type Hex, type PublicClient, type TransactionReceipt } fr
|
|
|
3
3
|
export declare function isVersion06(operation: UserOperation): operation is UserOperation06;
|
|
4
4
|
export declare function isVersion07(operation: UserOperation): operation is UserOperation07;
|
|
5
5
|
export declare function isVersion08(operation: UserOperation, entryPointAddress: Address): operation is UserOperation07;
|
|
6
|
+
export declare function isDeployment(userOp: UserOperation): boolean;
|
|
6
7
|
export declare function getInitCode(unpackedUserOp: UserOperation07): `0x${string}`;
|
|
7
8
|
export declare function unPackInitCode(initCode: Hex): {
|
|
8
9
|
factory: null;
|
package/esm/utils/userop.js
CHANGED
|
@@ -15,6 +15,12 @@ export function isVersion07(operation) {
|
|
|
15
15
|
export function isVersion08(operation, entryPointAddress) {
|
|
16
16
|
return entryPointAddress.startsWith("0x4337");
|
|
17
17
|
}
|
|
18
|
+
// Check if a userOperation is a deployment operation
|
|
19
|
+
export function isDeployment(userOp) {
|
|
20
|
+
const isV6Deployment = isVersion06(userOp) && !!userOp.initCode && userOp.initCode !== "0x";
|
|
21
|
+
const isV7Deployment = isVersion07(userOp) && !!userOp.factory && userOp.factory !== "0x";
|
|
22
|
+
return isV6Deployment || isV7Deployment;
|
|
23
|
+
}
|
|
18
24
|
export function getInitCode(unpackedUserOp) {
|
|
19
25
|
return unpackedUserOp.factory
|
|
20
26
|
? concat([
|
package/esm/utils/userop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userop.js","sourceRoot":"","sources":["../../utils/userop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"userop.js","sourceRoot":"","sources":["../../utils/userop.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pimlico/alto",
|
|
3
|
-
"version": "0.0.0-main.
|
|
3
|
+
"version": "0.0.0-main.20250930T125129",
|
|
4
4
|
"description": "A performant and modular ERC-4337 Bundler written in Typescript",
|
|
5
5
|
"repository": "https://github.com/pimlicolabs/alto.git",
|
|
6
6
|
"author": "Pimlico",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AltoConfig } from "../../createConfig.js";
|
|
2
|
-
export declare const getRedisKeys: (config: AltoConfig) => {
|
|
3
|
-
mempoolQueue: string;
|
|
4
|
-
userOpReceiptCachePrefix: string;
|
|
5
|
-
userOpStatusQueue: string;
|
|
6
|
-
gasPriceQueue: string;
|
|
7
|
-
senderManagerQueue: string;
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=redisKeys.d.ts.map
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const getRedisKeys = (config) => {
|
|
2
|
-
const prefix = `${config.redisKeyPrefix}:${config.chainId}`;
|
|
3
|
-
return {
|
|
4
|
-
// Mempool queue
|
|
5
|
-
mempoolQueue: `${prefix}:outstanding-mempool`,
|
|
6
|
-
// User operation receipt cache - returns just the key prefix for receipt cache
|
|
7
|
-
userOpReceiptCachePrefix: `${prefix}:receipt-cache`,
|
|
8
|
-
// User operation status
|
|
9
|
-
userOpStatusQueue: `${prefix}:userop-status`,
|
|
10
|
-
// Gas price queue
|
|
11
|
-
gasPriceQueue: `${prefix}:gas-price`,
|
|
12
|
-
// Sender manager queue
|
|
13
|
-
senderManagerQueue: `${prefix}:sender-manager`
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=redisKeys.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redisKeys.js","sourceRoot":"","sources":["../../../cli/config/redisKeys.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC/C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,OAAO,EAAE,CAAA;IAE3D,OAAO;QACH,gBAAgB;QAChB,YAAY,EAAE,GAAG,MAAM,sBAAsB;QAE7C,+EAA+E;QAC/E,wBAAwB,EAAE,GAAG,MAAM,gBAAgB;QAEnD,wBAAwB;QACxB,iBAAiB,EAAE,GAAG,MAAM,gBAAgB;QAE5C,kBAAkB;QAClB,aAAa,EAAE,GAAG,MAAM,YAAY;QAEpC,uBAAuB;QACvB,kBAAkB,EAAE,GAAG,MAAM,iBAAiB;KACjD,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
import { getNonceKeyAndSequence, isVersion06, isVersion07 } from "../utils/userop.js";
|
|
2
|
-
const senderNonceSlot = (userOp) => {
|
|
3
|
-
const sender = userOp.sender;
|
|
4
|
-
const [nonceKey] = getNonceKeyAndSequence(userOp.nonce);
|
|
5
|
-
return `${sender}-${nonceKey}`;
|
|
6
|
-
};
|
|
7
|
-
export class MemoryOutstanding {
|
|
8
|
-
config;
|
|
9
|
-
pendingOps = new Map();
|
|
10
|
-
priorityQueue = [];
|
|
11
|
-
logger;
|
|
12
|
-
constructor(config) {
|
|
13
|
-
this.config = config;
|
|
14
|
-
this.logger = config.getLogger({ module: "memory-outstanding-queue" }, {
|
|
15
|
-
level: config.logLevel
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
dump() {
|
|
19
|
-
return [...Array.from(this.pendingOps.values()).flat()];
|
|
20
|
-
}
|
|
21
|
-
// Adds userOp to queue and maintains sorting by gas price.
|
|
22
|
-
addToPriorityQueue(userOpInfo) {
|
|
23
|
-
this.priorityQueue.push(userOpInfo);
|
|
24
|
-
this.priorityQueue.sort((a, b) => {
|
|
25
|
-
const userOpA = a.userOp;
|
|
26
|
-
const userOpB = b.userOp;
|
|
27
|
-
return Number(userOpA.maxFeePerGas - userOpB.maxFeePerGas);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
validateQueuedLimit(userOp) {
|
|
31
|
-
const outstandingOps = this.dump();
|
|
32
|
-
const parallelUserOpsCount = outstandingOps.filter((userOpInfo) => {
|
|
33
|
-
const { userOp: mempoolUserOp } = userOpInfo;
|
|
34
|
-
return mempoolUserOp.sender === userOp.sender;
|
|
35
|
-
}).length;
|
|
36
|
-
if (parallelUserOpsCount > this.config.mempoolMaxParallelOps) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
validateParallelLimit(userOp) {
|
|
42
|
-
const outstandingOps = this.dump();
|
|
43
|
-
const [nonceKey] = getNonceKeyAndSequence(userOp.nonce);
|
|
44
|
-
const queuedUserOpsCount = outstandingOps.filter((userOpInfo) => {
|
|
45
|
-
const { userOp: mempoolUserOp } = userOpInfo;
|
|
46
|
-
const [opNonceKey] = getNonceKeyAndSequence(mempoolUserOp.nonce);
|
|
47
|
-
return (mempoolUserOp.sender === userOp.sender &&
|
|
48
|
-
opNonceKey === nonceKey);
|
|
49
|
-
}).length;
|
|
50
|
-
if (queuedUserOpsCount > this.config.mempoolMaxQueuedOps) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
popConflicting(userOp) {
|
|
56
|
-
const outstandingOps = this.dump();
|
|
57
|
-
let conflictingReason;
|
|
58
|
-
for (const userOpInfo of outstandingOps) {
|
|
59
|
-
const { userOp: mempoolUserOp } = userOpInfo;
|
|
60
|
-
const isSameSender = mempoolUserOp.sender === userOp.sender;
|
|
61
|
-
if (isSameSender && mempoolUserOp.nonce === userOp.nonce) {
|
|
62
|
-
this.remove(userOpInfo.userOpHash);
|
|
63
|
-
conflictingReason = {
|
|
64
|
-
reason: "conflicting_nonce",
|
|
65
|
-
userOpInfo
|
|
66
|
-
};
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
const isConflictingV6Deployment = isVersion06(userOp) &&
|
|
70
|
-
isVersion06(mempoolUserOp) &&
|
|
71
|
-
userOp.initCode &&
|
|
72
|
-
userOp.initCode !== "0x" &&
|
|
73
|
-
mempoolUserOp.initCode &&
|
|
74
|
-
mempoolUserOp.initCode !== "0x" &&
|
|
75
|
-
isSameSender;
|
|
76
|
-
const isConflictingV7Deployment = isVersion07(userOp) &&
|
|
77
|
-
isVersion07(mempoolUserOp) &&
|
|
78
|
-
userOp.factory &&
|
|
79
|
-
userOp.factory !== "0x" &&
|
|
80
|
-
mempoolUserOp.factory &&
|
|
81
|
-
mempoolUserOp.factory !== "0x" &&
|
|
82
|
-
isSameSender;
|
|
83
|
-
const isConflictingDeployment = isConflictingV6Deployment || isConflictingV7Deployment;
|
|
84
|
-
if (isConflictingDeployment) {
|
|
85
|
-
this.remove(userOpInfo.userOpHash);
|
|
86
|
-
conflictingReason = {
|
|
87
|
-
reason: "conflicting_deployment",
|
|
88
|
-
userOpInfo
|
|
89
|
-
};
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return Promise.resolve(conflictingReason);
|
|
94
|
-
}
|
|
95
|
-
async contains(userOpHash) {
|
|
96
|
-
for (const userOpInfos of this.pendingOps.values()) {
|
|
97
|
-
if (userOpInfos.some((info) => info.userOpHash === userOpHash)) {
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
peek() {
|
|
104
|
-
if (this.priorityQueue.length === 0) {
|
|
105
|
-
return Promise.resolve(undefined);
|
|
106
|
-
}
|
|
107
|
-
return Promise.resolve(this.priorityQueue[0]);
|
|
108
|
-
}
|
|
109
|
-
pop() {
|
|
110
|
-
const userOpInfo = this.priorityQueue.shift();
|
|
111
|
-
if (!userOpInfo) {
|
|
112
|
-
return Promise.resolve(undefined);
|
|
113
|
-
}
|
|
114
|
-
const pendingOpsSlot = senderNonceSlot(userOpInfo.userOp);
|
|
115
|
-
const backlogOps = this.pendingOps.get(pendingOpsSlot);
|
|
116
|
-
// This should never throw.
|
|
117
|
-
if (!backlogOps?.shift()) {
|
|
118
|
-
throw new Error("FATAL: No pending userOps for sender");
|
|
119
|
-
}
|
|
120
|
-
// Move next pending userOp into priorityQueue if exist.
|
|
121
|
-
if (backlogOps.length > 0) {
|
|
122
|
-
this.addToPriorityQueue(backlogOps[0]);
|
|
123
|
-
}
|
|
124
|
-
// Cleanup.
|
|
125
|
-
if (backlogOps.length === 0) {
|
|
126
|
-
this.pendingOps.delete(pendingOpsSlot);
|
|
127
|
-
}
|
|
128
|
-
return Promise.resolve(userOpInfo);
|
|
129
|
-
}
|
|
130
|
-
async add(userOpInfo) {
|
|
131
|
-
const { userOp, userOpHash } = userOpInfo;
|
|
132
|
-
const [nonceKey] = getNonceKeyAndSequence(userOp.nonce);
|
|
133
|
-
const pendingOpsSlot = senderNonceSlot(userOp);
|
|
134
|
-
const backlogOps = (() => {
|
|
135
|
-
if (this.pendingOps.has(pendingOpsSlot)) {
|
|
136
|
-
return this.pendingOps.get(pendingOpsSlot);
|
|
137
|
-
}
|
|
138
|
-
this.pendingOps.set(pendingOpsSlot, []);
|
|
139
|
-
return this.pendingOps.get(pendingOpsSlot);
|
|
140
|
-
})();
|
|
141
|
-
if (!backlogOps) {
|
|
142
|
-
throw new Error("FATAL: No pending operations found for userOpHash");
|
|
143
|
-
}
|
|
144
|
-
// Note: the userOpInfo is always added to backlogOps, because we are pushing to a reference
|
|
145
|
-
backlogOps.push(userOpInfo);
|
|
146
|
-
backlogOps
|
|
147
|
-
.map((sop) => sop.userOp)
|
|
148
|
-
.sort((a, b) => {
|
|
149
|
-
const [, aNonceSeq] = getNonceKeyAndSequence(a.nonce);
|
|
150
|
-
const [, bNonceSeq] = getNonceKeyAndSequence(b.nonce);
|
|
151
|
-
return Number(aNonceSeq) - Number(bNonceSeq);
|
|
152
|
-
});
|
|
153
|
-
const lowestUserOpHash = backlogOps[0].userOpHash;
|
|
154
|
-
// If lowest, remove any existing userOp with same sender and nonceKey and add current userOp to priorityQueue.
|
|
155
|
-
if (lowestUserOpHash === userOpHash) {
|
|
156
|
-
this.priorityQueue = this.priorityQueue.filter((userOpInfo) => {
|
|
157
|
-
const pendingUserOp = userOpInfo.userOp;
|
|
158
|
-
const isSameSender = pendingUserOp.sender === userOp.sender;
|
|
159
|
-
const isSameNonceKey = getNonceKeyAndSequence(pendingUserOp.nonce)[0] === nonceKey;
|
|
160
|
-
return !(isSameSender && isSameNonceKey);
|
|
161
|
-
});
|
|
162
|
-
this.addToPriorityQueue(userOpInfo);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
async getQueuedUserOps(userOp) {
|
|
166
|
-
const [nonceKey, nonceSequence] = getNonceKeyAndSequence(userOp.nonce);
|
|
167
|
-
const outstandingOps = this.dump();
|
|
168
|
-
const outstanding = outstandingOps.filter((userOpInfo) => {
|
|
169
|
-
const { userOp: mempoolUserOp } = userOpInfo;
|
|
170
|
-
const [mempoolNonceKey, mempoolNonceSequence] = getNonceKeyAndSequence(mempoolUserOp.nonce);
|
|
171
|
-
let isPaymasterSame = false;
|
|
172
|
-
if (isVersion07(userOp) && isVersion07(mempoolUserOp)) {
|
|
173
|
-
isPaymasterSame =
|
|
174
|
-
mempoolUserOp.paymaster === userOp.paymaster &&
|
|
175
|
-
!(mempoolUserOp.sender === userOp.sender &&
|
|
176
|
-
mempoolNonceKey === nonceKey &&
|
|
177
|
-
mempoolNonceSequence === nonceSequence) &&
|
|
178
|
-
userOp.paymaster !== null;
|
|
179
|
-
}
|
|
180
|
-
// Filter operations with the same sender and nonce key
|
|
181
|
-
// but with a lower nonce sequence
|
|
182
|
-
return ((mempoolUserOp.sender === userOp.sender &&
|
|
183
|
-
mempoolNonceKey === nonceKey &&
|
|
184
|
-
mempoolNonceSequence < nonceSequence) ||
|
|
185
|
-
isPaymasterSame);
|
|
186
|
-
});
|
|
187
|
-
return outstanding
|
|
188
|
-
.sort((a, b) => {
|
|
189
|
-
const aUserOp = a.userOp;
|
|
190
|
-
const bUserOp = b.userOp;
|
|
191
|
-
const [, aNonceValue] = getNonceKeyAndSequence(aUserOp.nonce);
|
|
192
|
-
const [, bNonceValue] = getNonceKeyAndSequence(bUserOp.nonce);
|
|
193
|
-
return Number(aNonceValue - bNonceValue);
|
|
194
|
-
})
|
|
195
|
-
.map((userOpInfo) => userOpInfo.userOp);
|
|
196
|
-
}
|
|
197
|
-
async remove(userOpHash) {
|
|
198
|
-
const priorityQueueIndex = this.priorityQueue.findIndex((info) => info.userOpHash === userOpHash);
|
|
199
|
-
if (priorityQueueIndex === -1) {
|
|
200
|
-
this.logger.info("tried to remove non-existent user op from mempool");
|
|
201
|
-
return false;
|
|
202
|
-
}
|
|
203
|
-
const userOpInfo = this.priorityQueue[priorityQueueIndex];
|
|
204
|
-
const pendingOpsSlot = senderNonceSlot(userOpInfo.userOp);
|
|
205
|
-
// Remove from priority queue
|
|
206
|
-
this.priorityQueue.splice(priorityQueueIndex, 1);
|
|
207
|
-
// Find and remove from pending ops
|
|
208
|
-
const backlogOps = this.pendingOps.get(pendingOpsSlot);
|
|
209
|
-
if (!backlogOps) {
|
|
210
|
-
throw new Error(`FATAL: No pending operations found for userOpHash ${userOpHash}`);
|
|
211
|
-
}
|
|
212
|
-
const backlogIndex = backlogOps.findIndex((info) => info.userOpHash === userOpHash);
|
|
213
|
-
if (backlogIndex === -1) {
|
|
214
|
-
throw new Error(`FATAL: UserOp with hash ${userOpHash} not found in backlog`);
|
|
215
|
-
}
|
|
216
|
-
backlogOps.splice(backlogIndex, 1);
|
|
217
|
-
// If this was the first operation and there are more in the backlog,
|
|
218
|
-
// add the new first operation to the priority queue
|
|
219
|
-
if (backlogIndex === 0 && backlogOps.length > 0) {
|
|
220
|
-
this.addToPriorityQueue(backlogOps[0]);
|
|
221
|
-
}
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
dumpLocal() {
|
|
225
|
-
return Promise.resolve(this.dump());
|
|
226
|
-
}
|
|
227
|
-
clear() {
|
|
228
|
-
this.priorityQueue = [];
|
|
229
|
-
this.pendingOps.clear();
|
|
230
|
-
return Promise.resolve();
|
|
231
|
-
}
|
|
232
|
-
// Adding findConflicting method to maintain compatibility with Store interface
|
|
233
|
-
findConflicting(userOp) {
|
|
234
|
-
return Promise.resolve(this.popConflicting(userOp));
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
export const createMemoryOutstandingQueue = ({ config }) => {
|
|
238
|
-
return new MemoryOutstanding(config);
|
|
239
|
-
};
|
|
240
|
-
//# sourceMappingURL=createMemoryOutstandingStore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createMemoryOutstandingStore.js","sourceRoot":"","sources":["../../store/createMemoryOutstandingStore.ts"],"names":[],"mappings":"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"}
|