@pimlico/alto 0.0.0-staging.20240606T101741 → 0.0.0-staging.20240606T103333

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.
Files changed (220) hide show
  1. package/esm/cli/alto.d.ts +6 -0
  2. package/esm/cli/alto.js +92 -0
  3. package/esm/cli/alto.js.map +1 -0
  4. package/esm/cli/config/bundler.d.ts +391 -0
  5. package/esm/cli/config/bundler.js +132 -0
  6. package/esm/cli/config/bundler.js.map +1 -0
  7. package/esm/cli/config/index.d.ts +3 -0
  8. package/esm/cli/config/index.js +3 -0
  9. package/esm/cli/config/index.js.map +1 -0
  10. package/esm/cli/config/options.d.ts +11 -0
  11. package/esm/cli/config/options.js +336 -0
  12. package/esm/cli/config/options.js.map +1 -0
  13. package/esm/cli/customTransport.d.ts +14 -0
  14. package/esm/cli/customTransport.js +53 -0
  15. package/esm/cli/customTransport.js.map +1 -0
  16. package/esm/cli/handler.d.ts +3 -0
  17. package/esm/cli/handler.js +116 -0
  18. package/esm/cli/handler.js.map +1 -0
  19. package/esm/cli/index.d.ts +4 -0
  20. package/esm/cli/index.js +4 -0
  21. package/esm/cli/index.js.map +1 -0
  22. package/esm/cli/instrumentation.d.ts +2 -0
  23. package/esm/cli/instrumentation.js +39 -0
  24. package/esm/cli/instrumentation.js.map +1 -0
  25. package/esm/cli/setupServer.d.ts +17 -0
  26. package/esm/cli/setupServer.js +155 -0
  27. package/esm/cli/setupServer.js.map +1 -0
  28. package/esm/cli/util.d.ts +22 -0
  29. package/esm/cli/util.js +30 -0
  30. package/esm/cli/util.js.map +1 -0
  31. package/esm/executor/executor.d.ts +54 -0
  32. package/esm/executor/executor.js +637 -0
  33. package/esm/executor/executor.js.map +1 -0
  34. package/esm/executor/executorManager.d.ts +34 -0
  35. package/esm/executor/executorManager.js +401 -0
  36. package/esm/executor/executorManager.js.map +1 -0
  37. package/esm/executor/index.d.ts +5 -0
  38. package/esm/executor/index.js +5 -0
  39. package/esm/executor/index.js.map +1 -0
  40. package/esm/executor/senderManager.d.ts +17 -0
  41. package/esm/executor/senderManager.js +160 -0
  42. package/esm/executor/senderManager.js.map +1 -0
  43. package/esm/executor/test/utils.d.ts +13 -0
  44. package/esm/executor/test/utils.js +75 -0
  45. package/esm/executor/test/utils.js.map +1 -0
  46. package/esm/executor/utils.d.ts +32 -0
  47. package/esm/executor/utils.js +239 -0
  48. package/esm/executor/utils.js.map +1 -0
  49. package/esm/index.d.ts +2 -0
  50. package/esm/index.js +2 -0
  51. package/esm/index.js.map +1 -0
  52. package/esm/mempool/index.d.ts +5 -0
  53. package/esm/mempool/index.js +5 -0
  54. package/esm/mempool/index.js.map +1 -0
  55. package/esm/mempool/mempool.d.ts +64 -0
  56. package/esm/mempool/mempool.js +489 -0
  57. package/esm/mempool/mempool.js.map +1 -0
  58. package/esm/mempool/monitoring.d.ts +10 -0
  59. package/esm/mempool/monitoring.js +34 -0
  60. package/esm/mempool/monitoring.js.map +1 -0
  61. package/esm/mempool/nullMempool.d.ts +15 -0
  62. package/esm/mempool/nullMempool.js +36 -0
  63. package/esm/mempool/nullMempool.js.map +1 -0
  64. package/esm/mempool/reputationManager.d.ts +115 -0
  65. package/esm/mempool/reputationManager.js +397 -0
  66. package/esm/mempool/reputationManager.js.map +1 -0
  67. package/esm/mempool/store.d.ts +22 -0
  68. package/esm/mempool/store.js +123 -0
  69. package/esm/mempool/store.js.map +1 -0
  70. package/esm/rpc/EntryPointSimulationsV07.d.ts +58 -0
  71. package/esm/rpc/EntryPointSimulationsV07.js +407 -0
  72. package/esm/rpc/EntryPointSimulationsV07.js.map +1 -0
  73. package/esm/rpc/ExecuteSimulator.d.ts +37 -0
  74. package/esm/rpc/ExecuteSimulator.js +48 -0
  75. package/esm/rpc/ExecuteSimulator.js.map +1 -0
  76. package/esm/rpc/gasEstimation.d.ts +17 -0
  77. package/esm/rpc/gasEstimation.js +410 -0
  78. package/esm/rpc/gasEstimation.js.map +1 -0
  79. package/esm/rpc/index.d.ts +5 -0
  80. package/esm/rpc/index.js +5 -0
  81. package/esm/rpc/index.js.map +1 -0
  82. package/esm/rpc/nonceQueuer.d.ts +25 -0
  83. package/esm/rpc/nonceQueuer.js +135 -0
  84. package/esm/rpc/nonceQueuer.js.map +1 -0
  85. package/esm/rpc/rpcHandler.d.ts +64 -0
  86. package/esm/rpc/rpcHandler.js +727 -0
  87. package/esm/rpc/rpcHandler.js.map +1 -0
  88. package/esm/rpc/server.d.ts +31 -0
  89. package/esm/rpc/server.js +238 -0
  90. package/esm/rpc/server.js.map +1 -0
  91. package/esm/rpc/validation/BundlerCollectorTracerV06.d.ts +102 -0
  92. package/esm/rpc/validation/BundlerCollectorTracerV06.js +255 -0
  93. package/esm/rpc/validation/BundlerCollectorTracerV06.js.map +1 -0
  94. package/esm/rpc/validation/BundlerCollectorTracerV07.d.ts +102 -0
  95. package/esm/rpc/validation/BundlerCollectorTracerV07.js +254 -0
  96. package/esm/rpc/validation/BundlerCollectorTracerV07.js.map +1 -0
  97. package/esm/rpc/validation/SafeValidator.d.ts +35 -0
  98. package/esm/rpc/validation/SafeValidator.js +487 -0
  99. package/esm/rpc/validation/SafeValidator.js.map +1 -0
  100. package/esm/rpc/validation/TracerResultParserV06.d.ts +13 -0
  101. package/esm/rpc/validation/TracerResultParserV06.js +578 -0
  102. package/esm/rpc/validation/TracerResultParserV06.js.map +1 -0
  103. package/esm/rpc/validation/TracerResultParserV07.d.ts +33 -0
  104. package/esm/rpc/validation/TracerResultParserV07.js +557 -0
  105. package/esm/rpc/validation/TracerResultParserV07.js.map +1 -0
  106. package/esm/rpc/validation/UnsafeValidator.d.ts +63 -0
  107. package/esm/rpc/validation/UnsafeValidator.js +257 -0
  108. package/esm/rpc/validation/UnsafeValidator.js.map +1 -0
  109. package/esm/rpc/validation/index.d.ts +3 -0
  110. package/esm/rpc/validation/index.js +3 -0
  111. package/esm/rpc/validation/index.js.map +1 -0
  112. package/esm/rpc/validation/tracer.d.ts +122 -0
  113. package/esm/rpc/validation/tracer.js +82 -0
  114. package/esm/rpc/validation/tracer.js.map +1 -0
  115. package/esm/types/contracts/BundleBulker.d.ts +120 -0
  116. package/esm/types/contracts/BundleBulker.js +157 -0
  117. package/esm/types/contracts/BundleBulker.js.map +1 -0
  118. package/esm/types/contracts/CallEngine.d.ts +28 -0
  119. package/esm/types/contracts/CallEngine.js +37 -0
  120. package/esm/types/contracts/CallEngine.js.map +1 -0
  121. package/esm/types/contracts/CodeHashGetter.d.ts +37 -0
  122. package/esm/types/contracts/CodeHashGetter.js +45 -0
  123. package/esm/types/contracts/CodeHashGetter.js.map +1 -0
  124. package/esm/types/contracts/EntryPoint.d.ts +1789 -0
  125. package/esm/types/contracts/EntryPoint.js +2304 -0
  126. package/esm/types/contracts/EntryPoint.js.map +1 -0
  127. package/esm/types/contracts/EntryPointSimulations.d.ts +153 -0
  128. package/esm/types/contracts/EntryPointSimulations.js +15 -0
  129. package/esm/types/contracts/EntryPointSimulations.js.map +1 -0
  130. package/esm/types/contracts/IOpInflator.d.ts +61 -0
  131. package/esm/types/contracts/IOpInflator.js +80 -0
  132. package/esm/types/contracts/IOpInflator.js.map +1 -0
  133. package/esm/types/contracts/IPaymaster.d.ts +3 -0
  134. package/esm/types/contracts/IPaymaster.js +117 -0
  135. package/esm/types/contracts/IPaymaster.js.map +1 -0
  136. package/esm/types/contracts/Inflator.d.ts +65 -0
  137. package/esm/types/contracts/Inflator.js +84 -0
  138. package/esm/types/contracts/Inflator.js.map +1 -0
  139. package/esm/types/contracts/PerOpInflator.d.ts +176 -0
  140. package/esm/types/contracts/PerOpInflator.js +229 -0
  141. package/esm/types/contracts/PerOpInflator.js.map +1 -0
  142. package/esm/types/contracts/PimlicoEntryPointSimulations.d.ts +23 -0
  143. package/esm/types/contracts/PimlicoEntryPointSimulations.js +33 -0
  144. package/esm/types/contracts/PimlicoEntryPointSimulations.js.map +1 -0
  145. package/esm/types/contracts/SenderCreator.d.ts +4 -0
  146. package/esm/types/contracts/SenderCreator.js +23 -0
  147. package/esm/types/contracts/SenderCreator.js.map +1 -0
  148. package/esm/types/contracts/SimpleAccountFactory.d.ts +57 -0
  149. package/esm/types/contracts/SimpleAccountFactory.js +76 -0
  150. package/esm/types/contracts/SimpleAccountFactory.js.map +1 -0
  151. package/esm/types/contracts/TestOpcodesAccount.d.ts +4 -0
  152. package/esm/types/contracts/TestOpcodesAccount.js +281 -0
  153. package/esm/types/contracts/TestOpcodesAccount.js.map +1 -0
  154. package/esm/types/contracts/TestOpcodesAccountFactory.d.ts +4 -0
  155. package/esm/types/contracts/TestOpcodesAccountFactory.js +23 -0
  156. package/esm/types/contracts/TestOpcodesAccountFactory.js.map +1 -0
  157. package/esm/types/contracts/TestStorageAccount.d.ts +4 -0
  158. package/esm/types/contracts/TestStorageAccount.js +313 -0
  159. package/esm/types/contracts/TestStorageAccount.js.map +1 -0
  160. package/esm/types/contracts/index.d.ts +17 -0
  161. package/esm/types/contracts/index.js +17 -0
  162. package/esm/types/contracts/index.js.map +1 -0
  163. package/esm/types/gasPrice.d.ts +110 -0
  164. package/esm/types/gasPrice.js +52 -0
  165. package/esm/types/gasPrice.js.map +1 -0
  166. package/esm/types/index.d.ts +11 -0
  167. package/esm/types/index.js +11 -0
  168. package/esm/types/index.js.map +1 -0
  169. package/esm/types/interfaces.d.ts +26 -0
  170. package/esm/types/interfaces.js +2 -0
  171. package/esm/types/interfaces.js.map +1 -0
  172. package/esm/types/mempool.d.ts +78 -0
  173. package/esm/types/mempool.js +16 -0
  174. package/esm/types/mempool.js.map +1 -0
  175. package/esm/types/schemas.d.ts +4791 -0
  176. package/esm/types/schemas.js +497 -0
  177. package/esm/types/schemas.js.map +1 -0
  178. package/esm/types/test/validationTestErrors.d.ts +3 -0
  179. package/esm/types/test/validationTestErrors.js +229 -0
  180. package/esm/types/test/validationTestErrors.js.map +1 -0
  181. package/esm/types/utils.d.ts +24 -0
  182. package/esm/types/utils.js +30 -0
  183. package/esm/types/utils.js.map +1 -0
  184. package/esm/types/validation.d.ts +14327 -0
  185. package/esm/types/validation.js +304 -0
  186. package/esm/types/validation.js.map +1 -0
  187. package/esm/utils/bigInt.d.ts +3 -0
  188. package/esm/utils/bigInt.js +9 -0
  189. package/esm/utils/bigInt.js.map +1 -0
  190. package/esm/utils/compressionHandler.d.ts +11 -0
  191. package/esm/utils/compressionHandler.js +39 -0
  192. package/esm/utils/compressionHandler.js.map +1 -0
  193. package/esm/utils/gasPriceManager.d.ts +34 -0
  194. package/esm/utils/gasPriceManager.js +338 -0
  195. package/esm/utils/gasPriceManager.js.map +1 -0
  196. package/esm/utils/helpers.d.ts +4 -0
  197. package/esm/utils/helpers.js +13 -0
  198. package/esm/utils/helpers.js.map +1 -0
  199. package/esm/utils/index.d.ts +11 -0
  200. package/esm/utils/index.js +10 -0
  201. package/esm/utils/index.js.map +1 -0
  202. package/esm/utils/logger.d.ts +6 -0
  203. package/esm/utils/logger.js +76 -0
  204. package/esm/utils/logger.js.map +1 -0
  205. package/esm/utils/metrics.d.ts +22 -0
  206. package/esm/utils/metrics.js +150 -0
  207. package/esm/utils/metrics.js.map +1 -0
  208. package/esm/utils/rpc-reply.d.ts +17 -0
  209. package/esm/utils/rpc-reply.js +41 -0
  210. package/esm/utils/rpc-reply.js.map +1 -0
  211. package/esm/utils/test.d.ts +17 -0
  212. package/esm/utils/test.js +130 -0
  213. package/esm/utils/test.js.map +1 -0
  214. package/esm/utils/userop.d.ts +49 -0
  215. package/esm/utils/userop.js +408 -0
  216. package/esm/utils/userop.js.map +1 -0
  217. package/esm/utils/validation.d.ts +65 -0
  218. package/esm/utils/validation.js +461 -0
  219. package/esm/utils/validation.js.map +1 -0
  220. package/package.json +70 -66
