@paraswap/dex-lib 5.0.9 → 5.0.11

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.
@@ -11,9 +11,18 @@ interface TokenStorageSlots {
11
11
  balanceSlot: string;
12
12
  allowanceSlot: string;
13
13
  isVyper?: boolean;
14
+ isSolady?: boolean;
15
+ partition?: string;
14
16
  stateProxy?: string;
15
17
  additionalOverrides?: StateOverride;
16
18
  }
19
+ interface FoundSlot {
20
+ slot: string;
21
+ isVyper?: boolean;
22
+ isSolady?: boolean;
23
+ partition?: string;
24
+ stateProxy?: string;
25
+ }
17
26
  interface SimulateTransactionRequest {
18
27
  from: string | null;
19
28
  to: string | null;
@@ -112,6 +121,11 @@ export type SimulationResult = {
112
121
  export declare class TenderlySimulator {
113
122
  static readonly DEFAULT_OWNER = "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
114
123
  static readonly DEFAULT_SPENDER = "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
124
+ static readonly SLOT_VERIFICATION_AMOUNT = 123456789012345678901234567n;
125
+ static readonly SOLADY_BALANCE_SLOT_SEED = "0x87a211a2";
126
+ static readonly SOLADY_ALLOWANCE_SLOT_SEED = "0x7f5e9f20";
127
+ static readonly B20_BALANCES_SLOT = "0xc78b71fee795ddd74aff64ea9b2474194c938c3196430e10bb5f01ed48434004";
128
+ static readonly B20_ALLOWANCES_SLOT = "0xc78b71fee795ddd74aff64ea9b2474194c938c3196430e10bb5f01ed48434005";
115
129
  private static instance;
116
130
  private constructor();
117
131
  static getInstance(cache?: ICache, tenderlyToken?: string, tenderlyProject?: string, tenderlyAccountId?: string): TenderlySimulator;
@@ -122,11 +136,13 @@ export declare class TenderlySimulator {
122
136
  getSLOADCalls: (callTrace: SimulatedTransactionCall, parentCall?: SimulatedTransactionCall | null) => SimulatedTransactionCallWithParent[];
123
137
  /**
124
138
  *
125
- * @param balanceOfSlot storage slot of `balanceOf` mapping
139
+ * @param balanceOfSlot storage slot of `balanceOf` mapping (Solady slot seed if `isSolady`)
126
140
  * @param owner account's address
127
141
  * @param isVyper `true` if contract is written in Vyper
142
+ * @param isSolady `true` if contract uses Solady ERC20 storage layout
143
+ * @param partition partition key if contract uses partitioned storage layout
128
144
  */
129
- calculateAddressBalanceSlot(balanceOfSlot: string, owner: string, isVyper?: boolean): string;
145
+ calculateAddressBalanceSlot(balanceOfSlot: string, owner: string, isVyper?: boolean, isSolady?: boolean, partition?: string): string;
130
146
  /**
131
147
  *
132
148
  * @param balanceOfSlot storage slot of `balanceOf` mapping
@@ -139,14 +155,31 @@ export declare class TenderlySimulator {
139
155
  * @param owner account's address
140
156
  */
141
157
  calculateVyperAddressBalanceSlot(balanceOfSlot: string, owner: string): string;
158
+ /**
159
+ * Solady ERC20 stores balances at `keccak256(owner ++ seed)` where the seed
160
+ * is the 12-byte-padded `_BALANCE_SLOT_SEED` library constant
161
+ * @param balanceSlotSeed Solady balance slot seed
162
+ * @param owner account's address
163
+ */
164
+ calculateSoladyAddressBalanceSlot(balanceSlotSeed: string, owner: string): string;
165
+ /**
166
+ * Partitioned layout (e.g. ViciERC20's `balances[partition][owner]`):
167
+ * balance is stored at `keccak256(owner ++ keccak256(partition ++ slot))`
168
+ * @param balanceOfSlot storage slot of the partitioned balances mapping
169
+ * @param owner account's address
170
+ * @param partition partition key (item/token id) as a 32-byte value
171
+ */
172
+ calculatePartitionedAddressBalanceSlot(balanceOfSlot: string, owner: string, partition: string): string;
142
173
  /**
143
174
  *
144
- * @param allowanceSlot storage slot of `allowance` mapping
175
+ * @param allowanceSlot storage slot of `allowance` mapping (Solady slot seed if `isSolady`)
145
176
  * @param owner account's address
146
177
  * @param spender spender's address
147
178
  * @param isVyper `true` if contract is written in Vyper
179
+ * @param isSolady `true` if contract uses Solady ERC20 storage layout
180
+ * @param partition partition key if contract uses partitioned storage layout
148
181
  */
149
- calculateAddressAllowanceSlot(allowanceSlot: string, owner: string, spender: string, isVyper?: boolean): string;
182
+ calculateAddressAllowanceSlot(allowanceSlot: string, owner: string, spender: string, isVyper?: boolean, isSolady?: boolean, partition?: string): string;
150
183
  /**
151
184
  *
152
185
  * @param allowanceSlot storage slot of `allowance` mapping
@@ -161,30 +194,76 @@ export declare class TenderlySimulator {
161
194
  * @param spender spender's address
162
195
  */
163
196
  calculateVyperAddressAllowanceSlot(allowanceSlot: string, owner: string, spender: string): string;
197
+ /**
198
+ * Solady ERC20 stores allowances at `keccak256(owner ++ seed ++ spender)`
199
+ * where the seed is the 12-byte-padded `_ALLOWANCE_SLOT_SEED` library constant
200
+ * @param allowanceSlotSeed Solady allowance slot seed
201
+ * @param owner account's address
202
+ * @param spender spender's address
203
+ */
204
+ calculateSoladyAddressAllowanceSlot(allowanceSlotSeed: string, owner: string, spender: string): string;
205
+ /**
206
+ * Partitioned layout (e.g. ViciERC20's `allowances[owner][partition][spender]`):
207
+ * allowance is stored at
208
+ * `keccak256(spender ++ keccak256(partition ++ keccak256(owner ++ slot)))`
209
+ * @param allowanceSlot storage slot of the partitioned allowances mapping
210
+ * @param owner account's address
211
+ * @param spender spender's address
212
+ * @param partition partition key (item/token id) as a 32-byte value
213
+ */
214
+ calculatePartitionedAddressAllowanceSlot(allowanceSlot: string, owner: string, spender: string, partition: string): string;
164
215
  buildBalanceOfSimulationRequest(chainId: number, token: string, owner: string): SimulateTransactionRequest;
165
216
  buildAllowanceSimulationRequest(chainId: number, token: string, owner: string, spender: string): SimulateTransactionRequest;
217
+ private decodeUintOutput;
218
+ /**
219
+ * Simulates the given read call with the state override applied and checks
220
+ * that the override actually controls the returned value: the call must
221
+ * succeed and return a non-zero value different from the baseline.
222
+ * With `allowScaled` an exact match with `writtenValue` is not required —
223
+ * tokens with derived balances (e.g. stETH shares, aToken scaled balances)
224
+ * return a scaled value. Without it, only an exact match passes
225
+ */
226
+ private simulateAndCheckOutput;
227
+ /**
228
+ * Verifies a candidate `balanceOf` mapping slot by overriding the derived
229
+ * slot with a distinctive value and checking that `balanceOf` reflects it
230
+ * @param chainId token chain id
231
+ * @param token token address
232
+ * @param foundSlot candidate slot to verify
233
+ * @param baselineValue `balanceOf` result without the override applied
234
+ */
235
+ verifyTokenBalanceSlot(chainId: number, token: string, foundSlot: FoundSlot, baselineValue?: bigint): Promise<boolean>;
236
+ /**
237
+ * Verifies a candidate `allowance` mapping slot by overriding the derived
238
+ * slot with a distinctive value and checking that `allowance` reflects it
239
+ * @param chainId token chain id
240
+ * @param token token address
241
+ * @param foundSlot candidate slot to verify
242
+ * @param baselineValue `allowance` result without the override applied
243
+ */
244
+ verifyTokenAllowanceSlot(chainId: number, token: string, foundSlot: FoundSlot, baselineValue?: bigint): Promise<boolean>;
245
+ /**
246
+ * Builds a `FoundSlot` from a matched SLOAD. `storage_address` is where the
247
+ * read actually happened: if it differs from the token, the state lives on
248
+ * an external contract (state proxy) and overrides must target it
249
+ */
250
+ private buildFoundSlot;
166
251
  /**
167
252
  * Finds the slot of the `balanceOf` mapping in given token contract's storage.
168
- * Supports `Solidity` and `Vyper` contracts
253
+ * Supports `Solidity` and `Vyper` contracts.
254
+ * Found slots are verified with an additional simulation before being returned
169
255
  * @param chainId token chain id
170
256
  * @param token token address
171
257
  */
172
- findTokenBalanceOfSlot(chainId: number, token: string): Promise<{
173
- slot: string;
174
- isVyper?: boolean;
175
- stateProxy?: string;
176
- }>;
258
+ findTokenBalanceOfSlot(chainId: number, token: string): Promise<FoundSlot>;
177
259
  /**
178
- * Finds the slot of the `allowance` mapping in given token contract's storage
179
- * Supports `Solidity` and `Vyper` contracts
260
+ * Finds the slot of the `allowance` mapping in given token contract's storage.
261
+ * Supports `Solidity` and `Vyper` contracts.
262
+ * Found slots are verified with an additional simulation before being returned
180
263
  * @param chainId token chain id
181
264
  * @param token token address
182
265
  */
183
- findTokenAllowanceSlot(chainId: number, token: string): Promise<{
184
- slot: string;
185
- isVyper?: boolean;
186
- stateProxy?: string;
187
- }>;
266
+ findTokenAllowanceSlot(chainId: number, token: string): Promise<FoundSlot>;
188
267
  /**
189
268
  * Returns storage slots for the given token contract.
190
269
  * @param chainId Token chain ID
@@ -109,6 +109,20 @@ class TenderlySimulator {
109
109
  // public constants
110
110
  static DEFAULT_OWNER = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
111
111
  static DEFAULT_SPENDER = '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';
112
+ // distinctive value written into a candidate slot during verification,
113
+ // unlikely to collide with any pre-existing balance/allowance
114
+ static SLOT_VERIFICATION_AMOUNT = 123456789012345678901234567n;
115
+ // Solady ERC20 doesn't use Solidity mappings — balances/allowances live at
116
+ // slots derived from these fixed library constants
117
+ // https://github.com/Vectorized/solady/blob/main/src/tokens/ERC20.sol
118
+ static SOLADY_BALANCE_SLOT_SEED = '0x87a211a2';
119
+ static SOLADY_ALLOWANCE_SLOT_SEED = '0x7f5e9f20';
120
+ // B20 native tokens (Base Beryl upgrade) are Rust precompiles reading
121
+ // regular Solidity mappings under the ERC-7201 `base.b20` namespace
122
+ // (root 0x…434000): balances at offset 4, allowances at offset 5
123
+ // https://github.com/base/base crates/common/precompiles/src/common/core_storage.rs
124
+ static B20_BALANCES_SLOT = '0xc78b71fee795ddd74aff64ea9b2474194c938c3196430e10bb5f01ed48434004';
125
+ static B20_ALLOWANCES_SLOT = '0xc78b71fee795ddd74aff64ea9b2474194c938c3196430e10bb5f01ed48434005';
112
126
  // singleton
113
127
  static instance;
114
128
  constructor() { }
@@ -210,11 +224,19 @@ class TenderlySimulator {
210
224
  };
211
225
  /**
212
226
  *
213
- * @param balanceOfSlot storage slot of `balanceOf` mapping
227
+ * @param balanceOfSlot storage slot of `balanceOf` mapping (Solady slot seed if `isSolady`)
214
228
  * @param owner account's address
215
229
  * @param isVyper `true` if contract is written in Vyper
230
+ * @param isSolady `true` if contract uses Solady ERC20 storage layout
231
+ * @param partition partition key if contract uses partitioned storage layout
216
232
  */
217
- calculateAddressBalanceSlot(balanceOfSlot, owner, isVyper = false) {
233
+ calculateAddressBalanceSlot(balanceOfSlot, owner, isVyper = false, isSolady = false, partition) {
234
+ if (partition) {
235
+ return this.calculatePartitionedAddressBalanceSlot(balanceOfSlot, owner, partition);
236
+ }
237
+ if (isSolady) {
238
+ return this.calculateSoladyAddressBalanceSlot(balanceOfSlot, owner);
239
+ }
218
240
  return isVyper
219
241
  ? this.calculateVyperAddressBalanceSlot(balanceOfSlot, owner)
220
242
  : this.calculateSolidityAddressBalanceSlot(balanceOfSlot, owner);
@@ -235,14 +257,47 @@ class TenderlySimulator {
235
257
  calculateVyperAddressBalanceSlot(balanceOfSlot, owner) {
236
258
  return ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([balanceOfSlot, ethers_1.ethers.utils.hexZeroPad(owner, 32)]));
237
259
  }
260
+ /**
261
+ * Solady ERC20 stores balances at `keccak256(owner ++ seed)` where the seed
262
+ * is the 12-byte-padded `_BALANCE_SLOT_SEED` library constant
263
+ * @param balanceSlotSeed Solady balance slot seed
264
+ * @param owner account's address
265
+ */
266
+ calculateSoladyAddressBalanceSlot(balanceSlotSeed, owner) {
267
+ return ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([
268
+ ethers_1.ethers.utils.hexZeroPad(owner, 20),
269
+ ethers_1.ethers.utils.hexZeroPad(balanceSlotSeed, 12),
270
+ ]));
271
+ }
272
+ /**
273
+ * Partitioned layout (e.g. ViciERC20's `balances[partition][owner]`):
274
+ * balance is stored at `keccak256(owner ++ keccak256(partition ++ slot))`
275
+ * @param balanceOfSlot storage slot of the partitioned balances mapping
276
+ * @param owner account's address
277
+ * @param partition partition key (item/token id) as a 32-byte value
278
+ */
279
+ calculatePartitionedAddressBalanceSlot(balanceOfSlot, owner, partition) {
280
+ return this.calculateSolidityAddressBalanceSlot(ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([
281
+ ethers_1.ethers.utils.hexZeroPad(partition, 32),
282
+ balanceOfSlot,
283
+ ])), owner);
284
+ }
238
285
  /**
239
286
  *
240
- * @param allowanceSlot storage slot of `allowance` mapping
287
+ * @param allowanceSlot storage slot of `allowance` mapping (Solady slot seed if `isSolady`)
241
288
  * @param owner account's address
242
289
  * @param spender spender's address
243
290
  * @param isVyper `true` if contract is written in Vyper
291
+ * @param isSolady `true` if contract uses Solady ERC20 storage layout
292
+ * @param partition partition key if contract uses partitioned storage layout
244
293
  */
245
- calculateAddressAllowanceSlot(allowanceSlot, owner, spender, isVyper = false) {
294
+ calculateAddressAllowanceSlot(allowanceSlot, owner, spender, isVyper = false, isSolady = false, partition) {
295
+ if (partition) {
296
+ return this.calculatePartitionedAddressAllowanceSlot(allowanceSlot, owner, spender, partition);
297
+ }
298
+ if (isSolady) {
299
+ return this.calculateSoladyAddressAllowanceSlot(allowanceSlot, owner, spender);
300
+ }
246
301
  return isVyper
247
302
  ? this.calculateVyperAddressAllowanceSlot(allowanceSlot, owner, spender)
248
303
  : this.calculateSolidityAddressAllowanceSlot(allowanceSlot, owner, spender);
@@ -273,6 +328,37 @@ class TenderlySimulator {
273
328
  ]));
274
329
  return ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([slotHash, ethers_1.ethers.utils.hexZeroPad(spender, 32)]));
275
330
  }
331
+ /**
332
+ * Solady ERC20 stores allowances at `keccak256(owner ++ seed ++ spender)`
333
+ * where the seed is the 12-byte-padded `_ALLOWANCE_SLOT_SEED` library constant
334
+ * @param allowanceSlotSeed Solady allowance slot seed
335
+ * @param owner account's address
336
+ * @param spender spender's address
337
+ */
338
+ calculateSoladyAddressAllowanceSlot(allowanceSlotSeed, owner, spender) {
339
+ return ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([
340
+ ethers_1.ethers.utils.hexZeroPad(owner, 20),
341
+ ethers_1.ethers.utils.hexZeroPad(allowanceSlotSeed, 12),
342
+ ethers_1.ethers.utils.hexZeroPad(spender, 20),
343
+ ]));
344
+ }
345
+ /**
346
+ * Partitioned layout (e.g. ViciERC20's `allowances[owner][partition][spender]`):
347
+ * allowance is stored at
348
+ * `keccak256(spender ++ keccak256(partition ++ keccak256(owner ++ slot)))`
349
+ * @param allowanceSlot storage slot of the partitioned allowances mapping
350
+ * @param owner account's address
351
+ * @param spender spender's address
352
+ * @param partition partition key (item/token id) as a 32-byte value
353
+ */
354
+ calculatePartitionedAddressAllowanceSlot(allowanceSlot, owner, spender, partition) {
355
+ const ownerHash = ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([ethers_1.ethers.utils.hexZeroPad(owner, 32), allowanceSlot]));
356
+ const partitionHash = ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([ethers_1.ethers.utils.hexZeroPad(partition, 32), ownerHash]));
357
+ return ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.concat([
358
+ ethers_1.ethers.utils.hexZeroPad(spender, 32),
359
+ partitionHash,
360
+ ]));
361
+ }
276
362
  buildBalanceOfSimulationRequest(chainId, token, owner) {
277
363
  const iface = new ethers_1.ethers.utils.Interface([
278
364
  'function balanceOf(address owner) view returns (uint)',
@@ -295,9 +381,113 @@ class TenderlySimulator {
295
381
  chainId,
296
382
  };
297
383
  }
384
+ decodeUintOutput(output) {
385
+ if (!output || output === '0x') {
386
+ return null;
387
+ }
388
+ try {
389
+ const [decoded] = ethers_1.ethers.utils.defaultAbiCoder.decode(['uint256'], output);
390
+ return decoded.toBigInt();
391
+ }
392
+ catch (e) {
393
+ return null;
394
+ }
395
+ }
396
+ /**
397
+ * Simulates the given read call with the state override applied and checks
398
+ * that the override actually controls the returned value: the call must
399
+ * succeed and return a non-zero value different from the baseline.
400
+ * With `allowScaled` an exact match with `writtenValue` is not required —
401
+ * tokens with derived balances (e.g. stETH shares, aToken scaled balances)
402
+ * return a scaled value. Without it, only an exact match passes
403
+ */
404
+ async simulateAndCheckOutput(request, writtenValue, baselineValue, allowScaled) {
405
+ try {
406
+ const { transaction, simulation } = await this.simulateTransaction(request, true);
407
+ if (!simulation.status) {
408
+ return false;
409
+ }
410
+ const decoded = this.decodeUintOutput(transaction.transaction_info.call_trace.output);
411
+ if (decoded === null || decoded === 0n || decoded === baselineValue) {
412
+ return false;
413
+ }
414
+ if (decoded !== writtenValue) {
415
+ if (!allowScaled) {
416
+ return false;
417
+ }
418
+ console.warn(`Slot override verification for token ${request.to}: written value ${writtenValue} but call returned ${decoded} (derived/scaled value), accepting slot`);
419
+ }
420
+ return true;
421
+ }
422
+ catch (e) {
423
+ return false;
424
+ }
425
+ }
426
+ /**
427
+ * Verifies a candidate `balanceOf` mapping slot by overriding the derived
428
+ * slot with a distinctive value and checking that `balanceOf` reflects it
429
+ * @param chainId token chain id
430
+ * @param token token address
431
+ * @param foundSlot candidate slot to verify
432
+ * @param baselineValue `balanceOf` result without the override applied
433
+ */
434
+ async verifyTokenBalanceSlot(chainId, token, foundSlot, baselineValue = 0n) {
435
+ const owner = TenderlySimulator.DEFAULT_OWNER;
436
+ const amount = TenderlySimulator.SLOT_VERIFICATION_AMOUNT;
437
+ const slotToOverride = this.calculateAddressBalanceSlot(foundSlot.slot, owner, foundSlot.isVyper, foundSlot.isSolady, foundSlot.partition);
438
+ const address = foundSlot.stateProxy ?? token;
439
+ const stateOverride = {
440
+ [address]: {
441
+ storage: {
442
+ [slotToOverride]: ethers_1.ethers.utils.defaultAbiCoder.encode(['uint'], [amount]),
443
+ },
444
+ },
445
+ };
446
+ return this.simulateAndCheckOutput({
447
+ ...this.buildBalanceOfSimulationRequest(chainId, token, owner),
448
+ stateOverride,
449
+ }, amount, baselineValue, true);
450
+ }
451
+ /**
452
+ * Verifies a candidate `allowance` mapping slot by overriding the derived
453
+ * slot with a distinctive value and checking that `allowance` reflects it
454
+ * @param chainId token chain id
455
+ * @param token token address
456
+ * @param foundSlot candidate slot to verify
457
+ * @param baselineValue `allowance` result without the override applied
458
+ */
459
+ async verifyTokenAllowanceSlot(chainId, token, foundSlot, baselineValue = 0n) {
460
+ const owner = TenderlySimulator.DEFAULT_OWNER;
461
+ const spender = TenderlySimulator.DEFAULT_SPENDER;
462
+ const amount = TenderlySimulator.SLOT_VERIFICATION_AMOUNT;
463
+ const slotToOverride = this.calculateAddressAllowanceSlot(foundSlot.slot, owner, spender, foundSlot.isVyper, foundSlot.isSolady, foundSlot.partition);
464
+ const address = foundSlot.stateProxy ?? token;
465
+ const stateOverride = {
466
+ [address]: {
467
+ storage: {
468
+ [slotToOverride]: ethers_1.ethers.utils.defaultAbiCoder.encode(['uint'], [amount]),
469
+ },
470
+ },
471
+ };
472
+ return this.simulateAndCheckOutput({
473
+ ...this.buildAllowanceSimulationRequest(chainId, token, owner, spender),
474
+ stateOverride,
475
+ }, amount, baselineValue, false);
476
+ }
477
+ /**
478
+ * Builds a `FoundSlot` from a matched SLOAD. `storage_address` is where the
479
+ * read actually happened: if it differs from the token, the state lives on
480
+ * an external contract (state proxy) and overrides must target it
481
+ */
482
+ buildFoundSlot(token, readSlotAddress, base) {
483
+ return readSlotAddress !== token.toLowerCase()
484
+ ? { ...base, stateProxy: readSlotAddress }
485
+ : { ...base };
486
+ }
298
487
  /**
299
488
  * Finds the slot of the `balanceOf` mapping in given token contract's storage.
300
- * Supports `Solidity` and `Vyper` contracts
489
+ * Supports `Solidity` and `Vyper` contracts.
490
+ * Found slots are verified with an additional simulation before being returned
301
491
  * @param chainId token chain id
302
492
  * @param token token address
303
493
  */
@@ -310,15 +500,29 @@ class TenderlySimulator {
310
500
  throw `No simulation with id ${simulationId} details found`;
311
501
  }
312
502
  const callTrace = simulationDetails.transaction.transaction_info.call_trace;
503
+ // `balanceOf` result without any overrides, used as verification baseline
504
+ const baselineValue = this.decodeUintOutput(callTrace.output) ?? 0n;
313
505
  const sloadCalls = this.getSLOADCalls(callTrace);
314
506
  // token's storage slots that were read during the `balanceOf` call
315
507
  const readSlots = sloadCalls
316
508
  .map(call => ({
317
509
  slot: call.storage_slot?.[0],
318
510
  address: call.storage_address,
319
- parentCallType: call.parentCall ? call.parentCall.call_type : null,
320
511
  }))
321
512
  .filter(({ slot }) => !!slot);
513
+ // try Solady layout: balance slot is derived from a fixed seed, not a mapping
514
+ const soladyBalanceOfSlot = this.calculateSoladyAddressBalanceSlot(TenderlySimulator.SOLADY_BALANCE_SLOT_SEED, account);
515
+ const foundSoladySlot = readSlots.find(({ slot }) => slot === soladyBalanceOfSlot);
516
+ if (foundSoladySlot) {
517
+ const candidate = this.buildFoundSlot(token, foundSoladySlot.address, {
518
+ slot: TenderlySimulator.SOLADY_BALANCE_SLOT_SEED,
519
+ isSolady: true,
520
+ });
521
+ if (await this.verifyTokenBalanceSlot(chainId, token, candidate, baselineValue)) {
522
+ return candidate;
523
+ }
524
+ console.warn(`Candidate 'balanceOf' slot seed (solady) for token ${token} on chain ${chainId} failed verification, continuing search`);
525
+ }
322
526
  const startingPoints = [
323
527
  // regular contract
324
528
  0n,
@@ -332,31 +536,59 @@ class TenderlySimulator {
332
536
  const solitidyBalanceOfSlot = this.calculateSolidityAddressBalanceSlot(candidateSlot, account);
333
537
  const foundSoliditySlot = readSlots.find(({ slot }) => slot === solitidyBalanceOfSlot);
334
538
  if (foundSoliditySlot) {
335
- return foundSoliditySlot.address !== token.toLowerCase() &&
336
- foundSoliditySlot.parentCallType !== 'DELEGATECALL'
337
- ? { slot: candidateSlot, stateProxy: foundSoliditySlot.address }
338
- : { slot: candidateSlot };
539
+ const candidate = this.buildFoundSlot(token, foundSoliditySlot.address, { slot: candidateSlot });
540
+ if (await this.verifyTokenBalanceSlot(chainId, token, candidate, baselineValue)) {
541
+ return candidate;
542
+ }
543
+ console.warn(`Candidate 'balanceOf' slot ${candidateSlot} for token ${token} on chain ${chainId} failed verification, continuing search`);
339
544
  }
340
545
  // try vyper slot
341
546
  const vyperBalanceOfSlot = this.calculateVyperAddressBalanceSlot(candidateSlot, account);
342
547
  const foundVyperSlot = readSlots.find(({ slot }) => slot === vyperBalanceOfSlot);
343
548
  if (foundVyperSlot) {
344
- return foundVyperSlot.address === token.toLowerCase() &&
345
- foundVyperSlot.parentCallType !== 'DELEGATECALL'
346
- ? {
347
- slot: candidateSlot,
348
- isVyper: true,
349
- stateProxy: foundVyperSlot.address,
350
- }
351
- : { slot: candidateSlot, isVyper: true };
549
+ const candidate = this.buildFoundSlot(token, foundVyperSlot.address, {
550
+ slot: candidateSlot,
551
+ isVyper: true,
552
+ });
553
+ if (await this.verifyTokenBalanceSlot(chainId, token, candidate, baselineValue)) {
554
+ return candidate;
555
+ }
556
+ console.warn(`Candidate 'balanceOf' slot ${candidateSlot} (vyper) for token ${token} on chain ${chainId} failed verification, continuing search`);
557
+ }
558
+ }
559
+ }
560
+ // try partitioned layout (e.g. ViciERC20's `balances[partition][owner]`),
561
+ // often held on an external state contract
562
+ for (let p = 0n; p < 4n; p += 1n) {
563
+ const partition = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint'], [p]);
564
+ for (let i = 0n; i < 1000n; i += 1n) {
565
+ const candidateSlot = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint'], [i]);
566
+ const partitionedBalanceOfSlot = this.calculatePartitionedAddressBalanceSlot(candidateSlot, account, partition);
567
+ const foundPartitionedSlot = readSlots.find(({ slot }) => slot === partitionedBalanceOfSlot);
568
+ if (!foundPartitionedSlot)
569
+ continue;
570
+ const candidate = this.buildFoundSlot(token, foundPartitionedSlot.address, { slot: candidateSlot, partition });
571
+ if (await this.verifyTokenBalanceSlot(chainId, token, candidate, baselineValue)) {
572
+ return candidate;
352
573
  }
574
+ console.warn(`Candidate 'balanceOf' slot ${candidateSlot} (partition ${p}) for token ${token} on chain ${chainId} failed verification, continuing search`);
353
575
  }
354
576
  }
355
- throw new Error(`Could not find a 'balanceOf' mapping slot for token ${token} on chain ${chainId}`);
577
+ // B20 native tokens serve `balanceOf` from a Rust precompile that reads
578
+ // the token's storage directly, so no SLOADs appear in the trace — try
579
+ // the known B20 layout blindly and let verification decide
580
+ const b20Candidate = {
581
+ slot: TenderlySimulator.B20_BALANCES_SLOT,
582
+ };
583
+ if (await this.verifyTokenBalanceSlot(chainId, token, b20Candidate, baselineValue)) {
584
+ return b20Candidate;
585
+ }
586
+ throw new Error(`Could not find a verified 'balanceOf' mapping slot for token ${token} on chain ${chainId}`);
356
587
  }
357
588
  /**
358
- * Finds the slot of the `allowance` mapping in given token contract's storage
359
- * Supports `Solidity` and `Vyper` contracts
589
+ * Finds the slot of the `allowance` mapping in given token contract's storage.
590
+ * Supports `Solidity` and `Vyper` contracts.
591
+ * Found slots are verified with an additional simulation before being returned
360
592
  * @param chainId token chain id
361
593
  * @param token token address
362
594
  */
@@ -370,17 +602,29 @@ class TenderlySimulator {
370
602
  throw `No simulation with id ${simulationId} details found`;
371
603
  }
372
604
  const callTrace = simulationDetails.transaction.transaction_info.call_trace;
373
- // console.log(callTrace);
605
+ // `allowance` result without any overrides, used as verification baseline
606
+ const baselineValue = this.decodeUintOutput(callTrace.output) ?? 0n;
374
607
  const sloadCalls = this.getSLOADCalls(callTrace);
375
608
  // token's storage slots that were read during the `allowance` call
376
609
  const readSlots = sloadCalls
377
610
  .map(call => ({
378
611
  slot: call.storage_slot?.[0],
379
612
  address: call.storage_address,
380
- parentCallType: call.parentCall ? call.parentCall.call_type : null,
381
613
  }))
382
614
  .filter(({ slot }) => !!slot);
383
- console.log(readSlots);
615
+ // try Solady layout: allowance slot is derived from a fixed seed, not a mapping
616
+ const soladyAllowanceSlot = this.calculateSoladyAddressAllowanceSlot(TenderlySimulator.SOLADY_ALLOWANCE_SLOT_SEED, account, spender);
617
+ const foundSoladySlot = readSlots.find(({ slot }) => slot === soladyAllowanceSlot);
618
+ if (foundSoladySlot) {
619
+ const candidate = this.buildFoundSlot(token, foundSoladySlot.address, {
620
+ slot: TenderlySimulator.SOLADY_ALLOWANCE_SLOT_SEED,
621
+ isSolady: true,
622
+ });
623
+ if (await this.verifyTokenAllowanceSlot(chainId, token, candidate, baselineValue)) {
624
+ return candidate;
625
+ }
626
+ console.warn(`Candidate 'allowance' slot seed (solady) for token ${token} on chain ${chainId} failed verification, continuing search`);
627
+ }
384
628
  const startingPoints = [
385
629
  // regular contract
386
630
  0n,
@@ -394,33 +638,54 @@ class TenderlySimulator {
394
638
  const solidityAllowanceSlot = this.calculateSolidityAddressAllowanceSlot(candidateSlot, account, spender);
395
639
  const foundSoliditySlot = readSlots.find(({ slot }) => solidityAllowanceSlot === slot);
396
640
  if (foundSoliditySlot) {
397
- return token.toLowerCase() !== foundSoliditySlot.address &&
398
- foundSoliditySlot.parentCallType !== 'DELEGATECALL'
399
- ? {
400
- slot: candidateSlot,
401
- stateProxy: foundSoliditySlot.address,
402
- }
403
- : {
404
- slot: candidateSlot,
405
- };
641
+ const candidate = this.buildFoundSlot(token, foundSoliditySlot.address, { slot: candidateSlot });
642
+ if (await this.verifyTokenAllowanceSlot(chainId, token, candidate, baselineValue)) {
643
+ return candidate;
644
+ }
645
+ console.warn(`Candidate 'allowance' slot ${candidateSlot} for token ${token} on chain ${chainId} failed verification, continuing search`);
406
646
  }
407
647
  // try vyper
408
648
  const vyperAllowanceSlot = this.calculateVyperAddressAllowanceSlot(candidateSlot, account, spender);
409
649
  const foundVyperSlot = readSlots.find(({ slot }) => vyperAllowanceSlot === slot);
410
650
  if (foundVyperSlot) {
411
- return token.toLowerCase() !== foundVyperSlot.address &&
412
- foundVyperSlot.parentCallType !== 'DELEGATECALL'
413
- ? {
414
- slot: candidateSlot,
415
- stateProxy: foundVyperSlot.address,
416
- }
417
- : {
418
- slot: candidateSlot,
419
- };
651
+ const candidate = this.buildFoundSlot(token, foundVyperSlot.address, {
652
+ slot: candidateSlot,
653
+ isVyper: true,
654
+ });
655
+ if (await this.verifyTokenAllowanceSlot(chainId, token, candidate, baselineValue)) {
656
+ return candidate;
657
+ }
658
+ console.warn(`Candidate 'allowance' slot ${candidateSlot} (vyper) for token ${token} on chain ${chainId} failed verification, continuing search`);
659
+ }
660
+ }
661
+ }
662
+ // try partitioned layout (e.g. ViciERC20's `allowances[owner][partition][spender]`),
663
+ // often held on an external state contract
664
+ for (let p = 0n; p < 4n; p += 1n) {
665
+ const partition = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint'], [p]);
666
+ for (let i = 0n; i < 1000n; i += 1n) {
667
+ const candidateSlot = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint'], [i]);
668
+ const partitionedAllowanceSlot = this.calculatePartitionedAddressAllowanceSlot(candidateSlot, account, spender, partition);
669
+ const foundPartitionedSlot = readSlots.find(({ slot }) => slot === partitionedAllowanceSlot);
670
+ if (!foundPartitionedSlot)
671
+ continue;
672
+ const candidate = this.buildFoundSlot(token, foundPartitionedSlot.address, { slot: candidateSlot, partition });
673
+ if (await this.verifyTokenAllowanceSlot(chainId, token, candidate, baselineValue)) {
674
+ return candidate;
420
675
  }
676
+ console.warn(`Candidate 'allowance' slot ${candidateSlot} (partition ${p}) for token ${token} on chain ${chainId} failed verification, continuing search`);
421
677
  }
422
678
  }
423
- throw new Error(`Could not find a 'allowance' mapping slot for token ${token} on chain ${chainId}`);
679
+ // B20 native tokens serve `allowance` from a Rust precompile that reads
680
+ // the token's storage directly, so no SLOADs appear in the trace — try
681
+ // the known B20 layout blindly and let verification decide
682
+ const b20Candidate = {
683
+ slot: TenderlySimulator.B20_ALLOWANCES_SLOT,
684
+ };
685
+ if (await this.verifyTokenAllowanceSlot(chainId, token, b20Candidate, baselineValue)) {
686
+ return b20Candidate;
687
+ }
688
+ throw new Error(`Could not find a verified 'allowance' mapping slot for token ${token} on chain ${chainId}`);
424
689
  }
