@aztec-labs/ethereum 6.0.0-nightly.20261007 → 6.0.0-rc.2
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/deploy_aztec_l1_contracts.d.ts +1 -1
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_aztec_l1_contracts.js +2 -1
- package/dest/l1_tx_utils/amsterdam.d.ts +42 -0
- package/dest/l1_tx_utils/amsterdam.d.ts.map +1 -0
- package/dest/l1_tx_utils/amsterdam.js +61 -0
- package/dest/l1_tx_utils/constants.d.ts +3 -1
- package/dest/l1_tx_utils/constants.d.ts.map +1 -1
- package/dest/l1_tx_utils/constants.js +11 -1
- package/dest/l1_tx_utils/index.d.ts +2 -1
- package/dest/l1_tx_utils/index.d.ts.map +1 -1
- package/dest/l1_tx_utils/index.js +1 -0
- package/package.json +3 -3
- package/src/deploy_aztec_l1_contracts.ts +2 -1
- package/src/l1_tx_utils/amsterdam.ts +74 -0
- package/src/l1_tx_utils/constants.ts +12 -1
- package/src/l1_tx_utils/index.ts +1 -0
|
@@ -264,4 +264,4 @@ export declare function getDeployRollupForUpgradeEnvVars(args: Omit<DeployAztecL
|
|
|
264
264
|
export declare const deployRollupForUpgrade: (privateKey: `0x${string}`, rpcUrl: string, chainId: number, registryAddress: EthAddress, args: Omit<DeployAztecL1ContractsArgs, "activationThreshold" | "ejectionThreshold" | "governanceProposerQuorum" | "governanceProposerRoundSize" | "zkPassportArgs">) => Promise<{
|
|
265
265
|
rollup: RollupContract;
|
|
266
266
|
}>;
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2F6dGVjX2wxX2NvbnRyYWN0cy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGxveV9henRlY19sMV9jb250cmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFJaEUsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU8zQyxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLaEMsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTRCLE1BQU0sYUFBYSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRFLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBNE0zRCxNQUFNLFdBQVcsV0FBVztJQUMxQixFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQ1gsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUNYLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDWCxFQUFFLEVBQUUsTUFBTSxDQUFDO0NBQ1o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsYUFBYTtJQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIscUNBQXFDO0lBQ3JDLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIsa0VBQWtFO0lBQ2xFLGFBQWEsRUFBRSxXQUFXLENBQUM7Q0FDNUI7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixrQkFBa0IsSUFB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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,+BAA+B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAIhE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAO3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAKhC,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,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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"}
|
|
@@ -18,6 +18,7 @@ import { assertValidSlotDurations } from './config.js';
|
|
|
18
18
|
import { deployMulticall3 } from './contracts/multicall.js';
|
|
19
19
|
import { RollupContract } from './contracts/rollup.js';
|
|
20
20
|
import { resolveFoundryBinary } from './foundry_binary.js';
|
|
21
|
+
import { isAmsterdamBlock } from './l1_tx_utils/amsterdam.js';
|
|
21
22
|
const logger = createLogger('ethereum:deploy_aztec_l1_contracts');
|
|
22
23
|
const require = createRequire(import.meta.url);
|
|
23
24
|
const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
|
|
@@ -116,7 +117,7 @@ const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
|
|
|
116
117
|
false
|
|
117
118
|
]
|
|
118
119
|
});
|
|
119
|
-
if (!latestBlock || !(
|
|
120
|
+
if (!latestBlock || !isAmsterdamBlock(latestBlock)) {
|
|
120
121
|
const scriptPath = join(getL1ContractsPath(), 'scripts', 'forge_broadcast.js');
|
|
121
122
|
return runProcess(process.execPath, [
|
|
122
123
|
scriptPath,
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type Logger } from '@aztec-labs/foundation/log';
|
|
2
|
+
import { DateProvider } from '@aztec-labs/foundation/timer';
|
|
3
|
+
/**
|
|
4
|
+
* Returns whether an L1 block was produced under the Amsterdam (Glamsterdam) execution-layer fork, which adds the
|
|
5
|
+
* EIP-7928 `blockAccessListHash` header field. Accepts both viem-formatted blocks (viem keeps unknown RPC fields) and
|
|
6
|
+
* raw `eth_getBlockByNumber` results.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isAmsterdamBlock(block: object | null | undefined): boolean;
|
|
9
|
+
/** Returns the gas limit cap we apply to an L1 tx, depending on whether the Amsterdam fork is active. */
|
|
10
|
+
export declare function getMaxL1TxGasLimit(isAmsterdam: boolean): bigint;
|
|
11
|
+
/** Source of the latest L1 block, such as a viem client or an L1TxUtils instance. */
|
|
12
|
+
export type LatestL1BlockSource = {
|
|
13
|
+
getBlock(): Promise<object>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Tracks whether the Amsterdam fork is active on L1 by inspecting the latest block. Activation is cached for good since
|
|
17
|
+
* the fork does not revert. Until then, a block seen through {@link observe} within the last `maxBlockAgeMs` answers
|
|
18
|
+
* {@link isActive} without another RPC call, so callers that already fetch the latest block do not pay for a second
|
|
19
|
+
* fetch.
|
|
20
|
+
*/
|
|
21
|
+
export declare class AmsterdamForkDetector {
|
|
22
|
+
private readonly blockSource;
|
|
23
|
+
private readonly opts;
|
|
24
|
+
private active;
|
|
25
|
+
private lastObservedAtMs;
|
|
26
|
+
constructor(blockSource: LatestL1BlockSource, opts?: {
|
|
27
|
+
maxBlockAgeMs?: number;
|
|
28
|
+
dateProvider?: DateProvider;
|
|
29
|
+
log?: Logger;
|
|
30
|
+
});
|
|
31
|
+
/** Records a freshly fetched latest L1 block. */
|
|
32
|
+
observe(block: object | null | undefined): void;
|
|
33
|
+
/**
|
|
34
|
+
* Returns whether the Amsterdam fork is active, fetching the latest L1 block unless a recent one was observed.
|
|
35
|
+
* @param opts.assumeActiveOnError - What to answer when the fork is not known to be active and the block fetch fails.
|
|
36
|
+
*/
|
|
37
|
+
isActive(opts?: {
|
|
38
|
+
assumeActiveOnError?: boolean;
|
|
39
|
+
}): Promise<boolean>;
|
|
40
|
+
private now;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1zdGVyZGFtLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbDFfdHhfdXRpbHMvYW1zdGVyZGFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJNUQ7Ozs7R0FJRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUUxRTtBQUVELHlHQUF5RztBQUN6Ryx3QkFBZ0Isa0JBQWtCLENBQUMsV0FBVyxFQUFFLE9BQU8sR0FBRyxNQUFNLENBRS9EO0FBRUQscUZBQXFGO0FBQ3JGLE1BQU0sTUFBTSxtQkFBbUIsR0FBRztJQUFFLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7Q0FBRSxDQUFDO0FBRWxFOzs7OztHQUtHO0FBQ0gscUJBQWEscUJBQXFCO0lBSzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7SUFMdkIsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2QixPQUFPLENBQUMsZ0JBQWdCLENBQXFCO0lBRTdDLFlBQ21CLFdBQVcsRUFBRSxtQkFBbUIsRUFDaEMsSUFBSSxHQUFFO1FBQUUsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDO1FBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQU8sRUFDL0Y7SUFFSixpREFBaUQ7SUFDMUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBS3JEO0lBRUQ7OztPQUdHO0lBQ1UsUUFBUSxDQUFDLElBQUksR0FBRTtRQUFFLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxDQUFBO0tBQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBbUJwRjtJQUVELE9BQU8sQ0FBQyxHQUFHO0NBR1oifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amsterdam.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/amsterdam.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE1E;AAED,yGAAyG;AACzG,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAE/D;AAED,qFAAqF;AACrF,MAAM,MAAM,mBAAmB,GAAG;IAAE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,YACmB,WAAW,EAAE,mBAAmB,EAChC,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,EAC/F;IAEJ,iDAAiD;IAC1C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAKrD;IAED;;;OAGG;IACU,QAAQ,CAAC,IAAI,GAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBpF;IAED,OAAO,CAAC,GAAG;CAGZ"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createLogger } from '@aztec-labs/foundation/log';
|
|
2
|
+
import { DateProvider } from '@aztec-labs/foundation/timer';
|
|
3
|
+
import { AMSTERDAM_MAX_L1_TX_LIMIT, MAX_L1_TX_LIMIT } from './constants.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns whether an L1 block was produced under the Amsterdam (Glamsterdam) execution-layer fork, which adds the
|
|
6
|
+
* EIP-7928 `blockAccessListHash` header field. Accepts both viem-formatted blocks (viem keeps unknown RPC fields) and
|
|
7
|
+
* raw `eth_getBlockByNumber` results.
|
|
8
|
+
*/ export function isAmsterdamBlock(block) {
|
|
9
|
+
return !!block && 'blockAccessListHash' in block && !!block.blockAccessListHash;
|
|
10
|
+
}
|
|
11
|
+
/** Returns the gas limit cap we apply to an L1 tx, depending on whether the Amsterdam fork is active. */ export function getMaxL1TxGasLimit(isAmsterdam) {
|
|
12
|
+
return isAmsterdam ? AMSTERDAM_MAX_L1_TX_LIMIT : MAX_L1_TX_LIMIT;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Tracks whether the Amsterdam fork is active on L1 by inspecting the latest block. Activation is cached for good since
|
|
16
|
+
* the fork does not revert. Until then, a block seen through {@link observe} within the last `maxBlockAgeMs` answers
|
|
17
|
+
* {@link isActive} without another RPC call, so callers that already fetch the latest block do not pay for a second
|
|
18
|
+
* fetch.
|
|
19
|
+
*/ export class AmsterdamForkDetector {
|
|
20
|
+
blockSource;
|
|
21
|
+
opts;
|
|
22
|
+
active;
|
|
23
|
+
lastObservedAtMs;
|
|
24
|
+
constructor(blockSource, opts = {}){
|
|
25
|
+
this.blockSource = blockSource;
|
|
26
|
+
this.opts = opts;
|
|
27
|
+
this.active = false;
|
|
28
|
+
}
|
|
29
|
+
/** Records a freshly fetched latest L1 block. */ observe(block) {
|
|
30
|
+
if (isAmsterdamBlock(block)) {
|
|
31
|
+
this.active = true;
|
|
32
|
+
}
|
|
33
|
+
this.lastObservedAtMs = this.now();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns whether the Amsterdam fork is active, fetching the latest L1 block unless a recent one was observed.
|
|
37
|
+
* @param opts.assumeActiveOnError - What to answer when the fork is not known to be active and the block fetch fails.
|
|
38
|
+
*/ async isActive(opts = {}) {
|
|
39
|
+
if (this.active) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
const maxBlockAgeMs = this.opts.maxBlockAgeMs ?? 12_000;
|
|
43
|
+
if (this.lastObservedAtMs !== undefined && this.now() - this.lastObservedAtMs < maxBlockAgeMs) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
this.observe(await this.blockSource.getBlock());
|
|
48
|
+
} catch (err) {
|
|
49
|
+
const assumeActive = opts.assumeActiveOnError ?? false;
|
|
50
|
+
(this.opts.log ?? createLogger('ethereum:amsterdam-fork-detector')).warn('Failed to fetch latest L1 block to detect the Amsterdam fork', {
|
|
51
|
+
err,
|
|
52
|
+
assumeActive
|
|
53
|
+
});
|
|
54
|
+
return assumeActive;
|
|
55
|
+
}
|
|
56
|
+
return this.active;
|
|
57
|
+
}
|
|
58
|
+
now() {
|
|
59
|
+
return (this.opts.dateProvider ?? new DateProvider()).now();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const WEI_CONST = 1000000000n;
|
|
2
2
|
export declare const MAX_L1_TX_LIMIT = 16777216n;
|
|
3
|
+
export declare const AMSTERDAM_MAX_L1_TX_LIMIT = 50000000n;
|
|
4
|
+
export declare const AMSTERDAM_MAX_SLASHED_VALIDATORS_PER_ROUND = 35;
|
|
3
5
|
export declare const MIN_REPLACEMENT_BUMP_PERCENTAGE = 10;
|
|
4
6
|
export declare const MIN_BLOB_REPLACEMENT_BUMP_PERCENTAGE = 100;
|
|
5
7
|
export declare const BLOCK_TIME_MS = 12000;
|
|
@@ -9,4 +11,4 @@ export declare const BLOB_CAPACITY_SCHEDULE: {
|
|
|
9
11
|
target: number;
|
|
10
12
|
max: number;
|
|
11
13
|
}[];
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbDFfdHhfdXRpbHMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGVBQU8sTUFBTSxTQUFTLGNBQWlCLENBQUM7QUFJeEMsZUFBTyxNQUFNLGVBQWUsWUFBYyxDQUFDO0FBVTNDLGVBQU8sTUFBTSx5QkFBeUIsWUFBYyxDQUFDO0FBQ3JELGVBQU8sTUFBTSwwQ0FBMEMsS0FBSyxDQUFDO0FBSTdELGVBQU8sTUFBTSwrQkFBK0IsS0FBSyxDQUFDO0FBSWxELGVBQU8sTUFBTSxvQ0FBb0MsTUFBTSxDQUFDO0FBR3hELGVBQU8sTUFBTSxhQUFhLFFBQVMsQ0FBQztBQUdwQyxlQUFPLE1BQU0sWUFBWSxVQUFVLENBQUM7QUFHcEMsZUFBTyxNQUFNLHNCQUFzQjs7OztHQUtsQyxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,cAAiB,CAAC;AAIxC,eAAO,MAAM,eAAe,YAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,cAAiB,CAAC;AAIxC,eAAO,MAAM,eAAe,YAAc,CAAC;AAU3C,eAAO,MAAM,yBAAyB,YAAc,CAAC;AACrD,eAAO,MAAM,0CAA0C,KAAK,CAAC;AAI7D,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAIlD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAGxD,eAAO,MAAM,aAAa,QAAS,CAAC;AAGpC,eAAO,MAAM,YAAY,UAAU,CAAC;AAGpC,eAAO,MAAM,sBAAsB;;;;GAKlC,CAAC"}
|
|
@@ -3,8 +3,18 @@
|
|
|
3
3
|
// 1_000_000_000_000_000_000 Wei = 1 ETH
|
|
4
4
|
export const WEI_CONST = 1_000_000_000n;
|
|
5
5
|
// Our conservative ceiling on the total gas limit of any L1 tx we send (2^24), matching the EIP-7825 cap.
|
|
6
|
-
// EIP-8037 keeps 2^24 as the execution cap but would allow a higher total;
|
|
6
|
+
// EIP-8037 keeps 2^24 as the execution cap but would allow a higher total; see AMSTERDAM_MAX_L1_TX_LIMIT.
|
|
7
7
|
export const MAX_L1_TX_LIMIT = 16_777_216n;
|
|
8
|
+
// Once Amsterdam (EIP-8037) is active, 2^24 bounds only execution gas, and state gas is drawn from whatever the tx gas
|
|
9
|
+
// limit exceeds 2^24 by, so a tx sent with exactly 2^24 must fit execution and state gas together in 16.7M. Executing a
|
|
10
|
+
// slashing round is dominated by state gas: the worst case per slashed validator is an ejection that leaves a remainder,
|
|
11
|
+
// costing ~930k state gas and ~210k execution gas, on top of ~1.8M fixed plus ~10.7k per vote. With the maximum of 128
|
|
12
|
+
// votes, a round slashing 39 validators uses ~47.4M gas and fits a 50M limit, while 40 do not (the 63/64 call-forwarding
|
|
13
|
+
// rule needs headroom above the gas used); we cap at 35 to leave margin below that. 50M is also the default gas cap RPC
|
|
14
|
+
// nodes apply to eth_estimateGas, eth_call and eth_simulateV1, so we cannot simulate anything larger; both values can be
|
|
15
|
+
// raised once RPCs allow more than 50M.
|
|
16
|
+
export const AMSTERDAM_MAX_L1_TX_LIMIT = 50_000_000n;
|
|
17
|
+
export const AMSTERDAM_MAX_SLASHED_VALIDATORS_PER_ROUND = 35;
|
|
8
18
|
// setting a minimum bump percentage to 10% due to geth's implementation
|
|
9
19
|
// https://github.com/ethereum/go-ethereum/blob/e3d61e6db028c412f74bc4d4c7e117a9e29d0de0/core/txpool/legacypool/list.go#L298
|
|
10
20
|
export const MIN_REPLACEMENT_BUMP_PERCENTAGE = 10;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './amsterdam.js';
|
|
1
2
|
export * from './config.js';
|
|
2
3
|
export * from './constants.js';
|
|
3
4
|
export * from './factory.js';
|
|
@@ -10,4 +11,4 @@ export * from './signer.js';
|
|
|
10
11
|
export * from './types.js';
|
|
11
12
|
export * from './tx_delayer.js';
|
|
12
13
|
export * from './utils.js';
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sMV90eF91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec-labs/ethereum",
|
|
3
|
-
"version": "6.0.0-
|
|
3
|
+
"version": "6.0.0-rc.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./account": "./dest/account.js",
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@aztec-foundation/l1-artifacts": "6.0.0-rc.5",
|
|
54
|
-
"@aztec-labs/blob-lib": "6.0.0-
|
|
55
|
-
"@aztec-labs/foundation": "6.0.0-
|
|
54
|
+
"@aztec-labs/blob-lib": "6.0.0-rc.2",
|
|
55
|
+
"@aztec-labs/foundation": "6.0.0-rc.2",
|
|
56
56
|
"dotenv": "^16.0.3",
|
|
57
57
|
"lodash.chunk": "^4.2.0",
|
|
58
58
|
"lodash.pickby": "^4.5.0",
|
|
@@ -23,6 +23,7 @@ import { deployMulticall3 } from './contracts/multicall.js';
|
|
|
23
23
|
import { RollupContract } from './contracts/rollup.js';
|
|
24
24
|
import { resolveFoundryBinary } from './foundry_binary.js';
|
|
25
25
|
import type { L1ContractAddresses } from './l1_contract_addresses.js';
|
|
26
|
+
import { isAmsterdamBlock } from './l1_tx_utils/amsterdam.js';
|
|
26
27
|
import type { ExtendedViemWalletClient } from './types.js';
|
|
27
28
|
|
|
28
29
|
const logger = createLogger('ethereum:deploy_aztec_l1_contracts');
|
|
@@ -130,7 +131,7 @@ async function runForgeScriptBroadcast<T extends { rollupAddress: Hex }>(
|
|
|
130
131
|
const verifyArgs = args.verify ? ['--verify'] : [];
|
|
131
132
|
|
|
132
133
|
const latestBlock = await l1Client.request({ method: 'eth_getBlockByNumber', params: ['latest', false] });
|
|
133
|
-
if (!latestBlock || !(
|
|
134
|
+
if (!latestBlock || !isAmsterdamBlock(latestBlock)) {
|
|
134
135
|
const scriptPath = join(getL1ContractsPath(), 'scripts', 'forge_broadcast.js');
|
|
135
136
|
return runProcess<T>(
|
|
136
137
|
process.execPath,
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type Logger, createLogger } from '@aztec-labs/foundation/log';
|
|
2
|
+
import { DateProvider } from '@aztec-labs/foundation/timer';
|
|
3
|
+
|
|
4
|
+
import { AMSTERDAM_MAX_L1_TX_LIMIT, MAX_L1_TX_LIMIT } from './constants.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns whether an L1 block was produced under the Amsterdam (Glamsterdam) execution-layer fork, which adds the
|
|
8
|
+
* EIP-7928 `blockAccessListHash` header field. Accepts both viem-formatted blocks (viem keeps unknown RPC fields) and
|
|
9
|
+
* raw `eth_getBlockByNumber` results.
|
|
10
|
+
*/
|
|
11
|
+
export function isAmsterdamBlock(block: object | null | undefined): boolean {
|
|
12
|
+
return !!block && 'blockAccessListHash' in block && !!block.blockAccessListHash;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** Returns the gas limit cap we apply to an L1 tx, depending on whether the Amsterdam fork is active. */
|
|
16
|
+
export function getMaxL1TxGasLimit(isAmsterdam: boolean): bigint {
|
|
17
|
+
return isAmsterdam ? AMSTERDAM_MAX_L1_TX_LIMIT : MAX_L1_TX_LIMIT;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Source of the latest L1 block, such as a viem client or an L1TxUtils instance. */
|
|
21
|
+
export type LatestL1BlockSource = { getBlock(): Promise<object> };
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Tracks whether the Amsterdam fork is active on L1 by inspecting the latest block. Activation is cached for good since
|
|
25
|
+
* the fork does not revert. Until then, a block seen through {@link observe} within the last `maxBlockAgeMs` answers
|
|
26
|
+
* {@link isActive} without another RPC call, so callers that already fetch the latest block do not pay for a second
|
|
27
|
+
* fetch.
|
|
28
|
+
*/
|
|
29
|
+
export class AmsterdamForkDetector {
|
|
30
|
+
private active = false;
|
|
31
|
+
private lastObservedAtMs: number | undefined;
|
|
32
|
+
|
|
33
|
+
constructor(
|
|
34
|
+
private readonly blockSource: LatestL1BlockSource,
|
|
35
|
+
private readonly opts: { maxBlockAgeMs?: number; dateProvider?: DateProvider; log?: Logger } = {},
|
|
36
|
+
) {}
|
|
37
|
+
|
|
38
|
+
/** Records a freshly fetched latest L1 block. */
|
|
39
|
+
public observe(block: object | null | undefined): void {
|
|
40
|
+
if (isAmsterdamBlock(block)) {
|
|
41
|
+
this.active = true;
|
|
42
|
+
}
|
|
43
|
+
this.lastObservedAtMs = this.now();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns whether the Amsterdam fork is active, fetching the latest L1 block unless a recent one was observed.
|
|
48
|
+
* @param opts.assumeActiveOnError - What to answer when the fork is not known to be active and the block fetch fails.
|
|
49
|
+
*/
|
|
50
|
+
public async isActive(opts: { assumeActiveOnError?: boolean } = {}): Promise<boolean> {
|
|
51
|
+
if (this.active) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
const maxBlockAgeMs = this.opts.maxBlockAgeMs ?? 12_000;
|
|
55
|
+
if (this.lastObservedAtMs !== undefined && this.now() - this.lastObservedAtMs < maxBlockAgeMs) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
this.observe(await this.blockSource.getBlock());
|
|
60
|
+
} catch (err) {
|
|
61
|
+
const assumeActive = opts.assumeActiveOnError ?? false;
|
|
62
|
+
(this.opts.log ?? createLogger('ethereum:amsterdam-fork-detector')).warn(
|
|
63
|
+
'Failed to fetch latest L1 block to detect the Amsterdam fork',
|
|
64
|
+
{ err, assumeActive },
|
|
65
|
+
);
|
|
66
|
+
return assumeActive;
|
|
67
|
+
}
|
|
68
|
+
return this.active;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private now(): number {
|
|
72
|
+
return (this.opts.dateProvider ?? new DateProvider()).now();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -4,9 +4,20 @@
|
|
|
4
4
|
export const WEI_CONST = 1_000_000_000n;
|
|
5
5
|
|
|
6
6
|
// Our conservative ceiling on the total gas limit of any L1 tx we send (2^24), matching the EIP-7825 cap.
|
|
7
|
-
// EIP-8037 keeps 2^24 as the execution cap but would allow a higher total;
|
|
7
|
+
// EIP-8037 keeps 2^24 as the execution cap but would allow a higher total; see AMSTERDAM_MAX_L1_TX_LIMIT.
|
|
8
8
|
export const MAX_L1_TX_LIMIT = 16_777_216n;
|
|
9
9
|
|
|
10
|
+
// Once Amsterdam (EIP-8037) is active, 2^24 bounds only execution gas, and state gas is drawn from whatever the tx gas
|
|
11
|
+
// limit exceeds 2^24 by, so a tx sent with exactly 2^24 must fit execution and state gas together in 16.7M. Executing a
|
|
12
|
+
// slashing round is dominated by state gas: the worst case per slashed validator is an ejection that leaves a remainder,
|
|
13
|
+
// costing ~930k state gas and ~210k execution gas, on top of ~1.8M fixed plus ~10.7k per vote. With the maximum of 128
|
|
14
|
+
// votes, a round slashing 39 validators uses ~47.4M gas and fits a 50M limit, while 40 do not (the 63/64 call-forwarding
|
|
15
|
+
// rule needs headroom above the gas used); we cap at 35 to leave margin below that. 50M is also the default gas cap RPC
|
|
16
|
+
// nodes apply to eth_estimateGas, eth_call and eth_simulateV1, so we cannot simulate anything larger; both values can be
|
|
17
|
+
// raised once RPCs allow more than 50M.
|
|
18
|
+
export const AMSTERDAM_MAX_L1_TX_LIMIT = 50_000_000n;
|
|
19
|
+
export const AMSTERDAM_MAX_SLASHED_VALIDATORS_PER_ROUND = 35;
|
|
20
|
+
|
|
10
21
|
// setting a minimum bump percentage to 10% due to geth's implementation
|
|
11
22
|
// https://github.com/ethereum/go-ethereum/blob/e3d61e6db028c412f74bc4d4c7e117a9e29d0de0/core/txpool/legacypool/list.go#L298
|
|
12
23
|
export const MIN_REPLACEMENT_BUMP_PERCENTAGE = 10;
|
package/src/l1_tx_utils/index.ts
CHANGED