viem 2.55.15 → 2.55.17

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 (79) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/_cjs/actions/public/fillTransaction.js +45 -35
  3. package/_cjs/actions/public/fillTransaction.js.map +1 -1
  4. package/_cjs/actions/public/simulateCalls.js +213 -142
  5. package/_cjs/actions/public/simulateCalls.js.map +1 -1
  6. package/_cjs/actions/wallet/prepareTransactionRequest.js +4 -0
  7. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  8. package/_cjs/chains/definitions/hausTestnet.js +27 -0
  9. package/_cjs/chains/definitions/hausTestnet.js.map +1 -0
  10. package/_cjs/chains/index.js +12 -10
  11. package/_cjs/chains/index.js.map +1 -1
  12. package/_cjs/errors/transaction.js +13 -1
  13. package/_cjs/errors/transaction.js.map +1 -1
  14. package/_cjs/errors/version.js +1 -1
  15. package/_cjs/index.js +5 -4
  16. package/_cjs/index.js.map +1 -1
  17. package/_cjs/op-stack/abis.js +14 -0
  18. package/_cjs/op-stack/abis.js.map +1 -1
  19. package/_cjs/op-stack/actions/estimateOperatorFee.js +26 -15
  20. package/_cjs/op-stack/actions/estimateOperatorFee.js.map +1 -1
  21. package/_cjs/utils/siwe/parseSiweMessage.js +16 -3
  22. package/_cjs/utils/siwe/parseSiweMessage.js.map +1 -1
  23. package/_cjs/utils/siwe/validateSiweMessage.js +13 -3
  24. package/_cjs/utils/siwe/validateSiweMessage.js.map +1 -1
  25. package/_esm/actions/public/fillTransaction.js +49 -36
  26. package/_esm/actions/public/fillTransaction.js.map +1 -1
  27. package/_esm/actions/public/simulateCalls.js +238 -150
  28. package/_esm/actions/public/simulateCalls.js.map +1 -1
  29. package/_esm/actions/wallet/prepareTransactionRequest.js +4 -0
  30. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  31. package/_esm/chains/definitions/hausTestnet.js +24 -0
  32. package/_esm/chains/definitions/hausTestnet.js.map +1 -0
  33. package/_esm/chains/index.js +1 -0
  34. package/_esm/chains/index.js.map +1 -1
  35. package/_esm/errors/transaction.js +11 -0
  36. package/_esm/errors/transaction.js.map +1 -1
  37. package/_esm/errors/version.js +1 -1
  38. package/_esm/index.js +1 -1
  39. package/_esm/index.js.map +1 -1
  40. package/_esm/op-stack/abis.js +14 -0
  41. package/_esm/op-stack/abis.js.map +1 -1
  42. package/_esm/op-stack/actions/estimateOperatorFee.js +28 -25
  43. package/_esm/op-stack/actions/estimateOperatorFee.js.map +1 -1
  44. package/_esm/utils/siwe/parseSiweMessage.js +18 -3
  45. package/_esm/utils/siwe/parseSiweMessage.js.map +1 -1
  46. package/_esm/utils/siwe/validateSiweMessage.js +16 -3
  47. package/_esm/utils/siwe/validateSiweMessage.js.map +1 -1
  48. package/_types/actions/public/fillTransaction.d.ts.map +1 -1
  49. package/_types/actions/public/simulateCalls.d.ts +5 -3
  50. package/_types/actions/public/simulateCalls.d.ts.map +1 -1
  51. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  52. package/_types/chains/definitions/hausTestnet.d.ts +52 -0
  53. package/_types/chains/definitions/hausTestnet.d.ts.map +1 -0
  54. package/_types/chains/index.d.ts +1 -0
  55. package/_types/chains/index.d.ts.map +1 -1
  56. package/_types/errors/transaction.d.ts +9 -0
  57. package/_types/errors/transaction.d.ts.map +1 -1
  58. package/_types/errors/version.d.ts +1 -1
  59. package/_types/index.d.ts +1 -1
  60. package/_types/index.d.ts.map +1 -1
  61. package/_types/op-stack/abis.d.ts +24 -0
  62. package/_types/op-stack/abis.d.ts.map +1 -1
  63. package/_types/op-stack/actions/estimateOperatorFee.d.ts +6 -2
  64. package/_types/op-stack/actions/estimateOperatorFee.d.ts.map +1 -1
  65. package/_types/utils/siwe/parseSiweMessage.d.ts.map +1 -1
  66. package/_types/utils/siwe/validateSiweMessage.d.ts.map +1 -1
  67. package/actions/public/fillTransaction.ts +53 -35
  68. package/actions/public/simulateCalls.ts +324 -181
  69. package/actions/wallet/prepareTransactionRequest.ts +6 -0
  70. package/chains/definitions/hausTestnet.ts +24 -0
  71. package/chains/index.ts +1 -0
  72. package/errors/transaction.ts +21 -0
  73. package/errors/version.ts +1 -1
  74. package/index.ts +2 -0
  75. package/op-stack/abis.ts +14 -0
  76. package/op-stack/actions/estimateOperatorFee.ts +50 -36
  77. package/package.json +1 -1
  78. package/utils/siwe/parseSiweMessage.ts +20 -3
  79. package/utils/siwe/validateSiweMessage.ts +13 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # viem
