@aztec-labs/stdlib 6.0.0-rc.2 → 6.0.0-rc.3
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/contract/contract_address.d.ts +1 -1
- package/dest/contract/contract_address.js +1 -1
- package/dest/gas/fee_math.d.ts +2 -2
- package/dest/gas/fee_math.js +2 -2
- package/dest/keys/derivation.js +2 -2
- package/dest/messaging/l1_to_l2_message.d.ts +20 -1
- package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message.js +30 -8
- package/package.json +7 -7
- package/src/contract/contract_address.ts +1 -1
- package/src/gas/README.md +2 -2
- package/src/gas/fee_math.ts +2 -2
- package/src/keys/derivation.ts +2 -2
- package/src/messaging/l1_to_l2_message.ts +39 -11
|
@@ -8,7 +8,7 @@ import type { PartialAddress } from './partial_address.js';
|
|
|
8
8
|
* ```
|
|
9
9
|
* salted_initialization_hash = poseidon2(DOM_SEP__SALTED_INITIALIZATION_HASH, [salt, initialization_hash, deployer, immutables_hash])
|
|
10
10
|
* partial_address = poseidon2(DOM_SEP__PARTIAL_ADDRESS, [contract_class_id, salted_initialization_hash])
|
|
11
|
-
* address = ((poseidon2(
|
|
11
|
+
* address = ((poseidon2(DOM_SEP__CONTRACT_ADDRESS_V3, [public_keys_hash, partial_address]) * G) + ivpk_m).x <- the x-coordinate of the address point
|
|
12
12
|
* ```
|
|
13
13
|
* @param instance - A contract instance for which to calculate the deployment address.
|
|
14
14
|
*/
|
|
@@ -10,7 +10,7 @@ import { computeAddress } from '../keys/index.js';
|
|
|
10
10
|
* ```
|
|
11
11
|
* salted_initialization_hash = poseidon2(DOM_SEP__SALTED_INITIALIZATION_HASH, [salt, initialization_hash, deployer, immutables_hash])
|
|
12
12
|
* partial_address = poseidon2(DOM_SEP__PARTIAL_ADDRESS, [contract_class_id, salted_initialization_hash])
|
|
13
|
-
* address = ((poseidon2(
|
|
13
|
+
* address = ((poseidon2(DOM_SEP__CONTRACT_ADDRESS_V3, [public_keys_hash, partial_address]) * G) + ivpk_m).x <- the x-coordinate of the address point
|
|
14
14
|
* ```
|
|
15
15
|
* @param instance - A contract instance for which to calculate the deployment address.
|
|
16
16
|
*/ export async function computeContractAddressFromInstance(instance) {
|
package/dest/gas/fee_math.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Used to predict worst-case min fees over a future window of L2 slots.
|
|
4
4
|
*/
|
|
5
5
|
export declare const MINIMUM_CONGESTION_MULTIPLIER = 1000000000n;
|
|
6
|
-
export declare const L1_GAS_PER_CHECKPOINT_PROPOSED =
|
|
7
|
-
export declare const L1_GAS_PER_EPOCH_VERIFIED =
|
|
6
|
+
export declare const L1_GAS_PER_CHECKPOINT_PROPOSED = 520000n;
|
|
7
|
+
export declare const L1_GAS_PER_EPOCH_VERIFIED = 2500000n;
|
|
8
8
|
export declare const BLOBS_PER_CHECKPOINT = 3n;
|
|
9
9
|
export declare const BLOB_GAS_PER_BLOB: bigint;
|
|
10
10
|
export declare const MAGIC_CONGESTION_VALUE_MULTIPLIER = 854700854n;
|
package/dest/gas/fee_math.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Used to predict worst-case min fees over a future window of L2 slots.
|
|
4
4
|
*/ // Constants matching FeeLib.sol
|
|
5
5
|
export const MINIMUM_CONGESTION_MULTIPLIER = 1_000_000_000n;
|
|
6
|
-
export const L1_GAS_PER_CHECKPOINT_PROPOSED =
|
|
7
|
-
export const L1_GAS_PER_EPOCH_VERIFIED =
|
|
6
|
+
export const L1_GAS_PER_CHECKPOINT_PROPOSED = 520_000n;
|
|
7
|
+
export const L1_GAS_PER_EPOCH_VERIFIED = 2_500_000n;
|
|
8
8
|
export const BLOBS_PER_CHECKPOINT = 3n;
|
|
9
9
|
export const BLOB_GAS_PER_BLOB = 2n ** 17n;
|
|
10
10
|
export const MAGIC_CONGESTION_VALUE_MULTIPLIER = 854_700_854n;
|
package/dest/keys/derivation.js
CHANGED
|
@@ -59,11 +59,11 @@ export function computePreaddress(publicKeysHash, partialAddress) {
|
|
|
59
59
|
return poseidon2HashWithSeparator([
|
|
60
60
|
publicKeysHash,
|
|
61
61
|
partialAddress
|
|
62
|
-
], DomainSeparator.
|
|
62
|
+
], DomainSeparator.CONTRACT_ADDRESS_V3);
|
|
63
63
|
}
|
|
64
64
|
export async function computeAddress(publicKeys, partialAddress) {
|
|
65
65
|
// Given public keys and a partial address, we can compute our address in the following steps.
|
|
66
|
-
// 1. preaddress = poseidon2([publicKeysHash, partialAddress], DomainSeparator.
|
|
66
|
+
// 1. preaddress = poseidon2([publicKeysHash, partialAddress], DomainSeparator.CONTRACT_ADDRESS_V3);
|
|
67
67
|
// 2. addressPoint = (preaddress * G) + ivpk_m
|
|
68
68
|
// 3. address = addressPoint.x
|
|
69
69
|
const preaddress = await computePreaddress(await publicKeys.hash(), partialAddress);
|
|
@@ -61,10 +61,29 @@ export interface UnsiloedMessageNullifier {
|
|
|
61
61
|
* in the nullifier tree.
|
|
62
62
|
*/
|
|
63
63
|
export declare function computeFeeJuiceMessageNullifier(messageHash: Fr, secret: Fr): Promise<Fr>;
|
|
64
|
+
/** The outcome of {@link lookUpL1ToL2MessageWitness}. */
|
|
65
|
+
export type L1ToL2MessageWitnessLookup =
|
|
66
|
+
/** The message is in the tree and, if a nullifier was given, has not been consumed. */
|
|
67
|
+
{
|
|
68
|
+
type: 'found';
|
|
69
|
+
witness: [bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>];
|
|
70
|
+
}
|
|
71
|
+
/** The message is not in the tree. */
|
|
72
|
+
| {
|
|
73
|
+
type: 'missing';
|
|
74
|
+
}
|
|
75
|
+
/** A nullifier was given and the message has been consumed. */
|
|
76
|
+
| {
|
|
77
|
+
type: 'nullified';
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Looks up the membership witness of an L1 to L2 message in the L1 to L2 message tree at `referenceBlock`.
|
|
81
|
+
*/
|
|
82
|
+
export declare function lookUpL1ToL2MessageWitness(node: AztecNode, messageHash: Fr, unsiloedNullifier: UnsiloedMessageNullifier | undefined, referenceBlock: BlockParameter): Promise<L1ToL2MessageWitnessLookup>;
|
|
64
83
|
/**
|
|
65
84
|
* Fetches the membership witness of an L1 to L2 message. When `unsiloedNullifier` is provided, the message is
|
|
66
85
|
* additionally required to be un-nullified.
|
|
67
86
|
*/
|
|
68
87
|
export declare function getL1ToL2MessageWitness(node: AztecNode, messageHash: Fr, unsiloedNullifier?: UnsiloedMessageNullifier, referenceBlock?: BlockParameter): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]>;
|
|
69
88
|
export declare function getNonNullifiedL1ToL2MessageWitness(node: AztecNode, contractAddress: AztecAddress, messageHash: Fr, secret: Fr, referenceBlock?: BlockParameter): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]>;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lc3NhZ2luZy9sMV90b19sMl9tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsS0FBSyx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLGtDQUFrQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVsRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxxQkFBYSxhQUFhO0lBRXRCLHVDQUF1QzthQUN2QixNQUFNLEVBQUUsT0FBTztJQUMvQiwwQ0FBMEM7YUFDMUIsU0FBUyxFQUFFLE9BQU87SUFDbEMsMkJBQTJCO2FBQ1gsT0FBTyxFQUFFLEVBQUU7SUFDM0IsdUNBQXVDO2FBQ3ZCLFVBQVUsRUFBRSxFQUFFO0lBQzlCLGdEQUFnRDthQUNoQyxLQUFLLEVBQUUsRUFBRTtJQVYzQjtJQUNFLHVDQUF1QztJQUN2QixNQUFNLEVBQUUsT0FBTztJQUMvQiwwQ0FBMEM7SUFDMUIsU0FBUyxFQUFFLE9BQU87SUFDbEMsMkJBQTJCO0lBQ1gsT0FBTyxFQUFFLEVBQUU7SUFDM0IsdUNBQXVDO0lBQ3ZCLFVBQVUsRUFBRSxFQUFFO0lBQzlCLGdEQUFnRDtJQUNoQyxLQUFLLEVBQUUsRUFBRSxFQUN2QjtJQUVKOzs7T0FHRztJQUNILFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FFZjtJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsSUFBSSxJQUFJLEVBQUUsQ0FFVDtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsYUFBYSxDQVE5RDtJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FHN0M7SUFFRCxNQUFNLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FFNUI7SUFFRCxPQUFhLE1BQU0sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLENBRTVDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx3QkFBd0I7SUFDdkMsZUFBZSxFQUFFLFlBQVksQ0FBQztJQUM5QixTQUFTLEVBQUUsRUFBRSxDQUFDO0NBQ2Y7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLCtCQUErQixDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBRXhGO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sTUFBTSwwQkFBMEI7QUFDcEMsdUZBQXVGO0FBQ3JGO0lBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLENBQUE7Q0FBRTtBQUNwRixzQ0FBc0M7R0FDcEM7SUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFBO0NBQUU7QUFDckIsK0RBQStEO0dBQzdEO0lBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQTtDQUFFLENBQUM7QUFFMUI7O0dBRUc7QUFDSCx3QkFBc0IsMEJBQTBCLENBQzlDLElBQUksRUFBRSxTQUFTLEVBQ2YsV0FBVyxFQUFFLEVBQUUsRUFDZixpQkFBaUIsRUFBRSx3QkFBd0IsR0FBRyxTQUFTLEVBQ3ZELGNBQWMsRUFBRSxjQUFjLEdBQzdCLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQW1CckM7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsdUJBQXVCLENBQzNDLElBQUksRUFBRSxTQUFTLEVBQ2YsV0FBVyxFQUFFLEVBQUUsRUFDZixpQkFBaUIsQ0FBQyxFQUFFLHdCQUF3QixFQUM1QyxjQUFjLEdBQUUsY0FBeUIsR0FDeEMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQVVqRTtBQUdELHdCQUFzQixtQ0FBbUMsQ0FDdkQsSUFBSSxFQUFFLFNBQVMsRUFDZixlQUFlLEVBQUUsWUFBWSxFQUM3QixXQUFXLEVBQUUsRUFBRSxFQUNmLE1BQU0sRUFBRSxFQUFFLEVBQ1YsY0FBYyxHQUFFLGNBQXlCLEdBQ3hDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FHakUifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l1_to_l2_message.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGvF,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AACzD,OAAO,EAAE,YAAY,EAAqB,MAAM,kCAAkC,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;GAEG;AACH,qBAAa,aAAa;IAEtB,uCAAuC;aACvB,MAAM,EAAE,OAAO;IAC/B,0CAA0C;aAC1B,SAAS,EAAE,OAAO;IAClC,2BAA2B;aACX,OAAO,EAAE,EAAE;IAC3B,uCAAuC;aACvB,UAAU,EAAE,EAAE;IAC9B,gDAAgD;aAChC,KAAK,EAAE,EAAE;IAV3B;IACE,uCAAuC;IACvB,MAAM,EAAE,OAAO;IAC/B,0CAA0C;IAC1B,SAAS,EAAE,OAAO;IAClC,2BAA2B;IACX,OAAO,EAAE,EAAE;IAC3B,uCAAuC;IACvB,UAAU,EAAE,EAAE;IAC9B,gDAAgD;IAChC,KAAK,EAAE,EAAE,EACvB;IAEJ;;;OAGG;IACH,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,EAAE,CAET;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,CAQ9D;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAG7C;IAED,MAAM,CAAC,KAAK,IAAI,aAAa,CAE5B;IAED,OAAa,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAE5C;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,YAAY,CAAC;IAC9B,SAAS,EAAE,EAAE,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAExF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,EAAE,EACf,iBAAiB,CAAC,EAAE,wBAAwB,EAC5C,cAAc,GAAE,cAAyB,GACxC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"l1_to_l2_message.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,23 +78,45 @@ import { L2Actor } from './l2_actor.js';
|
|
|
78
78
|
], DomainSeparator.MESSAGE_NULLIFIER);
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
82
|
-
|
|
83
|
-
*/ export async function getL1ToL2MessageWitness(node, messageHash, unsiloedNullifier, referenceBlock = 'latest') {
|
|
81
|
+
* Looks up the membership witness of an L1 to L2 message in the L1 to L2 message tree at `referenceBlock`.
|
|
82
|
+
*/ export async function lookUpL1ToL2MessageWitness(node, messageHash, unsiloedNullifier, referenceBlock) {
|
|
84
83
|
// Both requests are dispatched before awaiting so they run concurrently.
|
|
85
84
|
const l1ToL2ResponsePromise = node.getL1ToL2MessageMembershipWitness(referenceBlock, messageHash);
|
|
86
85
|
const nullifierResponsePromise = unsiloedNullifier ? siloNullifier(unsiloedNullifier.contractAddress, unsiloedNullifier.nullifier).then((siloed)=>node.findLeavesIndexes(referenceBlock, MerkleTreeId.NULLIFIER_TREE, [
|
|
87
86
|
siloed
|
|
88
87
|
])) : undefined;
|
|
89
|
-
const l1ToL2Response = await
|
|
88
|
+
const [l1ToL2Response, nullifierResponse] = await Promise.all([
|
|
89
|
+
l1ToL2ResponsePromise,
|
|
90
|
+
nullifierResponsePromise
|
|
91
|
+
]);
|
|
90
92
|
if (!l1ToL2Response) {
|
|
91
|
-
|
|
93
|
+
return {
|
|
94
|
+
type: 'missing'
|
|
95
|
+
};
|
|
92
96
|
}
|
|
93
|
-
const nullifierResponse = await nullifierResponsePromise;
|
|
94
97
|
if (nullifierResponse?.[0] !== undefined) {
|
|
95
|
-
|
|
98
|
+
return {
|
|
99
|
+
type: 'nullified'
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
type: 'found',
|
|
104
|
+
witness: l1ToL2Response
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Fetches the membership witness of an L1 to L2 message. When `unsiloedNullifier` is provided, the message is
|
|
109
|
+
* additionally required to be un-nullified.
|
|
110
|
+
*/ export async function getL1ToL2MessageWitness(node, messageHash, unsiloedNullifier, referenceBlock = 'latest') {
|
|
111
|
+
const lookup = await lookUpL1ToL2MessageWitness(node, messageHash, unsiloedNullifier, referenceBlock);
|
|
112
|
+
switch(lookup.type){
|
|
113
|
+
case 'missing':
|
|
114
|
+
throw new Error(`No L1 to L2 message found for message hash ${messageHash.toString()}`);
|
|
115
|
+
case 'nullified':
|
|
116
|
+
throw new Error(`No non-nullified L1 to L2 message found for message hash ${messageHash.toString()}`);
|
|
117
|
+
case 'found':
|
|
118
|
+
return lookup.witness;
|
|
96
119
|
}
|
|
97
|
-
return l1ToL2Response;
|
|
98
120
|
}
|
|
99
121
|
// This functionality is not on the node because we do not want to pass the node the secret, and give the node the ability to derive a valid nullifer for an L1 to L2 message.
|
|
100
122
|
export async function getNonNullifiedL1ToL2MessageWitness(node, contractAddress, messageHash, secret, referenceBlock = 'latest') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec-labs/stdlib",
|
|
3
|
-
"version": "6.0.0-rc.
|
|
3
|
+
"version": "6.0.0-rc.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -92,12 +92,12 @@
|
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
94
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
95
|
-
"@aztec-foundation/bb.js": "6.0.0-rc.
|
|
96
|
-
"@aztec-foundation/noir-noirc_abi": "6.0.0-rc.
|
|
97
|
-
"@aztec-labs/blob-lib": "6.0.0-rc.
|
|
98
|
-
"@aztec-labs/constants": "6.0.0-rc.
|
|
99
|
-
"@aztec-labs/ethereum": "6.0.0-rc.
|
|
100
|
-
"@aztec-labs/foundation": "6.0.0-rc.
|
|
95
|
+
"@aztec-foundation/bb.js": "6.0.0-rc.6",
|
|
96
|
+
"@aztec-foundation/noir-noirc_abi": "6.0.0-rc.6",
|
|
97
|
+
"@aztec-labs/blob-lib": "6.0.0-rc.3",
|
|
98
|
+
"@aztec-labs/constants": "6.0.0-rc.3",
|
|
99
|
+
"@aztec-labs/ethereum": "6.0.0-rc.3",
|
|
100
|
+
"@aztec-labs/foundation": "6.0.0-rc.3",
|
|
101
101
|
"@google-cloud/storage": "^7.15.0",
|
|
102
102
|
"axios": "^1.15.1",
|
|
103
103
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -16,7 +16,7 @@ import type { PartialAddress } from './partial_address.js';
|
|
|
16
16
|
* ```
|
|
17
17
|
* salted_initialization_hash = poseidon2(DOM_SEP__SALTED_INITIALIZATION_HASH, [salt, initialization_hash, deployer, immutables_hash])
|
|
18
18
|
* partial_address = poseidon2(DOM_SEP__PARTIAL_ADDRESS, [contract_class_id, salted_initialization_hash])
|
|
19
|
-
* address = ((poseidon2(
|
|
19
|
+
* address = ((poseidon2(DOM_SEP__CONTRACT_ADDRESS_V3, [public_keys_hash, partial_address]) * G) + ivpk_m).x <- the x-coordinate of the address point
|
|
20
20
|
* ```
|
|
21
21
|
* @param instance - A contract instance for which to calculate the deployment address.
|
|
22
22
|
*/
|
package/src/gas/README.md
CHANGED
|
@@ -208,8 +208,8 @@ itself, before actual teardown consumption is known.
|
|
|
208
208
|
|
|
209
209
|
| Constant | Value |
|
|
210
210
|
| ------------------------------- | -------------- |
|
|
211
|
-
| `L1_GAS_PER_CHECKPOINT_PROPOSED` |
|
|
212
|
-
| `L1_GAS_PER_EPOCH_VERIFIED` |
|
|
211
|
+
| `L1_GAS_PER_CHECKPOINT_PROPOSED` | 520,000 |
|
|
212
|
+
| `L1_GAS_PER_EPOCH_VERIFIED` | 2,500,000 |
|
|
213
213
|
| `BLOBS_PER_CHECKPOINT` (FeeLib) | 3 |
|
|
214
214
|
| `BLOB_GAS_PER_BLOB` | 2^17 |
|
|
215
215
|
| `MINIMUM_CONGESTION_MULTIPLIER` | 1e9 |
|
package/src/gas/fee_math.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
// Constants matching FeeLib.sol
|
|
7
7
|
export const MINIMUM_CONGESTION_MULTIPLIER = 1_000_000_000n;
|
|
8
|
-
export const L1_GAS_PER_CHECKPOINT_PROPOSED =
|
|
9
|
-
export const L1_GAS_PER_EPOCH_VERIFIED =
|
|
8
|
+
export const L1_GAS_PER_CHECKPOINT_PROPOSED = 520_000n;
|
|
9
|
+
export const L1_GAS_PER_EPOCH_VERIFIED = 2_500_000n;
|
|
10
10
|
export const BLOBS_PER_CHECKPOINT = 3n;
|
|
11
11
|
export const BLOB_GAS_PER_BLOB = 2n ** 17n;
|
|
12
12
|
export const MAGIC_CONGESTION_VALUE_MULTIPLIER = 854_700_854n;
|
package/src/keys/derivation.ts
CHANGED
|
@@ -51,12 +51,12 @@ export function deriveMasterFallbackSecretKey(secretKey: Fr): GrumpkinScalar {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export function computePreaddress(publicKeysHash: Fr, partialAddress: Fr) {
|
|
54
|
-
return poseidon2HashWithSeparator([publicKeysHash, partialAddress], DomainSeparator.
|
|
54
|
+
return poseidon2HashWithSeparator([publicKeysHash, partialAddress], DomainSeparator.CONTRACT_ADDRESS_V3);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
export async function computeAddress(publicKeys: PublicKeys, partialAddress: Fr): Promise<AztecAddress> {
|
|
58
58
|
// Given public keys and a partial address, we can compute our address in the following steps.
|
|
59
|
-
// 1. preaddress = poseidon2([publicKeysHash, partialAddress], DomainSeparator.
|
|
59
|
+
// 1. preaddress = poseidon2([publicKeysHash, partialAddress], DomainSeparator.CONTRACT_ADDRESS_V3);
|
|
60
60
|
// 2. addressPoint = (preaddress * G) + ivpk_m
|
|
61
61
|
// 3. address = addressPoint.x
|
|
62
62
|
const preaddress = await computePreaddress(await publicKeys.hash(), partialAddress);
|
|
@@ -95,16 +95,24 @@ export function computeFeeJuiceMessageNullifier(messageHash: Fr, secret: Fr): Pr
|
|
|
95
95
|
return poseidon2HashWithSeparator([messageHash, secret], DomainSeparator.MESSAGE_NULLIFIER);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
/** The outcome of {@link lookUpL1ToL2MessageWitness}. */
|
|
99
|
+
export type L1ToL2MessageWitnessLookup =
|
|
100
|
+
/** The message is in the tree and, if a nullifier was given, has not been consumed. */
|
|
101
|
+
| { type: 'found'; witness: [bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>] }
|
|
102
|
+
/** The message is not in the tree. */
|
|
103
|
+
| { type: 'missing' }
|
|
104
|
+
/** A nullifier was given and the message has been consumed. */
|
|
105
|
+
| { type: 'nullified' };
|
|
106
|
+
|
|
98
107
|
/**
|
|
99
|
-
*
|
|
100
|
-
* additionally required to be un-nullified.
|
|
108
|
+
* Looks up the membership witness of an L1 to L2 message in the L1 to L2 message tree at `referenceBlock`.
|
|
101
109
|
*/
|
|
102
|
-
export async function
|
|
110
|
+
export async function lookUpL1ToL2MessageWitness(
|
|
103
111
|
node: AztecNode,
|
|
104
112
|
messageHash: Fr,
|
|
105
|
-
unsiloedNullifier
|
|
106
|
-
referenceBlock: BlockParameter
|
|
107
|
-
): Promise<
|
|
113
|
+
unsiloedNullifier: UnsiloedMessageNullifier | undefined,
|
|
114
|
+
referenceBlock: BlockParameter,
|
|
115
|
+
): Promise<L1ToL2MessageWitnessLookup> {
|
|
108
116
|
// Both requests are dispatched before awaiting so they run concurrently.
|
|
109
117
|
const l1ToL2ResponsePromise = node.getL1ToL2MessageMembershipWitness(referenceBlock, messageHash);
|
|
110
118
|
const nullifierResponsePromise = unsiloedNullifier
|
|
@@ -113,17 +121,37 @@ export async function getL1ToL2MessageWitness(
|
|
|
113
121
|
)
|
|
114
122
|
: undefined;
|
|
115
123
|
|
|
116
|
-
const l1ToL2Response = await l1ToL2ResponsePromise;
|
|
124
|
+
const [l1ToL2Response, nullifierResponse] = await Promise.all([l1ToL2ResponsePromise, nullifierResponsePromise]);
|
|
117
125
|
if (!l1ToL2Response) {
|
|
118
|
-
|
|
126
|
+
return { type: 'missing' };
|
|
119
127
|
}
|
|
120
128
|
|
|
121
|
-
const nullifierResponse = await nullifierResponsePromise;
|
|
122
129
|
if (nullifierResponse?.[0] !== undefined) {
|
|
123
|
-
|
|
130
|
+
return { type: 'nullified' };
|
|
124
131
|
}
|
|
125
132
|
|
|
126
|
-
return l1ToL2Response;
|
|
133
|
+
return { type: 'found', witness: l1ToL2Response };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Fetches the membership witness of an L1 to L2 message. When `unsiloedNullifier` is provided, the message is
|
|
138
|
+
* additionally required to be un-nullified.
|
|
139
|
+
*/
|
|
140
|
+
export async function getL1ToL2MessageWitness(
|
|
141
|
+
node: AztecNode,
|
|
142
|
+
messageHash: Fr,
|
|
143
|
+
unsiloedNullifier?: UnsiloedMessageNullifier,
|
|
144
|
+
referenceBlock: BlockParameter = 'latest',
|
|
145
|
+
): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]> {
|
|
146
|
+
const lookup = await lookUpL1ToL2MessageWitness(node, messageHash, unsiloedNullifier, referenceBlock);
|
|
147
|
+
switch (lookup.type) {
|
|
148
|
+
case 'missing':
|
|
149
|
+
throw new Error(`No L1 to L2 message found for message hash ${messageHash.toString()}`);
|
|
150
|
+
case 'nullified':
|
|
151
|
+
throw new Error(`No non-nullified L1 to L2 message found for message hash ${messageHash.toString()}`);
|
|
152
|
+
case 'found':
|
|
153
|
+
return lookup.witness;
|
|
154
|
+
}
|
|
127
155
|
}
|
|
128
156
|
|
|
129
157
|
// This functionality is not on the node because we do not want to pass the node the secret, and give the node the ability to derive a valid nullifer for an L1 to L2 message.
|