@@ -0,0 +1,115 @@
1
+ import { type StakeInfo, type UserOperation, type ValidationResult, type ValidationResultWithAggregation } from "../types/index.js";
2
+ import type { Logger } from "../utils/index.js";
3
+ import { type Address, type PublicClient } from "viem";
4
+ export interface InterfaceReputationManager {
5
+ checkReputation(userOperation: UserOperation, entryPoint: Address, validationResult: ValidationResult | ValidationResultWithAggregation): Promise<void>;
6
+ updateUserOperationSeenStatus(userOperation: UserOperation, entryPoint: Address): void;
7
+ increaseUserOperationCount(userOperation: UserOperation): void;
8
+ decreaseUserOperationCount(userOperation: UserOperation): void;
9
+ getStatus(entryPoint: Address, address: Address | null): ReputationStatus;
10
+ updateUserOperationIncludedStatus(userOperation: UserOperation, entryPoint: Address, accountDeployed: boolean): void;
11
+ crashedHandleOps(userOperation: UserOperation, entryPoint: Address, reason: string): void;
12
+ setReputation(entryPoint: Address, args: {
13
+ address: Address;
14
+ opsSeen: bigint;
15
+ opsIncluded: bigint;
16
+ }[]): void;
17
+ dumpReputations(entryPoint: Address): ReputationEntry[];
18
+ getStakeStatus(entryPoint: Address, address: Address): Promise<{
19
+ stakeInfo: StakeInfo;
20
+ isStaked: boolean;
21
+ }>;
22
+ clear(): void;
23
+ clearEntityCount(): void;
24
+ }
25
+ export declare enum EntityType {
26
+ Account = "Account",
27
+ Paymaster = "Paymaster",
28
+ Factory = "Factory",
29
+ Aggregator = "Aggregator"
30
+ }
31
+ export type ReputationStatus = 0n | 1n | 2n;
32
+ export declare const ReputationStatuses: {
33
+ ok: ReputationStatus;
34
+ throttled: ReputationStatus;
35
+ banned: ReputationStatus;
36
+ };
37
+ export interface ReputationEntry {
38
+ address: Address;
39
+ opsSeen: bigint;
40
+ opsIncluded: bigint;
41
+ status?: ReputationStatus;
42
+ }
43
+ export interface ReputationParams {
44
+ minInclusionDenominator: bigint;
45
+ throttlingSlack: bigint;
46
+ banSlack: bigint;
47
+ }
48
+ export declare const BundlerReputationParams: ReputationParams;
49
+ export declare class NullReputationManager implements InterfaceReputationManager {
50
+ checkReputation(_userOperation: UserOperation, _entryPoint: Address, _validationResult: ValidationResult | ValidationResultWithAggregation): Promise<void>;
51
+ increaseUserOperationCount(_: UserOperation): void;
52
+ decreaseUserOperationCount(_: UserOperation): void;
53
+ updateUserOperationSeenStatus(_: UserOperation, _entryPoint: Address): void;
54
+ updateUserOperationIncludedStatus(_: UserOperation, _entryPoint: Address, __: boolean): void;
55
+ crashedHandleOps(_: UserOperation, _entryPoint: Address, __: string): void;
56
+ setReputation(_: Address, __: {
57
+ address: Address;
58
+ opsSeen: bigint;
59
+ opsIncluded: bigint;
60
+ }[]): void;
61
+ dumpReputations(_entryPoint: Address): ReputationEntry[];
62
+ getStatus(_entryPoint: Address, _address: `0x${string}` | null): ReputationStatus;
63
+ getStakeStatus(_entryPoint: Address, _: Address): Promise<{
64
+ stakeInfo: StakeInfo;
65
+ isStaked: boolean;
66
+ }>;
67
+ clear(): void;
68
+ clearEntityCount(): void;
69
+ }
70
+ export declare class ReputationManager implements InterfaceReputationManager {
71
+ private publicClient;
72
+ private minStake;
73
+ private minUnstakeDelay;
74
+ private entityCount;
75
+ private throttledEntityMinMempoolCount;
76
+ private maxMempoolUserOperationsPerSender;
77
+ private maxMempoolUserOperationsPerNewUnstakedEntity;
78
+ private inclusionRateFactor;
79
+ private entries;
80
+ private whitelist;
81
+ private blackList;
82
+ private bundlerReputationParams;
83
+ private logger;
84
+ constructor(publicClient: PublicClient, entryPoints: Address[], minStake: bigint, minUnstakeDelay: bigint, logger: Logger, maxMempoolUserOperationsPerNewUnstakedEntity?: bigint, throttledEntityMinMempoolCount?: bigint, inclusionRateFactor?: bigint, maxMempoolUserOperationsPerSender?: bigint, blackList?: Address[], whiteList?: Address[], bundlerReputationParams?: ReputationParams);
85
+ setReputation(entryPoint: Address, reputations: {
86
+ address: Address;
87
+ opsSeen: bigint;
88
+ opsIncluded: bigint;
89
+ }[]): void;
90
+ dumpReputations(entryPoint: Address): ReputationEntry[];
91
+ clear(): void;
92
+ clearEntityCount(): void;
93
+ getStakeStatus(entryPoint: Address, address: Address): Promise<{
94
+ stakeInfo: StakeInfo;
95
+ isStaked: boolean;
96
+ }>;
97
+ checkReputation(userOperation: UserOperation, entryPoint: Address, validationResult: ValidationResult | ValidationResultWithAggregation): Promise<void>;
98
+ getEntityCount(address: Address): bigint;
99
+ increaseSeen(entryPoint: Address, address: Address): void;
100
+ updateCrashedHandleOps(entryPoint: Address, address: Address): void;
101
+ crashedHandleOps(op: UserOperation, entryPoint: Address, reason: string): void;
102
+ updateIncludedStatus(entryPoint: Address, address: Address): void;
103
+ updateUserOperationIncludedStatus(userOperation: UserOperation, entryPoint: Address, accountDeployed: boolean): void;
104
+ updateUserOperationSeenStatus(userOperation: UserOperation, entryPoint: Address): void;
105
+ increaseUserOperationCount(userOperation: UserOperation): void;
106
+ decreaseUserOperationCount(userOperation: UserOperation): void;
107
+ checkReputationStatus(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo, maxMempoolUserOperationsPerSenderOverride?: bigint): void;
108
+ getStatus(entryPoint: Address, address: Address | null): ReputationStatus;
109
+ checkBanned(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo): void;
110
+ checkThrottled(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo): void;
111
+ isWhiteListed(address: Address): boolean;
112
+ checkStake(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo): void;
113
+ calCulateMaxMempoolUserOperationsPerEntity(entryPoint: Address, address: Address): bigint;
114
+ }
115
+ //# sourceMappingURL=reputationManager.d.ts.map
@@ -0,0 +1,397 @@
1
+ import { EntryPointV06Abi, RpcError, ValidationErrors } from "../types/index.js";
2
+ import { getAddressFromInitCodeOrPaymasterAndData, isVersion06 } from "../utils/index.js";
3
+ import { getAddress, getContract } from "viem";
4
+ export var EntityType;
5
+ (function (EntityType) {
6
+ EntityType["Account"] = "Account";
7
+ EntityType["Paymaster"] = "Paymaster";
8
+ EntityType["Factory"] = "Factory";
9
+ EntityType["Aggregator"] = "Aggregator";
10
+ })(EntityType || (EntityType = {}));
11
+ export const ReputationStatuses = {
12
+ ok: 0n,
13
+ throttled: 1n,
14
+ banned: 2n
15
+ };
16
+ export const BundlerReputationParams = {
17
+ minInclusionDenominator: 10n,
18
+ throttlingSlack: 10n,
19
+ banSlack: 50n
20
+ };
21
+ export class NullReputationManager {
22
+ checkReputation(_userOperation, _entryPoint, _validationResult) {
23
+ return Promise.resolve();
24
+ }
25
+ increaseUserOperationCount(_) {
26
+ return;
27
+ }
28
+ decreaseUserOperationCount(_) {
29
+ return;
30
+ }
31
+ updateUserOperationSeenStatus(_, _entryPoint) {
32
+ return;
33
+ }
34
+ updateUserOperationIncludedStatus(_, _entryPoint, __) {
35
+ return;
36
+ }
37
+ crashedHandleOps(_, _entryPoint, __) {
38
+ return;
39
+ }
40
+ setReputation(_, __) {
41
+ return;
42
+ }
43
+ dumpReputations(_entryPoint) {
44
+ return [];
45
+ }
46
+ getStatus(_entryPoint, _address) {
47
+ throw new Error("Method not implemented.");
48
+ }
49
+ getStakeStatus(_entryPoint, _) {
50
+ throw new Error("Method not implemented.");
51
+ }
52
+ clear() {
53
+ return;
54
+ }
55
+ clearEntityCount() {
56
+ return;
57
+ }
58
+ }
59
+ export class ReputationManager {
60
+ publicClient;
61
+ minStake;
62
+ minUnstakeDelay;
63
+ entityCount = {};
64
+ throttledEntityMinMempoolCount;
65
+ maxMempoolUserOperationsPerSender;
66
+ maxMempoolUserOperationsPerNewUnstakedEntity;
67
+ inclusionRateFactor;
68
+ entries = {};
69
+ whitelist = new Set();
70
+ blackList = new Set();
71
+ bundlerReputationParams;
72
+ logger;
73
+ constructor(publicClient, entryPoints, minStake, minUnstakeDelay, logger, maxMempoolUserOperationsPerNewUnstakedEntity, throttledEntityMinMempoolCount, inclusionRateFactor, maxMempoolUserOperationsPerSender, blackList, whiteList, bundlerReputationParams) {
74
+ this.publicClient = publicClient;
75
+ this.minStake = minStake;
76
+ this.minUnstakeDelay = minUnstakeDelay;
77
+ this.logger = logger;
78
+ this.maxMempoolUserOperationsPerNewUnstakedEntity =
79
+ maxMempoolUserOperationsPerNewUnstakedEntity ?? 10n;
80
+ this.inclusionRateFactor = inclusionRateFactor ?? 10n;
81
+ this.throttledEntityMinMempoolCount =
82
+ throttledEntityMinMempoolCount ?? 4n;
83
+ this.maxMempoolUserOperationsPerSender =
84
+ maxMempoolUserOperationsPerSender ?? 4n;
85
+ this.bundlerReputationParams =
86
+ bundlerReputationParams ?? BundlerReputationParams;
87
+ for (const address of blackList || []) {
88
+ this.blackList.add(address);
89
+ }
90
+ for (const address of whiteList || []) {
91
+ this.whitelist.add(address);
92
+ }
93
+ for (const entryPoint of entryPoints) {
94
+ this.entries[entryPoint] = {};
95
+ }
96
+ }
97
+ setReputation(entryPoint, reputations) {
98
+ for (const reputation of reputations) {
99
+ const address = getAddress(reputation.address);
100
+ this.entries[entryPoint][address] = {
101
+ address,
102
+ opsSeen: BigInt(reputation.opsSeen),
103
+ opsIncluded: BigInt(reputation.opsIncluded)
104
+ };
105
+ }
106
+ this.logger.debug({
107
+ reputations: this.entries
108
+ }, "Reputation set");
109
+ }
110
+ dumpReputations(entryPoint) {
111
+ return Object.values(this.entries[entryPoint]).map((entry) => ({
112
+ ...entry,
113
+ status: this.getStatus(entryPoint, entry.address)
114
+ }));
115
+ }
116
+ clear() {
117
+ this.entries = {};
118
+ this.entityCount = {};
119
+ }
120
+ clearEntityCount() {
121
+ this.entityCount = {};
122
+ }
123
+ async getStakeStatus(entryPoint, address) {
124
+ const entryPointContract = getContract({
125
+ abi: EntryPointV06Abi,
126
+ address: entryPoint,
127
+ client: {
128
+ public: this.publicClient
129
+ }
130
+ });
131
+ const stakeInfo = await entryPointContract.read.getDepositInfo([
132
+ address
133
+ ]);
134
+ const stake = BigInt(stakeInfo.stake);
135
+ const unstakeDelaySec = BigInt(stakeInfo.unstakeDelaySec);
136
+ const isStaked = stake >= this.minStake && unstakeDelaySec >= this.minUnstakeDelay;
137
+ return {
138
+ stakeInfo: {
139
+ addr: address,
140
+ stake: stake,
141
+ unstakeDelaySec: unstakeDelaySec
142
+ },
143
+ isStaked
144
+ };
145
+ }
146
+ checkReputation(userOperation, entryPoint, validationResult) {
147
+ this.increaseUserOperationCount(userOperation);
148
+ this.checkReputationStatus(entryPoint, EntityType.Account, validationResult.senderInfo, this.maxMempoolUserOperationsPerSender);
149
+ if (validationResult.paymasterInfo) {
150
+ this.checkReputationStatus(entryPoint, EntityType.Paymaster, validationResult.paymasterInfo);
151
+ }
152
+ if (validationResult.factoryInfo) {
153
+ this.checkReputationStatus(entryPoint, EntityType.Factory, validationResult.factoryInfo);
154
+ }
155
+ const aggregatorValidationResult = validationResult;
156
+ if (aggregatorValidationResult.aggregatorInfo) {
157
+ this.checkReputationStatus(entryPoint, EntityType.Aggregator, aggregatorValidationResult.aggregatorInfo.stakeInfo);
158
+ }
159
+ return Promise.resolve();
160
+ }
161
+ getEntityCount(address) {
162
+ return this.entityCount[address] ?? 0;
163
+ }
164
+ increaseSeen(entryPoint, address) {
165
+ const entry = this.entries[entryPoint][address];
166
+ if (!entry) {
167
+ this.entries[entryPoint][address] = {
168
+ address,
169
+ opsSeen: 0n,
170
+ opsIncluded: 0n
171
+ };
172
+ }
173
+ entry.opsSeen++;
174
+ }
175
+ updateCrashedHandleOps(entryPoint, address) {
176
+ const entry = this.entries[entryPoint][address];
177
+ if (!entry) {
178
+ this.entries[entryPoint][address] = {
179
+ address,
180
+ opsSeen: 1000n,
181
+ opsIncluded: 0n
182
+ };
183
+ return;
184
+ }
185
+ entry.opsSeen = 1000n;
186
+ entry.opsIncluded = 0n;
187
+ }
188
+ crashedHandleOps(op, entryPoint, reason) {
189
+ const isUserOpV06 = isVersion06(op);
190
+ if (reason.startsWith("AA3")) {
191
+ // paymaster
192
+ const paymaster = isUserOpV06
193
+ ? getAddressFromInitCodeOrPaymasterAndData(op.paymasterAndData)
194
+ : op.paymaster;
195
+ if (paymaster) {
196
+ this.updateCrashedHandleOps(entryPoint, paymaster);
197
+ }
198
+ }
199
+ else if (reason.startsWith("AA2")) {
200
+ // sender
201
+ const sender = op.sender;
202
+ this.updateCrashedHandleOps(entryPoint, sender);
203
+ }
204
+ else if (reason.startsWith("AA1")) {
205
+ // init code
206
+ const factory = isUserOpV06
207
+ ? getAddressFromInitCodeOrPaymasterAndData(op.initCode)
208
+ : op.factory;
209
+ if (factory) {
210
+ this.updateCrashedHandleOps(entryPoint, factory);
211
+ }
212
+ }
213
+ }
214
+ updateIncludedStatus(entryPoint, address) {
215
+ const entry = this.entries[entryPoint][address];
216
+ if (!entry) {
217
+ this.entries[entryPoint][address] = {
218
+ address,
219
+ opsSeen: 0n,
220
+ opsIncluded: 0n
221
+ };
222
+ }
223
+ entry.opsIncluded++;
224
+ }
225
+ updateUserOperationIncludedStatus(userOperation, entryPoint, accountDeployed) {
226
+ const sender = userOperation.sender;
227
+ this.updateIncludedStatus(entryPoint, sender);
228
+ const isUserOpV06 = isVersion06(userOperation);
229
+ const paymaster = isUserOpV06
230
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.paymasterAndData)
231
+ : userOperation.paymaster;
232
+ if (paymaster) {
233
+ this.updateIncludedStatus(entryPoint, paymaster);
234
+ }
235
+ if (accountDeployed) {
236
+ const factory = (isUserOpV06
237
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.initCode)
238
+ : userOperation.factory);
239
+ if (factory) {
240
+ this.updateIncludedStatus(entryPoint, factory);
241
+ }
242
+ }
243
+ }
244
+ updateUserOperationSeenStatus(userOperation, entryPoint) {
245
+ const sender = userOperation.sender;
246
+ this.increaseSeen(entryPoint, sender);
247
+ const isUserOpV06 = isVersion06(userOperation);
248
+ const paymaster = isUserOpV06
249
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.paymasterAndData)
250
+ : userOperation.paymaster;
251
+ if (paymaster) {
252
+ this.increaseSeen(entryPoint, paymaster);
253
+ }
254
+ const factory = (isUserOpV06
255
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.initCode)
256
+ : userOperation.factory);
257
+ this.logger.debug({ userOperation, factory }, "updateUserOperationSeenStatus");
258
+ if (factory) {
259
+ this.increaseSeen(entryPoint, factory);
260
+ }
261
+ }
262
+ increaseUserOperationCount(userOperation) {
263
+ const sender = userOperation.sender;
264
+ this.entityCount[sender] = (this.entityCount[sender] ?? 0n) + 1n;
265
+ const isUserOpV06 = isVersion06(userOperation);
266
+ const paymaster = isUserOpV06
267
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.paymasterAndData)
268
+ : userOperation.paymaster;
269
+ if (paymaster) {
270
+ this.entityCount[paymaster] =
271
+ (this.entityCount[paymaster] ?? 0n) + 1n;
272
+ }
273
+ const factory = (isUserOpV06
274
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.initCode)
275
+ : userOperation.factory);
276
+ if (factory) {
277
+ this.entityCount[factory] = (this.entityCount[factory] ?? 0n) + 1n;
278
+ }
279
+ }
280
+ decreaseUserOperationCount(userOperation) {
281
+ const sender = userOperation.sender;
282
+ this.entityCount[sender] = (this.entityCount[sender] ?? 0n) - 1n;
283
+ const isUserOpV06 = isVersion06(userOperation);
284
+ this.entityCount[sender] =
285
+ this.entityCount[sender] < 0n ? 0n : this.entityCount[sender];
286
+ const paymaster = isUserOpV06
287
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.paymasterAndData)
288
+ : userOperation.paymaster;
289
+ if (paymaster) {
290
+ this.entityCount[paymaster] =
291
+ (this.entityCount[paymaster] ?? 0n) - 1n;
292
+ this.entityCount[paymaster] =
293
+ this.entityCount[paymaster] < 0n
294
+ ? 0n
295
+ : this.entityCount[paymaster];
296
+ }
297
+ const factory = (isUserOpV06
298
+ ? getAddressFromInitCodeOrPaymasterAndData(userOperation.initCode)
299
+ : userOperation.factory);
300
+ if (factory) {
301
+ this.entityCount[factory] = (this.entityCount[factory] ?? 0n) - 1n;
302
+ this.entityCount[factory] =
303
+ this.entityCount[factory] < 0n ? 0n : this.entityCount[factory];
304
+ }
305
+ }
306
+ checkReputationStatus(entryPoint, entityType, stakeInfo, maxMempoolUserOperationsPerSenderOverride) {
307
+ const maxTxMempoolAllowedEntity = maxMempoolUserOperationsPerSenderOverride ??
308
+ this.calCulateMaxMempoolUserOperationsPerEntity(entryPoint, stakeInfo.addr);
309
+ this.checkBanned(entryPoint, entityType, stakeInfo);
310
+ const entityCount = this.getEntityCount(stakeInfo.addr);
311
+ if (entityCount > this.throttledEntityMinMempoolCount) {
312
+ this.checkThrottled(entryPoint, entityType, stakeInfo);
313
+ }
314
+ if (entityCount > maxTxMempoolAllowedEntity) {
315
+ this.checkStake(entryPoint, entityType, stakeInfo);
316
+ }
317
+ }
318
+ getStatus(entryPoint, address) {
319
+ if (!address || this.whitelist.has(address)) {
320
+ return ReputationStatuses.ok;
321
+ }
322
+ if (this.blackList.has(address)) {
323
+ return ReputationStatuses.banned;
324
+ }
325
+ const entry = this.entries[entryPoint][address];
326
+ if (!entry) {
327
+ return ReputationStatuses.ok;
328
+ }
329
+ const minExpectedIncluded = entry.opsSeen / this.bundlerReputationParams.minInclusionDenominator;
330
+ this.logger.debug({
331
+ address: address,
332
+ minExpectedIncluded,
333
+ opsSeen: entry.opsSeen,
334
+ minInclusionDenominator: this.bundlerReputationParams.minInclusionDenominator,
335
+ opsIncluded: entry.opsIncluded,
336
+ throttlingSlack: this.bundlerReputationParams.throttlingSlack,
337
+ banSlack: this.bundlerReputationParams.banSlack
338
+ }, "minExpectedIncluded");
339
+ if (minExpectedIncluded <=
340
+ entry.opsIncluded + this.bundlerReputationParams.throttlingSlack) {
341
+ entry.status = ReputationStatuses.ok;
342
+ return ReputationStatuses.ok;
343
+ }
344
+ if (minExpectedIncluded <=
345
+ entry.opsIncluded + this.bundlerReputationParams.banSlack) {
346
+ entry.status = ReputationStatuses.throttled;
347
+ return ReputationStatuses.throttled;
348
+ }
349
+ entry.status = ReputationStatuses.banned;
350
+ return ReputationStatuses.banned;
351
+ }
352
+ checkBanned(entryPoint, entityType, stakeInfo) {
353
+ const status = this.getStatus(entryPoint, stakeInfo.addr);
354
+ if (status === ReputationStatuses.banned) {
355
+ throw new RpcError(`${entityType} ${stakeInfo.addr} is banned from using the pimlico`, ValidationErrors.Reputation);
356
+ }
357
+ }
358
+ checkThrottled(entryPoint, entityType, stakeInfo) {
359
+ const status = this.getStatus(entryPoint, stakeInfo.addr);
360
+ if (status === ReputationStatuses.throttled) {
361
+ throw new RpcError(`${entityType} ${stakeInfo.addr} is throttled by the pimlico`, ValidationErrors.Reputation);
362
+ }
363
+ }
364
+ isWhiteListed(address) {
365
+ return this.whitelist.has(address);
366
+ }
367
+ checkStake(entryPoint, entityType, stakeInfo) {
368
+ if (this.isWhiteListed(stakeInfo.addr)) {
369
+ return;
370
+ }
371
+ this.checkBanned(entryPoint, entityType, stakeInfo);
372
+ if (stakeInfo.stake < this.minStake) {
373
+ if (stakeInfo.stake === 0n) {
374
+ throw new RpcError(`${entityType} ${stakeInfo.addr} is unstaked and must stake minimum ${this.minStake} to use pimlico`, ValidationErrors.InsufficientStake);
375
+ }
376
+ throw new RpcError(`${entityType} ${stakeInfo.addr} does not have enough stake to use pimlico`, ValidationErrors.InsufficientStake);
377
+ }
378
+ if (stakeInfo.unstakeDelaySec < this.minUnstakeDelay) {
379
+ throw new RpcError(`${entityType} ${stakeInfo.addr} does not have enough unstake delay to use pimlico`, ValidationErrors.InsufficientStake);
380
+ }
381
+ }
382
+ calCulateMaxMempoolUserOperationsPerEntity(entryPoint, address) {
383
+ const entry = this.entries[entryPoint][address];
384
+ if (!entry) {
385
+ return this.maxMempoolUserOperationsPerNewUnstakedEntity;
386
+ }
387
+ let inclusionRate = 0n;
388
+ if (entry.opsSeen !== 0n) {
389
+ // prevent NaN of Infinity in tests
390
+ inclusionRate = entry.opsIncluded / entry.opsSeen;
391
+ }
392
+ return (this.maxMempoolUserOperationsPerNewUnstakedEntity +
393
+ inclusionRate * this.inclusionRateFactor +
394
+ (entry.opsIncluded > 10000n ? 10000n : entry.opsIncluded));
395
+ }
396
+ }
397
+ //# sourceMappingURL=reputationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputationManager.js","sourceRoot":"","sources":["../../mempool/reputationManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Metrics } from "../utils/index.js";
2
+ import type { HexData32, SubmittedUserOperation, UserOperationInfo } from "../types/index.js";
3
+ import type { Logger } from "../utils/index.js";
4
+ export declare class MemoryStore {
5
+ private outstandingUserOperations;
6
+ private processingUserOperations;
7
+ private submittedUserOperations;
8
+ private logger;
9
+ private metrics;
10
+ constructor(logger: Logger, metrics: Metrics);
11
+ addOutstanding(op: UserOperationInfo): void;
12
+ addProcessing(op: UserOperationInfo): void;
13
+ addSubmitted(op: SubmittedUserOperation): void;
14
+ removeOutstanding(userOpHash: HexData32): void;
15
+ removeProcessing(userOpHash: HexData32): void;
16
+ removeSubmitted(userOpHash: HexData32): void;
17
+ dumpOutstanding(): UserOperationInfo[];
18
+ dumpProcessing(): UserOperationInfo[];
19
+ dumpSubmitted(): SubmittedUserOperation[];
20
+ clear(from: "outstanding" | "processing" | "submitted"): void;
21
+ }
22
+ //# sourceMappingURL=store.d.ts.map