@pimlico/alto 0.0.0-main.20240607T034324 → 0.0.0-staging.20240606T093925

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 (238) hide show
  1. package/lib/cli/index.d.ts +0 -1
  2. package/lib/cli/index.js +0 -1
  3. package/lib/cli/index.js.map +1 -1
  4. package/lib/executor/executor.js +0 -6
  5. package/lib/executor/executor.js.map +1 -1
  6. package/lib/executor/executorManager.js +0 -1
  7. package/lib/executor/executorManager.js.map +1 -1
  8. package/lib/executor/utils.js +1 -3
  9. package/lib/executor/utils.js.map +1 -1
  10. package/lib/index.d.ts +5 -1
  11. package/lib/index.js +120 -1
  12. package/lib/index.js.map +1 -1
  13. package/lib/rpc/server.js +1 -2
  14. package/lib/rpc/server.js.map +1 -1
  15. package/lib/types/mempool.d.ts +1 -2
  16. package/package.json +67 -70
  17. package/esm/cli/alto.d.ts +0 -6
  18. package/esm/cli/alto.js +0 -92
  19. package/esm/cli/alto.js.map +0 -1
  20. package/esm/cli/config/bundler.d.ts +0 -391
  21. package/esm/cli/config/bundler.js +0 -132
  22. package/esm/cli/config/bundler.js.map +0 -1
  23. package/esm/cli/config/index.d.ts +0 -3
  24. package/esm/cli/config/index.js +0 -3
  25. package/esm/cli/config/index.js.map +0 -1
  26. package/esm/cli/config/options.d.ts +0 -11
  27. package/esm/cli/config/options.js +0 -336
  28. package/esm/cli/config/options.js.map +0 -1
  29. package/esm/cli/customTransport.d.ts +0 -14
  30. package/esm/cli/customTransport.js +0 -53
  31. package/esm/cli/customTransport.js.map +0 -1
  32. package/esm/cli/handler.d.ts +0 -3
  33. package/esm/cli/handler.js +0 -116
  34. package/esm/cli/handler.js.map +0 -1
  35. package/esm/cli/index.d.ts +0 -4
  36. package/esm/cli/index.js +0 -4
  37. package/esm/cli/index.js.map +0 -1
  38. package/esm/cli/instrumentation.d.ts +0 -2
  39. package/esm/cli/instrumentation.js +0 -39
  40. package/esm/cli/instrumentation.js.map +0 -1
  41. package/esm/cli/setupServer.d.ts +0 -17
  42. package/esm/cli/setupServer.js +0 -155
  43. package/esm/cli/setupServer.js.map +0 -1
  44. package/esm/cli/util.d.ts +0 -22
  45. package/esm/cli/util.js +0 -30
  46. package/esm/cli/util.js.map +0 -1
  47. package/esm/executor/executor.d.ts +0 -54
  48. package/esm/executor/executor.js +0 -643
  49. package/esm/executor/executor.js.map +0 -1
  50. package/esm/executor/executorManager.d.ts +0 -34
  51. package/esm/executor/executorManager.js +0 -402
  52. package/esm/executor/executorManager.js.map +0 -1
  53. package/esm/executor/index.d.ts +0 -5
  54. package/esm/executor/index.js +0 -5
  55. package/esm/executor/index.js.map +0 -1
  56. package/esm/executor/senderManager.d.ts +0 -17
  57. package/esm/executor/senderManager.js +0 -160
  58. package/esm/executor/senderManager.js.map +0 -1
  59. package/esm/executor/test/utils.d.ts +0 -13
  60. package/esm/executor/test/utils.js +0 -75
  61. package/esm/executor/test/utils.js.map +0 -1
  62. package/esm/executor/utils.d.ts +0 -32
  63. package/esm/executor/utils.js +0 -241
  64. package/esm/executor/utils.js.map +0 -1
  65. package/esm/index.d.ts +0 -2
  66. package/esm/index.js +0 -2
  67. package/esm/index.js.map +0 -1
  68. package/esm/mempool/index.d.ts +0 -5
  69. package/esm/mempool/index.js +0 -5
  70. package/esm/mempool/index.js.map +0 -1
  71. package/esm/mempool/mempool.d.ts +0 -64
  72. package/esm/mempool/mempool.js +0 -489
  73. package/esm/mempool/mempool.js.map +0 -1
  74. package/esm/mempool/monitoring.d.ts +0 -10
  75. package/esm/mempool/monitoring.js +0 -34
  76. package/esm/mempool/monitoring.js.map +0 -1
  77. package/esm/mempool/nullMempool.d.ts +0 -15
  78. package/esm/mempool/nullMempool.js +0 -36
  79. package/esm/mempool/nullMempool.js.map +0 -1
  80. package/esm/mempool/reputationManager.d.ts +0 -115
  81. package/esm/mempool/reputationManager.js +0 -397
  82. package/esm/mempool/reputationManager.js.map +0 -1
  83. package/esm/mempool/store.d.ts +0 -22
  84. package/esm/mempool/store.js +0 -123
  85. package/esm/mempool/store.js.map +0 -1
  86. package/esm/rpc/EntryPointSimulationsV07.d.ts +0 -58
  87. package/esm/rpc/EntryPointSimulationsV07.js +0 -407
  88. package/esm/rpc/EntryPointSimulationsV07.js.map +0 -1
  89. package/esm/rpc/ExecuteSimulator.d.ts +0 -37
  90. package/esm/rpc/ExecuteSimulator.js +0 -48
  91. package/esm/rpc/ExecuteSimulator.js.map +0 -1
  92. package/esm/rpc/gasEstimation.d.ts +0 -17
  93. package/esm/rpc/gasEstimation.js +0 -410
  94. package/esm/rpc/gasEstimation.js.map +0 -1
  95. package/esm/rpc/index.d.ts +0 -5
  96. package/esm/rpc/index.js +0 -5
  97. package/esm/rpc/index.js.map +0 -1
  98. package/esm/rpc/nonceQueuer.d.ts +0 -25
  99. package/esm/rpc/nonceQueuer.js +0 -135
  100. package/esm/rpc/nonceQueuer.js.map +0 -1
  101. package/esm/rpc/rpcHandler.d.ts +0 -64
  102. package/esm/rpc/rpcHandler.js +0 -727
  103. package/esm/rpc/rpcHandler.js.map +0 -1
  104. package/esm/rpc/server.d.ts +0 -31
  105. package/esm/rpc/server.js +0 -239
  106. package/esm/rpc/server.js.map +0 -1
  107. package/esm/rpc/validation/BundlerCollectorTracerV06.d.ts +0 -102
  108. package/esm/rpc/validation/BundlerCollectorTracerV06.js +0 -255
  109. package/esm/rpc/validation/BundlerCollectorTracerV06.js.map +0 -1
  110. package/esm/rpc/validation/BundlerCollectorTracerV07.d.ts +0 -102
  111. package/esm/rpc/validation/BundlerCollectorTracerV07.js +0 -254
  112. package/esm/rpc/validation/BundlerCollectorTracerV07.js.map +0 -1
  113. package/esm/rpc/validation/SafeValidator.d.ts +0 -35
  114. package/esm/rpc/validation/SafeValidator.js +0 -487
  115. package/esm/rpc/validation/SafeValidator.js.map +0 -1
  116. package/esm/rpc/validation/TracerResultParserV06.d.ts +0 -13
  117. package/esm/rpc/validation/TracerResultParserV06.js +0 -578
  118. package/esm/rpc/validation/TracerResultParserV06.js.map +0 -1
  119. package/esm/rpc/validation/TracerResultParserV07.d.ts +0 -33
  120. package/esm/rpc/validation/TracerResultParserV07.js +0 -557
  121. package/esm/rpc/validation/TracerResultParserV07.js.map +0 -1
  122. package/esm/rpc/validation/UnsafeValidator.d.ts +0 -63
  123. package/esm/rpc/validation/UnsafeValidator.js +0 -257
  124. package/esm/rpc/validation/UnsafeValidator.js.map +0 -1
  125. package/esm/rpc/validation/index.d.ts +0 -3
  126. package/esm/rpc/validation/index.js +0 -3
  127. package/esm/rpc/validation/index.js.map +0 -1
  128. package/esm/rpc/validation/tracer.d.ts +0 -122
  129. package/esm/rpc/validation/tracer.js +0 -82
  130. package/esm/rpc/validation/tracer.js.map +0 -1
  131. package/esm/types/contracts/BundleBulker.d.ts +0 -120
  132. package/esm/types/contracts/BundleBulker.js +0 -157
  133. package/esm/types/contracts/BundleBulker.js.map +0 -1
  134. package/esm/types/contracts/CallEngine.d.ts +0 -28
  135. package/esm/types/contracts/CallEngine.js +0 -37
  136. package/esm/types/contracts/CallEngine.js.map +0 -1
  137. package/esm/types/contracts/CodeHashGetter.d.ts +0 -37
  138. package/esm/types/contracts/CodeHashGetter.js +0 -45
  139. package/esm/types/contracts/CodeHashGetter.js.map +0 -1
  140. package/esm/types/contracts/EntryPoint.d.ts +0 -1789
  141. package/esm/types/contracts/EntryPoint.js +0 -2304
  142. package/esm/types/contracts/EntryPoint.js.map +0 -1
  143. package/esm/types/contracts/EntryPointSimulations.d.ts +0 -153
  144. package/esm/types/contracts/EntryPointSimulations.js +0 -15
  145. package/esm/types/contracts/EntryPointSimulations.js.map +0 -1
  146. package/esm/types/contracts/IOpInflator.d.ts +0 -61
  147. package/esm/types/contracts/IOpInflator.js +0 -80
  148. package/esm/types/contracts/IOpInflator.js.map +0 -1
  149. package/esm/types/contracts/IPaymaster.d.ts +0 -3
  150. package/esm/types/contracts/IPaymaster.js +0 -117
  151. package/esm/types/contracts/IPaymaster.js.map +0 -1
  152. package/esm/types/contracts/Inflator.d.ts +0 -65
  153. package/esm/types/contracts/Inflator.js +0 -84
  154. package/esm/types/contracts/Inflator.js.map +0 -1
  155. package/esm/types/contracts/PerOpInflator.d.ts +0 -176
  156. package/esm/types/contracts/PerOpInflator.js +0 -229
  157. package/esm/types/contracts/PerOpInflator.js.map +0 -1
  158. package/esm/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -23
  159. package/esm/types/contracts/PimlicoEntryPointSimulations.js +0 -33
  160. package/esm/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
  161. package/esm/types/contracts/SenderCreator.d.ts +0 -4
  162. package/esm/types/contracts/SenderCreator.js +0 -23
  163. package/esm/types/contracts/SenderCreator.js.map +0 -1
  164. package/esm/types/contracts/SimpleAccountFactory.d.ts +0 -57
  165. package/esm/types/contracts/SimpleAccountFactory.js +0 -76
  166. package/esm/types/contracts/SimpleAccountFactory.js.map +0 -1
  167. package/esm/types/contracts/TestOpcodesAccount.d.ts +0 -4
  168. package/esm/types/contracts/TestOpcodesAccount.js +0 -281
  169. package/esm/types/contracts/TestOpcodesAccount.js.map +0 -1
  170. package/esm/types/contracts/TestOpcodesAccountFactory.d.ts +0 -4
  171. package/esm/types/contracts/TestOpcodesAccountFactory.js +0 -23
  172. package/esm/types/contracts/TestOpcodesAccountFactory.js.map +0 -1
  173. package/esm/types/contracts/TestStorageAccount.d.ts +0 -4
  174. package/esm/types/contracts/TestStorageAccount.js +0 -313
  175. package/esm/types/contracts/TestStorageAccount.js.map +0 -1
  176. package/esm/types/contracts/index.d.ts +0 -17
  177. package/esm/types/contracts/index.js +0 -17
  178. package/esm/types/contracts/index.js.map +0 -1
  179. package/esm/types/gasPrice.d.ts +0 -110
  180. package/esm/types/gasPrice.js +0 -52
  181. package/esm/types/gasPrice.js.map +0 -1
  182. package/esm/types/index.d.ts +0 -11
  183. package/esm/types/index.js +0 -11
  184. package/esm/types/index.js.map +0 -1
  185. package/esm/types/interfaces.d.ts +0 -26
  186. package/esm/types/interfaces.js +0 -2
  187. package/esm/types/interfaces.js.map +0 -1
  188. package/esm/types/mempool.d.ts +0 -79
  189. package/esm/types/mempool.js +0 -16
  190. package/esm/types/mempool.js.map +0 -1
  191. package/esm/types/schemas.d.ts +0 -4791
  192. package/esm/types/schemas.js +0 -497
  193. package/esm/types/schemas.js.map +0 -1
  194. package/esm/types/test/validationTestErrors.d.ts +0 -3
  195. package/esm/types/test/validationTestErrors.js +0 -229
  196. package/esm/types/test/validationTestErrors.js.map +0 -1
  197. package/esm/types/utils.d.ts +0 -24
  198. package/esm/types/utils.js +0 -30
  199. package/esm/types/utils.js.map +0 -1
  200. package/esm/types/validation.d.ts +0 -14327
  201. package/esm/types/validation.js +0 -304
  202. package/esm/types/validation.js.map +0 -1
  203. package/esm/utils/bigInt.d.ts +0 -3
  204. package/esm/utils/bigInt.js +0 -9
  205. package/esm/utils/bigInt.js.map +0 -1
  206. package/esm/utils/compressionHandler.d.ts +0 -11
  207. package/esm/utils/compressionHandler.js +0 -39
  208. package/esm/utils/compressionHandler.js.map +0 -1
  209. package/esm/utils/gasPriceManager.d.ts +0 -34
  210. package/esm/utils/gasPriceManager.js +0 -338
  211. package/esm/utils/gasPriceManager.js.map +0 -1
  212. package/esm/utils/helpers.d.ts +0 -4
  213. package/esm/utils/helpers.js +0 -13
  214. package/esm/utils/helpers.js.map +0 -1
  215. package/esm/utils/index.d.ts +0 -11
  216. package/esm/utils/index.js +0 -10
  217. package/esm/utils/index.js.map +0 -1
  218. package/esm/utils/logger.d.ts +0 -6
  219. package/esm/utils/logger.js +0 -76
  220. package/esm/utils/logger.js.map +0 -1
  221. package/esm/utils/metrics.d.ts +0 -22
  222. package/esm/utils/metrics.js +0 -150
  223. package/esm/utils/metrics.js.map +0 -1
  224. package/esm/utils/rpc-reply.d.ts +0 -17
  225. package/esm/utils/rpc-reply.js +0 -41
  226. package/esm/utils/rpc-reply.js.map +0 -1
  227. package/esm/utils/test.d.ts +0 -17
  228. package/esm/utils/test.js +0 -130
  229. package/esm/utils/test.js.map +0 -1
  230. package/esm/utils/userop.d.ts +0 -49
  231. package/esm/utils/userop.js +0 -408
  232. package/esm/utils/userop.js.map +0 -1
  233. package/esm/utils/validation.d.ts +0 -65
  234. package/esm/utils/validation.js +0 -461
  235. package/esm/utils/validation.js.map +0 -1
  236. package/lib/cli/alto.d.ts +0 -6
  237. package/lib/cli/alto.js +0 -123
  238. package/lib/cli/alto.js.map +0 -1
