@aztec/ethereum 4.0.0-nightly.20260111 → 4.0.0-nightly.20260113
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.
- package/dest/config.d.ts +11 -28
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +36 -55
- package/dest/deploy_aztec_l1_contracts.d.ts +12 -2
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_aztec_l1_contracts.js +62 -12
- package/dest/generated/l1-contracts-defaults.d.ts +29 -0
- package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
- package/dest/generated/l1-contracts-defaults.js +29 -0
- package/package.json +6 -5
- package/src/config.ts +41 -54
- package/src/deploy_aztec_l1_contracts.ts +63 -14
- package/src/generated/l1-contracts-defaults.ts +31 -0
package/dest/config.d.ts
CHANGED
|
@@ -63,35 +63,18 @@ export type L1ContractsConfig = {
|
|
|
63
63
|
/** The number of seconds to wait for an exit */
|
|
64
64
|
exitDelaySeconds: number;
|
|
65
65
|
} & L1TxUtilsConfig;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
lagInEpochsForValidatorSet: number;
|
|
72
|
-
lagInEpochsForRandao: number;
|
|
73
|
-
inboxLag: number;
|
|
74
|
-
aztecProofSubmissionEpochs: number;
|
|
75
|
-
activationThreshold: bigint;
|
|
76
|
-
ejectionThreshold: bigint;
|
|
77
|
-
localEjectionThreshold: bigint;
|
|
78
|
-
slashAmountSmall: bigint;
|
|
79
|
-
slashAmountMedium: bigint;
|
|
80
|
-
slashAmountLarge: bigint;
|
|
81
|
-
slashingRoundSizeInEpochs: number;
|
|
82
|
-
slashingLifetimeInRounds: number;
|
|
83
|
-
slashingExecutionDelayInRounds: number;
|
|
84
|
-
slashingVetoer: EthAddress;
|
|
85
|
-
governanceProposerRoundSize: number;
|
|
86
|
-
manaTarget: bigint;
|
|
87
|
-
provingCostPerMana: bigint;
|
|
88
|
-
exitDelaySeconds: number;
|
|
89
|
-
slasherFlavor: "tally";
|
|
90
|
-
slashingOffsetInRounds: number;
|
|
91
|
-
slashingDisableDuration: number;
|
|
92
|
-
};
|
|
66
|
+
/**
|
|
67
|
+
* Config mappings for L1ContractsConfig.
|
|
68
|
+
* Default values come from generated l1-contracts-defaults.json (source: defaults.yml).
|
|
69
|
+
* Real deployments use forge scripts which require explicit env vars (vm.envUint).
|
|
70
|
+
*/
|
|
93
71
|
export declare const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig>;
|
|
72
|
+
/**
|
|
73
|
+
* Default L1 contracts configuration derived from l1ContractsConfigMappings.
|
|
74
|
+
* Source of truth: spartan/environments/defaults.yml -> defaults.l1-contracts
|
|
75
|
+
*/
|
|
76
|
+
export declare const DefaultL1ContractsConfig: L1ContractsConfig;
|
|
94
77
|
export declare const genesisStateConfigMappings: ConfigMappingsType<GenesisStateConfig>;
|
|
95
78
|
export declare function getL1ContractsConfigEnvVars(): L1ContractsConfig;
|
|
96
79
|
export declare function getGenesisStateConfigEnvVars(): GenesisStateConfig;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQVF4QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQTJCLE1BQU0seUJBQXlCLENBQUM7QUFFeEYsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLHlGQUF5RjtJQUN6RixZQUFZLEVBQUUsT0FBTyxDQUFDO0lBQ3RCLHlGQUF5RjtJQUN6RixZQUFZLEVBQUUsT0FBTyxDQUFDO0NBQ3ZCLENBQUM7QUFFRixNQUFNLE1BQU0saUJBQWlCLEdBQUc7SUFDOUIseUNBQXlDO0lBQ3pDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3Qix1RkFBdUY7SUFDdkYsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLHdDQUF3QztJQUN4QyxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsMkNBQTJDO0lBQzNDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQztJQUNqQyxvRkFBb0Y7SUFDcEYsMEJBQTBCLEVBQUUsTUFBTSxDQUFDO0lBQ25DLGlGQUFpRjtJQUNqRixvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0Isc0ZBQXNGO0lBQ3RGLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsK0VBQStFO0lBQy9FLDBCQUEwQixFQUFFLE1BQU0sQ0FBQztJQUNuQyx5Q0FBeUM7SUFDekMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDO0lBQzVCLHlDQUF5QztJQUN6QyxpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsbUhBQW1IO0lBQ25ILHNCQUFzQixFQUFFLE1BQU0sQ0FBQztJQUMvQix3S0FBd0s7SUFDeEssY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLDRFQUE0RTtJQUM1RSx5QkFBeUIsRUFBRSxNQUFNLENBQUM7SUFDbEMsZ0dBQWdHO0lBQ2hHLHdCQUF3QixFQUFFLE1BQU0sQ0FBQztJQUNqQyx5R0FBeUc7SUFDekcsOEJBQThCLEVBQUUsTUFBTSxDQUFDO0lBQ3ZDLHlFQUF5RTtJQUN6RSxjQUFjLEVBQUUsVUFBVSxDQUFDO0lBQzNCLDRJQUE0STtJQUM1SSxzQkFBc0IsRUFBRSxNQUFNLENBQUM7SUFDL0IsK0VBQStFO0lBQy9FLHVCQUF1QixFQUFFLE1BQU0sQ0FBQztJQUNoQywrQkFBK0I7SUFDL0IsYUFBYSxFQUFFLFFBQVEsR0FBRyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzNDLDJEQUEyRDtJQUMzRCxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFDekIsK0NBQStDO0lBQy9DLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixxRUFBcUU7SUFDckUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLGdFQUFnRTtJQUNoRSx3QkFBd0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQyxzQ0FBc0M7SUFDdEMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDO0lBQ3BDLHFDQUFxQztJQUNyQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLGdDQUFnQztJQUNoQyxrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsZ0RBQWdEO0lBQ2hELGdCQUFnQixFQUFFLE1BQU0sQ0FBQztDQUMxQixHQUFHLGVBQWUsQ0FBQztBQUVwQjs7OztHQUlHO0FBQ0gsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQStJM0UsQ0FBQztBQUVGOzs7R0FHRztBQUNILGVBQU8sTUFBTSx3QkFBd0IsbUJBQThDLENBQUM7QUFFcEYsZUFBTyxNQUFNLDBCQUEwQixFQUFFLGtCQUFrQixDQUFDLGtCQUFrQixDQVc3RSxDQUFDO0FBRUYsd0JBQWdCLDJCQUEyQixJQUFJLGlCQUFpQixDQUUvRDtBQUVELHdCQUFnQiw0QkFBNEIsSUFBSSxrQkFBa0IsQ0FFakUifQ==
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAQxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAQxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,yBAAyB,CAAC;AAExF,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,oFAAoF;IACpF,0BAA0B,EAAE,MAAM,CAAC;IACnC,iFAAiF;IACjF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,0BAA0B,EAAE,MAAM,CAAC;IACnC,yCAAyC;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mHAAmH;IACnH,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wKAAwK;IACxK,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,yBAAyB,EAAE,MAAM,CAAC;IAClC,gGAAgG;IAChG,wBAAwB,EAAE,MAAM,CAAC;IACjC,yGAAyG;IACzG,8BAA8B,EAAE,MAAM,CAAC;IACvC,yEAAyE;IACzE,cAAc,EAAE,UAAU,CAAC;IAC3B,4IAA4I;IAC5I,sBAAsB,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,uBAAuB,EAAE,MAAM,CAAC;IAChC,+BAA+B;IAC/B,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,eAAe,CAAC;AAEpB;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CA+I3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,mBAA8C,CAAC;AAEpF,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,94 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
bigintConfigHelper, booleanConfigHelper, enumConfigHelper, getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
1
|
+
import { bigintConfigHelper, booleanConfigHelper, enumConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
3
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { l1ContractsDefaultEnv } from './generated/l1-contracts-defaults.js';
|
|
4
4
|
import { l1TxUtilsConfigMappings } from './l1_tx_utils/config.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
lagInEpochsForValidatorSet: 2,
|
|
11
|
-
lagInEpochsForRandao: 2,
|
|
12
|
-
inboxLag: 1,
|
|
13
|
-
aztecProofSubmissionEpochs: 1,
|
|
14
|
-
activationThreshold: 100n * 10n ** 18n,
|
|
15
|
-
ejectionThreshold: 50n * 10n ** 18n,
|
|
16
|
-
localEjectionThreshold: 98n * 10n ** 18n,
|
|
17
|
-
slashAmountSmall: 10n * 10n ** 18n,
|
|
18
|
-
slashAmountMedium: 20n * 10n ** 18n,
|
|
19
|
-
slashAmountLarge: 50n * 10n ** 18n,
|
|
20
|
-
slashingRoundSizeInEpochs: 4,
|
|
21
|
-
slashingLifetimeInRounds: 5,
|
|
22
|
-
slashingExecutionDelayInRounds: 0,
|
|
23
|
-
slashingVetoer: EthAddress.ZERO,
|
|
24
|
-
governanceProposerRoundSize: 300,
|
|
25
|
-
manaTarget: BigInt(100e6),
|
|
26
|
-
provingCostPerMana: BigInt(100),
|
|
27
|
-
exitDelaySeconds: 2 * 24 * 60 * 60,
|
|
28
|
-
slasherFlavor: 'tally',
|
|
29
|
-
slashingOffsetInRounds: 2,
|
|
30
|
-
slashingDisableDuration: 5 * 24 * 60 * 60
|
|
31
|
-
};
|
|
32
|
-
export const l1ContractsConfigMappings = {
|
|
5
|
+
/**
|
|
6
|
+
* Config mappings for L1ContractsConfig.
|
|
7
|
+
* Default values come from generated l1-contracts-defaults.json (source: defaults.yml).
|
|
8
|
+
* Real deployments use forge scripts which require explicit env vars (vm.envUint).
|
|
9
|
+
*/ export const l1ContractsConfigMappings = {
|
|
33
10
|
ethereumSlotDuration: {
|
|
34
11
|
env: 'ETHEREUM_SLOT_DURATION',
|
|
35
12
|
description: 'How many seconds an L1 slot lasts.',
|
|
36
|
-
...numberConfigHelper(
|
|
13
|
+
...numberConfigHelper(l1ContractsDefaultEnv.ETHEREUM_SLOT_DURATION)
|
|
37
14
|
},
|
|
38
15
|
aztecSlotDuration: {
|
|
39
16
|
env: 'AZTEC_SLOT_DURATION',
|
|
40
17
|
description: 'How many seconds an L2 slots lasts (must be multiple of ethereum slot duration).',
|
|
41
|
-
...numberConfigHelper(
|
|
18
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLOT_DURATION)
|
|
42
19
|
},
|
|
43
20
|
aztecEpochDuration: {
|
|
44
21
|
env: 'AZTEC_EPOCH_DURATION',
|
|
45
22
|
description: `How many L2 slots an epoch lasts (maximum AZTEC_MAX_EPOCH_DURATION).`,
|
|
46
|
-
...numberConfigHelper(
|
|
23
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_EPOCH_DURATION)
|
|
47
24
|
},
|
|
48
25
|
aztecTargetCommitteeSize: {
|
|
49
26
|
env: 'AZTEC_TARGET_COMMITTEE_SIZE',
|
|
50
27
|
description: 'The target validator committee size.',
|
|
51
|
-
...numberConfigHelper(
|
|
28
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_TARGET_COMMITTEE_SIZE)
|
|
52
29
|
},
|
|
53
30
|
lagInEpochsForValidatorSet: {
|
|
54
31
|
env: 'AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET',
|
|
55
32
|
description: 'The number of epochs to lag behind the current epoch for validator selection.',
|
|
56
|
-
...numberConfigHelper(
|
|
33
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET)
|
|
57
34
|
},
|
|
58
35
|
lagInEpochsForRandao: {
|
|
59
36
|
env: 'AZTEC_LAG_IN_EPOCHS_FOR_RANDAO',
|
|
60
37
|
description: 'The number of epochs to lag behind the current epoch for randao selection.',
|
|
61
|
-
...numberConfigHelper(
|
|
38
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_LAG_IN_EPOCHS_FOR_RANDAO)
|
|
62
39
|
},
|
|
63
40
|
inboxLag: {
|
|
64
41
|
env: 'AZTEC_INBOX_LAG',
|
|
65
42
|
description: 'The number of checkpoints to lag in the inbox (prevents sequencer DOS attacks).',
|
|
66
|
-
...numberConfigHelper(
|
|
43
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_INBOX_LAG)
|
|
67
44
|
},
|
|
68
45
|
aztecProofSubmissionEpochs: {
|
|
69
46
|
env: 'AZTEC_PROOF_SUBMISSION_EPOCHS',
|
|
70
47
|
description: 'The number of epochs after an epoch ends that proofs are still accepted.',
|
|
71
|
-
...numberConfigHelper(
|
|
48
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_PROOF_SUBMISSION_EPOCHS)
|
|
72
49
|
},
|
|
73
50
|
activationThreshold: {
|
|
74
51
|
env: 'AZTEC_ACTIVATION_THRESHOLD',
|
|
75
52
|
description: 'The deposit amount for a validator',
|
|
76
|
-
...bigintConfigHelper(
|
|
53
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_ACTIVATION_THRESHOLD))
|
|
77
54
|
},
|
|
78
55
|
ejectionThreshold: {
|
|
79
56
|
env: 'AZTEC_EJECTION_THRESHOLD',
|
|
80
57
|
description: 'The minimum stake for a validator.',
|
|
81
|
-
...bigintConfigHelper(
|
|
58
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_EJECTION_THRESHOLD))
|
|
82
59
|
},
|
|
83
60
|
localEjectionThreshold: {
|
|
84
61
|
env: 'AZTEC_LOCAL_EJECTION_THRESHOLD',
|
|
85
62
|
description: 'The local ejection threshold for a validator. Stricter than ejectionThreshold but local to a specific rollup',
|
|
86
|
-
...bigintConfigHelper(
|
|
63
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_LOCAL_EJECTION_THRESHOLD))
|
|
87
64
|
},
|
|
88
65
|
slashingOffsetInRounds: {
|
|
89
66
|
env: 'AZTEC_SLASHING_OFFSET_IN_ROUNDS',
|
|
90
67
|
description: 'How many slashing rounds back we slash (ie when slashing in round N, we slash for offenses committed during epochs of round N-offset)',
|
|
91
|
-
...numberConfigHelper(
|
|
68
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_OFFSET_IN_ROUNDS)
|
|
92
69
|
},
|
|
93
70
|
slasherFlavor: {
|
|
94
71
|
env: 'AZTEC_SLASHER_FLAVOR',
|
|
@@ -97,22 +74,22 @@ export const l1ContractsConfigMappings = {
|
|
|
97
74
|
'empire',
|
|
98
75
|
'tally',
|
|
99
76
|
'none'
|
|
100
|
-
],
|
|
77
|
+
], l1ContractsDefaultEnv.AZTEC_SLASHER_FLAVOR)
|
|
101
78
|
},
|
|
102
79
|
slashAmountSmall: {
|
|
103
80
|
env: 'AZTEC_SLASH_AMOUNT_SMALL',
|
|
104
81
|
description: 'Small slashing amount for light offenses',
|
|
105
|
-
...bigintConfigHelper(
|
|
82
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_SMALL))
|
|
106
83
|
},
|
|
107
84
|
slashAmountMedium: {
|
|
108
85
|
env: 'AZTEC_SLASH_AMOUNT_MEDIUM',
|
|
109
86
|
description: 'Medium slashing amount for moderate offenses',
|
|
110
|
-
...bigintConfigHelper(
|
|
87
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_MEDIUM))
|
|
111
88
|
},
|
|
112
89
|
slashAmountLarge: {
|
|
113
90
|
env: 'AZTEC_SLASH_AMOUNT_LARGE',
|
|
114
91
|
description: 'Large slashing amount for severe offenses',
|
|
115
|
-
...bigintConfigHelper(
|
|
92
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_LARGE))
|
|
116
93
|
},
|
|
117
94
|
slashingQuorum: {
|
|
118
95
|
env: 'AZTEC_SLASHING_QUORUM',
|
|
@@ -122,28 +99,28 @@ export const l1ContractsConfigMappings = {
|
|
|
122
99
|
slashingRoundSizeInEpochs: {
|
|
123
100
|
env: 'AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS',
|
|
124
101
|
description: 'The slashing round size',
|
|
125
|
-
...numberConfigHelper(
|
|
102
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS)
|
|
126
103
|
},
|
|
127
104
|
slashingLifetimeInRounds: {
|
|
128
105
|
env: 'AZTEC_SLASHING_LIFETIME_IN_ROUNDS',
|
|
129
106
|
description: 'The slashing lifetime in rounds',
|
|
130
|
-
...numberConfigHelper(
|
|
107
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_LIFETIME_IN_ROUNDS)
|
|
131
108
|
},
|
|
132
109
|
slashingExecutionDelayInRounds: {
|
|
133
110
|
env: 'AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS',
|
|
134
111
|
description: 'The slashing execution delay in rounds',
|
|
135
|
-
...numberConfigHelper(
|
|
112
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS)
|
|
136
113
|
},
|
|
137
114
|
slashingVetoer: {
|
|
138
115
|
env: 'AZTEC_SLASHING_VETOER',
|
|
139
116
|
description: 'The slashing vetoer',
|
|
140
117
|
parseEnv: (val)=>EthAddress.fromString(val),
|
|
141
|
-
defaultValue:
|
|
118
|
+
defaultValue: EthAddress.fromString(l1ContractsDefaultEnv.AZTEC_SLASHING_VETOER)
|
|
142
119
|
},
|
|
143
120
|
slashingDisableDuration: {
|
|
144
121
|
env: 'AZTEC_SLASHING_DISABLE_DURATION',
|
|
145
122
|
description: 'How long slashing can be disabled for in seconds when vetoer disables it',
|
|
146
|
-
...numberConfigHelper(
|
|
123
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_DISABLE_DURATION)
|
|
147
124
|
},
|
|
148
125
|
governanceProposerQuorum: {
|
|
149
126
|
env: 'AZTEC_GOVERNANCE_PROPOSER_QUORUM',
|
|
@@ -153,25 +130,29 @@ export const l1ContractsConfigMappings = {
|
|
|
153
130
|
governanceProposerRoundSize: {
|
|
154
131
|
env: 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE',
|
|
155
132
|
description: 'The governance proposing round size',
|
|
156
|
-
...numberConfigHelper(
|
|
133
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE)
|
|
157
134
|
},
|
|
158
135
|
manaTarget: {
|
|
159
136
|
env: 'AZTEC_MANA_TARGET',
|
|
160
137
|
description: 'The mana target for the rollup',
|
|
161
|
-
...bigintConfigHelper(
|
|
138
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_MANA_TARGET))
|
|
162
139
|
},
|
|
163
140
|
provingCostPerMana: {
|
|
164
141
|
env: 'AZTEC_PROVING_COST_PER_MANA',
|
|
165
142
|
description: 'The proving cost per mana',
|
|
166
|
-
...bigintConfigHelper(
|
|
143
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_PROVING_COST_PER_MANA))
|
|
167
144
|
},
|
|
168
145
|
exitDelaySeconds: {
|
|
169
146
|
env: 'AZTEC_EXIT_DELAY_SECONDS',
|
|
170
147
|
description: 'The delay before a validator can exit the set',
|
|
171
|
-
...numberConfigHelper(
|
|
148
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_EXIT_DELAY_SECONDS)
|
|
172
149
|
},
|
|
173
150
|
...l1TxUtilsConfigMappings
|
|
174
151
|
};
|
|
152
|
+
/**
|
|
153
|
+
* Default L1 contracts configuration derived from l1ContractsConfigMappings.
|
|
154
|
+
* Source of truth: spartan/environments/defaults.yml -> defaults.l1-contracts
|
|
155
|
+
*/ export const DefaultL1ContractsConfig = getDefaultConfig(l1ContractsConfigMappings);
|
|
175
156
|
export const genesisStateConfigMappings = {
|
|
176
157
|
testAccounts: {
|
|
177
158
|
env: 'TEST_ACCOUNTS',
|
|
@@ -27,9 +27,17 @@ export interface ValidatorJson {
|
|
|
27
27
|
publicKeyInG2: G2PointJson;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* Gets the path to the l1-contracts directory.
|
|
30
|
+
* Gets the path to the l1-contracts foundry artifacts directory.
|
|
31
|
+
* These are copied from l1-contracts to yarn-project/l1-artifacts/l1-contracts
|
|
32
|
+
* during build to make yarn-project self-contained.
|
|
31
33
|
*/
|
|
32
34
|
export declare function getL1ContractsPath(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Prepares a temp directory for forge deployment.
|
|
37
|
+
* Copies all artifacts with preserved timestamps (required for forge cache validity).
|
|
38
|
+
* A fresh broadcast/ directory is created for deployment outputs.
|
|
39
|
+
*/
|
|
40
|
+
export declare function prepareL1ContractsForDeployment(): string;
|
|
33
41
|
/**
|
|
34
42
|
* Computes the validator data for passing to Solidity.
|
|
35
43
|
* Only computes the G2 public key (which requires scalar multiplication on G2, not available in EVM).
|
|
@@ -195,6 +203,7 @@ export declare function getDeployAztecL1ContractsEnvVars(args: DeployAztecL1Cont
|
|
|
195
203
|
readonly AZTEC_PROOF_SUBMISSION_EPOCHS: string;
|
|
196
204
|
readonly AZTEC_LOCAL_EJECTION_THRESHOLD: string;
|
|
197
205
|
readonly AZTEC_SLASHING_LIFETIME_IN_ROUNDS: string;
|
|
206
|
+
readonly AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: string;
|
|
198
207
|
readonly AZTEC_SLASHING_VETOER: `0x${string}`;
|
|
199
208
|
readonly AZTEC_SLASHING_DISABLE_DURATION: string;
|
|
200
209
|
readonly AZTEC_MANA_TARGET: string;
|
|
@@ -224,6 +233,7 @@ export declare function getDeployRollupForUpgradeEnvVars(args: Omit<DeployAztecL
|
|
|
224
233
|
readonly AZTEC_PROOF_SUBMISSION_EPOCHS: string;
|
|
225
234
|
readonly AZTEC_LOCAL_EJECTION_THRESHOLD: string;
|
|
226
235
|
readonly AZTEC_SLASHING_LIFETIME_IN_ROUNDS: string;
|
|
236
|
+
readonly AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: string;
|
|
227
237
|
readonly AZTEC_SLASHING_VETOER: `0x${string}`;
|
|
228
238
|
readonly AZTEC_SLASHING_DISABLE_DURATION: string;
|
|
229
239
|
readonly AZTEC_MANA_TARGET: string;
|
|
@@ -244,4 +254,4 @@ export declare const deployRollupForUpgrade: (privateKey: `0x${string}`, rpcUrl:
|
|
|
244
254
|
rollup: RollupContract;
|
|
245
255
|
slashFactoryAddress: `0x${string}`;
|
|
246
256
|
}>;
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2F6dGVjX2wxX2NvbnRyYWN0cy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGxveV9henRlY19sMV9jb250cmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJM0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU0zQyxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLaEMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnRTNELE1BQU0sV0FBVyxXQUFXO0lBQzFCLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDWCxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQ1gsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUNYLEVBQUUsRUFBRSxNQUFNLENBQUM7Q0FDWjtBQUVEOzs7R0FHRztBQUNILE1BQU0sV0FBVyxhQUFhO0lBQzVCLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixxQ0FBcUM7SUFDckMsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixrRUFBa0U7SUFDbEUsYUFBYSxFQUFFLFdBQVcs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_aztec_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_aztec_l1_contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAwB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAIpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy_aztec_l1_contracts.d.ts","sourceRoot":"","sources":["../src/deploy_aztec_l1_contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,9 @@ import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
|
7
7
|
import { fileURLToPath } from '@aztec/foundation/url';
|
|
8
8
|
import { bn254 } from '@noble/curves/bn254';
|
|
9
9
|
import { spawn } from 'child_process';
|
|
10
|
-
import {
|
|
10
|
+
import { cpSync, existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync } from 'fs';
|
|
11
|
+
import { tmpdir } from 'os';
|
|
12
|
+
import { dirname, join, resolve } from 'path';
|
|
11
13
|
import readline from 'readline';
|
|
12
14
|
import { foundry, mainnet, sepolia } from 'viem/chains';
|
|
13
15
|
import { createEthereumChain, isAnvilTestChain } from './chain.js';
|
|
@@ -78,14 +80,63 @@ async function maybeForgeForceProductionBuild(l1ContractsPath, script, chainId)
|
|
|
78
80
|
}
|
|
79
81
|
}
|
|
80
82
|
/**
|
|
81
|
-
* Gets the path to the l1-contracts directory.
|
|
83
|
+
* Gets the path to the l1-contracts foundry artifacts directory.
|
|
84
|
+
* These are copied from l1-contracts to yarn-project/l1-artifacts/l1-contracts
|
|
85
|
+
* during build to make yarn-project self-contained.
|
|
82
86
|
*/ export function getL1ContractsPath() {
|
|
83
|
-
// Try to find l1-contracts relative to this file
|
|
84
87
|
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
85
|
-
// Go up from yarn-project/ethereum/
|
|
86
|
-
const l1ContractsPath = resolve(currentDir, '..', '..', '
|
|
88
|
+
// Go up from yarn-project/ethereum/dest to yarn-project, then to l1-artifacts/l1-contracts
|
|
89
|
+
const l1ContractsPath = resolve(currentDir, '..', '..', 'l1-artifacts', 'l1-contracts');
|
|
87
90
|
return l1ContractsPath;
|
|
88
91
|
}
|
|
92
|
+
// Cached deployment directory
|
|
93
|
+
let preparedDeployDir;
|
|
94
|
+
function cleanupDeployDir() {
|
|
95
|
+
if (preparedDeployDir) {
|
|
96
|
+
try {
|
|
97
|
+
rmSync(preparedDeployDir, {
|
|
98
|
+
recursive: true,
|
|
99
|
+
force: true
|
|
100
|
+
});
|
|
101
|
+
} catch {
|
|
102
|
+
// ignore cleanup errors
|
|
103
|
+
}
|
|
104
|
+
preparedDeployDir = undefined;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Prepares a temp directory for forge deployment.
|
|
109
|
+
* Copies all artifacts with preserved timestamps (required for forge cache validity).
|
|
110
|
+
* A fresh broadcast/ directory is created for deployment outputs.
|
|
111
|
+
*/ export function prepareL1ContractsForDeployment() {
|
|
112
|
+
if (preparedDeployDir && existsSync(preparedDeployDir)) {
|
|
113
|
+
return preparedDeployDir;
|
|
114
|
+
}
|
|
115
|
+
const basePath = getL1ContractsPath();
|
|
116
|
+
const tempDir = mkdtempSync(join(tmpdir(), '.foundry-deploy-'));
|
|
117
|
+
preparedDeployDir = tempDir;
|
|
118
|
+
process.on('exit', cleanupDeployDir);
|
|
119
|
+
// Copy all dirs with preserved timestamps (required for forge cache validity)
|
|
120
|
+
const copyOpts = {
|
|
121
|
+
recursive: true,
|
|
122
|
+
preserveTimestamps: true
|
|
123
|
+
};
|
|
124
|
+
cpSync(join(basePath, 'out'), join(tempDir, 'out'), copyOpts);
|
|
125
|
+
cpSync(join(basePath, 'lib'), join(tempDir, 'lib'), copyOpts);
|
|
126
|
+
cpSync(join(basePath, 'cache'), join(tempDir, 'cache'), copyOpts);
|
|
127
|
+
cpSync(join(basePath, 'src'), join(tempDir, 'src'), copyOpts);
|
|
128
|
+
cpSync(join(basePath, 'script'), join(tempDir, 'script'), copyOpts);
|
|
129
|
+
cpSync(join(basePath, 'generated'), join(tempDir, 'generated'), copyOpts);
|
|
130
|
+
cpSync(join(basePath, 'foundry.toml'), join(tempDir, 'foundry.toml'));
|
|
131
|
+
cpSync(join(basePath, 'foundry.lock'), join(tempDir, 'foundry.lock'));
|
|
132
|
+
for (const file of readdirSync(basePath)){
|
|
133
|
+
if (file.startsWith('solc-')) {
|
|
134
|
+
cpSync(join(basePath, file), join(tempDir, file));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
mkdirSync(join(tempDir, 'broadcast'));
|
|
138
|
+
return tempDir;
|
|
139
|
+
}
|
|
89
140
|
/**
|
|
90
141
|
* Computes the validator data for passing to Solidity.
|
|
91
142
|
* Only computes the G2 public key (which requires scalar multiplication on G2, not available in EVM).
|
|
@@ -125,7 +176,6 @@ async function maybeForgeForceProductionBuild(l1ContractsPath, script, chainId)
|
|
|
125
176
|
if (args.initialValidators && args.initialValidators.length > 0 && args.existingTokenAddress) {
|
|
126
177
|
throw new Error('Cannot deploy with both initialValidators and existingTokenAddress. ' + 'Initial validator funding requires minting tokens, which is not possible with an external token.');
|
|
127
178
|
}
|
|
128
|
-
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
129
179
|
const chain = createEthereumChain([
|
|
130
180
|
rpcUrl
|
|
131
181
|
], chainId);
|
|
@@ -155,8 +205,8 @@ async function maybeForgeForceProductionBuild(l1ContractsPath, script, chainId)
|
|
|
155
205
|
logger.error(`Error setting block interval: ${e}`);
|
|
156
206
|
}
|
|
157
207
|
}
|
|
158
|
-
//
|
|
159
|
-
const l1ContractsPath =
|
|
208
|
+
// Use foundry-artifacts from l1-artifacts package
|
|
209
|
+
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
160
210
|
const FORGE_SCRIPT = 'script/deploy/DeployAztecL1Contracts.s.sol';
|
|
161
211
|
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
162
212
|
// Verify contracts on Etherscan when on mainnet/sepolia and ETHERSCAN_API_KEY is available.
|
|
@@ -166,7 +216,7 @@ async function maybeForgeForceProductionBuild(l1ContractsPath, script, chainId)
|
|
|
166
216
|
logger.warn(`Deploying to chain ${chainId} (${chainId === mainnet.id ? 'mainnet' : 'sepolia'}) without ETHERSCAN_API_KEY. ` + `Contracts will NOT be verified on Etherscan. Set ETHERSCAN_API_KEY environment variable to enable verification.`);
|
|
167
217
|
}
|
|
168
218
|
// From heuristic testing. More caused issues with anvil.
|
|
169
|
-
const MAGIC_ANVIL_BATCH_SIZE =
|
|
219
|
+
const MAGIC_ANVIL_BATCH_SIZE = 8;
|
|
170
220
|
// Anvil seems to stall with unbounded batch size. Otherwise no max batch size is desirable.
|
|
171
221
|
const forgeArgs = [
|
|
172
222
|
'script',
|
|
@@ -280,6 +330,7 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
280
330
|
AZTEC_PROOF_SUBMISSION_EPOCHS: args.aztecProofSubmissionEpochs.toString(),
|
|
281
331
|
AZTEC_LOCAL_EJECTION_THRESHOLD: args.localEjectionThreshold.toString(),
|
|
282
332
|
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: args.slashingLifetimeInRounds.toString(),
|
|
333
|
+
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: args.slashingExecutionDelayInRounds.toString(),
|
|
283
334
|
AZTEC_SLASHING_VETOER: args.slashingVetoer.toString(),
|
|
284
335
|
AZTEC_SLASHING_DISABLE_DURATION: args.slashingDisableDuration.toString(),
|
|
285
336
|
AZTEC_MANA_TARGET: args.manaTarget.toString(),
|
|
@@ -297,9 +348,8 @@ export function getDeployRollupForUpgradeEnvVars(args) {
|
|
|
297
348
|
/**
|
|
298
349
|
* Deploys a new rollup, using the existing canonical version to derive certain values (addresses of assets etc).
|
|
299
350
|
*/ export const deployRollupForUpgrade = async (privateKey, rpcUrl, chainId, registryAddress, args)=>{
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
const l1ContractsPath = resolve(currentDir, '..', '..', '..', 'l1-contracts');
|
|
351
|
+
// Use foundry-artifacts from l1-artifacts package
|
|
352
|
+
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
303
353
|
const FORGE_SCRIPT = 'script/deploy/DeployRollupForUpgrade.s.sol';
|
|
304
354
|
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
305
355
|
const forgeArgs = [
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Default L1 contracts configuration values from network-defaults.yml */
|
|
2
|
+
export declare const l1ContractsDefaultEnv: {
|
|
3
|
+
readonly ETHEREUM_SLOT_DURATION: 12;
|
|
4
|
+
readonly AZTEC_SLOT_DURATION: 36;
|
|
5
|
+
readonly AZTEC_EPOCH_DURATION: 32;
|
|
6
|
+
readonly AZTEC_TARGET_COMMITTEE_SIZE: 48;
|
|
7
|
+
readonly AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2;
|
|
8
|
+
readonly AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2;
|
|
9
|
+
readonly AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000;
|
|
10
|
+
readonly AZTEC_EJECTION_THRESHOLD: 50000000000000000000;
|
|
11
|
+
readonly AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000;
|
|
12
|
+
readonly AZTEC_EXIT_DELAY_SECONDS: 172800;
|
|
13
|
+
readonly AZTEC_INBOX_LAG: 1;
|
|
14
|
+
readonly AZTEC_PROOF_SUBMISSION_EPOCHS: 1;
|
|
15
|
+
readonly AZTEC_MANA_TARGET: 100000000;
|
|
16
|
+
readonly AZTEC_PROVING_COST_PER_MANA: 100;
|
|
17
|
+
readonly AZTEC_SLASHER_FLAVOR: "tally";
|
|
18
|
+
readonly AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4;
|
|
19
|
+
readonly AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5;
|
|
20
|
+
readonly AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 0;
|
|
21
|
+
readonly AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2;
|
|
22
|
+
readonly AZTEC_SLASHING_VETOER: "0x0000000000000000000000000000000000000000";
|
|
23
|
+
readonly AZTEC_SLASHING_DISABLE_DURATION: 432000;
|
|
24
|
+
readonly AZTEC_SLASH_AMOUNT_SMALL: 10000000000000000000;
|
|
25
|
+
readonly AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000;
|
|
26
|
+
readonly AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000;
|
|
27
|
+
readonly AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDEtY29udHJhY3RzLWRlZmF1bHRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkL2wxLWNvbnRyYWN0cy1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSwwRUFBMEU7QUFDMUUsZUFBTyxNQUFNLHFCQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwQnhCLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l1-contracts-defaults.d.ts","sourceRoot":"","sources":["../../src/generated/l1-contracts-defaults.ts"],"names":[],"mappings":"AAGA,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BxB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Auto-generated from spartan/environments/network-defaults.yml
|
|
2
|
+
// Do not edit manually - run yarn generate to regenerate
|
|
3
|
+
/** Default L1 contracts configuration values from network-defaults.yml */ export const l1ContractsDefaultEnv = {
|
|
4
|
+
ETHEREUM_SLOT_DURATION: 12,
|
|
5
|
+
AZTEC_SLOT_DURATION: 36,
|
|
6
|
+
AZTEC_EPOCH_DURATION: 32,
|
|
7
|
+
AZTEC_TARGET_COMMITTEE_SIZE: 48,
|
|
8
|
+
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
|
|
9
|
+
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2,
|
|
10
|
+
AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000,
|
|
11
|
+
AZTEC_EJECTION_THRESHOLD: 50000000000000000000,
|
|
12
|
+
AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000,
|
|
13
|
+
AZTEC_EXIT_DELAY_SECONDS: 172800,
|
|
14
|
+
AZTEC_INBOX_LAG: 1,
|
|
15
|
+
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
16
|
+
AZTEC_MANA_TARGET: 100000000,
|
|
17
|
+
AZTEC_PROVING_COST_PER_MANA: 100,
|
|
18
|
+
AZTEC_SLASHER_FLAVOR: 'tally',
|
|
19
|
+
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
20
|
+
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
|
|
21
|
+
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 0,
|
|
22
|
+
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
23
|
+
AZTEC_SLASHING_VETOER: '0x0000000000000000000000000000000000000000',
|
|
24
|
+
AZTEC_SLASHING_DISABLE_DURATION: 432000,
|
|
25
|
+
AZTEC_SLASH_AMOUNT_SMALL: 10000000000000000000,
|
|
26
|
+
AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000,
|
|
27
|
+
AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000,
|
|
28
|
+
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300
|
|
29
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/ethereum",
|
|
3
|
-
"version": "4.0.0-nightly.
|
|
3
|
+
"version": "4.0.0-nightly.20260113",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./account": "./dest/account.js",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"build": "yarn clean && ../scripts/tsc.sh",
|
|
41
41
|
"build:dev": "../scripts/tsc.sh --watch",
|
|
42
42
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
43
|
+
"generate": "./scripts/generate.sh",
|
|
43
44
|
"start:dev": "concurrently -k \"tsgo -b -w\" \"nodemon --watch dest --exec yarn start\"",
|
|
44
45
|
"start": "node ./dest/index.js",
|
|
45
46
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
|
|
@@ -49,10 +50,10 @@
|
|
|
49
50
|
"../package.common.json"
|
|
50
51
|
],
|
|
51
52
|
"dependencies": {
|
|
52
|
-
"@aztec/blob-lib": "4.0.0-nightly.
|
|
53
|
-
"@aztec/constants": "4.0.0-nightly.
|
|
54
|
-
"@aztec/foundation": "4.0.0-nightly.
|
|
55
|
-
"@aztec/l1-artifacts": "4.0.0-nightly.
|
|
53
|
+
"@aztec/blob-lib": "4.0.0-nightly.20260113",
|
|
54
|
+
"@aztec/constants": "4.0.0-nightly.20260113",
|
|
55
|
+
"@aztec/foundation": "4.0.0-nightly.20260113",
|
|
56
|
+
"@aztec/l1-artifacts": "4.0.0-nightly.20260113",
|
|
56
57
|
"@viem/anvil": "^0.0.10",
|
|
57
58
|
"dotenv": "^16.0.3",
|
|
58
59
|
"lodash.chunk": "^4.2.0",
|
package/src/config.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type ConfigMappingsType,
|
|
3
|
-
// type NetworkNames,
|
|
4
3
|
bigintConfigHelper,
|
|
5
4
|
booleanConfigHelper,
|
|
6
5
|
enumConfigHelper,
|
|
7
6
|
getConfigFromMappings,
|
|
7
|
+
getDefaultConfig,
|
|
8
8
|
numberConfigHelper,
|
|
9
9
|
optionalNumberConfigHelper,
|
|
10
10
|
} from '@aztec/foundation/config';
|
|
11
11
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
12
12
|
|
|
13
|
+
import { l1ContractsDefaultEnv } from './generated/l1-contracts-defaults.js';
|
|
13
14
|
import { type L1TxUtilsConfig, l1TxUtilsConfigMappings } from './l1_tx_utils/config.js';
|
|
14
15
|
|
|
15
16
|
export type GenesisStateConfig = {
|
|
@@ -76,116 +77,96 @@ export type L1ContractsConfig = {
|
|
|
76
77
|
exitDelaySeconds: number;
|
|
77
78
|
} & L1TxUtilsConfig;
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
lagInEpochsForValidatorSet: 2,
|
|
85
|
-
lagInEpochsForRandao: 2, // For PROD, this value should be > lagInEpochsForValidatorSet
|
|
86
|
-
inboxLag: 1, // Default inbox lag to prevent sequencer DOS attacks
|
|
87
|
-
aztecProofSubmissionEpochs: 1, // you have a full epoch to submit a proof after the epoch to prove ends
|
|
88
|
-
activationThreshold: 100n * 10n ** 18n,
|
|
89
|
-
ejectionThreshold: 50n * 10n ** 18n,
|
|
90
|
-
localEjectionThreshold: 98n * 10n ** 18n,
|
|
91
|
-
slashAmountSmall: 10n * 10n ** 18n,
|
|
92
|
-
slashAmountMedium: 20n * 10n ** 18n,
|
|
93
|
-
slashAmountLarge: 50n * 10n ** 18n,
|
|
94
|
-
slashingRoundSizeInEpochs: 4,
|
|
95
|
-
slashingLifetimeInRounds: 5,
|
|
96
|
-
slashingExecutionDelayInRounds: 0, // round N may be submitted in round N + 1
|
|
97
|
-
slashingVetoer: EthAddress.ZERO,
|
|
98
|
-
governanceProposerRoundSize: 300,
|
|
99
|
-
manaTarget: BigInt(100e6),
|
|
100
|
-
provingCostPerMana: BigInt(100),
|
|
101
|
-
exitDelaySeconds: 2 * 24 * 60 * 60,
|
|
102
|
-
slasherFlavor: 'tally' as const,
|
|
103
|
-
slashingOffsetInRounds: 2,
|
|
104
|
-
slashingDisableDuration: 5 * 24 * 60 * 60, // 5 days in seconds
|
|
105
|
-
} satisfies L1ContractsConfig;
|
|
106
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Config mappings for L1ContractsConfig.
|
|
82
|
+
* Default values come from generated l1-contracts-defaults.json (source: defaults.yml).
|
|
83
|
+
* Real deployments use forge scripts which require explicit env vars (vm.envUint).
|
|
84
|
+
*/
|
|
107
85
|
export const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig> = {
|
|
108
86
|
ethereumSlotDuration: {
|
|
109
87
|
env: 'ETHEREUM_SLOT_DURATION',
|
|
110
88
|
description: 'How many seconds an L1 slot lasts.',
|
|
111
|
-
...numberConfigHelper(
|
|
89
|
+
...numberConfigHelper(l1ContractsDefaultEnv.ETHEREUM_SLOT_DURATION),
|
|
112
90
|
},
|
|
113
91
|
aztecSlotDuration: {
|
|
114
92
|
env: 'AZTEC_SLOT_DURATION',
|
|
115
93
|
description: 'How many seconds an L2 slots lasts (must be multiple of ethereum slot duration).',
|
|
116
|
-
...numberConfigHelper(
|
|
94
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLOT_DURATION),
|
|
117
95
|
},
|
|
118
96
|
aztecEpochDuration: {
|
|
119
97
|
env: 'AZTEC_EPOCH_DURATION',
|
|
120
98
|
description: `How many L2 slots an epoch lasts (maximum AZTEC_MAX_EPOCH_DURATION).`,
|
|
121
|
-
...numberConfigHelper(
|
|
99
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_EPOCH_DURATION),
|
|
122
100
|
},
|
|
123
101
|
aztecTargetCommitteeSize: {
|
|
124
102
|
env: 'AZTEC_TARGET_COMMITTEE_SIZE',
|
|
125
103
|
description: 'The target validator committee size.',
|
|
126
|
-
...numberConfigHelper(
|
|
104
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_TARGET_COMMITTEE_SIZE),
|
|
127
105
|
},
|
|
128
106
|
lagInEpochsForValidatorSet: {
|
|
129
107
|
env: 'AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET',
|
|
130
108
|
description: 'The number of epochs to lag behind the current epoch for validator selection.',
|
|
131
|
-
...numberConfigHelper(
|
|
109
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET),
|
|
132
110
|
},
|
|
133
111
|
lagInEpochsForRandao: {
|
|
134
112
|
env: 'AZTEC_LAG_IN_EPOCHS_FOR_RANDAO',
|
|
135
113
|
description: 'The number of epochs to lag behind the current epoch for randao selection.',
|
|
136
|
-
...numberConfigHelper(
|
|
114
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_LAG_IN_EPOCHS_FOR_RANDAO),
|
|
137
115
|
},
|
|
138
116
|
inboxLag: {
|
|
139
117
|
env: 'AZTEC_INBOX_LAG',
|
|
140
118
|
description: 'The number of checkpoints to lag in the inbox (prevents sequencer DOS attacks).',
|
|
141
|
-
...numberConfigHelper(
|
|
119
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_INBOX_LAG),
|
|
142
120
|
},
|
|
143
121
|
aztecProofSubmissionEpochs: {
|
|
144
122
|
env: 'AZTEC_PROOF_SUBMISSION_EPOCHS',
|
|
145
123
|
description: 'The number of epochs after an epoch ends that proofs are still accepted.',
|
|
146
|
-
...numberConfigHelper(
|
|
124
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_PROOF_SUBMISSION_EPOCHS),
|
|
147
125
|
},
|
|
148
126
|
activationThreshold: {
|
|
149
127
|
env: 'AZTEC_ACTIVATION_THRESHOLD',
|
|
150
128
|
description: 'The deposit amount for a validator',
|
|
151
|
-
...bigintConfigHelper(
|
|
129
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_ACTIVATION_THRESHOLD)),
|
|
152
130
|
},
|
|
153
131
|
ejectionThreshold: {
|
|
154
132
|
env: 'AZTEC_EJECTION_THRESHOLD',
|
|
155
133
|
description: 'The minimum stake for a validator.',
|
|
156
|
-
...bigintConfigHelper(
|
|
134
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_EJECTION_THRESHOLD)),
|
|
157
135
|
},
|
|
158
136
|
localEjectionThreshold: {
|
|
159
137
|
env: 'AZTEC_LOCAL_EJECTION_THRESHOLD',
|
|
160
138
|
description:
|
|
161
139
|
'The local ejection threshold for a validator. Stricter than ejectionThreshold but local to a specific rollup',
|
|
162
|
-
...bigintConfigHelper(
|
|
140
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_LOCAL_EJECTION_THRESHOLD)),
|
|
163
141
|
},
|
|
164
142
|
slashingOffsetInRounds: {
|
|
165
143
|
env: 'AZTEC_SLASHING_OFFSET_IN_ROUNDS',
|
|
166
144
|
description:
|
|
167
145
|
'How many slashing rounds back we slash (ie when slashing in round N, we slash for offenses committed during epochs of round N-offset)',
|
|
168
|
-
...numberConfigHelper(
|
|
146
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_OFFSET_IN_ROUNDS),
|
|
169
147
|
},
|
|
170
148
|
slasherFlavor: {
|
|
171
149
|
env: 'AZTEC_SLASHER_FLAVOR',
|
|
172
150
|
description: 'Type of slasher proposer (empire, tally, or none)',
|
|
173
|
-
...enumConfigHelper(
|
|
151
|
+
...enumConfigHelper(
|
|
152
|
+
['empire', 'tally', 'none'] as const,
|
|
153
|
+
l1ContractsDefaultEnv.AZTEC_SLASHER_FLAVOR as 'empire' | 'tally' | 'none',
|
|
154
|
+
),
|
|
174
155
|
},
|
|
175
156
|
slashAmountSmall: {
|
|
176
157
|
env: 'AZTEC_SLASH_AMOUNT_SMALL',
|
|
177
158
|
description: 'Small slashing amount for light offenses',
|
|
178
|
-
...bigintConfigHelper(
|
|
159
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_SMALL)),
|
|
179
160
|
},
|
|
180
161
|
slashAmountMedium: {
|
|
181
162
|
env: 'AZTEC_SLASH_AMOUNT_MEDIUM',
|
|
182
163
|
description: 'Medium slashing amount for moderate offenses',
|
|
183
|
-
...bigintConfigHelper(
|
|
164
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_MEDIUM)),
|
|
184
165
|
},
|
|
185
166
|
slashAmountLarge: {
|
|
186
167
|
env: 'AZTEC_SLASH_AMOUNT_LARGE',
|
|
187
168
|
description: 'Large slashing amount for severe offenses',
|
|
188
|
-
...bigintConfigHelper(
|
|
169
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_SLASH_AMOUNT_LARGE)),
|
|
189
170
|
},
|
|
190
171
|
slashingQuorum: {
|
|
191
172
|
env: 'AZTEC_SLASHING_QUORUM',
|
|
@@ -195,28 +176,28 @@ export const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig> =
|
|
|
195
176
|
slashingRoundSizeInEpochs: {
|
|
196
177
|
env: 'AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS',
|
|
197
178
|
description: 'The slashing round size',
|
|
198
|
-
...numberConfigHelper(
|
|
179
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS),
|
|
199
180
|
},
|
|
200
181
|
slashingLifetimeInRounds: {
|
|
201
182
|
env: 'AZTEC_SLASHING_LIFETIME_IN_ROUNDS',
|
|
202
183
|
description: 'The slashing lifetime in rounds',
|
|
203
|
-
...numberConfigHelper(
|
|
184
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_LIFETIME_IN_ROUNDS),
|
|
204
185
|
},
|
|
205
186
|
slashingExecutionDelayInRounds: {
|
|
206
187
|
env: 'AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS',
|
|
207
188
|
description: 'The slashing execution delay in rounds',
|
|
208
|
-
...numberConfigHelper(
|
|
189
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS),
|
|
209
190
|
},
|
|
210
191
|
slashingVetoer: {
|
|
211
192
|
env: 'AZTEC_SLASHING_VETOER',
|
|
212
193
|
description: 'The slashing vetoer',
|
|
213
194
|
parseEnv: (val: string) => EthAddress.fromString(val),
|
|
214
|
-
defaultValue:
|
|
195
|
+
defaultValue: EthAddress.fromString(l1ContractsDefaultEnv.AZTEC_SLASHING_VETOER),
|
|
215
196
|
},
|
|
216
197
|
slashingDisableDuration: {
|
|
217
198
|
env: 'AZTEC_SLASHING_DISABLE_DURATION',
|
|
218
199
|
description: 'How long slashing can be disabled for in seconds when vetoer disables it',
|
|
219
|
-
...numberConfigHelper(
|
|
200
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_SLASHING_DISABLE_DURATION),
|
|
220
201
|
},
|
|
221
202
|
governanceProposerQuorum: {
|
|
222
203
|
env: 'AZTEC_GOVERNANCE_PROPOSER_QUORUM',
|
|
@@ -226,26 +207,32 @@ export const l1ContractsConfigMappings: ConfigMappingsType<L1ContractsConfig> =
|
|
|
226
207
|
governanceProposerRoundSize: {
|
|
227
208
|
env: 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE',
|
|
228
209
|
description: 'The governance proposing round size',
|
|
229
|
-
...numberConfigHelper(
|
|
210
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE),
|
|
230
211
|
},
|
|
231
212
|
manaTarget: {
|
|
232
213
|
env: 'AZTEC_MANA_TARGET',
|
|
233
214
|
description: 'The mana target for the rollup',
|
|
234
|
-
...bigintConfigHelper(
|
|
215
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_MANA_TARGET)),
|
|
235
216
|
},
|
|
236
217
|
provingCostPerMana: {
|
|
237
218
|
env: 'AZTEC_PROVING_COST_PER_MANA',
|
|
238
219
|
description: 'The proving cost per mana',
|
|
239
|
-
...bigintConfigHelper(
|
|
220
|
+
...bigintConfigHelper(BigInt(l1ContractsDefaultEnv.AZTEC_PROVING_COST_PER_MANA)),
|
|
240
221
|
},
|
|
241
222
|
exitDelaySeconds: {
|
|
242
223
|
env: 'AZTEC_EXIT_DELAY_SECONDS',
|
|
243
224
|
description: 'The delay before a validator can exit the set',
|
|
244
|
-
...numberConfigHelper(
|
|
225
|
+
...numberConfigHelper(l1ContractsDefaultEnv.AZTEC_EXIT_DELAY_SECONDS),
|
|
245
226
|
},
|
|
246
227
|
...l1TxUtilsConfigMappings,
|
|
247
228
|
};
|
|
248
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Default L1 contracts configuration derived from l1ContractsConfigMappings.
|
|
232
|
+
* Source of truth: spartan/environments/defaults.yml -> defaults.l1-contracts
|
|
233
|
+
*/
|
|
234
|
+
export const DefaultL1ContractsConfig = getDefaultConfig(l1ContractsConfigMappings);
|
|
235
|
+
|
|
249
236
|
export const genesisStateConfigMappings: ConfigMappingsType<GenesisStateConfig> = {
|
|
250
237
|
testAccounts: {
|
|
251
238
|
env: 'TEST_ACCOUNTS',
|
|
@@ -10,7 +10,9 @@ import { fileURLToPath } from '@aztec/foundation/url';
|
|
|
10
10
|
import { bn254 } from '@noble/curves/bn254';
|
|
11
11
|
import type { Abi, Narrow } from 'abitype';
|
|
12
12
|
import { spawn } from 'child_process';
|
|
13
|
-
import {
|
|
13
|
+
import { cpSync, existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync } from 'fs';
|
|
14
|
+
import { tmpdir } from 'os';
|
|
15
|
+
import { dirname, join, resolve } from 'path';
|
|
14
16
|
import readline from 'readline';
|
|
15
17
|
import type { Hex } from 'viem';
|
|
16
18
|
import { foundry, mainnet, sepolia } from 'viem/chains';
|
|
@@ -107,17 +109,66 @@ export interface ValidatorJson {
|
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
/**
|
|
110
|
-
* Gets the path to the l1-contracts directory.
|
|
112
|
+
* Gets the path to the l1-contracts foundry artifacts directory.
|
|
113
|
+
* These are copied from l1-contracts to yarn-project/l1-artifacts/l1-contracts
|
|
114
|
+
* during build to make yarn-project self-contained.
|
|
111
115
|
*/
|
|
112
116
|
export function getL1ContractsPath(): string {
|
|
113
|
-
// Try to find l1-contracts relative to this file
|
|
114
117
|
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const l1ContractsPath = resolve(currentDir, '..', '..', '..', 'l1-contracts');
|
|
118
|
+
// Go up from yarn-project/ethereum/dest to yarn-project, then to l1-artifacts/l1-contracts
|
|
119
|
+
const l1ContractsPath = resolve(currentDir, '..', '..', 'l1-artifacts', 'l1-contracts');
|
|
118
120
|
return l1ContractsPath;
|
|
119
121
|
}
|
|
120
122
|
|
|
123
|
+
// Cached deployment directory
|
|
124
|
+
let preparedDeployDir: string | undefined;
|
|
125
|
+
|
|
126
|
+
function cleanupDeployDir() {
|
|
127
|
+
if (preparedDeployDir) {
|
|
128
|
+
try {
|
|
129
|
+
rmSync(preparedDeployDir, { recursive: true, force: true });
|
|
130
|
+
} catch {
|
|
131
|
+
// ignore cleanup errors
|
|
132
|
+
}
|
|
133
|
+
preparedDeployDir = undefined;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Prepares a temp directory for forge deployment.
|
|
139
|
+
* Copies all artifacts with preserved timestamps (required for forge cache validity).
|
|
140
|
+
* A fresh broadcast/ directory is created for deployment outputs.
|
|
141
|
+
*/
|
|
142
|
+
export function prepareL1ContractsForDeployment(): string {
|
|
143
|
+
if (preparedDeployDir && existsSync(preparedDeployDir)) {
|
|
144
|
+
return preparedDeployDir;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const basePath = getL1ContractsPath();
|
|
148
|
+
const tempDir = mkdtempSync(join(tmpdir(), '.foundry-deploy-'));
|
|
149
|
+
preparedDeployDir = tempDir;
|
|
150
|
+
process.on('exit', cleanupDeployDir);
|
|
151
|
+
|
|
152
|
+
// Copy all dirs with preserved timestamps (required for forge cache validity)
|
|
153
|
+
const copyOpts = { recursive: true, preserveTimestamps: true };
|
|
154
|
+
cpSync(join(basePath, 'out'), join(tempDir, 'out'), copyOpts);
|
|
155
|
+
cpSync(join(basePath, 'lib'), join(tempDir, 'lib'), copyOpts);
|
|
156
|
+
cpSync(join(basePath, 'cache'), join(tempDir, 'cache'), copyOpts);
|
|
157
|
+
cpSync(join(basePath, 'src'), join(tempDir, 'src'), copyOpts);
|
|
158
|
+
cpSync(join(basePath, 'script'), join(tempDir, 'script'), copyOpts);
|
|
159
|
+
cpSync(join(basePath, 'generated'), join(tempDir, 'generated'), copyOpts);
|
|
160
|
+
cpSync(join(basePath, 'foundry.toml'), join(tempDir, 'foundry.toml'));
|
|
161
|
+
cpSync(join(basePath, 'foundry.lock'), join(tempDir, 'foundry.lock'));
|
|
162
|
+
for (const file of readdirSync(basePath)) {
|
|
163
|
+
if (file.startsWith('solc-')) {
|
|
164
|
+
cpSync(join(basePath, file), join(tempDir, file));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
mkdirSync(join(tempDir, 'broadcast'));
|
|
169
|
+
return tempDir;
|
|
170
|
+
}
|
|
171
|
+
|
|
121
172
|
/**
|
|
122
173
|
* Computes the validator data for passing to Solidity.
|
|
123
174
|
* Only computes the G2 public key (which requires scalar multiplication on G2, not available in EVM).
|
|
@@ -211,7 +262,6 @@ export async function deployAztecL1Contracts(
|
|
|
211
262
|
'Initial validator funding requires minting tokens, which is not possible with an external token.',
|
|
212
263
|
);
|
|
213
264
|
}
|
|
214
|
-
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
215
265
|
const chain = createEthereumChain([rpcUrl], chainId);
|
|
216
266
|
|
|
217
267
|
const l1Client = createExtendedL1Client([rpcUrl], privateKey, chain.chainInfo);
|
|
@@ -240,8 +290,8 @@ export async function deployAztecL1Contracts(
|
|
|
240
290
|
}
|
|
241
291
|
}
|
|
242
292
|
|
|
243
|
-
//
|
|
244
|
-
const l1ContractsPath =
|
|
293
|
+
// Use foundry-artifacts from l1-artifacts package
|
|
294
|
+
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
245
295
|
|
|
246
296
|
const FORGE_SCRIPT = 'script/deploy/DeployAztecL1Contracts.s.sol';
|
|
247
297
|
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
@@ -258,7 +308,7 @@ export async function deployAztecL1Contracts(
|
|
|
258
308
|
}
|
|
259
309
|
|
|
260
310
|
// From heuristic testing. More caused issues with anvil.
|
|
261
|
-
const MAGIC_ANVIL_BATCH_SIZE =
|
|
311
|
+
const MAGIC_ANVIL_BATCH_SIZE = 8;
|
|
262
312
|
// Anvil seems to stall with unbounded batch size. Otherwise no max batch size is desirable.
|
|
263
313
|
const forgeArgs = [
|
|
264
314
|
'script',
|
|
@@ -481,6 +531,7 @@ export function getDeployRollupForUpgradeEnvVars(
|
|
|
481
531
|
AZTEC_PROOF_SUBMISSION_EPOCHS: args.aztecProofSubmissionEpochs.toString(),
|
|
482
532
|
AZTEC_LOCAL_EJECTION_THRESHOLD: args.localEjectionThreshold.toString(),
|
|
483
533
|
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: args.slashingLifetimeInRounds.toString(),
|
|
534
|
+
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: args.slashingExecutionDelayInRounds.toString(),
|
|
484
535
|
AZTEC_SLASHING_VETOER: args.slashingVetoer.toString(),
|
|
485
536
|
AZTEC_SLASHING_DISABLE_DURATION: args.slashingDisableDuration.toString(),
|
|
486
537
|
AZTEC_MANA_TARGET: args.manaTarget.toString(),
|
|
@@ -513,10 +564,8 @@ export const deployRollupForUpgrade = async (
|
|
|
513
564
|
| 'zkPassportArgs'
|
|
514
565
|
>,
|
|
515
566
|
) => {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
// Relative location of l1-contracts in monorepo or docker image.
|
|
519
|
-
const l1ContractsPath = resolve(currentDir, '..', '..', '..', 'l1-contracts');
|
|
567
|
+
// Use foundry-artifacts from l1-artifacts package
|
|
568
|
+
const l1ContractsPath = prepareL1ContractsForDeployment();
|
|
520
569
|
|
|
521
570
|
const FORGE_SCRIPT = 'script/deploy/DeployRollupForUpgrade.s.sol';
|
|
522
571
|
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Auto-generated from spartan/environments/network-defaults.yml
|
|
2
|
+
// Do not edit manually - run yarn generate to regenerate
|
|
3
|
+
|
|
4
|
+
/** Default L1 contracts configuration values from network-defaults.yml */
|
|
5
|
+
export const l1ContractsDefaultEnv = {
|
|
6
|
+
ETHEREUM_SLOT_DURATION: 12,
|
|
7
|
+
AZTEC_SLOT_DURATION: 36,
|
|
8
|
+
AZTEC_EPOCH_DURATION: 32,
|
|
9
|
+
AZTEC_TARGET_COMMITTEE_SIZE: 48,
|
|
10
|
+
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
|
|
11
|
+
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2,
|
|
12
|
+
AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000,
|
|
13
|
+
AZTEC_EJECTION_THRESHOLD: 50000000000000000000,
|
|
14
|
+
AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000,
|
|
15
|
+
AZTEC_EXIT_DELAY_SECONDS: 172800,
|
|
16
|
+
AZTEC_INBOX_LAG: 1,
|
|
17
|
+
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
18
|
+
AZTEC_MANA_TARGET: 100000000,
|
|
19
|
+
AZTEC_PROVING_COST_PER_MANA: 100,
|
|
20
|
+
AZTEC_SLASHER_FLAVOR: 'tally',
|
|
21
|
+
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
22
|
+
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
|
|
23
|
+
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 0,
|
|
24
|
+
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
25
|
+
AZTEC_SLASHING_VETOER: '0x0000000000000000000000000000000000000000',
|
|
26
|
+
AZTEC_SLASHING_DISABLE_DURATION: 432000,
|
|
27
|
+
AZTEC_SLASH_AMOUNT_SMALL: 10000000000000000000,
|
|
28
|
+
AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000,
|
|
29
|
+
AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000,
|
|
30
|
+
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300,
|
|
31
|
+
} as const;
|