@aztec/ethereum 0.0.1-commit.5daedc8 → 0.0.1-commit.6c91f13

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 (139) hide show
  1. package/dest/client.js +6 -2
  2. package/dest/config.d.ts +6 -42
  3. package/dest/config.d.ts.map +1 -1
  4. package/dest/config.js +9 -327
  5. package/dest/contracts/empire_base.d.ts +2 -1
  6. package/dest/contracts/empire_base.d.ts.map +1 -1
  7. package/dest/contracts/empire_slashing_proposer.d.ts +2 -1
  8. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
  9. package/dest/contracts/empire_slashing_proposer.js +9 -0
  10. package/dest/contracts/governance_proposer.d.ts +2 -1
  11. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  12. package/dest/contracts/governance_proposer.js +9 -0
  13. package/dest/contracts/inbox.d.ts +7 -3
  14. package/dest/contracts/inbox.d.ts.map +1 -1
  15. package/dest/contracts/inbox.js +4 -0
  16. package/dest/contracts/rollup.d.ts +35 -19
  17. package/dest/contracts/rollup.d.ts.map +1 -1
  18. package/dest/contracts/rollup.js +30 -12
  19. package/dest/contracts/tally_slashing_proposer.d.ts +3 -2
  20. package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
  21. package/dest/contracts/tally_slashing_proposer.js +1 -1
  22. package/dest/deploy_aztec_l1_contracts.d.ts +247 -0
  23. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
  24. package/dest/deploy_aztec_l1_contracts.js +336 -0
  25. package/dest/deploy_l1_contract.d.ts +68 -0
  26. package/dest/deploy_l1_contract.d.ts.map +1 -0
  27. package/dest/deploy_l1_contract.js +312 -0
  28. package/dest/forwarder_proxy.d.ts +32 -0
  29. package/dest/forwarder_proxy.d.ts.map +1 -0
  30. package/dest/forwarder_proxy.js +93 -0
  31. package/dest/l1_artifacts.d.ts +136 -98
  32. package/dest/l1_artifacts.d.ts.map +1 -1
  33. package/dest/l1_contract_addresses.d.ts +1 -1
  34. package/dest/l1_contract_addresses.d.ts.map +1 -1
  35. package/dest/l1_contract_addresses.js +3 -3
  36. package/dest/l1_reader.d.ts +3 -1
  37. package/dest/l1_reader.d.ts.map +1 -1
  38. package/dest/l1_reader.js +6 -0
  39. package/dest/l1_tx_utils/config.d.ts +3 -3
  40. package/dest/l1_tx_utils/config.d.ts.map +1 -1
  41. package/dest/l1_tx_utils/config.js +17 -3
  42. package/dest/l1_tx_utils/constants.d.ts +7 -1
  43. package/dest/l1_tx_utils/constants.d.ts.map +1 -1
  44. package/dest/l1_tx_utils/constants.js +25 -0
  45. package/dest/l1_tx_utils/fee-strategies/index.d.ts +9 -0
  46. package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
  47. package/dest/l1_tx_utils/fee-strategies/index.js +11 -0
  48. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +18 -0
  49. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
  50. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +111 -0
  51. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +32 -0
  52. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
  53. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +173 -0
  54. package/dest/l1_tx_utils/fee-strategies/types.d.ts +64 -0
  55. package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
  56. package/dest/l1_tx_utils/fee-strategies/types.js +24 -0
  57. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
  58. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
  59. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
  60. package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
  61. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
  62. package/dest/l1_tx_utils/index-blobs.js +2 -0
  63. package/dest/l1_tx_utils/index.d.ts +3 -1
  64. package/dest/l1_tx_utils/index.d.ts.map +1 -1
  65. package/dest/l1_tx_utils/index.js +2 -0
  66. package/dest/l1_tx_utils/interfaces.d.ts +2 -2
  67. package/dest/l1_tx_utils/interfaces.d.ts.map +1 -1
  68. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
  69. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
  70. package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
  71. package/dest/l1_tx_utils/l1_tx_utils.d.ts +1 -1
  72. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  73. package/dest/l1_tx_utils/l1_tx_utils.js +17 -4
  74. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +4 -11
  75. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  76. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +68 -138
  77. package/dest/queries.d.ts +1 -1
  78. package/dest/queries.d.ts.map +1 -1
  79. package/dest/queries.js +6 -1
  80. package/dest/test/chain_monitor.d.ts +15 -13
  81. package/dest/test/chain_monitor.d.ts.map +1 -1
  82. package/dest/test/chain_monitor.js +6 -7
  83. package/dest/test/eth_cheat_codes.js +4 -2
  84. package/dest/test/rollup_cheat_codes.d.ts +5 -5
  85. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  86. package/dest/test/rollup_cheat_codes.js +14 -5
  87. package/dest/test/start_anvil.d.ts +3 -1
  88. package/dest/test/start_anvil.d.ts.map +1 -1
  89. package/dest/test/tx_delayer.d.ts +1 -1
  90. package/dest/test/tx_delayer.d.ts.map +1 -1
  91. package/dest/test/tx_delayer.js +4 -3
  92. package/dest/types.d.ts +57 -2
  93. package/dest/types.d.ts.map +1 -1
  94. package/dest/utils.d.ts +15 -3
  95. package/dest/utils.d.ts.map +1 -1
  96. package/dest/utils.js +18 -0
  97. package/package.json +30 -12
  98. package/src/client.ts +2 -2
  99. package/src/config.ts +10 -406
  100. package/src/contracts/empire_base.ts +1 -1
  101. package/src/contracts/empire_slashing_proposer.ts +6 -1
  102. package/src/contracts/governance_proposer.ts +6 -1
  103. package/src/contracts/inbox.ts +7 -2
  104. package/src/contracts/rollup.ts +49 -25
  105. package/src/contracts/tally_slashing_proposer.ts +3 -1
  106. package/src/deploy_aztec_l1_contracts.ts +557 -0
  107. package/src/deploy_l1_contract.ts +362 -0
  108. package/src/forwarder_proxy.ts +108 -0
  109. package/src/l1_contract_addresses.ts +22 -20
  110. package/src/l1_reader.ts +8 -0
  111. package/src/l1_tx_utils/config.ts +24 -6
  112. package/src/l1_tx_utils/constants.ts +11 -0
  113. package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
  114. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +159 -0
  115. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +241 -0
  116. package/src/l1_tx_utils/fee-strategies/types.ts +88 -0
  117. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
  118. package/src/l1_tx_utils/index-blobs.ts +2 -0
  119. package/src/l1_tx_utils/index.ts +2 -0
  120. package/src/l1_tx_utils/interfaces.ts +1 -1
  121. package/src/l1_tx_utils/l1_fee_analyzer.ts +804 -0
  122. package/src/l1_tx_utils/l1_tx_utils.ts +24 -4
  123. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +76 -176
  124. package/src/queries.ts +6 -0
  125. package/src/test/chain_monitor.ts +17 -15
  126. package/src/test/eth_cheat_codes.ts +2 -2
  127. package/src/test/rollup_cheat_codes.ts +12 -7
  128. package/src/test/start_anvil.ts +2 -0
  129. package/src/test/tx_delayer.ts +5 -3
  130. package/src/types.ts +62 -0
  131. package/src/utils.ts +30 -1
  132. package/dest/deploy_l1_contracts.d.ts +0 -673
  133. package/dest/deploy_l1_contracts.d.ts.map +0 -1
  134. package/dest/deploy_l1_contracts.js +0 -1491
  135. package/dest/index.d.ts +0 -18
  136. package/dest/index.d.ts.map +0 -1
  137. package/dest/index.js +0 -17
  138. package/src/deploy_l1_contracts.ts +0 -1869
  139. package/src/index.ts +0 -17
