@latticexyz/common 2.2.22-490159e880e2ac0e1ce8f5785873a25b99fb7668 → 2.2.22-4f57d5de39a17a180cd14e768cd2a56cfc8fd85f
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/dist/chains.d.ts +7 -5
- package/dist/{chunk-NFWCLD5I.js → chunk-ETXWXV5T.js} +14 -1
- package/dist/chunk-ETXWXV5T.js.map +1 -0
- package/dist/codegen.d.ts +12 -9
- package/dist/codegen.js +84 -46
- package/dist/codegen.js.map +1 -1
- package/dist/internal.d.ts +8 -1
- package/dist/internal.js +380 -2
- package/dist/internal.js.map +1 -1
- package/dist/utils.js +2 -4
- package/package.json +3 -3
- package/dist/chunk-CHXZROA7.js +0 -16
- package/dist/chunk-CHXZROA7.js.map +0 -1
- package/dist/chunk-NFWCLD5I.js.map +0 -1
package/dist/internal.js
CHANGED
|
@@ -5,8 +5,9 @@ import {
|
|
|
5
5
|
debug
|
|
6
6
|
} from "./chunk-73UWXFXB.js";
|
|
7
7
|
import {
|
|
8
|
+
bigIntMax,
|
|
8
9
|
uniqueBy
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ETXWXV5T.js";
|
|
10
11
|
|
|
11
12
|
// src/waitForTransactions.ts
|
|
12
13
|
import { waitForTransactionReceipt } from "viem/actions";
|
|
@@ -59,6 +60,9 @@ async function ensureContract({
|
|
|
59
60
|
return [];
|
|
60
61
|
}
|
|
61
62
|
if (deployedBytecodeSize != null) {
|
|
63
|
+
if (deployedBytecodeSize === 0) {
|
|
64
|
+
throw new Error(`Empty bytecode for ${debugLabel}`);
|
|
65
|
+
}
|
|
62
66
|
if (deployedBytecodeSize > contractSizeLimit) {
|
|
63
67
|
console.warn(
|
|
64
68
|
`
|
|
@@ -198,12 +202,386 @@ function getContractAddress({
|
|
|
198
202
|
}) {
|
|
199
203
|
return getCreate2Address2({ from: deployerAddress, bytecode, salt });
|
|
200
204
|
}
|
|
205
|
+
|
|
206
|
+
// src/transports/methods/estimateUserOperationGas.ts
|
|
207
|
+
import {
|
|
208
|
+
decodeFunctionResult,
|
|
209
|
+
encodeFunctionData,
|
|
210
|
+
zeroAddress
|
|
211
|
+
} from "viem";
|
|
212
|
+
import {
|
|
213
|
+
entryPoint07Address,
|
|
214
|
+
formatUserOperation,
|
|
215
|
+
formatUserOperationRequest,
|
|
216
|
+
toPackedUserOperation
|
|
217
|
+
} from "viem/account-abstraction";
|
|
218
|
+
|
|
219
|
+
// src/transports/entryPointGasSimulations.ts
|
|
220
|
+
var entryPointGasSimulationsAbi = [
|
|
221
|
+
{
|
|
222
|
+
inputs: [
|
|
223
|
+
{
|
|
224
|
+
components: [
|
|
225
|
+
{
|
|
226
|
+
internalType: "address",
|
|
227
|
+
name: "sender",
|
|
228
|
+
type: "address"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
internalType: "uint256",
|
|
232
|
+
name: "nonce",
|
|
233
|
+
type: "uint256"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
internalType: "bytes",
|
|
237
|
+
name: "initCode",
|
|
238
|
+
type: "bytes"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
internalType: "bytes",
|
|
242
|
+
name: "callData",
|
|
243
|
+
type: "bytes"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
internalType: "bytes32",
|
|
247
|
+
name: "accountGasLimits",
|
|
248
|
+
type: "bytes32"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
internalType: "uint256",
|
|
252
|
+
name: "preVerificationGas",
|
|
253
|
+
type: "uint256"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
internalType: "bytes32",
|
|
257
|
+
name: "gasFees",
|
|
258
|
+
type: "bytes32"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
internalType: "bytes",
|
|
262
|
+
name: "paymasterAndData",
|
|
263
|
+
type: "bytes"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
internalType: "bytes",
|
|
267
|
+
name: "signature",
|
|
268
|
+
type: "bytes"
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
internalType: "struct PackedUserOperation",
|
|
272
|
+
name: "op",
|
|
273
|
+
type: "tuple"
|
|
274
|
+
}
|
|
275
|
+
],
|
|
276
|
+
name: "estimateGas",
|
|
277
|
+
outputs: [
|
|
278
|
+
{
|
|
279
|
+
components: [
|
|
280
|
+
{
|
|
281
|
+
internalType: "uint256",
|
|
282
|
+
name: "verificationGas",
|
|
283
|
+
type: "uint256"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
internalType: "uint256",
|
|
287
|
+
name: "callGas",
|
|
288
|
+
type: "uint256"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
internalType: "uint256",
|
|
292
|
+
name: "paymasterVerificationGas",
|
|
293
|
+
type: "uint256"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
internalType: "uint256",
|
|
297
|
+
name: "paymasterPostOpGas",
|
|
298
|
+
type: "uint256"
|
|
299
|
+
}
|
|
300
|
+
],
|
|
301
|
+
internalType: "struct EntryPoint.GasInfo",
|
|
302
|
+
name: "",
|
|
303
|
+
type: "tuple"
|
|
304
|
+
}
|
|
305
|
+
],
|
|
306
|
+
stateMutability: "nonpayable",
|
|
307
|
+
type: "function"
|
|
308
|
+
}
|
|
309
|
+
];
|
|
310
|
+
var entryPointGasSimulationsBytecode = (
|
|
311
|
+
// eslint-disable-next-line max-len
|
|
312
|
+
"0x6080604052600436106101625760003560e01c806370a08231116100c0578063b760faf911610074578063c23a5cea11610059578063c23a5cea146105c2578063dbed18e0146105e2578063fc7e286d1461060257600080fd5b8063b760faf91461059a578063bb9fe6bf146105ad57600080fd5b8063850aaf62116100a5578063850aaf621461053a578063957122ab1461055a5780639b249f691461057a57600080fd5b806370a08231146104d7578063765e827f1461051a57600080fd5b8063205c28781161011757806335567e1a116100fc57806335567e1a146102a05780633b6a3539146103355780635287ce121461038857600080fd5b8063205c28781461026057806322cdde4c1461028057600080fd5b80630396cb60116101485780630396cb60146101e75780630bd28e3b146101fa5780631b2e01b81461021a57600080fd5b806242dc531461017757806301ffc9a7146101b757600080fd5b3661017257610170336106d4565b005b600080fd5b34801561018357600080fd5b50610197610192366004613ebe565b6106f5565b604080519384526020840192909252908201526060015b60405180910390f35b3480156101c357600080fd5b506101d76101d2366004613f84565b6108ca565b60405190151581526020016101ae565b6101706101f5366004613fc6565b610a47565b34801561020657600080fd5b50610170610215366004614014565b610ddd565b34801561022657600080fd5b5061025261023536600461402f565b600160209081526000928352604080842090915290825290205481565b6040519081526020016101ae565b34801561026c57600080fd5b5061017061027b366004614064565b610e25565b34801561028c57600080fd5b5061025261029b366004614090565b610fcf565b3480156102ac57600080fd5b506102526102bb36600461402f565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff8516845290915290819020549082901b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161792915050565b34801561034157600080fd5b50610355610350366004614090565b611011565b6040516101ae91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561039457600080fd5b506104756103a33660046140cc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff1660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046dffffffffffffffffffffffffffff16928101929092526f01000000000000000000000000000000810463ffffffff166060830152730100000000000000000000000000000000000000900465ffffffffffff16608082015290565b6040516101ae9190600060a082019050825182526020830151151560208301526dffffffffffffffffffffffffffff604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b3480156104e357600080fd5b506102526104f23660046140cc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561052657600080fd5b5061017061053536600461412e565b6110af565b34801561054657600080fd5b50610170610555366004614185565b61122c565b34801561056657600080fd5b506101706105753660046141da565b6112d1565b34801561058657600080fd5b5061017061059536600461425f565b611429565b6101706105a83660046140cc565b6106d4565b3480156105b957600080fd5b50610170611514565b3480156105ce57600080fd5b506101706105dd3660046140cc565b6116f4565b3480156105ee57600080fd5b506101706105fd36600461412e565b6119e1565b34801561060e57600080fd5b5061068a61061d3660046140cc565b6000602081905290815260409020805460019091015460ff81169061010081046dffffffffffffffffffffffffffff16906f01000000000000000000000000000000810463ffffffff1690730100000000000000000000000000000000000000900465ffffffffffff1685565b6040805195865293151560208601526dffffffffffffffffffffffffffff9092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a0016101ae565b60015b60058110156106e8576001016106d7565b6106f182611e8d565b5050565b6000806000805a905033301461076c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8651606081015160a082015181016127100160405a603f0281610791576107916142a1565b0410156107c2577fdeaddead0000000000000000000000000000000000000000000000000000000060005260206000fd5b8951600090156108635760006107df846000015160008e86611ee3565b9050806108615760006107f3610800611efb565b80519091501561085b57846000015173ffffffffffffffffffffffffffffffffffffffff168c602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20187602001518460405161085292919061433e565b60405180910390a35b60019250505b505b5a8403955060008a60800151870190506108b6828c8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611f27915050565b909d979c509a509598505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f60fc6b6e00000000000000000000000000000000000000000000000000000000148061095d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f915074d800000000000000000000000000000000000000000000000000000000145b806109a957507fffffffff0000000000000000000000000000000000000000000000000000000082167fcf28ef9700000000000000000000000000000000000000000000000000000000145b806109f557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3e84f02100000000000000000000000000000000000000000000000000000000145b80610a4157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b33600090815260208190526040902063ffffffff8216610ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606401610763565b600181015463ffffffff6f0100000000000000000000000000000090910481169083161015610b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610763565b6001810154600090610b7690349061010090046dffffffffffffffffffffffffffff16614386565b905060008111610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152606401610763565b6dffffffffffffffffffffffffffff811115610c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152606401610763565b6040805160a08101825283548152600160208083018281526dffffffffffffffffffffffffffff86811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16730100000000000000000000000000000000000000027fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff979094166f0100000000000000000000000000000002969096167fffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff91909516610100027fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff991515999099167fffffffffffffffffffffffffffffffffff00000000000000000000000000000090941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b33600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff851684529091528120805491610e1d83614399565b919050555050565b3360009081526020819052604090208054821115610e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610763565b8054610eac9083906143d1565b81556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610f59576040519150601f19603f3d011682016040523d82523d6000602084013e610f5e565b606091505b5050905080610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152606401610763565b50505050565b6000610fda82612118565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b61103c6040518060800160405280600081526020016000815260200160008152602001600081525090565b611044612131565b61104c613ba4565b6110776040518060800160405280600081526020016000815260200160008152602001600081525090565b61108084612172565b61108d6000858484612360565b505061109c60008584846125d3565b509150506110aa6001600255565b919050565b6110b7612131565b8160008167ffffffffffffffff8111156110d3576110d3613c56565b60405190808252806020026020018201604052801561110c57816020015b6110f9613ba4565b8152602001906001900390816110f15790505b50905060005b8281101561118557600082828151811061112e5761112e6143e4565b60200260200101519050600080611169848a8a87818110611151576111516143e4565b90506020028101906111639190614413565b85612a3c565b9150915061117a8483836000612a83565b505050600101611112565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b8381101561120f57611203818888848181106111d2576111d26143e4565b90506020028101906111e49190614413565b8584815181106111f6576111f66143e4565b6020026020010151612cd8565b909101906001016111b4565b5061121a8482612d1a565b5050506112276001600255565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051611256929190614451565b600060405180830381855af49150503d8060008114611291576040519150601f19603f3d011682016040523d82523d6000602084013e611296565b606091505b509150915081816040517f99410554000000000000000000000000000000000000000000000000000000008152600401610763929190614461565b831580156112f4575073ffffffffffffffffffffffffffffffffffffffff83163b155b1561135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610763565b601481106113ed576000611372601482848661447c565b61137b916144a6565b60601c9050803b6000036113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610763565b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610763565b600061144a60065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3684846040518363ffffffff1660e01b8152600401611484929190614537565b6020604051808303816000875af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c7919061454b565b6040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150602401610763565b336000908152602081905260408120600181015490916f0100000000000000000000000000000090910463ffffffff1690036115ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610763565b600181015460ff1661161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152606401610763565b6001810154600090611645906f01000000000000000000000000000000900463ffffffff1642614568565b6001830180547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001673010000000000000000000000000000000000000065ffffffffffff84169081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046dffffffffffffffffffffffffffff1680611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152606401610763565b6001820154730100000000000000000000000000000000000000900465ffffffffffff1661180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610763565b60018201544273010000000000000000000000000000000000000090910465ffffffffffff16111561189c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610763565b6001820180547fffffffffffffff000000000000000000000000000000000000000000000000ff1690556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611971576040519150601f19603f3d011682016040523d82523d6000602084013e611976565b606091505b5050905080610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610763565b6119e9612131565b816000805b82811015611bdb5736868683818110611a0957611a096143e4565b9050602002810190611a1b919061458e565b9050366000611a2a83806145c2565b90925090506000611a4160408501602086016140cc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821601611ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610763565b73ffffffffffffffffffffffffffffffffffffffff811615611bbf5773ffffffffffffffffffffffffffffffffffffffff8116632dd811338484611b29604089018961462a565b6040518563ffffffff1660e01b8152600401611b4894939291906147df565b60006040518083038186803b158015611b6057600080fd5b505afa925050508015611b71575060015b611bbf576040517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610763565b611bc98287614386565b955050600190930192506119ee915050565b5060008167ffffffffffffffff811115611bf757611bf7613c56565b604051908082528060200260200182016040528015611c3057816020015b611c1d613ba4565b815260200190600190039081611c155790505b5090506000805b84811015611d0d5736888883818110611c5257611c526143e4565b9050602002810190611c64919061458e565b9050366000611c7383806145c2565b90925090506000611c8a60408501602086016140cc565b90508160005b81811015611cfb576000898981518110611cac57611cac6143e4565b60200260200101519050600080611ccf8b898987818110611151576111516143e4565b91509150611cdf84838389612a83565b8a611ce981614399565b9b505060019093019250611c90915050565b505060019094019350611c3792505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b85811015611e485736898983818110611d5857611d586143e4565b9050602002810190611d6a919061458e565b9050611d7c60408201602083016140cc565b73ffffffffffffffffffffffffffffffffffffffff167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a2366000611dcb83806145c2565b90925090508060005b81811015611e3757611e1688858584818110611df257611df26143e4565b9050602002810190611e049190614413565b8b8b815181106111f6576111f66143e4565b611e209088614386565b965087611e2c81614399565b985050600101611dd4565b505060019093019250611d3d915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a2611e7e8682612d1a565b50505050506112276001600255565b6000611e998234612e61565b90508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040516116e891815260200190565b6000806000845160208601878987f195945050505050565b60603d82811115611f095750815b604051602082018101604052818152816000602083013e9392505050565b60008060005a865190915060009081611f3f82612ea1565b60e083015190915073ffffffffffffffffffffffffffffffffffffffff8116611f6b5782519350612058565b8093506000895111156120585760005a8984029850905060028c6002811115611f9657611f96614896565b14612052578173ffffffffffffffffffffffffffffffffffffffff16637c627b218560a001518e8d8c886040518663ffffffff1660e01b8152600401611fdf94939291906148c5565b600060405180830381600088803b158015611ff957600080fd5b5087f19350505050801561200b575060015b61205257600061201c610800611efb565b9050806040517fad7954bc0000000000000000000000000000000000000000000000000000000081526004016107639190614928565b5a900395505b5a60408b015190860398909801978289029750878110156120d45760028c600281111561208757612087614896565b036120aa578097506120988b612ed3565b6120a58b60008a8c612f2f565b612109565b7fdeadaa510000000000000000000000000000000000000000000000000000000060005260206000fd5b8781036120e18682612e61565b506000808e60028111156120f7576120f7614896565b1490506121068d828c8e612f2f565b50505b50505050505094509492505050565b600061212382612fb7565b805190602001209050919050565b600280540361216c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b6122726040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f01000000000000000000000000000000000000000000000000000000000000006036820152600090603701604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190528051602090910120600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550565b3063957122ab612285604084018461462a565b61229260208601866140cc565b61229f60e087018761462a565b6040518663ffffffff1660e01b81526004016122bf95949392919061493b565b60006040518083038186803b1580156122d757600080fd5b505afa9250505080156122e8575060015b61235d576122f461498a565b806308c379a00361235157506123086149a6565b806123135750612353565b8051156106f1576000816040517f220266b600000000000000000000000000000000000000000000000000000000815260040161076392919061433e565b505b3d6000803e3d6000fd5b50565b60008060005a8551909150612375878261307c565b61237e87610fcf565b6020870152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610763565b60006124578460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b90506124668b8b8b84876131c7565b965061247a84600001518560200151613408565b6124e9578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a8603111561255e578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60e084015160609073ffffffffffffffffffffffffffffffffffffffff161561259f5760005a90506125928d8d8d86613463565b985091505a900360408a01525b60408a018290528060608b015260a08b01355a90960395909501608090990189905250505094909352909590945092505050565b6000805a905060006125e6856060015190565b60405190915060009036826125fe60608b018b61462a565b915091506060600082600381111561261557843591505b507f72288ed1000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008216016127395760008c8c60200151604051602401612678929190614a4e565b604051602081830303815290604052638dd7712f60e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090503073ffffffffffffffffffffffffffffffffffffffff166242dc53828e8b6040516024016126ef93929190614b34565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509250506127b0565b3073ffffffffffffffffffffffffffffffffffffffff166242dc5385858e8b60405160240161276b9493929190614b74565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505091505b60603073ffffffffffffffffffffffffffffffffffffffff16836040516127d79190614bab565b6000604051808303816000865af19150503d8060008114612814576040519150601f19603f3d011682016040523d82523d6000602084013e612819565b606091505b509097509050861561285f576000808280602001905181019061283c9190614bbd565b809350819450829e50505050818d6020018181525050808d606001818152505050505b50505050505080612a315760003d806020036128815760206000803e60005191505b507fdeaddead00000000000000000000000000000000000000000000000000000000810361291457886040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052600f908201527f41413935206f7574206f66206761730000000000000000000000000000000000606082015260800190565b7fdeadaa51000000000000000000000000000000000000000000000000000000008103612986575a61294690856143d1565b60208701819052608088015160009161295f9190614386565b604089015190915061297089612ed3565b61297d8960008385612f2f565b9550612a2f9050565b865180516020808a015192015173ffffffffffffffffffffffffffffffffffffffff90911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f4792906129da610800611efb565b6040516129e892919061433e565b60405180910390a35a6129fb90856143d1565b602087018190526080880151600091612a149190614386565b90506000612a2560028a8785611f27565b60608a0152965050505b505b505050949350505050565b600080612a6a6040518060800160405280600081526020016000815260200160008152602001600081525090565b612a7686868684612360565b9250925050935093915050565b600080612a8f856136ab565b915091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612b3157856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526014908201527f41413234207369676e6174757265206572726f72000000000000000000000000606082015260800190565b8015612ba257856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b6000612bad856136ab565b9250905073ffffffffffffffffffffffffffffffffffffffff811615612c3857866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526014908201527f41413334207369676e6174757265206572726f72000000000000000000000000606082015260800190565b8115612ccf57866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b50505050505050565b6000612d056040518060800160405280600081526020016000815260200160008152602001600081525090565b612d11858585846125d3565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610763565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612df1576040519150601f19603f3d011682016040523d82523d6000602084013e612df6565b606091505b5050905080611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610763565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548290612e95908590614386565b91829055509392505050565b61010081015161012082015160009190808203612ebf575092915050565b612ecb824883016136fe565b949350505050565b805180516020808401519281015160405190815273ffffffffffffffffffffffffffffffffffffffff90921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e0810151815160208088015193015160405173ffffffffffffffffffffffffffffffffffffffff9384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f91612fa99189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b6060813560208301356000612fd7612fd2604087018761462a565b613716565b90506000612feb612fd2606088018861462a565b9050608086013560a087013560c0880135600061300e612fd260e08c018c61462a565b6040805173ffffffffffffffffffffffffffffffffffffffff9a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b61308960208301836140cc565b73ffffffffffffffffffffffffffffffffffffffff168152602082810135908201526fffffffffffffffffffffffffffffffff6080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c61012082015236600061310260e085018561462a565b909250905080156131ac576034811015613178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610763565b6131828282613729565b60a0860152608085015273ffffffffffffffffffffffffffffffffffffffff1660e0840152610fc9565b600060e084018190526080840181905260a084015250505050565b82518051600091906131e688876131e160408b018b61462a565b61379a565b60e0820151600073ffffffffffffffffffffffffffffffffffffffff82166132445773ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205487811161323d57808803613240565b60005b9150505b60208801516040517f19822f7c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916319822f7c9189916132a0918e91908790600401614beb565b60206040518083038160008887f1935050505080156132fa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526132f791810190614c10565b60015b61333e578961330a610800611efb565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610763929190614c29565b945073ffffffffffffffffffffffffffffffffffffffff82166133fb5773ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090208054808911156133f5578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832084821c808552925282208054849167ffffffffffffffff831691908561345583614399565b909155501495945050505050565b60606000805a855160e081015173ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090208054939450919290919087811015613512578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b87810382600001819055506000846080015190508373ffffffffffffffffffffffffffffffffffffffff166352b7512c828d8d602001518d6040518563ffffffff1660e01b815260040161356893929190614beb565b60006040518083038160008887f1935050505080156135c757506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135c49190810190614c76565b60015b61360b578b6135d7610800611efb565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610763929190614d02565b9098509650805a87031115612109578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760608201527f61734c696d697400000000000000000000000000000000000000000000000000608082015260a00190565b600080826000036136c157506000928392509050565b60006136cc84613b26565b9050806040015165ffffffffffff164211806136f35750806020015165ffffffffffff1642105b905194909350915050565b600081831061370d578161370f565b825b9392505050565b6000604051828085833790209392505050565b6000808061373a601482868861447c565b613743916144a6565b60601c61375460246014878961447c565b61375d91614d4f565b60801c61376e60346024888a61447c565b61377791614d4f565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b8015610fc95782515173ffffffffffffffffffffffffffffffffffffffff81163b1561382b57846040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b600061384c60065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3686600001516040015186866040518463ffffffff1660e01b815260040161388f929190614537565b60206040518083038160008887f11580156138ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138d3919061454b565b905073ffffffffffffffffffffffffffffffffffffffff811661395b57856040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146139f857856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161076391815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b8073ffffffffffffffffffffffffffffffffffffffff163b600003613a8157856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161076391815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000613a90601482868861447c565b613a99916144a6565b60601c90508273ffffffffffffffffffffffffffffffffffffffff1686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051613b1592919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613b62575065ffffffffffff5b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a00160405280613c31604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810181811067ffffffffffffffff82111715613ca557613ca5613c56565b60405250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715613cef57613cef613c56565b6040525050565b604051610140810167ffffffffffffffff81118282101715613d1a57613d1a613c56565b60405290565b600067ffffffffffffffff821115613d3a57613d3a613c56565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461235d57600080fd5b80356110aa81613d66565b60008183036101c0811215613da757600080fd5b604051613db381613c85565b80925061014080831215613dc657600080fd5b613dce613cf6565b9250613dd985613d88565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c0840152613e2360e08601613d88565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f840112613e8757600080fd5b50813567ffffffffffffffff811115613e9f57600080fd5b602083019150836020828501011115613eb757600080fd5b9250929050565b6000806000806102008587031215613ed557600080fd5b843567ffffffffffffffff80821115613eed57600080fd5b818701915087601f830112613f0157600080fd5b8135613f0c81613d20565b604051613f198282613cab565b8281528a6020848701011115613f2e57600080fd5b82602086016020830137600060208483010152809850505050613f548860208901613d93565b94506101e0870135915080821115613f6b57600080fd5b50613f7887828801613e75565b95989497509550505050565b600060208284031215613f9657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461370f57600080fd5b600060208284031215613fd857600080fd5b813563ffffffff8116811461370f57600080fd5b803577ffffffffffffffffffffffffffffffffffffffffffffffff811681146110aa57600080fd5b60006020828403121561402657600080fd5b61370f82613fec565b6000806040838503121561404257600080fd5b823561404d81613d66565b915061405b60208401613fec565b90509250929050565b6000806040838503121561407757600080fd5b823561408281613d66565b946020939093013593505050565b6000602082840312156140a257600080fd5b813567ffffffffffffffff8111156140b957600080fd5b8201610120818503121561370f57600080fd5b6000602082840312156140de57600080fd5b813561370f81613d66565b60008083601f8401126140fb57600080fd5b50813567ffffffffffffffff81111561411357600080fd5b6020830191508360208260051b8501011115613eb757600080fd5b60008060006040848603121561414357600080fd5b833567ffffffffffffffff81111561415a57600080fd5b614166868287016140e9565b909450925050602084013561417a81613d66565b809150509250925092565b60008060006040848603121561419a57600080fd5b83356141a581613d66565b9250602084013567ffffffffffffffff8111156141c157600080fd5b6141cd86828701613e75565b9497909650939450505050565b6000806000806000606086880312156141f257600080fd5b853567ffffffffffffffff8082111561420a57600080fd5b61421689838a01613e75565b90975095506020880135915061422b82613d66565b9093506040870135908082111561424157600080fd5b5061424e88828901613e75565b969995985093965092949392505050565b6000806020838503121561427257600080fd5b823567ffffffffffffffff81111561428957600080fd5b61429585828601613e75565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60005b838110156142eb5781810151838201526020016142d3565b50506000910152565b6000815180845261430c8160208601602086016142d0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b828152604060208201526000612ecb60408301846142f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a4157610a41614357565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143ca576143ca614357565b5060010190565b81810381811115610a4157610a41614357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261444757600080fd5b9190910192915050565b8183823760009101908152919050565b8215158152604060208201526000612ecb60408301846142f4565b6000808585111561448c57600080fd5b8386111561449957600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156144e65780818660140360031b1b83161692505b505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612ecb6020830184866144ee565b60006020828403121561455d57600080fd5b815161370f81613d66565b65ffffffffffff81811683821601908082111561458757614587614357565b5092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261444757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126145f757600080fd5b83018035915067ffffffffffffffff82111561461257600080fd5b6020019150600581901b3603821315613eb757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261465f57600080fd5b83018035915067ffffffffffffffff82111561467a57600080fd5b602001915036819003821315613eb757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126146c457600080fd5b830160208101925035905067ffffffffffffffff8111156146e457600080fd5b803603821315613eb757600080fd5b600061012061471f8461470585613d88565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208301356020850152614736604084018461468f565b82604087015261474983870182846144ee565b9250505061475a606084018461468f565b858303606087015261476d8382846144ee565b925050506080830135608085015260a083013560a085015260c083013560c085015261479c60e084018461468f565b85830360e08701526147af8382846144ee565b925050506101006147c28185018561468f565b868403838801526147d48482846144ee565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b8981101561487f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18c360301811261485d578283fd5b614869868d83016146f3565b95505060209384019392909201916001016147fd565b5050505082810360208401526147d48185876144ee565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000600386106148fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8582526080602083015261491560808301866142f4565b6040830194909452506060015292915050565b60208152600061370f60208301846142f4565b60608152600061494f6060830187896144ee565b73ffffffffffffffffffffffffffffffffffffffff86166020840152828103604084015261497e8185876144ee565b98975050505050505050565b600060033d11156149a35760046000803e5060005160e01c5b90565b600060443d10156149b45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715614a0257505050505090565b8285019150815181811115614a1a5750505050505090565b843d8701016020828501011115614a345750505050505090565b614a4360208286010187613cab565b509095945050505050565b604081526000614a6160408301856146f3565b90508260208301529392505050565b8051805173ffffffffffffffffffffffffffffffffffffffff1683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151614aef60e085018273ffffffffffffffffffffffffffffffffffffffff169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352614b48818401876142f4565b9050614b576020840186614a70565b8281036101e0840152614b6a81856142f4565b9695505050505050565b6000610200808352614b8981840187896144ee565b9050614b986020840186614a70565b8281036101e08401526147d481856142f4565b600082516144478184602087016142d0565b600080600060608486031215614bd257600080fd5b8351925060208401519150604084015190509250925092565b606081526000614bfe60608301866146f3565b60208301949094525060400152919050565b600060208284031215614c2257600080fd5b5051919050565b82815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015260a060408201526000612ecb60a08301846142f4565b60008060408385031215614c8957600080fd5b825167ffffffffffffffff811115614ca057600080fd5b8301601f81018513614cb157600080fd5b8051614cbc81613d20565b604051614cc98282613cab565b828152876020848601011115614cde57600080fd5b614cef8360208301602087016142d0565b6020969096015195979596505050505050565b82815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015260a060408201526000612ecb60a08301846142f4565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156144e65760109490940360031b84901b169092169291505056fea2646970667358221220cd7965683afa94170eaa51ceebadcfd731e9b31f39f75621861d25875bde7f2a64736f6c63430008170033"
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
// src/transports/methods/estimateUserOperationGas.ts
|
|
316
|
+
async function estimateUserOperationGas({
|
|
317
|
+
request,
|
|
318
|
+
params
|
|
319
|
+
}) {
|
|
320
|
+
const userOp = formatUserOperation(params[0]);
|
|
321
|
+
const gasSimulation = await simulateGas({ userOp, request });
|
|
322
|
+
const gasLimits = {
|
|
323
|
+
verificationGasLimit: gasSimulation.verificationGas * 2n,
|
|
324
|
+
callGasLimit: bigIntMax(gasSimulation.callGas * 2n, 9000n),
|
|
325
|
+
paymasterVerificationGasLimit: gasSimulation.paymasterVerificationGas * 2n,
|
|
326
|
+
paymasterPostOpGasLimit: gasSimulation.paymasterPostOpGas * 2n,
|
|
327
|
+
preVerificationGas: 20000n
|
|
328
|
+
};
|
|
329
|
+
return formatUserOperationRequest({
|
|
330
|
+
...gasLimits
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
async function simulateGas({ request, userOp }) {
|
|
334
|
+
const simulationUserOp = {
|
|
335
|
+
...userOp,
|
|
336
|
+
preVerificationGas: 0n,
|
|
337
|
+
callGasLimit: 10000000n,
|
|
338
|
+
verificationGasLimit: 10000000n,
|
|
339
|
+
// https://github.com/pimlicolabs/alto/blob/471998695e5ec75ef88dda3f8a534f47c24bcd1a/src/rpc/methods/eth_estimateUserOperationGas.ts#L117
|
|
340
|
+
maxPriorityFeePerGas: userOp.maxFeePerGas,
|
|
341
|
+
paymasterPostOpGasLimit: 2000000n,
|
|
342
|
+
paymasterVerificationGasLimit: 5000000n
|
|
343
|
+
};
|
|
344
|
+
const packedUserOp = toPackedUserOperation(simulationUserOp);
|
|
345
|
+
const simulationData = encodeFunctionData({
|
|
346
|
+
abi: entryPointGasSimulationsAbi,
|
|
347
|
+
functionName: "estimateGas",
|
|
348
|
+
args: [packedUserOp]
|
|
349
|
+
});
|
|
350
|
+
const hasPaymaster = userOp.paymaster != null && userOp.paymaster !== zeroAddress;
|
|
351
|
+
const senderBalanceOverride = hasPaymaster ? {} : { [userOp.sender]: { balance: "0xFFFFFFFFFFFFFFFFFFFF" } };
|
|
352
|
+
const simulationParams = [
|
|
353
|
+
{
|
|
354
|
+
to: entryPoint07Address,
|
|
355
|
+
data: simulationData
|
|
356
|
+
},
|
|
357
|
+
"pending",
|
|
358
|
+
{
|
|
359
|
+
...senderBalanceOverride,
|
|
360
|
+
[entryPoint07Address]: {
|
|
361
|
+
code: entryPointGasSimulationsBytecode
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
];
|
|
365
|
+
const encodedSimulationResult = await request({
|
|
366
|
+
// TODO: go back to wiresaw_callEntryPointSimulations once bytecode is updated
|
|
367
|
+
method: "wiresaw_call",
|
|
368
|
+
// "wiresaw_callEntryPointSimulations",
|
|
369
|
+
params: simulationParams
|
|
370
|
+
});
|
|
371
|
+
return decodeFunctionResult({
|
|
372
|
+
abi: entryPointGasSimulationsAbi,
|
|
373
|
+
functionName: "estimateGas",
|
|
374
|
+
data: encodedSimulationResult
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// src/transports/methods/getUserOperationReceipt.ts
|
|
379
|
+
import {
|
|
380
|
+
decodeEventLog,
|
|
381
|
+
encodeEventTopics,
|
|
382
|
+
numberToHex,
|
|
383
|
+
parseEventLogs,
|
|
384
|
+
zeroAddress as zeroAddress2
|
|
385
|
+
} from "viem";
|
|
386
|
+
import { entryPoint07Abi } from "viem/account-abstraction";
|
|
387
|
+
var userOperationRevertReasonAbi = [
|
|
388
|
+
entryPoint07Abi.find(
|
|
389
|
+
(item) => item.type === "event" && item.name === "UserOperationRevertReason"
|
|
390
|
+
)
|
|
391
|
+
];
|
|
392
|
+
var userOperationEventTopic = encodeEventTopics({
|
|
393
|
+
abi: entryPoint07Abi,
|
|
394
|
+
eventName: "UserOperationEvent"
|
|
395
|
+
});
|
|
396
|
+
function getUserOperationReceipt(userOpHash, receipt) {
|
|
397
|
+
const userOperationRevertReasonTopicEvent = encodeEventTopics({
|
|
398
|
+
abi: userOperationRevertReasonAbi
|
|
399
|
+
})[0];
|
|
400
|
+
let entryPoint = zeroAddress2;
|
|
401
|
+
let revertReason = void 0;
|
|
402
|
+
let startIndex = -1;
|
|
403
|
+
let endIndex = -1;
|
|
404
|
+
receipt.logs.forEach((log, index) => {
|
|
405
|
+
if (log?.topics[0] === userOperationEventTopic[0]) {
|
|
406
|
+
if (log.topics[1] === userOpHash) {
|
|
407
|
+
endIndex = index;
|
|
408
|
+
entryPoint = log.address;
|
|
409
|
+
} else if (endIndex === -1) {
|
|
410
|
+
startIndex = index;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
if (log?.topics[0] === userOperationRevertReasonTopicEvent) {
|
|
414
|
+
if (log.topics[1] === userOpHash) {
|
|
415
|
+
const decodedLog = decodeEventLog({
|
|
416
|
+
abi: userOperationRevertReasonAbi,
|
|
417
|
+
data: log.data,
|
|
418
|
+
topics: log.topics
|
|
419
|
+
});
|
|
420
|
+
revertReason = decodedLog.args.revertReason;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
if (endIndex === -1) {
|
|
425
|
+
throw new Error("fatal: no UserOperationEvent in logs");
|
|
426
|
+
}
|
|
427
|
+
const logs = receipt.logs.slice(startIndex + 1, endIndex);
|
|
428
|
+
const userOperationEvent = parseEventLogs({
|
|
429
|
+
abi: entryPoint07Abi,
|
|
430
|
+
eventName: "UserOperationEvent",
|
|
431
|
+
args: {
|
|
432
|
+
userOpHash
|
|
433
|
+
},
|
|
434
|
+
logs: receipt.logs
|
|
435
|
+
})[0];
|
|
436
|
+
let paymaster = userOperationEvent.args.paymaster;
|
|
437
|
+
paymaster = paymaster === zeroAddress2 ? void 0 : paymaster;
|
|
438
|
+
return {
|
|
439
|
+
userOpHash,
|
|
440
|
+
entryPoint,
|
|
441
|
+
sender: userOperationEvent.args.sender,
|
|
442
|
+
nonce: numberToHex(userOperationEvent.args.nonce),
|
|
443
|
+
paymaster,
|
|
444
|
+
actualGasUsed: numberToHex(userOperationEvent.args.actualGasUsed),
|
|
445
|
+
actualGasCost: numberToHex(userOperationEvent.args.actualGasCost),
|
|
446
|
+
success: userOperationEvent.args.success,
|
|
447
|
+
reason: revertReason,
|
|
448
|
+
logs,
|
|
449
|
+
receipt
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// src/transports/wiresaw.ts
|
|
454
|
+
function wiresaw(transport) {
|
|
455
|
+
return (opts) => {
|
|
456
|
+
const { request: originalRequest, ...rest } = transport.wiresaw(opts);
|
|
457
|
+
let chainId = null;
|
|
458
|
+
const transactionHashes = {};
|
|
459
|
+
const transactionReceipts = {};
|
|
460
|
+
return {
|
|
461
|
+
...rest,
|
|
462
|
+
// TODO: type `request` so we don't have to cast
|
|
463
|
+
async request(req) {
|
|
464
|
+
try {
|
|
465
|
+
if (req.method === "eth_chainId") {
|
|
466
|
+
if (chainId != null) return chainId;
|
|
467
|
+
if (transport.fallbackEth) {
|
|
468
|
+
const { request: fallbackRequest } = transport.fallbackEth(opts);
|
|
469
|
+
return chainId = await fallbackRequest(req);
|
|
470
|
+
}
|
|
471
|
+
return chainId = await originalRequest(req);
|
|
472
|
+
}
|
|
473
|
+
if (req.method === "eth_estimateGas") {
|
|
474
|
+
return await originalRequest({ ...req, method: "wiresaw_estimateGas" });
|
|
475
|
+
}
|
|
476
|
+
if (req.method === "eth_call") {
|
|
477
|
+
return await originalRequest({ ...req, method: "wiresaw_call" });
|
|
478
|
+
}
|
|
479
|
+
if (req.method === "eth_getTransactionCount") {
|
|
480
|
+
return await originalRequest({ ...req, method: "wiresaw_getTransactionCount" });
|
|
481
|
+
}
|
|
482
|
+
if (req.method === "eth_getTransactionReceipt") {
|
|
483
|
+
return await getTransactionReceipt(req.params[0]);
|
|
484
|
+
}
|
|
485
|
+
if (req.method === "eth_sendUserOperation") {
|
|
486
|
+
const { userOpHash, txHash } = await originalRequest({
|
|
487
|
+
...req,
|
|
488
|
+
method: "wiresaw_sendUserOperation"
|
|
489
|
+
});
|
|
490
|
+
transactionHashes[userOpHash] = txHash;
|
|
491
|
+
return userOpHash;
|
|
492
|
+
}
|
|
493
|
+
if (req.method === "eth_getUserOperationReceipt") {
|
|
494
|
+
const userOpHash = req.params[0];
|
|
495
|
+
const knownTransactionHash = transactionHashes[userOpHash];
|
|
496
|
+
if (knownTransactionHash) {
|
|
497
|
+
const transactionReceipt = await getTransactionReceipt(knownTransactionHash);
|
|
498
|
+
if (transactionReceipt) {
|
|
499
|
+
return getUserOperationReceipt(userOpHash, transactionReceipt);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
if (transport.fallbackBundler) {
|
|
503
|
+
const { request: fallbackRequest } = transport.fallbackBundler(opts);
|
|
504
|
+
return await fallbackRequest(req);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
if (req.method === "eth_estimateUserOperationGas") {
|
|
508
|
+
try {
|
|
509
|
+
return await estimateUserOperationGas({
|
|
510
|
+
request: originalRequest,
|
|
511
|
+
params: req.params
|
|
512
|
+
});
|
|
513
|
+
} catch (e) {
|
|
514
|
+
console.warn("[wiresaw] estimating user operation gas failed, falling back to bundler", e);
|
|
515
|
+
}
|
|
516
|
+
if (transport.fallbackBundler) {
|
|
517
|
+
const { request: fallbackRequest } = transport.fallbackBundler(opts);
|
|
518
|
+
return await fallbackRequest(req);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
if (req.method === "eth_blockNumber" || req.method === "eth_getBlockByNumber" || req.method === "eth_maxPriorityFeePerGas") {
|
|
522
|
+
if (transport.fallbackEth) {
|
|
523
|
+
const { request: fallbackRequest } = transport.fallbackEth(opts);
|
|
524
|
+
return await fallbackRequest(req);
|
|
525
|
+
}
|
|
526
|
+
return await originalRequest(req);
|
|
527
|
+
}
|
|
528
|
+
return await originalRequest(req);
|
|
529
|
+
} catch (e) {
|
|
530
|
+
console.warn("[wiresaw] request error", e);
|
|
531
|
+
const bundlerMethods = [
|
|
532
|
+
"eth_estimateUserOperationGas",
|
|
533
|
+
"eth_sendUserOperation",
|
|
534
|
+
"eth_getUserOperationReceipt"
|
|
535
|
+
];
|
|
536
|
+
if (bundlerMethods.includes(req.method)) {
|
|
537
|
+
if (transport.fallbackBundler) {
|
|
538
|
+
const { request: fallbackRequest } = transport.fallbackBundler(opts);
|
|
539
|
+
console.warn("[wiresaw] falling back to bundler rpc", req);
|
|
540
|
+
return fallbackRequest(req);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
if (transport.fallbackEth) {
|
|
544
|
+
const { request: fallbackRequest } = transport.fallbackEth(opts);
|
|
545
|
+
console.warn("[wiresaw] falling back to eth rpc", req);
|
|
546
|
+
return fallbackRequest(req);
|
|
547
|
+
}
|
|
548
|
+
throw e;
|
|
549
|
+
}
|
|
550
|
+
async function getTransactionReceipt(hash) {
|
|
551
|
+
if (transactionReceipts[hash]) return transactionReceipts[hash];
|
|
552
|
+
const pendingReceipt = await originalRequest({
|
|
553
|
+
...req,
|
|
554
|
+
method: "wiresaw_getTransactionReceipt",
|
|
555
|
+
params: [hash]
|
|
556
|
+
});
|
|
557
|
+
if (pendingReceipt) {
|
|
558
|
+
transactionReceipts[hash] = pendingReceipt;
|
|
559
|
+
return pendingReceipt;
|
|
560
|
+
}
|
|
561
|
+
if (transport.fallbackEth) {
|
|
562
|
+
const { request: fallbackRequest } = transport.fallbackEth(opts);
|
|
563
|
+
const receipt = await fallbackRequest({
|
|
564
|
+
...req,
|
|
565
|
+
method: "eth_getTransactionReceipt",
|
|
566
|
+
params: [hash]
|
|
567
|
+
});
|
|
568
|
+
if (receipt) {
|
|
569
|
+
transactionReceipts[hash] = receipt;
|
|
570
|
+
return receipt;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
};
|
|
576
|
+
};
|
|
577
|
+
}
|
|
201
578
|
export {
|
|
202
579
|
ensureContract,
|
|
203
580
|
ensureContractsDeployed,
|
|
204
581
|
ensureDeployer,
|
|
205
582
|
getContractAddress,
|
|
206
583
|
getDeployer,
|
|
207
|
-
waitForTransactions
|
|
584
|
+
waitForTransactions,
|
|
585
|
+
wiresaw
|
|
208
586
|
};
|
|
209
587
|
//# sourceMappingURL=internal.js.map
|