@@ -1,160 +0,0 @@
1
- import { CallEngineAbi } from "../types/index.js";
2
- import { Semaphore } from "async-mutex";
3
- import { formatEther, getContract } from "viem";
4
- const waitForTransactionReceipt = async (publicClient, tx) => {
5
- try {
6
- return await publicClient.waitForTransactionReceipt({ hash: tx });
7
- }
8
- catch {
9
- return await waitForTransactionReceipt(publicClient, tx);
10
- }
11
- };
12
- export class SenderManager {
13
- wallets;
14
- utilityAccount;
15
- availableWallets;
16
- logger;
17
- metrics;
18
- legacyTransactions;
19
- semaphore;
20
- gasPriceManager;
21
- constructor(wallets, utilityAccount, logger, metrics, legacyTransactions, gasPriceManager, maxSigners) {
22
- if (maxSigners !== undefined && wallets.length > maxSigners) {
23
- this.wallets = wallets.slice(0, maxSigners);
24
- this.availableWallets = wallets.slice(0, maxSigners);
25
- }
26
- else {
27
- this.wallets = wallets;
28
- this.availableWallets = wallets;
29
- }
30
- this.utilityAccount = utilityAccount;
31
- this.logger = logger;
32
- this.metrics = metrics;
33
- this.legacyTransactions = legacyTransactions;
34
- metrics.walletsAvailable.set(this.availableWallets.length);
35
- metrics.walletsTotal.set(this.wallets.length);
36
- this.semaphore = new Semaphore(this.availableWallets.length);
37
- this.gasPriceManager = gasPriceManager;
38
- }
39
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
40
- async validateAndRefillWallets(publicClient, walletClient, minBalance) {
41
- if (!(minBalance && this.utilityAccount)) {
42
- return;
43
- }
44
- const utilityWalletBalance = await publicClient.getBalance({
45
- address: this.utilityAccount.address
46
- });
47
- const balancesMissing = {};
48
- const balanceRequestPromises = this.availableWallets.map(async (wallet) => {
49
- const balance = await publicClient.getBalance({
50
- address: wallet.address
51
- });
52
- if (balance < minBalance) {
53
- const missingBalance = (minBalance * 6n) / 5n - balance;
54
- balancesMissing[wallet.address] = missingBalance;
55
- }
56
- });
57
- await Promise.all(balanceRequestPromises);
58
- const totalBalanceMissing = Object.values(balancesMissing).reduce((a, b) => a + b, 0n);
59
- if (utilityWalletBalance < (totalBalanceMissing * 11n) / 10n) {
60
- this.logger.info({ balancesMissing, totalBalanceMissing }, "balances missing");
61
- this.logger.error({
62
- minBalance,
63
- utilityWalletBalance,
64
- totalBalanceMissing,
65
- utilityAccount: this.utilityAccount.address
66
- }, "utility wallet has insufficient balance to refill wallets");
67
- throw new Error(`utility wallet ${this.utilityAccount.address} has insufficient balance ${formatEther(utilityWalletBalance)} < ${formatEther(totalBalanceMissing)}`);
68
- }
69
- if (Object.keys(balancesMissing).length > 0) {
70
- const { maxFeePerGas, maxPriorityFeePerGas } = await this.gasPriceManager.getGasPrice();
71
- if (walletClient.chain.id === 59140 ||
72
- walletClient.chain.id === 137 ||
73
- walletClient.chain.id === 10) {
74
- const instructions = [];
75
- for (const [address, missingBalance] of Object.entries(balancesMissing)) {
76
- instructions.push({
77
- to: address,
78
- value: missingBalance,
79
- data: "0x"
80
- });
81
- }
82
- let refillAddress;
83
- if (walletClient.chain.id === 59140) {
84
- refillAddress = "0xEad1aC3DF6F96b91491d6396F4d1610C5638B4Db";
85
- }
86
- else if (walletClient.chain.id === 137) {
87
- refillAddress = "0x3402DB43152dAB9ab72fa805fdD5f391cD3E3822";
88
- }
89
- else {
90
- refillAddress = "0x3402DB43152dAB9ab72fa805fdD5f391cD3E3822";
91
- }
92
- const callEngine = getContract({
93
- abi: CallEngineAbi,
94
- address: refillAddress,
95
- client: {
96
- public: publicClient,
97
- wallet: walletClient
98
- }
99
- });
100
- const tx = await callEngine.write.execute([instructions], {
101
- account: this.utilityAccount,
102
- value: totalBalanceMissing,
103
- maxFeePerGas: maxFeePerGas * 2n,
104
- maxPriorityFeePerGas: maxPriorityFeePerGas * 2n
105
- });
106
- await waitForTransactionReceipt(publicClient, tx);
107
- for (const [address, missingBalance] of Object.entries(balancesMissing)) {
108
- this.logger.info({ tx, executor: address, missingBalance }, "refilled wallet");
109
- }
110
- }
111
- else {
112
- for (const [address, missingBalance] of Object.entries(balancesMissing)) {
113
- const tx = await walletClient.sendTransaction({
114
- account: this.utilityAccount,
115
- // @ts-ignore
116
- to: address,
117
- value: missingBalance,
118
- maxFeePerGas: this.legacyTransactions
119
- ? undefined
120
- : maxFeePerGas,
121
- maxPriorityFeePerGas: this.legacyTransactions
122
- ? undefined
123
- : maxPriorityFeePerGas,
124
- gasPrice: this.legacyTransactions
125
- ? maxFeePerGas
126
- : undefined
127
- });
128
- await waitForTransactionReceipt(publicClient, tx);
129
- this.logger.info({ tx, executor: address, missingBalance }, "refilled wallet");
130
- }
131
- }
132
- }
133
- else {
134
- this.logger.info("no wallets need to be refilled");
135
- }
136
- }
137
- async getWallet() {
138
- this.logger.trace(`waiting for semaphore with count ${this.semaphore.getValue()}`);
139
- await this.semaphore.waitForUnlock();
140
- await this.semaphore.acquire();
141
- const wallet = this.availableWallets.shift();
142
- // should never happen because of semaphore
143
- if (!wallet) {
144
- this.semaphore.release();
145
- this.logger.error("no more wallets");
146
- throw new Error("no more wallets");
147
- }
148
- this.logger.trace({ executor: wallet.address }, "got wallet from sender manager");
149
- this.metrics.walletsAvailable.set(this.availableWallets.length);
150
- return wallet;
151
- }
152
- pushWallet(wallet) {
153
- this.availableWallets.push(wallet);
154
- this.semaphore.release();
155
- this.logger.trace({ executor: wallet.address }, "pushed wallet to sender manager");
156
- this.metrics.walletsAvailable.set(this.availableWallets.length);
157
- return;
158
- }
159
- }
160
- //# sourceMappingURL=senderManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"senderManager.js","sourceRoot":"","sources":["../../executor/senderManager.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { type Address, type HexData, UserOperationV06 } from "../../types/index.js";
2
- import { type Clients } from "../../utils/index.js";
3
- import { type Account } from "viem";
4
- export declare const TEST_OP: UserOperationV06;
5
- export declare function getSender(entryPoint: Address, initCode: HexData, clients: Clients): Promise<Address>;
6
- export declare function createOp(entryPoint: Address, simpleAccountFactory: Address, signer: Account, clients: Clients, maxFeePerGas?: bigint, nonce?: bigint): Promise<UserOperationV06>;
7
- export declare const generateAccounts: (clients: Clients) => Promise<(import("viem").CustomSource & {
8
- address: `0x${string}`;
9
- publicKey: `0x${string}`;
10
- source: "privateKey";
11
- type: "local";
12
- })[]>;
13
- //# sourceMappingURL=utils.d.ts.map
@@ -1,75 +0,0 @@
1
- import { EntryPointV06Abi } from "../../types/index.js";
2
- import { SimpleAccountFactoryAbi } from "../../types/index.js";
3
- import { getUserOpHash, parseSenderAddressError } from "../../utils/index.js";
4
- import { concat, encodeFunctionData, getContract, parseEther } from "viem";
5
- import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
6
- import { foundry } from "viem/chains";
7
- export const TEST_OP = {
8
- sender: "0x0000000000000000000000000000000000000000",
9
- nonce: 0n,
10
- initCode: "0x",
11
- callData: "0x",
12
- callGasLimit: 100000n,
13
- verificationGasLimit: 1000000n,
14
- preVerificationGas: 60000n,
15
- maxFeePerGas: 1n,
16
- maxPriorityFeePerGas: 1n,
17
- paymasterAndData: "0x",
18
- signature: "0x"
19
- };
20
- export async function getSender(entryPoint, initCode, clients) {
21
- const entryPointContract = getContract({
22
- address: entryPoint,
23
- abi: EntryPointV06Abi,
24
- client: {
25
- public: clients.public
26
- }
27
- });
28
- const sender = await entryPointContract.simulate
29
- .getSenderAddress([initCode])
30
- .then((_) => {
31
- throw new Error("Expected error");
32
- })
33
- .catch((e) => {
34
- return parseSenderAddressError(e);
35
- });
36
- await clients.test.setBalance({ address: sender, value: parseEther("1") });
37
- return sender;
38
- }
39
- export async function createOp(entryPoint, simpleAccountFactory, signer, clients, maxFeePerGas, nonce) {
40
- const initCode = concat([
41
- simpleAccountFactory,
42
- encodeFunctionData({
43
- abi: SimpleAccountFactoryAbi,
44
- functionName: "createAccount",
45
- args: [signer.address, 0n]
46
- })
47
- ]);
48
- const sender = await getSender(entryPoint, initCode, clients);
49
- const op = Object.assign({}, TEST_OP);
50
- op.sender = sender;
51
- op.initCode = initCode;
52
- op.nonce = nonce ?? 0n;
53
- op.maxFeePerGas = maxFeePerGas ?? (await clients.public.getGasPrice());
54
- const opHash = getUserOpHash(op, entryPoint, foundry.id);
55
- const signature = await clients.wallet.signMessage({
56
- account: signer,
57
- message: { raw: opHash }
58
- });
59
- op.signature = signature;
60
- return op;
61
- }
62
- export const generateAccounts = async (clients) => {
63
- const accountsPromises = [...Array(10)].map(async (_) => {
64
- const privateKey = generatePrivateKey();
65
- const account = privateKeyToAccount(privateKey);
66
- await clients.test.setBalance({
67
- address: account.address,
68
- value: parseEther("100")
69
- });
70
- return account;
71
- });
72
- const accounts = await Promise.all(accountsPromises);
73
- return accounts;
74
- };
75
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../executor/test/utils.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import type { InterfaceReputationManager } from "../mempool/index.js";
2
- import { type BundleResult, type CompressedUserOperation, EntryPointV06Abi, EntryPointV07Abi, type TransactionInfo, type UserOperationWithHash } from "../types/index.js";
3
- import type { Logger } from "../utils/index.js";
4
- import { type Account, type Address, type Chain, type GetContractReturnType, type Hex, type PublicClient, type Transport, type WalletClient } from "viem";
5
- export declare function simulatedOpsToResults(simulatedOps: {
6
- owh: UserOperationWithHash;
7
- reason: string | undefined;
8
- }[], transactionInfo: TransactionInfo): BundleResult[];
9
- export type DefaultFilterOpsAndEstimateGasParams = {
10
- ep: GetContractReturnType<typeof EntryPointV06Abi | typeof EntryPointV07Abi, {
11
- public: PublicClient;
12
- wallet: WalletClient;
13
- }>;
14
- type: "default";
15
- };
16
- export type CompressedFilterOpsAndEstimateGasParams = {
17
- publicClient: PublicClient;
18
- bundleBulker: Address;
19
- perOpInflatorId: number;
20
- type: "compressed";
21
- };
22
- export declare function createCompressedCalldata(compressedOps: CompressedUserOperation[], perOpInflatorId: number): Hex;
23
- export declare function filterOpsAndEstimateGas(entryPoint: Address, callContext: DefaultFilterOpsAndEstimateGasParams | CompressedFilterOpsAndEstimateGasParams, wallet: Account, ops: UserOperationWithHash[], nonce: number, maxFeePerGas: bigint, maxPriorityFeePerGas: bigint, blockTag: "latest" | "pending", onlyPre1559: boolean, fixedGasLimitForEstimation: bigint | undefined, reputationManager: InterfaceReputationManager, logger: Logger): Promise<{
24
- simulatedOps: {
25
- owh: UserOperationWithHash;
26
- reason: string | undefined;
27
- }[];
28
- gasLimit: bigint;
29
- resubmitAllOps: boolean;
30
- }>;
31
- export declare function flushStuckTransaction(publicClient: PublicClient, walletClient: WalletClient<Transport, Chain, Account | undefined>, wallet: Account, gasPrice: bigint, logger: Logger, entryPoint: Address): Promise<void>;
32
- //# sourceMappingURL=utils.d.ts.map
@@ -1,241 +0,0 @@
1
- import { EntryPointV06Abi, EntryPointV07Abi, deriveUserOperation, failedOpErrorSchema, failedOpWithRevertErrorSchema } from "../types/index.js";
2
- import { getRevertErrorData, isVersion06, parseViemError, toPackedUserOperation, transactionIncluded } from "../utils/index.js";
3
- import * as sentry from "@sentry/node";
4
- import { ContractFunctionRevertedError, EstimateGasExecutionError, FeeCapTooLowError, concat, decodeErrorResult, hexToBytes, numberToHex } from "viem";
5
- export function simulatedOpsToResults(simulatedOps, transactionInfo) {
6
- return simulatedOps.map((sop) => {
7
- if (sop.reason === undefined) {
8
- return {
9
- status: "success",
10
- value: {
11
- userOperation: {
12
- entryPoint: transactionInfo.entryPoint,
13
- mempoolUserOperation: sop.owh.mempoolUserOperation,
14
- userOperationHash: sop.owh.userOperationHash,
15
- lastReplaced: Date.now(),
16
- firstSubmitted: Date.now()
17
- },
18
- transactionInfo
19
- }
20
- };
21
- }
22
- return {
23
- status: "failure",
24
- error: {
25
- entryPoint: transactionInfo.entryPoint,
26
- userOperation: sop.owh.mempoolUserOperation,
27
- userOpHash: sop.owh.userOperationHash,
28
- reason: sop.reason
29
- }
30
- };
31
- });
32
- }
33
- export function createCompressedCalldata(compressedOps, perOpInflatorId) {
34
- const bundleBulkerPayload = numberToHex(perOpInflatorId, { size: 4 }); // bytes used in BundleBulker
35
- const perOpInflatorPayload = numberToHex(compressedOps.length, { size: 1 }); // bytes used in perOpInflator
36
- return compressedOps.reduce((currentCallData, op) => {
37
- const nextCallData = concat([
38
- numberToHex(op.inflatorId, { size: 4 }),
39
- numberToHex(hexToBytes(op.compressedCalldata).length, {
40
- size: 2
41
- }),
42
- op.compressedCalldata
43
- ]);
44
- return concat([currentCallData, nextCallData]);
45
- }, concat([bundleBulkerPayload, perOpInflatorPayload]));
46
- }
47
- export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, ops, nonce, maxFeePerGas, maxPriorityFeePerGas, blockTag, onlyPre1559, fixedGasLimitForEstimation, reputationManager, logger) {
48
- const simulatedOps = ops.map((owh) => {
49
- return { owh, reason: undefined };
50
- });
51
- let gasLimit;
52
- // TODO compressed ops are not supported in V07
53
- const isUserOpV06 = callContext.type === "default"
54
- ? isVersion06(simulatedOps[0].owh.mempoolUserOperation)
55
- : true;
56
- while (simulatedOps.filter((op) => op.reason === undefined).length > 0) {
57
- try {
58
- const gasOptions = onlyPre1559
59
- ? { gasPrice: maxFeePerGas }
60
- : { maxFeePerGas, maxPriorityFeePerGas };
61
- if (callContext.type === "default") {
62
- const ep = callContext.ep;
63
- const opsToSend = simulatedOps
64
- .filter((op) => op.reason === undefined)
65
- .map((op) => {
66
- return isUserOpV06
67
- ? op.owh.mempoolUserOperation
68
- : toPackedUserOperation(op.owh
69
- .mempoolUserOperation);
70
- });
71
- gasLimit = await ep.estimateGas.handleOps(
72
- // @ts-ignore - ep is set correctly for opsToSend, but typescript doesn't know that
73
- [opsToSend, wallet.address], {
74
- account: wallet,
75
- nonce: nonce,
76
- blockTag,
77
- ...(fixedGasLimitForEstimation !== undefined && {
78
- gas: fixedGasLimitForEstimation
79
- }),
80
- ...gasOptions
81
- });
82
- }
83
- else {
84
- const { publicClient, bundleBulker, perOpInflatorId } = callContext;
85
- const opsToSend = simulatedOps
86
- .filter((op) => op.reason === undefined)
87
- .map((op) => op.owh
88
- .mempoolUserOperation);
89
- gasLimit = await publicClient.estimateGas({
90
- to: bundleBulker,
91
- account: wallet,
92
- data: createCompressedCalldata(opsToSend, perOpInflatorId),
93
- gas: fixedGasLimitForEstimation,
94
- nonce: nonce,
95
- blockTag,
96
- ...gasOptions
97
- });
98
- }
99
- return { simulatedOps, gasLimit, resubmitAllOps: false };
100
- }
101
- catch (err) {
102
- logger.error({ err }, "error estimating gas");
103
- const e = parseViemError(err);
104
- if (e instanceof ContractFunctionRevertedError) {
105
- const failedOpError = failedOpErrorSchema.safeParse(e.data);
106
- const failedOpWithRevertError = failedOpWithRevertErrorSchema.safeParse(e.data);
107
- let errorData = undefined;
108
- if (failedOpError.success) {
109
- errorData = failedOpError.data.args;
110
- }
111
- if (failedOpWithRevertError.success) {
112
- errorData = failedOpWithRevertError.data.args;
113
- }
114
- if (errorData) {
115
- logger.debug({
116
- errorData,
117
- userOpHashes: simulatedOps
118
- .filter((op) => op.reason === undefined)
119
- .map((op) => op.owh.userOperationHash)
120
- }, "user op in batch invalid");
121
- const failingOp = simulatedOps.filter((op) => op.reason === undefined)[Number(errorData.opIndex)];
122
- failingOp.reason = `${errorData.reason}${errorData?.inner
123
- ? ` - ${errorData.inner}`
124
- : ""}`;
125
- reputationManager.crashedHandleOps(deriveUserOperation(failingOp.owh.mempoolUserOperation), entryPoint, failingOp.reason);
126
- }
127
- if (!(failedOpError.success || failedOpWithRevertError.success)) {
128
- sentry.captureException(err);
129
- logger.error({
130
- error: `${failedOpError.error} ${failedOpWithRevertError.error}`
131
- }, "failed to parse failedOpError");
132
- return {
133
- simulatedOps: [],
134
- gasLimit: 0n,
135
- resubmitAllOps: false
136
- };
137
- }
138
- }
139
- else if (e instanceof EstimateGasExecutionError ||
140
- err instanceof EstimateGasExecutionError) {
141
- if (e?.cause instanceof FeeCapTooLowError) {
142
- logger.info({ error: e.shortMessage }, "error estimating gas due to max fee < basefee");
143
- return {
144
- simulatedOps: simulatedOps,
145
- gasLimit: 0n,
146
- resubmitAllOps: true
147
- };
148
- }
149
- try {
150
- let errorHexData = "0x";
151
- if (err instanceof EstimateGasExecutionError) {
152
- errorHexData = getRevertErrorData(err);
153
- }
154
- else {
155
- errorHexData = e?.details.split("Reverted ")[1];
156
- }
157
- const errorResult = decodeErrorResult({
158
- abi: isUserOpV06 ? EntryPointV06Abi : EntryPointV07Abi,
159
- data: errorHexData
160
- });
161
- logger.debug({
162
- errorName: errorResult.errorName,
163
- args: errorResult.args,
164
- userOpHashes: simulatedOps
165
- .filter((op) => op.reason === undefined)
166
- .map((op) => op.owh.userOperationHash)
167
- }, "user op in batch invalid");
168
- if (errorResult.errorName !== "FailedOpWithRevert" &&
169
- errorResult.errorName !== "FailedOp") {
170
- logger.error({
171
- errorName: errorResult.errorName,
172
- args: errorResult.args
173
- }, "unexpected error result");
174
- return {
175
- simulatedOps: [],
176
- gasLimit: 0n,
177
- resubmitAllOps: false
178
- };
179
- }
180
- const failingOp = simulatedOps.filter((op) => op.reason === undefined)[Number(errorResult.args[0])];
181
- failingOp.reason = errorResult.args[1];
182
- }
183
- catch (e) {
184
- logger.error({ error: JSON.stringify(err) }, "failed to parse error result");
185
- return {
186
- simulatedOps: [],
187
- gasLimit: 0n,
188
- resubmitAllOps: false
189
- };
190
- }
191
- }
192
- else {
193
- sentry.captureException(err);
194
- logger.error({ error: JSON.stringify(err) }, "error estimating gas");
195
- return { simulatedOps: [], gasLimit: 0n, resubmitAllOps: false };
196
- }
197
- }
198
- }
199
- return { simulatedOps, gasLimit: 0n, resubmitAllOps: false };
200
- }
201
- export async function flushStuckTransaction(publicClient, walletClient, wallet, gasPrice, logger, entryPoint) {
202
- const latestNonce = await publicClient.getTransactionCount({
203
- address: wallet.address,
204
- blockTag: "latest"
205
- });
206
- const pendingNonce = await publicClient.getTransactionCount({
207
- address: wallet.address,
208
- blockTag: "pending"
209
- });
210
- logger.debug({ latestNonce, pendingNonce, wallet: wallet.address }, "checking for stuck transactions");
211
- // same nonce is okay
212
- if (latestNonce === pendingNonce) {
213
- return;
214
- }
215
- // one nonce ahead is also okay
216
- if (latestNonce + 1 === pendingNonce) {
217
- return;
218
- }
219
- logger.info({ latestNonce, pendingNonce, wallet: wallet.address }, "found stuck transaction, flushing");
220
- for (let nonceToFlush = latestNonce; nonceToFlush < pendingNonce; nonceToFlush++) {
221
- try {
222
- const txHash = await walletClient.sendTransaction({
223
- account: wallet,
224
- to: wallet.address,
225
- value: 0n,
226
- nonce: nonceToFlush,
227
- maxFeePerGas: gasPrice,
228
- maxPriorityFeePerGas: gasPrice
229
- });
230
- logger.debug({ txHash, nonce: nonceToFlush, wallet: wallet.address }, "flushed stuck transaction");
231
- // TODO: We don't know if the entrypoint is the V06 or V07. So we try and catch both.
232
- await transactionIncluded(true, txHash, publicClient, entryPoint);
233
- await transactionIncluded(false, txHash, publicClient, entryPoint);
234
- }
235
- catch (e) {
236
- sentry.captureException(e);
237
- logger.warn({ error: e }, "error flushing stuck transaction");
238
- }
239
- }
240
- }
241
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../executor/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,gBAAgB,EAChB,gBAAgB,EAOhB,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAChC,MAAM,aAAa,CAAA;AAEpB,OAAO,EACH,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAIH,6BAA6B,EAC7B,yBAAyB,EACzB,iBAAiB,EAMjB,MAAM,EACN,iBAAiB,EACjB,UAAU,EACV,WAAW,EACd,MAAM,MAAM,CAAA;AAEb,MAAM,UAAU,qBAAqB,CACjC,YAGG,EACH,eAAgC;IAEhC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACH,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE;oBACH,aAAa,EAAE;wBACX,UAAU,EAAE,eAAe,CAAC,UAAU;wBACtC,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,oBAAoB;wBAClD,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB;wBAC5C,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;wBACxB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;qBAC7B;oBACD,eAAe;iBAClB;aACJ,CAAA;QACL,CAAC;QACD,OAAO;YACH,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE;gBACH,UAAU,EAAE,eAAe,CAAC,UAAU;gBACtC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,oBAAoB;gBAC3C,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB;gBACrC,MAAM,EAAE,GAAG,CAAC,MAAgB;aAC/B;SACJ,CAAA;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAoBD,MAAM,UAAU,wBAAwB,CACpC,aAAwC,EACxC,eAAuB;IAEvB,MAAM,mBAAmB,GAAG,WAAW,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC,6BAA6B;IACnG,MAAM,oBAAoB,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC,8BAA8B;IAE1G,OAAO,aAAa,CAAC,MAAM,CACvB,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE;QACpB,MAAM,YAAY,GAAG,MAAM,CAAC;YACxB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACvC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE;gBAClD,IAAI,EAAE,CAAC;aACV,CAAC;YACF,EAAE,CAAC,kBAAkB;SACxB,CAAC,CAAA;QAEF,OAAO,MAAM,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAA;IAClD,CAAC,EACD,MAAM,CAAC,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,CACtD,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,UAAmB,EACnB,WAE6C,EAC7C,MAAe,EACf,GAA4B,EAC5B,KAAa,EACb,YAAoB,EACpB,oBAA4B,EAC5B,QAA8B,EAC9B,WAAoB,EACpB,0BAA8C,EAC9C,iBAA6C,EAC7C,MAAc;IAEd,MAAM,YAAY,GAGZ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAClB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,IAAI,QAAgB,CAAA;IAEpB,+CAA+C;IAC/C,MAAM,WAAW,GACb,WAAW,CAAC,IAAI,KAAK,SAAS;QAC1B,CAAC,CAAC,WAAW,CACP,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAqC,CAC5D;QACH,CAAC,CAAC,IAAI,CAAA;IAEd,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,WAAW;gBAC1B,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE;gBAC5B,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAA;YAE5C,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAA;gBAEzB,MAAM,SAAS,GAAG,YAAY;qBACzB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;qBACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;oBACR,OAAO,WAAW;wBACd,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB;wBAC7B,CAAC,CAAC,qBAAqB,CACjB,EAAE,CAAC,GAAG;6BACD,oBAAwC,CAChD,CAAA;gBACX,CAAC,CAAC,CAAA;gBAEN,QAAQ,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,SAAS;gBACrC,mFAAmF;gBACnF,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAC3B;oBACI,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,KAAK;oBACZ,QAAQ;oBACR,GAAG,CAAC,0BAA0B,KAAK,SAAS,IAAI;wBAC5C,GAAG,EAAE,0BAA0B;qBAClC,CAAC;oBACF,GAAG,UAAU;iBAChB,CACJ,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,GACjD,WAAW,CAAA;gBACf,MAAM,SAAS,GAAG,YAAY;qBACzB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;qBACvC,GAAG,CACA,CAAC,EAAE,EAAE,EAAE,CACH,EAAE,CAAC,GAAG;qBACD,oBAA+C,CAC3D,CAAA;gBAEL,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;oBACtC,EAAE,EAAE,YAAY;oBAChB,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC;oBAC1D,GAAG,EAAE,0BAA0B;oBAC/B,KAAK,EAAE,KAAK;oBACZ,QAAQ;oBACR,GAAG,UAAU;iBAChB,CAAC,CAAA;YACN,CAAC;YAED,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;QAC5D,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAA;YAC7C,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;YAE7B,IAAI,CAAC,YAAY,6BAA6B,EAAE,CAAC;gBAC7C,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAC3D,MAAM,uBAAuB,GACzB,6BAA6B,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAEnD,IAAI,SAAS,GACT,SAAS,CAAA;gBAEb,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;oBACxB,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAA;gBACvC,CAAC;gBACD,IAAI,uBAAuB,CAAC,OAAO,EAAE,CAAC;oBAClC,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAA;gBACjD,CAAC;gBAED,IAAI,SAAS,EAAE,CAAC;oBACZ,MAAM,CAAC,KAAK,CACR;wBACI,SAAS;wBACT,YAAY,EAAE,YAAY;6BACrB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;6BACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;qBAC7C,EACD,0BAA0B,CAC7B,CAAA;oBAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CACjC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAClC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;oBAE5B,SAAS,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,GACjC,SAAgC,EAAE,KAAK;wBACpC,CAAC,CAAC,MAAO,SAAgC,CAAC,KAAK,EAAE;wBACjD,CAAC,CAAC,EACV,EAAE,CAAA;oBAEF,iBAAiB,CAAC,gBAAgB,CAC9B,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,EACvD,UAAU,EACV,SAAS,CAAC,MAAM,CACnB,CAAA;gBACL,CAAC;gBAED,IACI,CAAC,CAAC,aAAa,CAAC,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAC7D,CAAC;oBACC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;oBAC5B,MAAM,CAAC,KAAK,CACR;wBACI,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,IAAI,uBAAuB,CAAC,KAAK,EAAE;qBACnE,EACD,+BAA+B,CAClC,CAAA;oBACD,OAAO;wBACH,YAAY,EAAE,EAAE;wBAChB,QAAQ,EAAE,EAAE;wBACZ,cAAc,EAAE,KAAK;qBACxB,CAAA;gBACL,CAAC;YACL,CAAC;iBAAM,IACH,CAAC,YAAY,yBAAyB;gBACtC,GAAG,YAAY,yBAAyB,EAC1C,CAAC;gBACC,IAAI,CAAC,EAAE,KAAK,YAAY,iBAAiB,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CACP,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,EACzB,+CAA+C,CAClD,CAAA;oBACD,OAAO;wBACH,YAAY,EAAE,YAAY;wBAC1B,QAAQ,EAAE,EAAE;wBACZ,cAAc,EAAE,IAAI;qBACvB,CAAA;gBACL,CAAC;gBAED,IAAI,CAAC;oBACD,IAAI,YAAY,GAAQ,IAAI,CAAA;oBAE5B,IAAI,GAAG,YAAY,yBAAyB,EAAE,CAAC;wBAC3C,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAQ,CAAA;oBACjD,CAAC;yBAAM,CAAC;wBACJ,YAAY,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAQ,CAAA;oBAC1D,CAAC;oBACD,MAAM,WAAW,GAAG,iBAAiB,CAAC;wBAClC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB;wBACtD,IAAI,EAAE,YAAY;qBACrB,CAAC,CAAA;oBACF,MAAM,CAAC,KAAK,CACR;wBACI,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,YAAY,EAAE,YAAY;6BACrB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;6BACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;qBAC7C,EACD,0BAA0B,CAC7B,CAAA;oBAED,IACI,WAAW,CAAC,SAAS,KAAK,oBAAoB;wBAC9C,WAAW,CAAC,SAAS,KAAK,UAAU,EACtC,CAAC;wBACC,MAAM,CAAC,KAAK,CACR;4BACI,SAAS,EAAE,WAAW,CAAC,SAAS;4BAChC,IAAI,EAAE,WAAW,CAAC,IAAI;yBACzB,EACD,yBAAyB,CAC5B,CAAA;wBACD,OAAO;4BACH,YAAY,EAAE,EAAE;4BAChB,QAAQ,EAAE,EAAE;4BACZ,cAAc,EAAE,KAAK;yBACxB,CAAA;oBACL,CAAC;oBAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CACjC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAClC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAE9B,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC1C,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBAClB,MAAM,CAAC,KAAK,CACR,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAC9B,8BAA8B,CACjC,CAAA;oBACD,OAAO;wBACH,YAAY,EAAE,EAAE;wBAChB,QAAQ,EAAE,EAAE;wBACZ,cAAc,EAAE,KAAK;qBACxB,CAAA;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,KAAK,CACR,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAC9B,sBAAsB,CACzB,CAAA;gBACD,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;YACpE,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;AAChE,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,YAA0B,EAC1B,YAAiE,EACjE,MAAe,EACf,QAAgB,EAChB,MAAc,EACd,UAAmB;IAEnB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC;QACvD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,QAAQ;KACrB,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC;QACxD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,SAAS;KACtB,CAAC,CAAA;IAEF,MAAM,CAAC,KAAK,CACR,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,EACrD,iCAAiC,CACpC,CAAA;IAED,qBAAqB;IACrB,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAM;IACV,CAAC;IAED,+BAA+B;IAC/B,IAAI,WAAW,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC;QACnC,OAAM;IACV,CAAC;IAED,MAAM,CAAC,IAAI,CACP,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,EACrD,mCAAmC,CACtC,CAAA;IAED,KACI,IAAI,YAAY,GAAG,WAAW,EAC9B,YAAY,GAAG,YAAY,EAC3B,YAAY,EAAE,EAChB,CAAC;QACC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC;gBAC9C,OAAO,EAAE,MAAM;gBACf,EAAE,EAAE,MAAM,CAAC,OAAO;gBAClB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,YAAY;gBACnB,YAAY,EAAE,QAAQ;gBACtB,oBAAoB,EAAE,QAAQ;aACjC,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,CACR,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,EACvD,2BAA2B,CAC9B,CAAA;YAED,qFAAqF;YACrF,MAAM,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;YACjE,MAAM,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,kCAAkC,CAAC,CAAA;QACjE,CAAC;IACL,CAAC;AACL,CAAC"}
package/esm/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import "./cli/alto.js";
2
- //# sourceMappingURL=index.d.ts.map
package/esm/index.js DELETED
@@ -1,2 +0,0 @@
1
- import "./cli/alto.js";
2
- //# sourceMappingURL=index.js.map
package/esm/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAA"}
@@ -1,5 +0,0 @@
1
- export * from "./mempool.js";
2
- export * from "./monitoring.js";
3
- export * from "./reputationManager.js";
4
- export * from "./nullMempool.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1,5 +0,0 @@
1
- export * from "./mempool.js";
2
- export * from "./monitoring.js";
3
- export * from "./reputationManager.js";
4
- export * from "./nullMempool.js";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../mempool/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA"}
@@ -1,64 +0,0 @@
1
- import type { Metrics } from "../utils/index.js";
2
- import { type InterfaceValidator, type MempoolUserOperation, type ReferencedCodeHashes, type StorageMap, type SubmittedUserOperation, type TransactionInfo, type UserOperation, type UserOperationInfo } from "../types/index.js";
3
- import type { HexData32 } from "../types/index.js";
4
- import type { Logger } from "../utils/index.js";
5
- import { type Address, type Chain, type PublicClient, type Transport } from "viem";
6
- import type { Monitor } from "./monitoring.js";
7
- import { type InterfaceReputationManager } from "./reputationManager.js";
8
- export declare class MemoryMempool {
9
- private monitor;
10
- private publicClient;
11
- private reputationManager;
12
- private store;
13
- private throttledEntityBundleCount;
14
- private logger;
15
- private validator;
16
- private safeMode;
17
- private parallelUserOpsMaxSize;
18
- private queuedUserOpsMaxSize;
19
- private onlyUniqueSendersPerBundle;
20
- constructor(monitor: Monitor, reputationManager: InterfaceReputationManager, validator: InterfaceValidator, publicClient: PublicClient<Transport, Chain>, safeMode: boolean, logger: Logger, metrics: Metrics, parallelUserOpsMaxSize: number, queuedUserOpsMaxSize: number, onlyUniqueSendersPerBundle: boolean, throttledEntityBundleCount?: number);
21
- replaceSubmitted(userOperation: UserOperationInfo, transactionInfo: TransactionInfo): void;
22
- markSubmitted(userOpHash: `0x${string}`, transactionInfo: TransactionInfo): void;
23
- dumpOutstanding(): UserOperationInfo[];
24
- dumpProcessing(): UserOperationInfo[];
25
- dumpSubmittedOps(): SubmittedUserOperation[];
26
- removeSubmitted(userOpHash: `0x${string}`): void;
27
- removeProcessing(userOpHash: `0x${string}`): void;
28
- checkEntityMultipleRoleViolation(op: UserOperation): Promise<void>;
29
- getKnownEntities(): {
30
- sender: Set<Address>;
31
- paymasters: Set<Address>;
32
- factories: Set<Address>;
33
- };
34
- add(mempoolUserOperation: MempoolUserOperation, entryPoint: Address, referencedContracts?: ReferencedCodeHashes): boolean;
35
- shouldSkip(opInfo: UserOperationInfo, paymasterDeposit: {
36
- [paymaster: string]: bigint;
37
- }, stakedEntityCount: {
38
- [addr: string]: number;
39
- }, knownEntities: {
40
- sender: Set<`0x${string}`>;
41
- paymasters: Set<`0x${string}`>;
42
- factories: Set<`0x${string}`>;
43
- }, senders: Set<string>, storageMap: StorageMap): Promise<{
44
- skip: boolean;
45
- paymasterDeposit: {
46
- [paymaster: string]: bigint;
47
- };
48
- stakedEntityCount: {
49
- [addr: string]: number;
50
- };
51
- knownEntities: {
52
- sender: Set<`0x${string}`>;
53
- paymasters: Set<`0x${string}`>;
54
- factories: Set<`0x${string}`>;
55
- };
56
- senders: Set<string>;
57
- storageMap: StorageMap;
58
- }>;
59
- process(maxGasLimit: bigint, minOps?: number): Promise<UserOperationInfo[]>;
60
- get(opHash: HexData32): UserOperation | null;
61
- getQueuedUserOperations(userOperation: UserOperation, entryPoint: Address, _currentNonceValue?: bigint): Promise<UserOperation[]>;
62
- clear(): void;
63
- }
64
- //# sourceMappingURL=mempool.d.ts.map