@@ -1,7 +1,8 @@
1
- import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
1
+ import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
2
  import { memoize } from '@aztec/foundation/decorators';
3
3
  import { EthAddress } from '@aztec/foundation/eth-address';
4
4
  import type { ViemSignature } from '@aztec/foundation/eth-signature';
5
+ import { makeBackoff, retry } from '@aztec/foundation/retry';
5
6
  import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
6
7
  import { RollupStorage } from '@aztec/l1-artifacts/RollupStorage';
7
8
 
@@ -19,7 +20,7 @@ import {
19
20
  } from 'viem';
20
21
 
21
22
  import { getPublicClient } from '../client.js';
22
- import type { DeployL1ContractsReturnType } from '../deploy_l1_contracts.js';
23
+ import type { DeployAztecL1ContractsReturnType } from '../deploy_aztec_l1_contracts.js';
23
24
  import type { L1ContractAddresses } from '../l1_contract_addresses.js';
24
25
  import type { L1ReaderConfig } from '../l1_reader.js';
25
26
  import type { L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
@@ -106,7 +107,7 @@ export class RollupContract {
106
107
  return (RollupContract.cachedStfStorageSlot ??= keccak256(Buffer.from('aztec.stf.storage', 'utf-8')));
107
108
  }
108
109
 
109
- static getFromL1ContractsValues(deployL1ContractsValues: DeployL1ContractsReturnType) {
110
+ static getFromL1ContractsValues(deployL1ContractsValues: DeployAztecL1ContractsReturnType) {
110
111
  const {
111
112
  l1Client,
112
113
  l1ContractAddresses: { rollupAddress },
@@ -326,12 +327,12 @@ export class RollupContract {
326
327
  return this.rollup.read.getCheckpointReward();
327
328
  }
328
329
 
329
- getCheckpointNumber() {
330
- return this.rollup.read.getPendingCheckpointNumber();
330
+ async getCheckpointNumber(): Promise<CheckpointNumber> {
331
+ return CheckpointNumber.fromBigInt(await this.rollup.read.getPendingCheckpointNumber());
331
332
  }
332
333
 
333
- getProvenCheckpointNumber() {
334
- return this.rollup.read.getProvenCheckpointNumber();
334
+ async getProvenCheckpointNumber(): Promise<CheckpointNumber> {
335
+ return CheckpointNumber.fromBigInt(await this.rollup.read.getProvenCheckpointNumber());
335
336
  }
336
337
 
337
338
  async getSlotNumber(): Promise<SlotNumber> {
@@ -416,12 +417,31 @@ export class RollupContract {
416
417
  return result;
417
418
  }
418
419
 
419
- getCheckpoint(checkpointNumber: bigint | number) {
420
+ getCheckpoint(checkpointNumber: CheckpointNumber) {
420
421
  return this.rollup.read.getCheckpoint([BigInt(checkpointNumber)]);
421
422
  }
422
423
 
423
- getTips() {
424
- return this.rollup.read.getTips();
424
+ /** Returns the pending checkpoint from the rollup contract */
425
+ getPendingCheckpoint() {
426
+ // We retry because of race conditions during prunes: we may get a pending checkpoint number which is immediately
427
+ // reorged out due to a prune happening, causing the subsequent getCheckpoint call to fail. So we try again in that case.
428
+ return retry(
429
+ async () => {
430
+ const pendingCheckpointNumber = await this.getCheckpointNumber();
431
+ const pendingCheckpoint = await this.getCheckpoint(pendingCheckpointNumber);
432
+ return pendingCheckpoint;
433
+ },
434
+ 'getting pending checkpoint',
435
+ makeBackoff([0.5, 0.5, 0.5]),
436
+ );
437
+ }
438
+
439
+ async getTips(): Promise<{ pending: CheckpointNumber; proven: CheckpointNumber }> {
440
+ const { pending, proven } = await this.rollup.read.getTips();
441
+ return {
442
+ pending: CheckpointNumber.fromBigInt(pending),
443
+ proven: CheckpointNumber.fromBigInt(proven),
444
+ };
425
445
  }
426
446
 
427
447
  getTimestampForSlot(slot: SlotNumber) {
@@ -444,7 +464,7 @@ export class RollupContract {
444
464
  return EpochNumber.fromBigInt(await this.rollup.read.getCurrentEpoch());
445
465
  }
446
466
 
447
- async getEpochNumberForCheckpoint(checkpointNumber: bigint): Promise<EpochNumber> {
467
+ async getEpochNumberForCheckpoint(checkpointNumber: CheckpointNumber): Promise<EpochNumber> {
448
468
  return EpochNumber.fromBigInt(await this.rollup.read.getEpochForCheckpoint([BigInt(checkpointNumber)]));
449
469
  }
450
470
 
@@ -537,8 +557,8 @@ export class RollupContract {
537
557
  archive: Buffer,
538
558
  account: `0x${string}` | Account,
539
559
  slotDuration: number,
540
- opts: { forcePendingCheckpointNumber?: number } = {},
541
- ): Promise<{ slot: SlotNumber; checkpointNumber: bigint; timeOfNextL1Slot: bigint }> {
560
+ opts: { forcePendingCheckpointNumber?: CheckpointNumber } = {},
561
+ ): Promise<{ slot: SlotNumber; checkpointNumber: CheckpointNumber; timeOfNextL1Slot: bigint }> {
542
562
  const latestBlock = await this.client.getBlock();
543
563
  const timeOfNextL1Slot = latestBlock.timestamp + BigInt(slotDuration);
544
564
  const who = typeof account === 'string' ? account : account.address;
@@ -555,7 +575,11 @@ export class RollupContract {
555
575
  stateOverride: await this.makePendingCheckpointNumberOverride(opts.forcePendingCheckpointNumber),
556
576
  });
557
577
 
558
- return { slot: SlotNumber.fromBigInt(slot), checkpointNumber, timeOfNextL1Slot };
578
+ return {
579
+ slot: SlotNumber.fromBigInt(slot),
580
+ checkpointNumber: CheckpointNumber.fromBigInt(checkpointNumber),
581
+ timeOfNextL1Slot,
582
+ };
559
583
  } catch (err: unknown) {
560
584
  throw formatViemError(err);
561
585
  }
@@ -567,7 +591,7 @@ export class RollupContract {
567
591
  * stored in the same slot. If the argument is undefined, it returns an empty override.
568
592
  */
569
593
  public async makePendingCheckpointNumberOverride(
570
- forcePendingCheckpointNumber: number | undefined,
594
+ forcePendingCheckpointNumber: CheckpointNumber | undefined,
571
595
  ): Promise<StateOverride> {
572
596
  if (forcePendingCheckpointNumber === undefined) {
573
597
  return [];
@@ -586,7 +610,7 @@ export class RollupContract {
586
610
 
587
611
  /** Creates a request to Rollup#invalidateBadAttestation to be simulated or sent */
588
612
  public buildInvalidateBadAttestationRequest(
589
- checkpointNumber: number,
613
+ checkpointNumber: CheckpointNumber,
590
614
  attestationsAndSigners: ViemCommitteeAttestations,
591
615
  committee: EthAddress[],
592
616
  invalidIndex: number,
@@ -608,7 +632,7 @@ export class RollupContract {
608
632
 
609
633
  /** Creates a request to Rollup#invalidateInsufficientAttestations to be simulated or sent */
610
634
  public buildInvalidateInsufficientAttestationsRequest(
611
- checkpointNumber: number,
635
+ checkpointNumber: CheckpointNumber,
612
636
  attestationsAndSigners: ViemCommitteeAttestations,
613
637
  committee: EthAddress[],
614
638
  ): L1TxRequest {
@@ -638,9 +662,9 @@ export class RollupContract {
638
662
  return SlotNumber.fromBigInt(await this.rollup.read.getSlotAt([timestamp]));
639
663
  }
640
664
 
641
- async status(checkpointNumber: bigint, options?: { blockNumber?: bigint }) {
665
+ async status(checkpointNumber: CheckpointNumber, options?: { blockNumber?: bigint }) {
642
666
  await checkBlockTag(options?.blockNumber, this.client);
643
- return this.rollup.read.status([checkpointNumber], options);
667
+ return this.rollup.read.status([BigInt(checkpointNumber)], options);
644
668
  }
645
669
 
646
670
  async canPruneAtTime(timestamp: bigint, options?: { blockNumber?: bigint }) {
@@ -652,8 +676,8 @@ export class RollupContract {
652
676
  return this.rollup.read.archive();
653
677
  }
654
678
 
655
- archiveAt(checkpointNumber: bigint) {
656
- return this.rollup.read.archiveAt([checkpointNumber]);
679
+ archiveAt(checkpointNumber: CheckpointNumber) {
680
+ return this.rollup.read.archiveAt([BigInt(checkpointNumber)]);
657
681
  }
658
682
 
659
683
  getSequencerRewards(address: Hex | EthAddress) {
@@ -695,8 +719,8 @@ export class RollupContract {
695
719
  return this.rollup.read.getStatus([address]);
696
720
  }
697
721
 
698
- getBlobCommitmentsHash(checkpointNumber: bigint) {
699
- return this.rollup.read.getBlobCommitmentsHash([checkpointNumber]);
722
+ getBlobCommitmentsHash(checkpointNumber: CheckpointNumber) {
723
+ return this.rollup.read.getBlobCommitmentsHash([BigInt(checkpointNumber)]);
700
724
  }
701
725
 
702
726
  getCurrentBlobCommitmentsHash() {
@@ -752,7 +776,7 @@ export class RollupContract {
752
776
  }
753
777
 
754
778
  public listenToCheckpointInvalidated(
755
- callback: (args: { checkpointNumber: bigint }) => unknown,
779
+ callback: (args: { checkpointNumber: CheckpointNumber }) => unknown,
756
780
  ): WatchContractEventReturnType {
757
781
  return this.rollup.watchEvent.CheckpointInvalidated(
758
782
  {},
@@ -761,7 +785,7 @@ export class RollupContract {
761
785
  for (const log of logs) {
762
786
  const args = log.args;
763
787
  if (args.checkpointNumber !== undefined) {
764
- callback({ checkpointNumber: args.checkpointNumber });
788
+ callback({ checkpointNumber: CheckpointNumber.fromBigInt(args.checkpointNumber) });
765
789
  }
766
790
  }
767
791
  },
@@ -1,4 +1,6 @@
1
- import { type L1TxRequest, type ViemClient, tryExtractEvent } from '@aztec/ethereum';
1
+ import type { L1TxRequest } from '@aztec/ethereum/l1-tx-utils';
2
+ import type { ViemClient } from '@aztec/ethereum/types';
3
+ import { tryExtractEvent } from '@aztec/ethereum/utils';
2
4
  import { SlotNumber } from '@aztec/foundation/branded-types';
3
5
  import { Buffer32 } from '@aztec/foundation/buffer';
4
6
  import { EthAddress } from '@aztec/foundation/eth-address';