@aztec/ethereum 0.0.1-commit.c949de6bc → 0.0.1-commit.cbf2c2d5d

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 (54) hide show
  1. package/dest/client.d.ts +10 -2
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +13 -7
  4. package/dest/config.d.ts +3 -1
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +6 -0
  7. package/dest/contracts/multicall.d.ts +51 -2
  8. package/dest/contracts/multicall.d.ts.map +1 -1
  9. package/dest/contracts/multicall.js +85 -0
  10. package/dest/contracts/registry.d.ts +3 -1
  11. package/dest/contracts/registry.d.ts.map +1 -1
  12. package/dest/contracts/registry.js +30 -1
  13. package/dest/contracts/rollup.d.ts +17 -4
  14. package/dest/contracts/rollup.d.ts.map +1 -1
  15. package/dest/contracts/rollup.js +50 -10
  16. package/dest/l1_artifacts.d.ts +69 -69
  17. package/dest/l1_reader.d.ts +3 -1
  18. package/dest/l1_reader.d.ts.map +1 -1
  19. package/dest/l1_reader.js +6 -1
  20. package/dest/l1_tx_utils/l1_tx_utils.d.ts +3 -1
  21. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  22. package/dest/l1_tx_utils/l1_tx_utils.js +12 -1
  23. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +1 -1
  24. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  25. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +8 -4
  26. package/dest/publisher_manager.d.ts +21 -7
  27. package/dest/publisher_manager.d.ts.map +1 -1
  28. package/dest/publisher_manager.js +81 -7
  29. package/dest/test/chain_monitor.d.ts +22 -3
  30. package/dest/test/chain_monitor.d.ts.map +1 -1
  31. package/dest/test/chain_monitor.js +33 -2
  32. package/dest/test/eth_cheat_codes.d.ts +6 -4
  33. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  34. package/dest/test/eth_cheat_codes.js +6 -4
  35. package/dest/test/start_anvil.d.ts +23 -3
  36. package/dest/test/start_anvil.d.ts.map +1 -1
  37. package/dest/test/start_anvil.js +143 -29
  38. package/dest/utils.d.ts +1 -1
  39. package/dest/utils.d.ts.map +1 -1
  40. package/dest/utils.js +16 -12
  41. package/package.json +5 -7
  42. package/src/client.ts +10 -2
  43. package/src/config.ts +12 -0
  44. package/src/contracts/multicall.ts +65 -1
  45. package/src/contracts/registry.ts +31 -1
  46. package/src/contracts/rollup.ts +59 -18
  47. package/src/l1_reader.ts +13 -1
  48. package/src/l1_tx_utils/l1_tx_utils.ts +14 -1
  49. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +8 -4
  50. package/src/publisher_manager.ts +105 -10
  51. package/src/test/chain_monitor.ts +60 -3
  52. package/src/test/eth_cheat_codes.ts +6 -4
  53. package/src/test/start_anvil.ts +177 -29
  54. package/src/utils.ts +17 -14
@@ -499,6 +499,16 @@ export class RollupContract {
499
499
  2,
500
500
  "getGenesisArchiveTreeRoot"
501
501
  ],
502
+ [
503
+ memoize,
504
+ 2,
505
+ "getVkTreeRoot"
506
+ ],
507
+ [
508
+ memoize,
509
+ 2,
510
+ "getProtocolContractsHash"
511
+ ],
502
512
  [
503
513
  memoize,
504
514
  2,
@@ -640,18 +650,35 @@ export class RollupContract {
640
650
  0n
641
651
  ]));
642
652
  }