2
2
 
3
+ ## 2.55.17
4
+
5
+ ### Patch Changes
6
+
7
+ - [#5013](https://github.com/wevm/viem/pull/5013) [`70e7145dcc9c0442a68344cc9f115c63ecde2495`](https://github.com/wevm/viem/commit/70e7145dcc9c0442a68344cc9f115c63ecde2495) Thanks [@CheyneWeb3](https://github.com/CheyneWeb3)! - Added Haus Chain Testnet chain.
8
+
9
+ - [#5012](https://github.com/wevm/viem/pull/5012) [`5e436053872805cd5db7c0ca504abb9296497025`](https://github.com/wevm/viem/commit/5e436053872805cd5db7c0ca504abb9296497025) Thanks [@struong](https://github.com/struong)! - Preserved filled transaction fields covered by a Tempo fee payer signature.
10
+
11
+ - [#4290](https://github.com/wevm/viem/pull/4290) [`20dcc0675d26cf673ef473eeaafa424ba353e771`](https://github.com/wevm/viem/commit/20dcc0675d26cf673ef473eeaafa424ba353e771) Thanks [@Kemperino](https://github.com/Kemperino)! - Fixed Operator Fee estimation for Isthmus upgrade by using the `getOperatorFee` function from the Gas Price Oracle instead of manually computing from L1Block parameters.
12
+
13
+ ## 2.55.16
14
+
15
+ ### Patch Changes
16
+
17
+ - [#4997](https://github.com/wevm/viem/pull/4997) [`0c4f19a354255ec5e7e159228df36f9c8714ce0a`](https://github.com/wevm/viem/commit/0c4f19a354255ec5e7e159228df36f9c8714ce0a) Thanks [@Ghadi8](https://github.com/Ghadi8)! - Fixed `simulateCalls` asset discovery across reverting, state-dependent, malformed, and newly deployed tokens while pinning stable block tags and isolating balance probes.
18
+
19
+ - [#4990](https://github.com/wevm/viem/pull/4990) [`cd1d2d51849f78e20f09e4a26f4c0a20afa84bb4`](https://github.com/wevm/viem/commit/cd1d2d51849f78e20f09e4a26f4c0a20afa84bb4) Thanks [@SashaMIT](https://github.com/SashaMIT)! - Required EIP-4361 / RFC 3339 date-time strings and rejected invalid `time`.
20
+
3
21
  ## 2.55.15
4
22
 
5
23
  ### Patch Changes
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fillTransaction = fillTransaction;
4
4
  const parseAccount_js_1 = require("../../accounts/utils/parseAccount.js");
5
5
  const fee_js_1 = require("../../errors/fee.js");
6
+ const transaction_js_1 = require("../../errors/transaction.js");
6
7
  const getTransactionError_js_1 = require("../../utils/errors/getTransactionError.js");
7
8
  const extract_js_1 = require("../../utils/formatters/extract.js");
8
- const transaction_js_1 = require("../../utils/formatters/transaction.js");
9
+ const transaction_js_2 = require("../../utils/formatters/transaction.js");
9
10
  const transactionRequest_js_1 = require("../../utils/formatters/transactionRequest.js");
10
11
  const getAction_js_1 = require("../../utils/getAction.js");
11
12
  const assertRequest_js_1 = require("../../utils/transaction/assertRequest.js");
@@ -56,7 +57,7 @@ async function fillTransaction(client, parameters) {
56
57
  method: 'eth_fillTransaction',
57
58
  params: [request],
58
59
  });
59
- const format = chain?.formatters?.transaction?.format || transaction_js_1.formatTransaction;
60
+ const format = chain?.formatters?.transaction?.format || transaction_js_2.formatTransaction;
60
61
  const transaction = format(response.tx);
61
62
  delete transaction.blockHash;
62
63
  delete transaction.blockNumber;
@@ -66,39 +67,48 @@ async function fillTransaction(client, parameters) {
66
67
  delete transaction.v;
67
68
  delete transaction.yParity;
68
69
  transaction.data = transaction.input;
69
- if (transaction.gas)
70
- transaction.gas = parameters.gas ?? transaction.gas;
71
- if (transaction.gasPrice)
72
- transaction.gasPrice = parameters.gasPrice ?? transaction.gasPrice;
73
- if (transaction.maxFeePerBlobGas)
74
- transaction.maxFeePerBlobGas =
75
- parameters.maxFeePerBlobGas ?? transaction.maxFeePerBlobGas;
76
- if (transaction.maxFeePerGas)
77
- transaction.maxFeePerGas =
78
- parameters.maxFeePerGas ?? transaction.maxFeePerGas;
79
- if (transaction.maxPriorityFeePerGas)
80
- transaction.maxPriorityFeePerGas =
81
- parameters.maxPriorityFeePerGas ?? transaction.maxPriorityFeePerGas;
82
- if (typeof transaction.nonce !== 'undefined')
83
- transaction.nonce = parameters.nonce ?? transaction.nonce;
84
- const feeMultiplier = await (async () => {
85
- if (typeof chain?.fees?.baseFeeMultiplier === 'function') {
86
- const block = await (0, getAction_js_1.getAction)(client, getBlock_js_1.getBlock, 'getBlock')({});
87
- return chain.fees.baseFeeMultiplier({
88
- block,
89
- client,
90
- request: parameters,
91
- });
92
- }
93
- return chain?.fees?.baseFeeMultiplier ?? 1.2;
94
- })();
95
- if (feeMultiplier < 1)
96
- throw new fee_js_1.BaseFeeScalarError();
97
- const decimals = feeMultiplier.toString().split('.')[1]?.length ?? 0;
98
- const denominator = 10 ** decimals;
99
- const multiplyFee = (base) => (base * BigInt(Math.round(feeMultiplier * denominator))) /
100
- BigInt(denominator);
101
- if (!transaction.feePayerSignature) {
70
+ const hasFeePayerSignature = typeof transaction.feePayerSignature !== 'undefined' &&
71
+ transaction.feePayerSignature !== null;
72
+ if (hasFeePayerSignature &&
73
+ typeof nonce !== 'undefined' &&
74
+ transaction.nonce !== nonce)
75
+ throw new transaction_js_1.FeePayerNonceMismatchError({
76
+ filledNonce: transaction.nonce,
77
+ requestedNonce: nonce,
78
+ });
79
+ if (!hasFeePayerSignature) {
80
+ if (transaction.gas)
81
+ transaction.gas = parameters.gas ?? transaction.gas;
82
+ if (transaction.gasPrice)
83
+ transaction.gasPrice = parameters.gasPrice ?? transaction.gasPrice;
84
+ if (transaction.maxFeePerBlobGas)
85
+ transaction.maxFeePerBlobGas =
86
+ parameters.maxFeePerBlobGas ?? transaction.maxFeePerBlobGas;
87
+ if (transaction.maxFeePerGas)
88
+ transaction.maxFeePerGas =
89
+ parameters.maxFeePerGas ?? transaction.maxFeePerGas;
90
+ if (transaction.maxPriorityFeePerGas)
91
+ transaction.maxPriorityFeePerGas =
92
+ parameters.maxPriorityFeePerGas ?? transaction.maxPriorityFeePerGas;
93
+ if (typeof transaction.nonce !== 'undefined')
94
+ transaction.nonce = parameters.nonce ?? transaction.nonce;
95
+ const feeMultiplier = await (async () => {
96
+ if (typeof chain?.fees?.baseFeeMultiplier === 'function') {
97
+ const block = await (0, getAction_js_1.getAction)(client, getBlock_js_1.getBlock, 'getBlock')({});
98
+ return chain.fees.baseFeeMultiplier({
99
+ block,
100
+ client,
101
+ request: parameters,
102
+ });
103
+ }
104
+ return chain?.fees?.baseFeeMultiplier ?? 1.2;
105
+ })();
106
+ if (feeMultiplier < 1)
107
+ throw new fee_js_1.BaseFeeScalarError();
108
+ const decimals = feeMultiplier.toString().split('.')[1]?.length ?? 0;
109
+ const denominator = 10 ** decimals;
110
+ const multiplyFee = (base) => (base * BigInt(Math.round(feeMultiplier * denominator))) /
111
+ BigInt(denominator);
102
112
  if (transaction.maxFeePerGas && !parameters.maxFeePerGas)
103
113
  transaction.maxFeePerGas = multiplyFee(transaction.maxFeePerGas);
104
114
  if (transaction.gasPrice && !parameters.gasPrice)
@@ -1 +1 @@
1
- {"version":3,"file":"fillTransaction.js","sourceRoot":"","sources":["../../../actions/public/fillTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillTransaction.js","sourceRoot":"","sources":["../../../actions/public/fillTransaction.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,29 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.simulateCalls = simulateCalls;
4
4
  const AbiConstructor = require("ox/AbiConstructor");
5
+ const AbiEvent = require("ox/AbiEvent");
5
6
  const AbiFunction = require("ox/AbiFunction");
6
7
  const parseAccount_js_1 = require("../../accounts/utils/parseAccount.js");
7
8
  const address_js_1 = require("../../constants/address.js");
8
9
  const contracts_js_1 = require("../../constants/contracts.js");
9
10
  const base_js_1 = require("../../errors/base.js");
10
- const encodeFunctionData_js_1 = require("../../utils/abi/encodeFunctionData.js");
11
- const index_js_1 = require("../../utils/index.js");
12
- const createAccessList_js_1 = require("./createAccessList.js");
11
+ const contract_js_1 = require("../../errors/contract.js");
12
+ const node_js_1 = require("../../errors/node.js");
13
+ const pad_js_1 = require("../../utils/data/pad.js");
14
+ const fromHex_js_1 = require("../../utils/encoding/fromHex.js");
15
+ const call_js_1 = require("./call.js");
16
+ const getBlock_js_1 = require("./getBlock.js");
17
+ const getBlockNumber_js_1 = require("./getBlockNumber.js");
13
18
  const simulateBlocks_js_1 = require("./simulateBlocks.js");
14
19
  const getBalanceCode = '0x6080604052348015600e575f80fd5b5061016d8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f8b2cb4f1461002d575b5f80fd5b610047600480360381019061004291906100db565b61005d565b604051610054919061011e565b60405180910390f35b5f8173ffffffffffffffffffffffffffffffffffffffff16319050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100aa82610081565b9050919050565b6100ba816100a0565b81146100c4575f80fd5b50565b5f813590506100d5816100b1565b92915050565b5f602082840312156100f0576100ef61007d565b5b5f6100fd848285016100c7565b91505092915050565b5f819050919050565b61011881610106565b82525050565b5f6020820190506101315f83018461010f565b9291505056fea26469706673582212203b9fe929fe995c7cf9887f0bdba8a36dd78e8b73f149b17d2d9ad7cd09d2dc6264736f6c634300081a0033';
20
+ const staticCallCode = '0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063fd00430c1461002d575b5f5ffd5b6100476004803603810190610042919061012b565b610049565b005b80825f375f5f825f865afa610060573d5f5f3e3d5ffd5b3d5f5f3e3d5ff35b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61009982610070565b9050919050565b6100a98161008f565b81146100b3575f5ffd5b50565b5f813590506100c4816100a0565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126100eb576100ea6100ca565b5b8235905067ffffffffffffffff811115610108576101076100ce565b5b602083019150836001820283011115610124576101236100d2565b5b9250929050565b5f5f5f6040848603121561014257610141610068565b5b5f61014f868287016100b6565b935050602084013567ffffffffffffffff8111156101705761016f61006c565b5b61017c868287016100d6565b9250925050925092509256fea2646970667358221220635ed99185cacf3f2acba6921f23687c969cec2bbaf5f9ad599f507e6e105e6964736f6c63430008230033';
21
+ const staticCallAddressBase = 0x00000000000000000000000000000000deadbeefn;
22
+ const transferEventSelector = AbiEvent.getSelector(AbiEvent.from('event Transfer(address indexed from, address indexed to, uint256 value)'));
23
+ const balanceOfFunction = AbiFunction.from('function balanceOf(address) returns (uint256)');
24
+ const decimalsFunction = AbiFunction.from('function decimals() returns (uint256)');
25
+ const tokenUriFunction = AbiFunction.from('function tokenURI(uint256) returns (string)');
26
+ const symbolFunction = AbiFunction.from('function symbol() returns (string)');
27
+ const staticCallFunction = AbiFunction.from('function query(address target, bytes data)');
15
28
  async function simulateCalls(client, parameters) {
16
29
  const { blockNumber, blockTag, calls, stateOverrides, traceAssetChanges, traceTransfers, validation, } = parameters;
17
30
  const account = parameters.account
@@ -28,150 +41,150 @@ async function simulateCalls(client, parameters) {
28
41
  ],
29
42
  })
30
43
  : undefined;
31
- const assetAddresses = traceAssetChanges
32
- ? await Promise.all(parameters.calls.map(async (call) => {
33
- if (!call.data && !call.abi)
34
- return;
35
- const { accessList } = await (0, createAccessList_js_1.createAccessList)(client, {
36
- account: account.address,
37
- ...call,
38
- data: call.abi ? (0, encodeFunctionData_js_1.encodeFunctionData)(call) : call.data,
39
- });
40
- return accessList.map(({ address, storageKeys }) => storageKeys.length > 0 ? address : null);
41
- })).then((x) => x.flat().filter(Boolean))
44
+ const blockTag_ = blockTag ?? client.experimental_blockTag ?? 'latest';
45
+ let baseBlockNumber = blockNumber;
46
+ if (traceAssetChanges &&
47
+ typeof baseBlockNumber !== 'bigint' &&
48
+ blockTag_ !== 'earliest' &&
49
+ blockTag_ !== 'pending') {
50
+ if (blockTag_ === 'latest')
51
+ baseBlockNumber = await (0, getBlockNumber_js_1.getBlockNumber)(client, { cacheTime: 0 });
52
+ else {
53
+ const block = await (0, getBlock_js_1.getBlock)(client, { blockTag: blockTag_ });
54
+ if (typeof block.number !== 'bigint')
55
+ throw new base_js_1.BaseError(`Block tag \`${blockTag_}\` did not resolve to a number.`);
56
+ baseBlockNumber = block.number;
57
+ }
58
+ }
59
+ const block_ = typeof baseBlockNumber === 'bigint'
60
+ ? { blockNumber: baseBlockNumber }
61
+ : { blockTag: blockTag_ };
62
+ const discovery = traceAssetChanges
63
+ ? await (0, simulateBlocks_js_1.simulateBlocks)(client, {
64
+ ...block_,
65
+ blocks: [
66
+ {
67
+ calls: calls.map((call) => ({
68
+ ...call,
69
+ from: account.address,
70
+ })),
71
+ stateOverrides,
72
+ },
73
+ ],
74
+ traceTransfers,
75
+ validation,
76
+ })
77
+ : undefined;
78
+ const assetAddresses = discovery
79
+ ? [
80
+ ...new Set([
81
+ ...tokensFromLogs(discovery[0].calls.flatMap((call) => call.logs ?? []), account.address),
82
+ ...parameters.calls.map((call) => call.to?.toLowerCase()),
83
+ ]),
84
+ ].filter((address) => Boolean(address) && address !== address_js_1.ethAddress && address !== address_js_1.zeroAddress)
42
85
  : [];
43
- const blocks = await (0, simulateBlocks_js_1.simulateBlocks)(client, {
44
- blockNumber,
45
- blockTag: blockTag,
46
- blocks: [
47
- ...(traceAssetChanges
48
- ? [
49
- {
50
- calls: [{ data: getBalanceData }],
51
- stateOverrides,
52
- },
53
- {
54
- calls: assetAddresses.map((address, i) => ({
55
- abi: [
56
- AbiFunction.from('function balanceOf(address) returns (uint256)'),
57
- ],
58
- functionName: 'balanceOf',
59
- args: [account.address],
60
- to: address,
61
- from: address_js_1.zeroAddress,
62
- nonce: i,
63
- })),
64
- stateOverrides: [
65
- {
66
- address: address_js_1.zeroAddress,
67
- nonce: 0,
68
- },
69
- ],
70
- },
71
- ]
72
- : []),
73
- {
74
- calls: [...calls, { to: address_js_1.zeroAddress }].map((call) => ({
75
- ...call,
76
- from: account?.address,
86
+ const staticCallAddress = getStaticCallAddress([
87
+ ...(account ? [account.address] : []),
88
+ ...assetAddresses,
89
+ ...(stateOverrides?.map(({ address }) => address) ?? []),
90
+ ]);
91
+ const staticCallStateOverrides = [
92
+ { address: staticCallAddress, code: staticCallCode },
93
+ ];
94
+ const [balanceCallsPre, blocks] = await Promise.all([
95
+ traceAssetChanges
96
+ ? Promise.all([
97
+ readBalance(client, {
98
+ account: account.address,
99
+ ...block_,
100
+ data: getBalanceData,
101
+ stateOverride: stateOverrides,
102
+ }),
103
+ ...assetAddresses.map((address) => readBalance(client, {
104
+ account: account.address,
105
+ address,
106
+ ...block_,
107
+ data: AbiFunction.encodeData(balanceOfFunction, [
108
+ account.address,
109
+ ]),
110
+ staticCallAddress,
111
+ stateOverride: stateOverrides,
77
112
  })),
78
- stateOverrides,
79
- },
80
- ...(traceAssetChanges
81
- ? [
82
- {
83
- calls: [{ data: getBalanceData }],
84
- },
85
- {
86
- calls: assetAddresses.map((address, i) => ({
87
- abi: [
88
- AbiFunction.from('function balanceOf(address) returns (uint256)'),
89
- ],
90
- functionName: 'balanceOf',
91
- args: [account.address],
92
- to: address,
93
- from: address_js_1.zeroAddress,
94
- nonce: i,
95
- })),
96
- stateOverrides: [
97
- {
98
- address: address_js_1.zeroAddress,
99
- nonce: 0,
100
- },
101
- ],
102
- },
103
- {
104
- calls: assetAddresses.map((address, i) => ({
105
- to: address,
106
- abi: [
107
- AbiFunction.from('function decimals() returns (uint256)'),
108
- ],
109
- functionName: 'decimals',
110
- from: address_js_1.zeroAddress,
111
- nonce: i,
112
- })),
113
- stateOverrides: [
114
- {
115
- address: address_js_1.zeroAddress,
116
- nonce: 0,
117
- },
118
- ],
119
- },
120
- {
121
- calls: assetAddresses.map((address, i) => ({
122
- to: address,
123
- abi: [
124
- AbiFunction.from('function tokenURI(uint256) returns (string)'),
125
- ],
126
- functionName: 'tokenURI',
127
- args: [0n],
128
- from: address_js_1.zeroAddress,
129
- nonce: i,
130
- })),
131
- stateOverrides: [
132
- {
133
- address: address_js_1.zeroAddress,
134
- nonce: 0,
135
- },
136
- ],
137
- },
138
- {
139
- calls: assetAddresses.map((address, i) => ({
140
- to: address,
141
- abi: [AbiFunction.from('function symbol() returns (string)')],
142
- functionName: 'symbol',
143
- from: address_js_1.zeroAddress,
144
- nonce: i,
145
- })),
146
- stateOverrides: [
147
- {
148
- address: address_js_1.zeroAddress,
149
- nonce: 0,
150
- },
151
- ],
152
- },
153
- ]
154
- : []),
155
- ],
156
- traceTransfers,
157
- validation,
158
- });
159
- const block_results = traceAssetChanges ? blocks[2] : blocks[0];
160
- const [block_ethPre, block_assetsPre, , block_ethPost, block_assetsPost, block_decimals, block_tokenURI, block_symbols,] = traceAssetChanges ? blocks : [];
113
+ ])
114
+ : [],
115
+ (0, simulateBlocks_js_1.simulateBlocks)(client, {
116
+ ...block_,
117
+ blocks: [
118
+ {
119
+ calls: [...calls, { to: address_js_1.zeroAddress }].map((call) => ({
120
+ ...call,
121
+ from: account?.address,
122
+ })),
123
+ stateOverrides,
124
+ },
125
+ ...(traceAssetChanges
126
+ ? [
127
+ {
128
+ calls: [{ data: getBalanceData }],
129
+ },
130
+ {
131
+ calls: assetAddresses.map((address) => ({
132
+ to: staticCallAddress,
133
+ data: encodeStaticCall(address, AbiFunction.encodeData(balanceOfFunction, [
134
+ account.address,
135
+ ])),
136
+ })),
137
+ stateOverrides: staticCallStateOverrides,
138
+ },
139
+ {
140
+ calls: assetAddresses.map((address) => ({
141
+ to: staticCallAddress,
142
+ data: encodeStaticCall(address, AbiFunction.encodeData(decimalsFunction)),
143
+ })),
144
+ stateOverrides: staticCallStateOverrides,
145
+ },
146
+ {
147
+ calls: assetAddresses.map((address) => ({
148
+ to: staticCallAddress,
149
+ data: encodeStaticCall(address, AbiFunction.encodeData(tokenUriFunction, [0n])),
150
+ })),
151
+ stateOverrides: staticCallStateOverrides,
152
+ },
153
+ {
154
+ calls: assetAddresses.map((address) => ({
155
+ to: staticCallAddress,
156
+ data: encodeStaticCall(address, AbiFunction.encodeData(symbolFunction)),
157
+ })),
158
+ stateOverrides: staticCallStateOverrides,
159
+ },
160
+ ]
161
+ : []),
162
+ ],
163
+ traceTransfers,
164
+ validation,
165
+ }),
166
+ ]);
167
+ const block_results = blocks[0];
168
+ const [block_ethPost, block_assetsPost, block_decimals, block_tokenURI, block_symbols,] = traceAssetChanges ? blocks.slice(1) : [];
161
169
  const { calls: block_calls, ...block } = block_results;
162
- const results = block_calls.slice(0, -1) ?? [];
163
- const ethPre = block_ethPre?.calls ?? [];
164
- const assetsPre = block_assetsPre?.calls ?? [];
165
- const balancesPre = [...ethPre, ...assetsPre].map((call) => call.status === 'success' ? (0, index_js_1.hexToBigInt)(call.data) : null);
170
+ const results = block_calls.slice(0, -1);
171
+ const balancesPre = balanceCallsPre.map((call) => isBalance(call) ? (0, fromHex_js_1.hexToBigInt)(call.data) : null);
166
172
  const ethPost = block_ethPost?.calls ?? [];
167
173
  const assetsPost = block_assetsPost?.calls ?? [];
168
- const balancesPost = [...ethPost, ...assetsPost].map((call) => call.status === 'success' ? (0, index_js_1.hexToBigInt)(call.data) : null);
169
- const decimals = (block_decimals?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);
170
- const symbols = (block_symbols?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);
171
- const tokenURI = (block_tokenURI?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);
174
+ const balanceCallsPost = [...ethPost, ...assetsPost];
175
+ const balancesPost = balanceCallsPost.map((call) => isBalance(call) ? (0, fromHex_js_1.hexToBigInt)(call.data) : null);
176
+ const decimals = (block_decimals?.calls ?? []).map((call) => decodeAssetResult(call, decimalsFunction));
177
+ const symbols = (block_symbols?.calls ?? []).map((call) => decodeAssetResult(call, symbolFunction));
178
+ const tokenURI = (block_tokenURI?.calls ?? []).map((call) => decodeAssetResult(call, tokenUriFunction));
172
179
  const changes = [];
173
180
  for (const [i, balancePost] of balancesPost.entries()) {
174
- const balancePre = balancesPre[i];
181
+ const balancePre_ = balancesPre[i];
182
+ const preCall = balanceCallsPre[i];
183
+ const balancePre = typeof balancePre_ === 'bigint'
184
+ ? balancePre_
185
+ : i > 0 && preCall?.status === 'success' && preCall.data === '0x'
186
+ ? 0n
187
+ : null;
175
188
  if (typeof balancePost !== 'bigint')
176
189
  continue;
177
190
  if (typeof balancePre !== 'bigint')
@@ -192,8 +205,6 @@ async function simulateCalls(client, parameters) {
192
205
  symbol: symbol_ ?? undefined,
193
206
  };
194
207
  })();
195
- if (changes.some((change) => change.token.address === token.address))
196
- continue;
197
208
  changes.push({
198
209
  token,
199
210
  value: {
@@ -209,4 +220,64 @@ async function simulateCalls(client, parameters) {
209
220
  results,
210
221
  };
211
222
  }
223
+ function encodeStaticCall(address, data) {
224
+ return AbiFunction.encodeData(staticCallFunction, [address, data]);
225
+ }
226
+ function tokensFromLogs(logs, account) {
227
+ const account_ = (0, pad_js_1.pad)(account.toLowerCase(), { size: 32 });
228
+ return logs
229
+ .filter((log) => {
230
+ if (log.topics[0]?.toLowerCase() !== transferEventSelector)
231
+ return false;
232
+ if (log.address.toLowerCase() === address_js_1.ethAddress)
233
+ return false;
234
+ return (log.topics[1]?.toLowerCase() === account_ ||
235
+ log.topics[2]?.toLowerCase() === account_);
236
+ })
237
+ .map((log) => log.address.toLowerCase());
238
+ }
239
+ function isBalance(call) {
240
+ return call.status === 'success' && /^0x[\da-f]{64}$/i.test(call.data);
241
+ }
242
+ function decodeAssetResult(call, abiFunction) {
243
+ if (call.status === 'failure' || call.data === '0x')
244
+ return null;
245
+ try {
246
+ return AbiFunction.decodeResult(abiFunction, call.data);
247
+ }
248
+ catch {
249
+ return null;
250
+ }
251
+ }
252
+ async function readBalance(client, parameters) {
253
+ const { account, address, blockNumber, blockTag, data, staticCallAddress, stateOverride, } = parameters;
254
+ try {
255
+ const result = await (0, call_js_1.call)({ ...client, ccipRead: false }, {
256
+ account: address ? address_js_1.zeroAddress : account,
257
+ data: address ? encodeStaticCall(address, data) : data,
258
+ stateOverride: address && staticCallAddress
259
+ ? [
260
+ ...(stateOverride ?? []),
261
+ { address: staticCallAddress, code: staticCallCode },
262
+ ]
263
+ : stateOverride,
264
+ ...(address ? { to: staticCallAddress } : {}),
265
+ ...(typeof blockNumber === 'bigint' ? { blockNumber } : { blockTag }),
266
+ });
267
+ return { data: result.data ?? '0x', status: 'success' };
268
+ }
269
+ catch (error) {
270
+ if (!(error instanceof contract_js_1.CallExecutionError) ||
271
+ !(error.cause instanceof node_js_1.ExecutionRevertedError))
272
+ throw error;
273
+ return { data: '0x', status: 'failure' };
274
+ }
275
+ }
276
+ function getStaticCallAddress(addresses) {
277
+ const occupied = new Set(addresses.map((address) => address.toLowerCase()));
278
+ let value = staticCallAddressBase;
279
+ while (occupied.has(`0x${value.toString(16).padStart(40, '0')}`))
280
+ value++;
281
+ return `0x${value.toString(16).padStart(40, '0')}`;
282
+ }
212
283
  //# sourceMappingURL=simulateCalls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulateCalls.js","sourceRoot":"","sources":["../../../actions/public/simulateCalls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulateCalls.js","sourceRoot":"","sources":["../../../actions/public/simulateCalls.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ const estimateGas_js_1 = require("../../actions/public/estimateGas.js");
8
8
  const getBlock_js_1 = require("../../actions/public/getBlock.js");
9
9
  const getTransactionCount_js_1 = require("../../actions/public/getTransactionCount.js");
10
10
  const fee_js_1 = require("../../errors/fee.js");
11
+ const transaction_js_1 = require("../../errors/transaction.js");
11
12
  const blobsToCommitments_js_1 = require("../../utils/blob/blobsToCommitments.js");
12
13
  const blobsToProofs_js_1 = require("../../utils/blob/blobsToProofs.js");
13
14
  const commitmentsToVersionedHashes_js_1 = require("../../utils/blob/commitmentsToVersionedHashes.js");
@@ -169,6 +170,9 @@ async function prepareTransactionRequest(client, args) {
169
170
  const error = e;
170
171
  if (error.name !== 'TransactionExecutionError')
171
172
  return request;
173
+ const nonceMismatch = error.walk?.((error) => error instanceof transaction_js_1.FeePayerNonceMismatchError);
174
+ if (nonceMismatch)
175
+ throw e;
172
176
  const executionReverted = error.walk?.((e) => {
173
177
  const error = e;
174
178
  return error.name === 'ExecutionRevertedError';