425
690
  /**
426
691
  * Returns storage slots for the given token contract.
@@ -448,6 +713,8 @@ class TenderlySimulator {
448
713
  balanceSlot: balanceSlot.slot,
449
714
  allowanceSlot: allowanceSlot.slot,
450
715
  isVyper: balanceSlot.isVyper,
716
+ isSolady: balanceSlot.isSolady,
717
+ partition: balanceSlot.partition,
451
718
  stateProxy: balanceSlot.stateProxy,
452
719
  };
453
720
  // no need to await
@@ -477,7 +744,7 @@ class TenderlySimulator {
477
744
  // get mapping slots
478
745
  const tokenSlots = await this.getTokenStorageSlots(chainId, token);
479
746
  // calculate balance slot
480
- const slotToOverride = this.calculateAddressBalanceSlot(tokenSlots.balanceSlot, account, tokenSlots.isVyper);
747
+ const slotToOverride = this.calculateAddressBalanceSlot(tokenSlots.balanceSlot, account, tokenSlots.isVyper, tokenSlots.isSolady, tokenSlots.partition);
481
748
  // add the balance override
482
749
  const address = tokenSlots.stateProxy ? tokenSlots.stateProxy : token;
483
750
  stateOverride[address] ||= {};
@@ -501,7 +768,7 @@ class TenderlySimulator {
501
768
  // get mapping slots
502
769
  const tokenSlots = await this.getTokenStorageSlots(chainId, token);
503
770
  // calculate allowance slot
504
- const slotToOverride = this.calculateAddressAllowanceSlot(tokenSlots.allowanceSlot, account, spender, tokenSlots.isVyper);
771
+ const slotToOverride = this.calculateAddressAllowanceSlot(tokenSlots.allowanceSlot, account, spender, tokenSlots.isVyper, tokenSlots.isSolady, tokenSlots.partition);
505
772
  // add the allowance override
506
773
  const address = tokenSlots.stateProxy ? tokenSlots.stateProxy : token;
507
774
  stateOverride[address] ||= {};
@@ -1 +1 @@
1
- {"version":3,"file":"tenderly-simulation.js","sourceRoot":"","sources":["../src/tenderly-simulation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenderly-simulation.js","sourceRoot":"","sources":["../src/tenderly-simulation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "5.0.9",
3
+ "version": "5.0.11",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",