@aztec/ethereum 1.0.0-nightly.20250708 → 1.0.0-staging.0

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 (67) hide show
  1. package/dest/config.d.ts +5 -24
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +4 -79
  4. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  5. package/dest/contracts/governance_proposer.js +6 -1
  6. package/dest/contracts/multicall.d.ts +1 -2
  7. package/dest/contracts/multicall.d.ts.map +1 -1
  8. package/dest/contracts/multicall.js +48 -88
  9. package/dest/contracts/rollup.d.ts +1 -19
  10. package/dest/contracts/rollup.d.ts.map +1 -1
  11. package/dest/contracts/rollup.js +0 -58
  12. package/dest/contracts/slashing_proposer.d.ts.map +1 -1
  13. package/dest/contracts/slashing_proposer.js +6 -1
  14. package/dest/deploy_l1_contracts.d.ts +541 -1290
  15. package/dest/deploy_l1_contracts.d.ts.map +1 -1
  16. package/dest/deploy_l1_contracts.js +19 -35
  17. package/dest/{test/eth_cheat_codes.d.ts → eth_cheat_codes.d.ts} +3 -7
  18. package/dest/eth_cheat_codes.d.ts.map +1 -0
  19. package/dest/{test/eth_cheat_codes.js → eth_cheat_codes.js} +10 -26
  20. package/dest/index.d.ts +1 -0
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +1 -0
  23. package/dest/l1_tx_utils.d.ts +1 -2
  24. package/dest/l1_tx_utils.d.ts.map +1 -1
  25. package/dest/l1_tx_utils.js +9 -14
  26. package/dest/test/chain_monitor.d.ts +2 -4
  27. package/dest/test/chain_monitor.d.ts.map +1 -1
  28. package/dest/test/chain_monitor.js +3 -11
  29. package/dest/test/delayed_tx_utils.d.ts +1 -3
  30. package/dest/test/delayed_tx_utils.d.ts.map +1 -1
  31. package/dest/test/delayed_tx_utils.js +3 -5
  32. package/dest/test/eth_cheat_codes_with_state.d.ts +1 -1
  33. package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
  34. package/dest/test/eth_cheat_codes_with_state.js +1 -1
  35. package/dest/test/index.d.ts +0 -2
  36. package/dest/test/index.d.ts.map +1 -1
  37. package/dest/test/index.js +0 -2
  38. package/dest/test/start_anvil.d.ts +0 -1
  39. package/dest/test/start_anvil.d.ts.map +1 -1
  40. package/dest/test/start_anvil.js +1 -6
  41. package/dest/test/tx_delayer.d.ts +1 -8
  42. package/dest/test/tx_delayer.d.ts.map +1 -1
  43. package/dest/test/tx_delayer.js +11 -51
  44. package/dest/test/upgrade_utils.d.ts.map +1 -1
  45. package/dest/test/upgrade_utils.js +1 -1
  46. package/package.json +5 -4
  47. package/src/config.ts +4 -90
  48. package/src/contracts/governance_proposer.ts +6 -1
  49. package/src/contracts/multicall.ts +50 -83
  50. package/src/contracts/rollup.ts +1 -77
  51. package/src/contracts/slashing_proposer.ts +6 -1
  52. package/src/deploy_l1_contracts.ts +18 -44
  53. package/src/{test/eth_cheat_codes.ts → eth_cheat_codes.ts} +12 -16
  54. package/src/index.ts +1 -0
  55. package/src/l1_tx_utils.ts +14 -15
  56. package/src/test/chain_monitor.ts +2 -8
  57. package/src/test/delayed_tx_utils.ts +3 -7
  58. package/src/test/eth_cheat_codes_with_state.ts +1 -1
  59. package/src/test/index.ts +0 -2
  60. package/src/test/start_anvil.ts +1 -7
  61. package/src/test/tx_delayer.ts +9 -55
  62. package/src/test/upgrade_utils.ts +1 -1
  63. package/dest/test/eth_cheat_codes.d.ts.map +0 -1
  64. package/dest/test/rollup_cheat_codes.d.ts +0 -81
  65. package/dest/test/rollup_cheat_codes.d.ts.map +0 -1
  66. package/dest/test/rollup_cheat_codes.js +0 -236
  67. package/src/test/rollup_cheat_codes.ts +0 -252