653
+ async getVkTreeRoot() {
654
+ const slot = BigInt(RollupContract.stfStorageSlot) + 3n;
655
+ const value = await this.client.getStorageAt({
656
+ address: this.address,
657
+ slot: `0x${slot.toString(16)}`
658
+ });
659
+ return Fr.fromString(value ?? '0x0');
660
+ }
661
+ async getProtocolContractsHash() {
662
+ const slot = BigInt(RollupContract.stfStorageSlot) + 4n;
663
+ const value = await this.client.getStorageAt({
664
+ address: this.address,
665
+ slot: `0x${slot.toString(16)}`
666
+ });
667
+ return Fr.fromString(value ?? '0x0');
668
+ }
643
669
  /**
644
670
  * Returns rollup constants used for epoch queries.
645
671
  * Return type is `L1RollupConstants` which is defined in stdlib,
646
672
  * so we cant reference it until we move this contract to that package.
647
673
  */ async getRollupConstants() {
648
- const [l1StartBlock, l1GenesisTime, slotDuration, epochDuration, proofSubmissionEpochs, targetCommitteeSize] = await Promise.all([
674
+ const [l1StartBlock, l1GenesisTime, slotDuration, epochDuration, proofSubmissionEpochs, targetCommitteeSize, rollupManaLimit] = await Promise.all([
649
675
  this.getL1StartBlock(),
650
676
  this.getL1GenesisTime(),
651
677
  this.getSlotDuration(),
652
678
  this.getEpochDuration(),
653
679
  this.getProofSubmissionEpochs(),
654
- this.getTargetCommitteeSize()
680
+ this.getTargetCommitteeSize(),
681
+ this.getManaLimit()
655
682
  ]);
656
683
  return {
657
684
  l1StartBlock,
@@ -659,7 +686,8 @@ export class RollupContract {
659
686
  slotDuration,
660
687
  epochDuration: Number(epochDuration),
661
688
  proofSubmissionEpochs: Number(proofSubmissionEpochs),
662
- targetCommitteeSize
689
+ targetCommitteeSize,
690
+ rollupManaLimit: Number(rollupManaLimit)
663
691
  };
664
692
  }
665
693
  async getSlasherAddress() {
@@ -737,8 +765,9 @@ export class RollupContract {
737
765
  async getCheckpointNumber() {
738
766
  return CheckpointNumber.fromBigInt(await this.rollup.read.getPendingCheckpointNumber());
739
767
  }
740
- async getProvenCheckpointNumber() {
741
- return CheckpointNumber.fromBigInt(await this.rollup.read.getProvenCheckpointNumber());
768
+ async getProvenCheckpointNumber(options) {
769
+ await checkBlockTag(options?.blockNumber, this.client);
770
+ return CheckpointNumber.fromBigInt(await this.rollup.read.getProvenCheckpointNumber(options));
742
771
  }
743
772
  async getSlotNumber() {
744
773
  return SlotNumber.fromBigInt(await this.rollup.read.getCurrentSlot());
@@ -937,9 +966,8 @@ export class RollupContract {
937
966
  * @return [slot, checkpointNumber, timeOfNextL1Slot] - If you can propose, the L2 slot number, checkpoint number and
938
967
  * timestamp of the next L1 block
939
968
  * @throws otherwise
940
- */ async canProposeAtNextEthBlock(archive, account, slotDuration, opts = {}) {
941
- const latestBlock = await this.client.getBlock();
942
- const timeOfNextL1Slot = latestBlock.timestamp + BigInt(slotDuration);
969
+ */ async canProposeAt(archive, account, timestamp, opts = {}) {
970
+ const timeOfNextL1Slot = timestamp;
943
971
  const who = typeof account === 'string' ? account : account.address;
944
972
  try {
945
973
  const { result: [slot, checkpointNumber] } = await this.client.simulateContract({
@@ -1037,6 +1065,18 @@ export class RollupContract {
1037
1065
  inFeeAsset
1038
1066
  ]);
1039
1067
  }
1068
+ async getManaMinFeeComponentsAt(timestamp, inFeeAsset) {
1069
+ const result = await this.rollup.read.getManaMinFeeComponentsAt([
1070
+ timestamp,
1071
+ inFeeAsset
1072
+ ]);
1073
+ return {
1074
+ sequencerCost: result.sequencerCost,
1075
+ proverCost: result.proverCost,
1076
+ congestionCost: result.congestionCost,
1077
+ congestionMultiplier: result.congestionMultiplier
1078
+ };
1079
+ }
1040
1080
  async getSlotAt(timestamp) {
1041
1081
  return SlotNumber.fromBigInt(await this.rollup.read.getSlotAt([
1042
1082
  timestamp
@@ -1086,10 +1126,10 @@ export class RollupContract {
1086
1126
  prover
1087
1127
  ]);
1088
1128
  }
1089
- async getAttesters() {
1129
+ async getAttesters(timestamp) {
1090
1130
  const attesterSize = await this.getActiveAttesterCount();
1091
1131
  const gse = new GSEContract(this.client, await this.getGSE());
1092
- const ts = (await this.client.getBlock()).timestamp;
1132
+ const ts = timestamp ?? (await this.client.getBlock()).timestamp;
1093
1133
  const indices = Array.from({
1094
1134
  length: attesterSize
1095
1135
  }, (_, i)=>BigInt(i));
@@ -12032,100 +12032,100 @@ export declare const RollupArtifact: {
12032
12032
  readonly start: 1538;
12033
12033
  readonly length: 20;
12034
12034
  }, {
12035
- readonly start: 11838;
12035
+ readonly start: 11069;
12036
12036
  readonly length: 20;
12037
12037
  }, {
12038
- readonly start: 12451;
12038
+ readonly start: 11670;
12039
12039
  readonly length: 20;
12040
12040
  }, {
12041
- readonly start: 12689;
12041
+ readonly start: 11916;
12042
12042
  readonly length: 20;
12043
12043
  }, {
12044
- readonly start: 13139;
12044
+ readonly start: 12333;
12045
12045
  readonly length: 20;
12046
12046
  }, {
12047
- readonly start: 13375;
12047
+ readonly start: 12607;
12048
12048
  readonly length: 20;
12049
12049
  }, {
12050
- readonly start: 13548;
12050
+ readonly start: 12801;
12051
12051
  readonly length: 20;
12052
12052
  }, {
12053
- readonly start: 13631;
12053
+ readonly start: 12884;
12054
12054
  readonly length: 20;
12055
12055
  }, {
12056
- readonly start: 13884;
12056
+ readonly start: 13131;
12057
12057
  readonly length: 20;
12058
12058
  }, {
12059
- readonly start: 13921;
12059
+ readonly start: 13168;
12060
12060
  readonly length: 20;
12061
12061
  }, {
12062
- readonly start: 14024;
12062
+ readonly start: 13271;
12063
12063
  readonly length: 20;
12064
12064
  }, {
12065
- readonly start: 14258;
12065
+ readonly start: 13518;
12066
12066
  readonly length: 20;
12067
12067
  }, {
12068
- readonly start: 14451;
12068
+ readonly start: 13711;
12069
12069
  readonly length: 20;
12070
12070
  }, {
12071
- readonly start: 14783;
12071
+ readonly start: 14043;
12072
12072
  readonly length: 20;
12073
12073
  }, {
12074
- readonly start: 14954;
12074
+ readonly start: 14201;
12075
12075
  readonly length: 20;
12076
12076
  }, {
12077
- readonly start: 15236;
12077
+ readonly start: 14483;
12078
12078
  readonly length: 20;
12079
12079
  }, {
12080
- readonly start: 15603;
12080
+ readonly start: 14885;
12081
12081
  readonly length: 20;
12082
12082
  }, {
12083
- readonly start: 15704;
12083
+ readonly start: 14971;
12084
12084
  readonly length: 20;
12085
12085
  }, {
12086
- readonly start: 15811;
12086
+ readonly start: 15133;
12087
12087
  readonly length: 20;
12088
12088
  }, {
12089
- readonly start: 17559;
12089
+ readonly start: 16923;
12090
12090
  readonly length: 20;
12091
12091
  }, {
12092
- readonly start: 17678;
12092
+ readonly start: 17048;
12093
12093
  readonly length: 20;
12094
12094
  }, {
12095
- readonly start: 17774;
12095
+ readonly start: 17171;
12096
12096
  readonly length: 20;
12097
12097
  }, {
12098
- readonly start: 17905;
12098
+ readonly start: 17302;
12099
12099
  readonly length: 20;
12100
12100
  }, {
12101
- readonly start: 18029;
12101
+ readonly start: 17411;
12102
12102
  readonly length: 20;
12103
12103
  }, {
12104
- readonly start: 18993;
12104
+ readonly start: 18353;
12105
12105
  readonly length: 20;
12106
12106
  }, {
12107
- readonly start: 19332;
12107
+ readonly start: 18710;
12108
12108
  readonly length: 20;
12109
12109
  }];
12110
12110
  };
12111
12111
  readonly "src/core/libraries/rollup/RollupOperationsExtLib.sol": {
12112
12112
  readonly RollupOperationsExtLib: readonly [{
12113
- readonly start: 12840;
12113
+ readonly start: 12067;
12114
12114
  readonly length: 20;
12115
12115
  }, {
12116
- readonly start: 15491;
12116
+ readonly start: 14773;
12117
12117
  readonly length: 20;
12118
12118
  }, {
12119
- readonly start: 15970;
12119
+ readonly start: 15292;
12120
12120
  readonly length: 20;
12121
12121
  }, {
12122
- readonly start: 16321;
12122
+ readonly start: 15632;
12123
12123
  readonly length: 20;
12124
12124
  }, {
12125
- readonly start: 16445;
12125
+ readonly start: 15756;
12126
12126
  readonly length: 20;
12127
12127
  }, {
12128
- readonly start: 17841;
12128
+ readonly start: 17238;
12129
12129
  readonly length: 20;
12130
12130
  }];
12131
12131
  };
@@ -12140,118 +12140,118 @@ export declare const RollupArtifact: {
12140
12140
  readonly start: 1052;
12141
12141
  readonly length: 20;
12142
12142
  }, {
12143
- readonly start: 11438;
12143
+ readonly start: 10605;
12144
12144
  readonly length: 20;
12145
12145
  }, {
12146
- readonly start: 11554;
12146
+ readonly start: 10749;
12147
12147
  readonly length: 20;
12148
12148
  }, {
12149
- readonly start: 11659;
12149
+ readonly start: 10890;
12150
12150
  readonly length: 20;
12151
12151
  }, {
12152
- readonly start: 11954;
12152
+ readonly start: 11185;
12153
12153
  readonly length: 20;
12154
12154
  }, {
12155
- readonly start: 12050;
12155
+ readonly start: 11281;
12156
12156
  readonly length: 20;
12157
12157
  }, {
12158
- readonly start: 12155;
12158
+ readonly start: 11386;
12159
12159
  readonly length: 20;
12160
12160
  }, {
12161
- readonly start: 12488;
12161
+ readonly start: 11715;
12162
12162
  readonly length: 20;
12163
12163
  }, {
12164
- readonly start: 12617;
12164
+ readonly start: 11844;
12165
12165
  readonly length: 20;
12166
12166
  }, {
12167
- readonly start: 12788;
12167
+ readonly start: 12015;
12168
12168
  readonly length: 20;
12169
12169
  }, {
12170
- readonly start: 13001;
12170
+ readonly start: 12213;
12171
12171
  readonly length: 20;
12172
12172
  }, {
12173
- readonly start: 13279;
12173
+ readonly start: 12473;
12174
12174
  readonly length: 20;
12175
12175
  }, {
12176
- readonly start: 14127;
12176
+ readonly start: 13376;
12177
12177
  readonly length: 20;
12178
12178
  }, {
12179
- readonly start: 14372;
12179
+ readonly start: 13632;
12180
12180
  readonly length: 20;
12181
12181
  }, {
12182
- readonly start: 14559;
12182
+ readonly start: 13819;
12183
12183
  readonly length: 20;
12184
12184
  }, {
12185
- readonly start: 14686;
12185
+ readonly start: 13946;
12186
12186
  readonly length: 20;
12187
12187
  }, {
12188
- readonly start: 15132;
12188
+ readonly start: 14379;
12189
12189
  readonly length: 20;
12190
12190
  }, {
12191
- readonly start: 15301;
12191
+ readonly start: 14548;
12192
12192
  readonly length: 20;
12193
12193
  }, {
12194
- readonly start: 15337;
12194
+ readonly start: 14584;
12195
12195
  readonly length: 20;
12196
12196
  }, {
12197
- readonly start: 16202;
12197
+ readonly start: 15513;
12198
12198
  readonly length: 20;
12199
12199
  }, {
12200
- readonly start: 16512;
12200
+ readonly start: 15847;
12201
12201
  readonly length: 20;
12202
12202
  }, {
12203
- readonly start: 16661;
12203
+ readonly start: 16023;
12204
12204
  readonly length: 20;
12205
12205
  }, {
12206
- readonly start: 16816;
12206
+ readonly start: 16170;
12207
12207
  readonly length: 20;
12208
12208
  }, {
12209
- readonly start: 16898;
12209
+ readonly start: 16214;
12210
12210
  readonly length: 20;
12211
12211
  }, {
12212
- readonly start: 17016;
12212
+ readonly start: 16360;
12213
12213
  readonly length: 20;
12214
12214
  }, {
12215
- readonly start: 17127;
12215
+ readonly start: 16471;
12216
12216
  readonly length: 20;
12217
12217
  }, {
12218
- readonly start: 17326;
12218
+ readonly start: 16677;
12219
12219
  readonly length: 20;
12220
12220
  }, {
12221
- readonly start: 17391;
12221
+ readonly start: 16742;
12222
12222
  readonly length: 20;
12223
12223
  }, {
12224
- readonly start: 17458;
12224
+ readonly start: 16809;
12225
12225
  readonly length: 20;
12226
12226
  }, {
12227
- readonly start: 17606;
12227
+ readonly start: 16976;
12228
12228
  readonly length: 20;
12229
12229
  }, {
12230
- readonly start: 18067;
12230
+ readonly start: 17489;
12231
12231
  readonly length: 20;
12232
12232
  }, {
12233
- readonly start: 18152;
12233
+ readonly start: 17574;
12234
12234
  readonly length: 20;
12235
12235
  }, {
12236
- readonly start: 18188;
12236
+ readonly start: 17610;
12237
12237
  readonly length: 20;
12238
12238
  }, {
12239
- readonly start: 18255;
12239
+ readonly start: 17677;
12240
12240
  readonly length: 20;
12241
12241
  }, {
12242
- readonly start: 18388;
12242
+ readonly start: 17791;
12243
12243
  readonly length: 20;
12244
12244
  }, {
12245
- readonly start: 18518;
12245
+ readonly start: 17917;
12246
12246
  readonly length: 20;
12247
12247
  }, {
12248
- readonly start: 19101;
12248
+ readonly start: 18488;
12249
12249
  readonly length: 20;
12250
12250
  }, {
12251
- readonly start: 19173;
12251
+ readonly start: 18560;
12252
12252
  readonly length: 20;
12253
12253
  }, {
12254
- readonly start: 19295;
12254
+ readonly start: 18667;
12255
12255
  readonly length: 20;
12256
12256
  }];
12257
12257
  };
@@ -12,7 +12,9 @@ export interface L1ReaderConfig {
12
12
  l1Contracts: L1ContractAddresses;
13
13
  /** The polling interval viem uses in ms */
14
14
  viemPollingIntervalMS: number;
15
+ /** Timeout for HTTP requests to the L1 RPC node in ms. */
16
+ l1HttpTimeoutMS?: number;
15
17
  }
16
18
  export declare const l1ReaderConfigMappings: ConfigMappingsType<L1ReaderConfig>;
17
19
  export declare function getL1ReaderConfigFromEnv(): L1ReaderConfig;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfcmVhZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbDFfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE2QyxNQUFNLDBCQUEwQixDQUFDO0FBRTlHLE9BQU8sRUFBRSxLQUFLLG1CQUFtQixFQUE4QixNQUFNLDRCQUE0QixDQUFDO0FBRWxHLDJDQUEyQztBQUMzQyxNQUFNLFdBQVcsY0FBYztJQUM3QiwwRkFBMEY7SUFDMUYsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLDBFQUEwRTtJQUMxRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDekIseUNBQXlDO0lBQ3pDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIseUNBQXlDO0lBQ3pDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQztJQUNqQywyQ0FBMkM7SUFDM0MscUJBQXFCLEVBQUUsTUFBTSxDQUFDO0NBQy9CO0FBRUQsZUFBTyxNQUFNLHNCQUFzQixFQUFFLGtCQUFrQixDQUFDLGNBQWMsQ0EyQnJFLENBQUM7QUFFRix3QkFBZ0Isd0JBQXdCLElBQUksY0FBYyxDQUV6RCJ9
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfcmVhZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbDFfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUl4QixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxLQUFLLG1CQUFtQixFQUE4QixNQUFNLDRCQUE0QixDQUFDO0FBRWxHLDJDQUEyQztBQUMzQyxNQUFNLFdBQVcsY0FBYztJQUM3QiwwRkFBMEY7SUFDMUYsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLDBFQUEwRTtJQUMxRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDekIseUNBQXlDO0lBQ3pDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIseUNBQXlDO0lBQ3pDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQztJQUNqQywyQ0FBMkM7SUFDM0MscUJBQXFCLEVBQUUsTUFBTSxDQUFDO0lBQzlCLDBEQUEwRDtJQUMxRCxlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDMUI7QUFFRCxlQUFPLE1BQU0sc0JBQXNCLEVBQUUsa0JBQWtCLENBQUMsY0FBYyxDQWdDckUsQ0FBQztBQUVGLHdCQUFnQix3QkFBd0IsSUFBSSxjQUFjLENBRXpEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"l1_reader.d.ts","sourceRoot":"","sources":["../src/l1_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAE9G,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,4BAA4B,CAAC;AAElG,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IACjC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CA2BrE,CAAC;AAEF,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD"}
1
+ {"version":3,"file":"l1_reader.d.ts","sourceRoot":"","sources":["../src/l1_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,4BAA4B,CAAC;AAElG,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IACjC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CAgCrE,CAAC;AAEF,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD"}
package/dest/l1_reader.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
1
+ import { getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
2
2
  import { l1ContractAddressesMapping } from './l1_contract_addresses.js';
3
3
  export const l1ReaderConfigMappings = {
4
4
  l1Contracts: {
@@ -26,6 +26,11 @@ export const l1ReaderConfigMappings = {
26
26
  env: 'L1_READER_VIEM_POLLING_INTERVAL_MS',
27
27
  description: 'The polling interval viem uses in ms',
28
28
  ...numberConfigHelper(1_000)
29
+ },
30
+ l1HttpTimeoutMS: {
31
+ env: 'ETHEREUM_HTTP_TIMEOUT_MS',
32
+ description: 'Timeout for HTTP requests to the L1 RPC node in ms.',
33
+ ...optionalNumberConfigHelper()
29
34
  }
30
35
  };
31
36
  export function getL1ReaderConfigFromEnv() {
@@ -16,6 +16,8 @@ export declare class L1TxUtils extends ReadOnlyL1TxUtils {
16
16
  protected store?: IL1TxStore | undefined;
17
17
  protected metrics?: IL1TxMetrics | undefined;
18
18
  protected txs: L1TxState[];
19
+ /** Last nonce successfully sent to the chain. Used as a lower bound when a fallback RPC node returns a stale count. */
20
+ private lastSentNonce;
19
21
  /** Tx delayer for testing. Only set when enableDelayer config is true. */
20
22
  delayer?: Delayer;
21
23
  /** KZG instance for blob operations. */
@@ -100,4 +102,4 @@ export declare class L1TxUtils extends ReadOnlyL1TxUtils {
100
102
  ethereumSlotDuration: bigint | number;
101
103
  }, bindings: LoggerBindings): Delayer;
102
104
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdHhfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sMV90eF91dGlscy9sMV90eF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUk3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl2RCxPQUFPLEVBQ0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxjQUFjLEVBQ25CLEtBQUssR0FBRyxFQUNSLEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssYUFBYSxFQUNsQixLQUFLLGtCQUFrQixFQUl4QixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQTJCLE1BQU0sYUFBYSxDQUFDO0FBRTVFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUF3QyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFFTCxLQUFLLFlBQVksRUFDakIsS0FBSyxVQUFVLEVBQ2YsS0FBSyxXQUFXLEVBQ2hCLEtBQUssU0FBUyxFQUNkLEtBQUssZUFBZSxFQUVwQixZQUFZLEVBRWIsTUFBTSxZQUFZLENBQUM7QUFJcEIscUJBQWEsU0FBVSxTQUFRLGlCQUFpQjtJQVE1QixNQUFNLEVBQUUsVUFBVTtJQUMzQixPQUFPLEVBQUUsVUFBVTtJQUMxQixTQUFTLENBQUMs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
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdHhfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sMV90eF91dGlscy9sMV90eF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUk3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl2RCxPQUFPLEVBQ0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxjQUFjLEVBQ25CLEtBQUssR0FBRyxFQUNSLEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssYUFBYSxFQUNsQixLQUFLLGtCQUFrQixFQUl4QixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQTJCLE1BQU0sYUFBYSxDQUFDO0FBRTVFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUF3QyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFFTCxLQUFLLFlBQVksRUFDakIsS0FBSyxVQUFVLEVBQ2YsS0FBSyxXQUFXLEVBQ2hCLEtBQUssU0FBUyxFQUNkLEtBQUssZUFBZSxFQUVwQixZQUFZLEVBRWIsTUFBTSxZQUFZLENBQUM7QUFJcEIscUJBQWEsU0FBVSxTQUFRLGlCQUFpQjtJQVU1QixNQUFNLEVBQUUsVUFBVTtJQUMzQixPQUFPLEVBQUUsVUFBVTtJQUMxQixTQUFTLENBQUMsTUFBTSxFQUFFLGVBQWU7SUFLakMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNoQixTQUFTLENBQUMsT0FBTyxDQUFDO0lBakJwQixTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFNO0lBQ2hDLHVIQUF1SDtJQUN2SCxPQUFPLENBQUMsYUFBYSxDQUFxQjtJQUMxQywwRUFBMEU7SUFDbkUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3pCLHdDQUF3QztJQUN4QyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBRWhDLFlBQ2tCLE1BQU0sRUFBRSxVQUFVLEVBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQ2hCLE1BQU0sRUFBRSxlQUFlLEVBQ2pDLE1BQU0sR0FBRSxNQUEyQyxFQUNuRCxZQUFZLEdBQUUsWUFBaUMsRUFDL0MsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUNqQyxnQkFBZ0IsR0FBRSxPQUFlLEVBQ3ZCLEtBQUssQ0FBQyx3QkFBWSxFQUNsQixPQUFPLENBQUMsMEJBQWMsRUFDaEMsR0FBRyxDQUFDLEVBQUUsZUFBZSxFQUNyQixPQUFPLENBQUMsRUFBRSxPQUFPLEVBa0JsQjtJQUVELElBQVcsS0FBSyxpQkFFZjtJQUVELElBQVcsc0JBQXNCLHVCQUdoQztJQUVELFVBQWdCLFdBQVcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BILFVBQWdCLFdBQVcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQTJCM0csWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLFFBTXREO0lBRU0sZ0JBQWdCLGVBRXRCO0lBRU0sZ0JBQWdCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUl6QztJQUVEOzs7T0FHRztJQUNVLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0F3RHpEO1lBRWEsZUFBZTtJQUs3QixVQUFnQix3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsZ0NBQWdDLDBCQUdoRjtJQUVEOzs7OztPQUtHO0lBQ1UsZUFBZSxDQUMxQixPQUFPLEVBQUUsV0FBVyxFQUNwQixrQkFBa0IsQ0FBQyxFQUFFLFVBQVUsRUFDL0IsVUFBVSxDQUFDLEVBQUUsWUFBWSxFQUN6QixXQUFXLEdBQUUsWUFBZ0MsR0FDNUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUFDLEtBQUssRUFBRSxTQUFTLENBQUE7S0FBRSxDQUFDLENBOEY1QztZQUVhLGVBQWU7SUE2QjdCOzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FBQyxZQUFZO0lBeUNwQjs7T0FFRztJQUNILFVBQWdCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBOEtoRjtJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsVUFBVTtJQThCbEIsbURBQW1EO0lBQ3RDLHFCQUFxQixDQUFDLGNBQWMsU0FBSyxpQkFRckQ7SUFFRDs7Ozs7T0FLRztJQUNVLHlCQUF5QixDQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUNwQixTQUFTLENBQUMsRUFBRSxVQUFVLEVBQ3RCLFVBQVUsQ0FBQyxFQUFFLFlBQVksR0FDeEIsT0FBTyxDQUFDO1FBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDO1FBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQTtLQUFFLENBQUMsQ0FJNUQ7SUFFcUIsUUFBUSxDQUM1QixPQUFPLEVBQUUsV0FBVyxHQUFHO1FBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFBO0tBQUUsRUFDbkQsZUFBZSxHQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFNLEVBQ3BELGNBQWMsR0FBRSxhQUFrQixFQUNsQyxHQUFHLEdBQUUsR0FBZSxFQUNwQixVQUFVLENBQUMsRUFBRSxlQUFlLEdBQUc7UUFBRSxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxDQUFBO0tBQUUsR0FDN0YsT0FBTyxDQUFDO1FBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUFDLE1BQU0sRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQW9CckQ7SUFFRDs7OztPQUlHO0lBQ0gsVUFBZ0IscUJBQXFCLENBQUMsS0FBSyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBMEVyRTtZQUdhLGNBQWM7SUFLNUIsdURBQXVEO0lBQ3ZELFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQU05RTtJQUVELHNDQUFzQztJQUN0QyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtRQUFFLG9CQUFvQixFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUE7S0FBRSxFQUFFLFFBQVEsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUUxRztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"l1_tx_utils.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/l1_tx_utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"l1_tx_utils.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/l1_tx_utils.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export class L1TxUtils extends ReadOnlyL1TxUtils {
22
22
  store;
23
23
  metrics;
24
24
  txs;
25
+ /** Last nonce successfully sent to the chain. Used as a lower bound when a fallback RPC node returns a stale count. */ lastSentNonce;
25
26
  /** Tx delayer for testing. Only set when enableDelayer config is true. */ delayer;
26
27
  /** KZG instance for blob operations. */ kzg;
27
28
  constructor(client, address, signer, logger = createLogger('ethereum:publisher'), dateProvider = new DateProvider(), config, debugMaxGasLimit = false, store, metrics, kzg, delayer){
@@ -59,6 +60,11 @@ export class L1TxUtils extends ReadOnlyL1TxUtils {
59
60
  this.metrics?.recordMinedTx(l1TxState, new Date(l1Timestamp));
60
61
  } else if (newState === TxUtilsState.NOT_MINED) {
61
62
  this.metrics?.recordDroppedTx(l1TxState);
63
+ // The tx was dropped: the chain nonce reverted to l1TxState.nonce, so our lower bound is
64
+ // no longer valid. Clear it so the next send fetches the real nonce from the chain.
65
+ if (this.lastSentNonce === l1TxState.nonce) {
66
+ this.lastSentNonce = undefined;
67
+ }
62
68
  }
63
69
  // Update state in the store
64
70
  await this.store?.saveState(sender, l1TxState).catch((err)=>this.logger.error('Failed to persist L1 tx state', err));
@@ -165,10 +171,13 @@ export class L1TxUtils extends ReadOnlyL1TxUtils {
165
171
  if (gasConfig.txTimeoutAt && now > gasConfig.txTimeoutAt) {
166
172
  throw new TimeoutError(`Transaction timed out before sending (now ${now.toISOString()} > timeoutAt ${gasConfig.txTimeoutAt.toISOString()})`);
167
173
  }
168
- const nonce = await this.client.getTransactionCount({
174
+ const chainNonce = await this.client.getTransactionCount({
169
175
  address: account,
170
176
  blockTag: 'pending'
171
177
  });
178
+ // If a fallback RPC node returns a stale count (lower than what we last sent), use our
179
+ // local lower bound to avoid sending a duplicate of an already-pending transaction.
180
+ const nonce = this.lastSentNonce !== undefined && chainNonce <= this.lastSentNonce ? this.lastSentNonce + 1 : chainNonce;
172
181
  const baseState = {
173
182
  request,
174
183
  gasLimit,
@@ -184,6 +193,8 @@ export class L1TxUtils extends ReadOnlyL1TxUtils {
184
193
  const txHash = await this.client.sendRawTransaction({
185
194
  serializedTransaction: signedRequest
186
195
  });
196
+ // Update after tx is sent successfully
197
+ this.lastSentNonce = nonce;
187
198
  // Create the new state for monitoring
188
199
  const l1TxState = {
189
200
  ...baseState,
@@ -80,4 +80,4 @@ export declare class ReadOnlyL1TxUtils {
80
80
  }>;
81
81
  bumpGasLimit(gasLimit: bigint, _gasConfig?: L1TxUtilsConfig): bigint;
82
82
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHlfbDFfdHhfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sMV90eF91dGlscy9yZWFkb25seV9sMV90eF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXZELE9BQU8sRUFDTCxLQUFLLEdBQUcsRUFDUixLQUFLLE9BQU8sRUFFWixLQUFLLGNBQWMsRUFFbkIsS0FBSyxpQkFBaUIsRUFDdEIsS0FBSyxHQUFHLEVBR1IsS0FBSyxhQUFhLEVBS25CLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBbUQsTUFBTSxhQUFhLENBQUM7QUFTcEcsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNeEYscUJBQWEsaUJBQWlCO0lBS25CLE1BQU0sRUFBRSxVQUFVO0lBQ3pCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTTthQUNSLFlBQVksRUFBRSxZQUFZO0lBRTFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPO0lBUjlCLE1BQU0sRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekMsU0FBUyxDQUFDLFdBQVcsVUFBUztJQUU5QixZQUNTLE1BQU0sRUFBRSxVQUFVLEVBQ2YsTUFBTSxvQkFBcUQsRUFDckQsWUFBWSxFQUFFLFlBQVksRUFDMUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUN2QixnQkFBZ0IsR0FBRSxPQUFlLEVBRzVDO0lBRU0sU0FBUyxTQUVmO0lBRU0sT0FBTyxTQUViO0lBRU0sUUFBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUVkO0lBRU0sY0FBYyxvQkFFcEI7SUFFTSxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FFOUQ7SUFFRDs7T0FFRztJQUNVLFdBQVcsQ0FDdEIsa0JBQWtCLENBQUMsRUFBRSxlQUFlLEVBQ3BDLFFBQVEsR0FBRSxPQUFlLEVBQ3pCLE9BQU8sR0FBRSxNQUFVLEVBQ25CLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxPQUFPLFNBQVMsQ0FBQyxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQzdELE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FtSm5CO0lBRUQ7O09BRUc7SUFDVSxXQUFXLENBQ3RCLE9BQU8sRUFBRSxPQUFPLEdBQUcsR0FBRyxFQUN0QixPQUFPLEVBQUUsV0FBVyxFQUNwQixVQUFVLENBQUMsRUFBRSxlQUFlLEVBQzVCLFdBQVcsQ0FBQyxFQUFFLFlBQVksR0FDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQThCakI7SUFFSyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsQ0FZL0U7SUFFWSx5QkFBeUIsQ0FDcEMsSUFBSSxFQUFFLEdBQUcsRUFDVCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNyQixZQUFZLEVBQUUsTUFBTSxDQUFDO1FBQ3JCLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDVCxPQUFPLEVBQUUsR0FBRyxDQUFDO0tBQ2QsRUFDRCxVQUFVLEVBQUUsQ0FBQyxZQUFZLEdBQUc7UUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDLEdBQUcsU0FBUyxFQUNyRSxhQUFhLEdBQUUsYUFBa0IsK0JBZ0RsQztJQUVZLFFBQVEsQ0FDbkIsT0FBTyxFQUFFLFdBQVcsR0FBRztRQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQTtLQUFFLEVBQ25ELGNBQWMsR0FBRSxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBTSxFQUNuRCxjQUFjLEdBQUUsYUFBa0IsRUFDbEMsR0FBRyxHQUFFLEdBQWUsRUFDcEIsVUFBVSxDQUFDLEVBQUUsZUFBZSxHQUFHO1FBQUUsbUJBQW1CLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxHQUM5RCxPQUFPLENBQUM7UUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQUMsTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBVXJEO0lBRUQsVUFBZ0IsU0FBUyxDQUN2QixJQUFJLEVBQUUsR0FBRyxFQUNULGNBQWMsNENBQXFDLEVBQ25ELGNBQWMsMkJBQW9CLEVBQ2xDLFNBQVMsRUFBRSxlQUFlLEdBQUc7UUFBRSxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQzdELEdBQUcsRUFBRSxHQUFHOzs7T0FvQ1Q7SUFFTSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxlQUFlLEdBQUcsTUFBTSxDQVcxRTtDQUNGIn0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHlfbDFfdHhfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sMV90eF91dGlscy9yZWFkb25seV9sMV90eF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXZELE9BQU8sRUFDTCxLQUFLLEdBQUcsRUFDUixLQUFLLE9BQU8sRUFFWixLQUFLLGNBQWMsRUFFbkIsS0FBSyxpQkFBaUIsRUFDdEIsS0FBSyxHQUFHLEVBR1IsS0FBSyxhQUFhLEVBS25CLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBbUQsTUFBTSxhQUFhLENBQUM7QUFTcEcsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNeEYscUJBQWEsaUJBQWlCO0lBS25CLE1BQU0sRUFBRSxVQUFVO0lBQ3pCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTTthQUNSLFlBQVksRUFBRSxZQUFZO0lBRTFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPO0lBUjlCLE1BQU0sRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekMsU0FBUyxDQUFDLFdBQVcsVUFBUztJQUU5QixZQUNTLE1BQU0sRUFBRSxVQUFVLEVBQ2YsTUFBTSxvQkFBcUQsRUFDckQsWUFBWSxFQUFFLFlBQVksRUFDMUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUN2QixnQkFBZ0IsR0FBRSxPQUFlLEVBRzVDO0lBRU0sU0FBUyxTQUVmO0lBRU0sT0FBTyxTQUViO0lBRU0sUUFBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUVkO0lBRU0sY0FBYyxvQkFFcEI7SUFFTSxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FFOUQ7SUFFRDs7T0FFRztJQUNVLFdBQVcsQ0FDdEIsa0JBQWtCLENBQUMsRUFBRSxlQUFlLEVBQ3BDLFFBQVEsR0FBRSxPQUFlLEVBQ3pCLE9BQU8sR0FBRSxNQUFVLEVBQ25CLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxPQUFPLFNBQVMsQ0FBQyxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQzdELE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FvSm5CO0lBRUQ7O09BRUc7SUFDVSxXQUFXLENBQ3RCLE9BQU8sRUFBRSxPQUFPLEdBQUcsR0FBRyxFQUN0QixPQUFPLEVBQUUsV0FBVyxFQUNwQixVQUFVLENBQUMsRUFBRSxlQUFlLEVBQzVCLFdBQVcsQ0FBQyxFQUFFLFlBQVksR0FDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQWlDakI7SUFFSyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsQ0FZL0U7SUFFWSx5QkFBeUIsQ0FDcEMsSUFBSSxFQUFFLEdBQUcsRUFDVCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNyQixZQUFZLEVBQUUsTUFBTSxDQUFDO1FBQ3JCLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDVCxPQUFPLEVBQUUsR0FBRyxDQUFDO0tBQ2QsRUFDRCxVQUFVLEVBQUUsQ0FBQyxZQUFZLEdBQUc7UUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDLEdBQUcsU0FBUyxFQUNyRSxhQUFhLEdBQUUsYUFBa0IsK0JBZ0RsQztJQUVZLFFBQVEsQ0FDbkIsT0FBTyxFQUFFLFdBQVcsR0FBRztRQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQTtLQUFFLEVBQ25ELGNBQWMsR0FBRSxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBTSxFQUNuRCxjQUFjLEdBQUUsYUFBa0IsRUFDbEMsR0FBRyxHQUFFLEdBQWUsRUFDcEIsVUFBVSxDQUFDLEVBQUUsZUFBZSxHQUFHO1FBQUUsbUJBQW1CLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxHQUM5RCxPQUFPLENBQUM7UUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQUMsTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBVXJEO0lBRUQsVUFBZ0IsU0FBUyxDQUN2QixJQUFJLEVBQUUsR0FBRyxFQUNULGNBQWMsNENBQXFDLEVBQ25ELGNBQWMsMkJBQW9CLEVBQ2xDLFNBQVMsRUFBRSxlQUFlLEdBQUc7UUFBRSxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQzdELEdBQUcsRUFBRSxHQUFHOzs7T0FvQ1Q7SUFFTSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxlQUFlLEdBQUcsTUFBTSxDQVcxRTtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"readonly_l1_tx_utils.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/readonly_l1_tx_utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readonly_l1_tx_utils.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/readonly_l1_tx_utils.ts"],"names":[],"mappings":"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"}
@@ -78,9 +78,10 @@ export class ReadOnlyL1TxUtils {
78
78
  const numBlocks = Math.ceil(gasConfig.stallTimeMs / BLOCK_TIME_MS);
79
79
  for(let i = 0; i < numBlocks; i++){
80
80
  // each block can go up 12.5% from previous baseFee
81
- maxFeePerGas = maxFeePerGas * (1_000n + 125n) / 1_000n;
81
+ // ceil, (a+b-1)/b, to avoid truncation at small values (e.g. 1 wei blob base fee)
82
+ maxFeePerGas = (maxFeePerGas * (1_000n + 125n) + 999n) / 1_000n;
82
83
  // same for blob gas fee
83
- maxFeePerBlobGas = maxFeePerBlobGas * (1_000n + 125n) / 1_000n;
84
+ maxFeePerBlobGas = (maxFeePerBlobGas * (1_000n + 125n) + 999n) / 1_000n;
84
85
  }
85
86
  if (attempt > 0) {
86
87
  const configBump = gasConfig.priorityFeeRetryBumpPercentage ?? defaultL1TxUtilsConfig.priorityFeeRetryBumpPercentage;
@@ -163,13 +164,16 @@ export class ReadOnlyL1TxUtils {
163
164
  };
164
165
  let initialEstimate = 0n;
165
166
  if (_blobInputs) {
166
- // @note requests with blobs also require maxFeePerBlobGas to be set
167
+ // @note requests with blobs also require maxFeePerBlobGas to be set.
168
+ // Use 2x buffer for maxFeePerBlobGas to avoid stale fees and to pass EIP-4844 validation (even if it is a gas estimation call).
169
+ // 1. maxFeePerBlobGas >= blobBaseFee
170
+ // 2. account balance >= gas * maxFeePerGas + maxFeePerBlobGas * blobCount + value
167
171
  const gasPrice = await this.getGasPrice(gasConfig, true, 0);
168
172
  initialEstimate = await this.client.estimateGas({
169
173
  account,
170
174
  ...request,
171
175
  ..._blobInputs,
172
- maxFeePerBlobGas: gasPrice.maxFeePerBlobGas,
176
+ maxFeePerBlobGas: gasPrice.maxFeePerBlobGas * 2n,
173
177
  gas: MAX_L1_TX_LIMIT,
174
178
  blockTag: 'latest'
175
179
  });