package/dest/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type ConfigMappingsType, type NetworkNames } from '@aztec/foundation/config';
1
+ import { type ConfigMappingsType } from '@aztec/foundation/config';
2
2
  import { type L1TxUtilsConfig } from './l1_tx_utils.js';
3
3
  export type GenesisStateConfig = {
4
4
  /** Whether to populate the genesis state with initial fee juice for the test accounts */
@@ -49,36 +49,17 @@ export declare const DefaultL1ContractsConfig: {
49
49
  manaTarget: bigint;
50
50
  provingCostPerMana: bigint;
51
51
  };
52
- export declare const getGovernanceConfiguration: (networkName: NetworkNames) => {
53
- proposeConfig: {
54
- lockDelay: bigint;
55
- lockAmount: bigint;
56
- };
57
- votingDelay: bigint;
58
- votingDuration: bigint;
59
- executionDelay: bigint;
60
- gracePeriod: bigint;
61
- quorum: bigint;
62
- voteDifferential: bigint;
63
- minimumVotes: bigint;
64
- };
65
- export declare const getRewardConfig: (networkName: NetworkNames) => {
52
+ export declare const DefaultRewardConfig: {
66
53
  sequencerBps: number;
67
- rewardDistributor: `0x${string}`;
68
- booster: `0x${string}`;
69
- };
70
- export declare const getRewardBoostConfig: (networkName: NetworkNames) => {
71
54
  increment: number;
72
55
  maxScore: number;
73
56
  a: number;
74
57
  k: number;
75
58
  minimum: number;
76
59
  };
77
- export declare const getEntryQueueConfig: (networkName: NetworkNames) => {
78
- bootstrapValidatorSetSize: number;
79
- bootstrapFlushSize: number;
80
- normalFlushSizeMin: number;
81
- normalFlushSizeQuotient: number;
60
+ export declare const DefaultEntryQueueConfig: {
61
+ flushSizeMin: number;
62
+ flushSizeQuotient: number;
82
63
  };
83
64
  export declare const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig>;
84
65
  export declare const genesisStateConfigMappings: ConfigMappingsType<GenesisStateConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAKlB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,kBAAkB,CAAC;AAEjF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,+EAA+E;IAC/E,0BAA0B,EAAE,MAAM,CAAC;IACnC,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,sCAAsC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAcR,CAAC;AA8B9B,eAAO,MAAM,0BAA0B,GAAI,aAAa,YAAY;;;;;;;;;;;;CAKnE,CAAC;AAiBF,eAAO,MAAM,eAAe,GAAI,aAAa,YAAY;;;;CAKxD,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAAI,aAAa,YAAY;;;;;;CAK7D,CAAC;AAiBF,eAAO,MAAM,mBAAmB,GAAI,aAAa,YAAY;;;;;CAK5D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAmE3E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAW7E,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,iBAAiB,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAEjE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,kBAAkB,CAAC;AAEjF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,+EAA+E;IAC/E,0BAA0B,EAAE,MAAM,CAAC;IACnC,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,sCAAsC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAcR,CAAC;AAK9B,eAAO,MAAM,mBAAmB;;;;;;;CAO/B,CAAC;AAGF,eAAO,MAAM,uBAAuB;;;CAGnC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAmE3E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAW7E,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,iBAAiB,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAEjE"}
package/dest/config.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
2
- import { EthAddress } from '@aztec/foundation/eth-address';
3
2
  import { l1TxUtilsConfigMappings } from './l1_tx_utils.js';
4
3
  export const DefaultL1ContractsConfig = {
5
4
  ethereumSlotDuration: 12,
@@ -16,95 +15,21 @@ export const DefaultL1ContractsConfig = {
16
15
  manaTarget: BigInt(1e10),
17
16
  provingCostPerMana: BigInt(100)
18
17
  };
19
- const LocalGovernanceConfiguration = {
20
- proposeConfig: {
21
- lockDelay: 60n * 60n * 24n * 30n,
22
- lockAmount: 1n * 10n ** 24n
23
- },
24
- votingDelay: 60n,
25
- votingDuration: 60n * 60n,
26
- executionDelay: 60n,
27
- gracePeriod: 60n * 60n * 24n * 7n,
28
- quorum: 1n * 10n ** 17n,
29
- voteDifferential: 4n * 10n ** 16n,
30
- minimumVotes: 400n * 10n ** 18n
31
- };
32
- const TestnetGovernanceConfiguration = {
33
- proposeConfig: {
34
- lockDelay: 60n * 60n * 24n,
35
- lockAmount: DefaultL1ContractsConfig.depositAmount * 100n
36
- },
37
- votingDelay: 60n,
38
- votingDuration: 60n * 60n,
39
- executionDelay: 60n * 60n * 24n,
40
- gracePeriod: 60n * 60n * 24n * 7n,
41
- quorum: 3n * 10n ** 17n,
42
- voteDifferential: 4n * 10n ** 16n,
43
- minimumVotes: DefaultL1ContractsConfig.minimumStake * 200n
44
- };
45
- export const getGovernanceConfiguration = (networkName)=>{
46
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
47
- return TestnetGovernanceConfiguration;
48
- }
49
- return LocalGovernanceConfiguration;
50
- };
51
18
  // Making a default config here as we are only using it thought the deployment
52
19
  // and do not expect to be using different setups, so having environment variables
53
20
  // for it seems overkill
54
- const LocalRewardConfig = {
55
- sequencerBps: 5000,
56
- rewardDistributor: EthAddress.ZERO.toString(),
57
- booster: EthAddress.ZERO.toString()
58
- };
59
- const TestnetRewardConfig = {
21
+ export const DefaultRewardConfig = {
60
22
  sequencerBps: 5000,
61
- rewardDistributor: EthAddress.ZERO.toString(),
62
- booster: EthAddress.ZERO.toString()
63
- };
64
- export const getRewardConfig = (networkName)=>{
65
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
66
- return TestnetRewardConfig;
67
- }
68
- return LocalRewardConfig;
69
- };
70
- const LocalRewardBoostConfig = {
71
23
  increment: 200000,
72
24
  maxScore: 5000000,
73
25
  a: 5000,
74
26
  k: 1000000,
75
27
  minimum: 100000
76
28
  };
77
- const TestnetRewardBoostConfig = {
78
- increment: 125000,
79
- maxScore: 15000000,
80
- a: 1000,
81
- k: 1000000,
82
- minimum: 100000
83
- };
84
- export const getRewardBoostConfig = (networkName)=>{
85
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
86
- return TestnetRewardBoostConfig;
87
- }
88
- return LocalRewardBoostConfig;
89
- };
90
29
  // Similar to the above, no need for environment variables for this.
91
- const LocalEntryQueueConfig = {
92
- bootstrapValidatorSetSize: 0,
93
- bootstrapFlushSize: 0,
94
- normalFlushSizeMin: 48,
95
- normalFlushSizeQuotient: 2
96
- };
97
- const TestnetEntryQueueConfig = {
98
- bootstrapValidatorSetSize: 750,
99
- bootstrapFlushSize: 75,
100
- normalFlushSizeMin: 1,
101
- normalFlushSizeQuotient: 2475
102
- };
103
- export const getEntryQueueConfig = (networkName)=>{
104
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
105
- return TestnetEntryQueueConfig;
106
- }
107
- return LocalEntryQueueConfig;
30
+ export const DefaultEntryQueueConfig = {
31
+ flushSizeMin: 48,
32
+ flushSizeQuotient: 2
108
33
  };
109
34
  export const l1ContractsConfigMappings = {
110
35
  ethereumSlotDuration: {
@@ -1 +1 @@
1
- {"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAA8B,KAAK,GAAG,EAAE,KAAK,kBAAkB,EAAmC,MAAM,MAAM,CAAC;AAEtH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAG1G,qBAAa,0BAA2B,YAAW,WAAW;aAI1C,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkE;gBAGzE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAKd,IAAW,OAAO,eAEjB;IAEY,gBAAgB;IAKhB,kBAAkB;IAIxB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAIzD,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAOtC,8BAA8B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IASpG,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QACT,OAAO,EAAE,kBAAkB,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CAYH"}
1
+ {"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAA8B,KAAK,GAAG,EAAE,KAAK,kBAAkB,EAAmC,MAAM,MAAM,CAAC;AAEtH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAG1G,qBAAa,0BAA2B,YAAW,WAAW;aAI1C,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkE;gBAGzE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAKd,IAAW,OAAO,eAEjB;IAEY,gBAAgB;IAKhB,kBAAkB;IAIxB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IASzD,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAOtC,8BAA8B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IASpG,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QACT,OAAO,EAAE,kBAAkB,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CAYH"}
@@ -47,10 +47,15 @@ export class GovernanceProposerContract {
47
47
  ]);
48
48
  }
49
49
  async getRoundInfo(rollupAddress, round) {
50
- return await this.proposer.read.getRoundData([
50
+ const roundInfo = await this.proposer.read.rounds([
51
51
  rollupAddress,
52
52
  round
53
53
  ]);
54
+ return {
55
+ lastVote: roundInfo[0],
56
+ leader: roundInfo[1],
57
+ executed: roundInfo[2]
58
+ };
54
59
  }
55
60
  getProposalVotes(rollupAddress, round, proposal) {
56
61
  return this.proposer.read.yeaCount([
@@ -2,10 +2,9 @@ import type { Logger } from '@aztec/foundation/log';
2
2
  import { type Hex } from 'viem';
3
3
  import type { L1BlobInputs, L1GasConfig, L1TxRequest, L1TxUtils } from '../l1_tx_utils.js';
4
4
  import type { ExtendedViemWalletClient } from '../types.js';
5
- import { FormattedViemError } from '../utils.js';
6
5
  export declare const MULTI_CALL_3_ADDRESS: "0xcA11bde05977b3631167028862bE2a173976CA11";
7
6
  export declare class Multicall3 {
8
- static forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined, rollupAddress: Hex, logger: Logger): Promise<FormattedViemError | {
7
+ static forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined, rollupAddress: Hex, logger: Logger): Promise<{
9
8
  receipt: import("viem").TransactionReceipt;
10
9
  gasPrice: import("../l1_tx_utils.js").GasPrice;
11
10
  stats: import("../l1_tx_utils.js").TransactionStats | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/contracts/multicall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAqC,KAAK,GAAG,EAAqC,MAAM,MAAM,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAmB,MAAM,aAAa,CAAC;AAGlE,eAAO,MAAM,oBAAoB,EAAG,4CAAqD,CAAC;AAE1F,qBAAa,UAAU;WACR,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,UAAU,EAAE,YAAY,GAAG,SAAS,EACpC,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,MAAM;;;;;;;;;;;CAmGjB;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,iBA+BxF"}
1
+ {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/contracts/multicall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAqC,KAAK,GAAG,EAAqC,MAAM,MAAM,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG5D,eAAO,MAAM,oBAAoB,EAAG,4CAAqD,CAAC;AAE1F,qBAAa,UAAU;WACR,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,UAAU,EAAE,YAAY,GAAG,SAAS,EACpC,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,MAAM;;;;;;;;;;;CAyEjB;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,iBAyBxF"}
@@ -1,6 +1,5 @@
1
1
  import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer';
2
2
  import { encodeFunctionData, multicall3Abi } from 'viem';
3
- import { FormattedViemError, formatViemError } from '../utils.js';
4
3
  import { RollupContract } from './rollup.js';
5
4
  export const MULTI_CALL_3_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11';
6
5
  export class Multicall3 {
@@ -19,100 +18,61 @@ export class Multicall3 {
19
18
  ]
20
19
  };
21
20
  const encodedForwarderData = encodeFunctionData(forwarderFunctionData);
22
- try {
23
- const { receipt, gasPrice } = await l1TxUtils.sendAndMonitorTransaction({
24
- to: MULTI_CALL_3_ADDRESS,
25
- data: encodedForwarderData
26
- }, gasConfig, blobConfig);
27
- if (receipt.status === 'success') {
28
- const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
29
- return {
30
- receipt,
31
- gasPrice,
32
- stats
33
- };
34
- } else {
35
- logger.error('Forwarder transaction failed', undefined, {
36
- receipt
37
- });
38
- const args = {
39
- ...forwarderFunctionData,
40
- address: MULTI_CALL_3_ADDRESS
41
- };
42
- let errorMsg;
43
- if (blobConfig) {
44
- const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? gasPrice.maxFeePerBlobGas;
45
- if (maxFeePerBlobGas === undefined) {
46
- errorMsg = 'maxFeePerBlobGas is required to get the error message';
47
- } else {
48
- logger.debug('Trying to get error from reverted tx with blob config');
49
- errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
50
- blobs: blobConfig.blobs,
51
- kzg: blobConfig.kzg,
52
- maxFeePerBlobGas
53
- }, [
54
- {
55
- address: rollupAddress,
56
- stateDiff: [
57
- {
58
- slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
59
- value: toPaddedHex(0n, true)
60
- }
61
- ]
62
- }
63
- ]);
64
- }
21
+ const { receipt, gasPrice } = await l1TxUtils.sendAndMonitorTransaction({
22
+ to: MULTI_CALL_3_ADDRESS,
23
+ data: encodedForwarderData
24
+ }, gasConfig, blobConfig);
25
+ if (receipt.status === 'success') {
26
+ const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
27
+ return {
28
+ receipt,
29
+ gasPrice,
30
+ stats
31
+ };
32
+ } else {
33
+ logger.error('Forwarder transaction failed', undefined, {
34
+ receipt
35
+ });
36
+ const args = {
37
+ ...forwarderFunctionData,
38
+ address: MULTI_CALL_3_ADDRESS
39
+ };
40
+ let errorMsg;
41
+ if (blobConfig) {
42
+ const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? gasPrice.maxFeePerBlobGas;
43
+ if (maxFeePerBlobGas === undefined) {
44
+ errorMsg = 'maxFeePerBlobGas is required to get the error message';
65
45
  } else {
66
- logger.debug('Trying to get error from reverted tx without blob config');
67
- errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, undefined, []);
68
- }
69
- return {
70
- receipt,
71
- gasPrice,
72
- errorMsg
73
- };
74
- }
75
- } catch (err) {
76
- for (const request of requests){
77
- logger.debug('Simulating request', {
78
- request
79
- });
80
- const result = await l1TxUtils.simulate(request, undefined, [
81
- {
82
- address: rollupAddress,
83
- stateDiff: [
84
- {
85
- slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
86
- value: toPaddedHex(0n, true)
87
- }
88
- ]
89
- }
90
- ]).catch((err)=>formatViemError(err, request.abi));
91
- if (result instanceof FormattedViemError) {
92
- logger.error('Found error in simulation', result, {
93
- to: request.to ?? 'null',
94
- data: request.data
95
- });
96
- return result;
46
+ logger.debug('Trying to get error from reverted tx with blob config');
47
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
48
+ blobs: blobConfig.blobs,
49
+ kzg: blobConfig.kzg,
50
+ maxFeePerBlobGas
51
+ }, [
52
+ {
53
+ address: rollupAddress,
54
+ stateDiff: [
55
+ {
56
+ slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
57
+ value: toPaddedHex(0n, true)
58
+ }
59
+ ]
60
+ }
61
+ ]);
97
62
  }
63
+ } else {
64
+ logger.debug('Trying to get error from reverted tx without blob config');
65
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, undefined, []);
98
66
  }
99
- logger.warn('Failed to get error from reverted tx', {
100
- err
101
- });
102
- throw err;
67
+ return {
68
+ receipt,
69
+ gasPrice,
70
+ errorMsg
71
+ };
103
72
  }
104
73
  }
105
74
  }
106
75
  export async function deployMulticall3(l1Client, logger) {
107
- const existing = await l1Client.getCode({
108
- address: MULTI_CALL_3_ADDRESS
109
- });
110
- if (existing && existing !== '0x') {
111
- logger.verbose('Multicall3 already deployed', {
112
- address: MULTI_CALL_3_ADDRESS
113
- });
114
- return;
115
- }
116
76
  const deployer = '0x05f32b3cc3888453ff71b01135b34ff8e41263f2';
117
77
  const sendEth = await l1Client.sendTransaction({
118
78
  to: deployer,
@@ -12,10 +12,6 @@ export type ViemCommitteeAttestation = {
12
12
  addr: `0x${string}`;
13
13
  signature: ViemSignature;
14
14
  };
15
- export type ViemCommitteeAttestations = {
16
- signatureIndices: `0x${string}`;
17
- signaturesOrAddresses: `0x${string}`;
18
- };
19
15
  export type L1RollupContractAddresses = Pick<L1ContractAddresses, 'rollupAddress' | 'inboxAddress' | 'outboxAddress' | 'feeJuicePortalAddress' | 'feeJuiceAddress' | 'stakingAssetAddress' | 'rewardDistributorAddress' | 'slashFactoryAddress' | 'gseAddress'>;
20
16
  export type EpochProofPublicInputArgs = {
21
17
  previousArchive: `0x${string}`;
@@ -101,13 +97,6 @@ export declare class RollupContract {
101
97
  headerHash: `0x${string}`;
102
98
  blobCommitmentsHash: `0x${string}`;
103
99
  slotNumber: bigint;
104
- feeHeader: {
105
- excessMana: bigint;
106
- manaUsed: bigint;
107
- feeAssetPriceNumerator: bigint;
108
- congestionCost: bigint;
109
- proverCost: bigint;
110
- };
111
100
  }>;
112
101
  getTips(): Promise<{
113
102
  pendingBlockNumber: bigint;
@@ -121,7 +110,7 @@ export declare class RollupContract {
121
110
  getEpochProofPublicInputs(args: readonly [bigint, bigint, EpochProofPublicInputArgs, readonly `0x${string}`[], `0x${string}`]): Promise<readonly `0x${string}`[]>;
122
111
  validateHeader(args: readonly [
123
112
  ViemHeader,
124
- ViemCommitteeAttestations,
113
+ ViemCommitteeAttestation[],
125
114
  `0x${string}`,
126
115
  `0x${string}`,
127
116
  {
@@ -129,13 +118,6 @@ export declare class RollupContract {
129
118
  ignoreSignatures: boolean;
130
119
  }
131
120
  ], account: `0x${string}` | Account): Promise<void>;
132
- /**
133
- * Packs an array of committee attestations into the format expected by the Solidity contract
134
- *
135
- * @param attestations - Array of committee attestations with addresses and signatures
136
- * @returns Packed attestations with bitmap and tightly packed signature/address data
137
- */
138
- static packAttestations(attestations: ViemCommitteeAttestation[]): ViemCommitteeAttestations;
139
121
  /**
140
122
  * @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
141
123
  *
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"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"}
@@ -267,64 +267,6 @@ export class RollupContract {
267
267
  }
268
268
  }
269
269
  /**
270
- * Packs an array of committee attestations into the format expected by the Solidity contract
271
- *
272
- * @param attestations - Array of committee attestations with addresses and signatures
273
- * @returns Packed attestations with bitmap and tightly packed signature/address data
274
- */ static packAttestations(attestations) {
275
- const length = attestations.length;
276
- // Calculate bitmap size (1 bit per attestation, rounded up to nearest byte)
277
- const bitmapSize = Math.ceil(length / 8);
278
- const signatureIndices = new Uint8Array(bitmapSize);
279
- // Calculate total data size needed
280
- let totalDataSize = 0;
281
- for(let i = 0; i < length; i++){
282
- const signature = attestations[i].signature;
283
- // Check if signature is empty (v = 0)
284
- const isEmpty = signature.v === 0;
285
- if (!isEmpty) {
286
- totalDataSize += 65; // v (1) + r (32) + s (32)
287
- } else {
288
- totalDataSize += 20; // address only
289
- }
290
- }
291
- const signaturesOrAddresses = new Uint8Array(totalDataSize);
292
- let dataIndex = 0;
293
- // Pack the data
294
- for(let i = 0; i < length; i++){
295
- const attestation = attestations[i];
296
- const signature = attestation.signature;
297
- // Check if signature is empty
298
- const isEmpty = signature.v === 0;
299
- if (!isEmpty) {
300
- // Set bit in bitmap (bit 7-0 in each byte, left to right)
301
- const byteIndex = Math.floor(i / 8);
302
- const bitIndex = 7 - i % 8;
303
- signatureIndices[byteIndex] |= 1 << bitIndex;
304
- // Pack signature: v + r + s
305
- signaturesOrAddresses[dataIndex] = signature.v;
306
- dataIndex++;
307
- // Pack r (32 bytes)
308
- const rBytes = Buffer.from(signature.r.slice(2), 'hex');
309
- signaturesOrAddresses.set(rBytes, dataIndex);
310
- dataIndex += 32;
311
- // Pack s (32 bytes)
312
- const sBytes = Buffer.from(signature.s.slice(2), 'hex');
313
- signaturesOrAddresses.set(sBytes, dataIndex);
314
- dataIndex += 32;
315
- } else {
316
- // Pack address only (20 bytes)
317
- const addrBytes = Buffer.from(attestation.addr.slice(2), 'hex');
318
- signaturesOrAddresses.set(addrBytes, dataIndex);
319
- dataIndex += 20;
320
- }
321
- }
322
- return {
323
- signatureIndices: `0x${Buffer.from(signatureIndices).toString('hex')}`,
324
- signaturesOrAddresses: `0x${Buffer.from(signaturesOrAddresses).toString('hex')}`
325
- };
326
- }
327
- /**
328
270
  * @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
329
271
  *
330
272
  * @dev Throws if unable to propose
@@ -1 +1 @@
1
- {"version":3,"file":"slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGL,KAAK,GAAG,EAGT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAE1G,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,KAAK,EAAE,MAAM;CAG1B;AAED,qBAAa,wBAAyB,SAAQ,YAAa,YAAW,WAAW;aAI7D,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgE;gBAGvE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAMd,IAAW,OAAO,eAEjB;IAEM,aAAa;IAIb,YAAY;IAIZ,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAIzD,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAOtC,8BAA8B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAS1G,2BAA2B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO;IAiBnG,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO;IAgBhG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,GAAE,MAAU;IAYxD,YAAY,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,UAAU,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC;CA+CxD"}
1
+ {"version":3,"file":"slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGL,KAAK,GAAG,EAGT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAE1G,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,KAAK,EAAE,MAAM;CAG1B;AAED,qBAAa,wBAAyB,SAAQ,YAAa,YAAW,WAAW;aAI7D,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgE;gBAGvE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAMd,IAAW,OAAO,eAEjB;IAEM,aAAa;IAIb,YAAY;IAIZ,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IASzD,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAOtC,8BAA8B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAS1G,2BAA2B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO;IAiBnG,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO;IAgBhG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,GAAE,MAAU;IAYxD,YAAY,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,UAAU,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC;CA+CxD"}
@@ -41,10 +41,15 @@ export class SlashingProposerContract extends EventEmitter {
41
41
  ]);
42
42
  }
43
43
  async getRoundInfo(rollupAddress, round) {
44
- return await this.proposer.read.getRoundData([
44
+ const roundInfo = await this.proposer.read.rounds([
45
45
  rollupAddress,
46
46
  round
47
47
  ]);
48
+ return {
49
+ lastVote: roundInfo[0],
50
+ leader: roundInfo[1],
51
+ executed: roundInfo[2]
52
+ };
48
53
  }
49
54
  getProposalVotes(rollupAddress, round, proposal) {
50
55
  return this.proposer.read.yeaCount([