@aztec/stdlib 1.0.0-nightly.20250728 → 1.0.0-nightly.20250730
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/block/proposal/committee_attestation.d.ts +3 -1
- package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
- package/dest/block/proposal/committee_attestation.js +3 -0
- package/dest/block/published_l2_block.d.ts +2 -1
- package/dest/block/published_l2_block.d.ts.map +1 -1
- package/dest/block/published_l2_block.js +6 -1
- package/dest/p2p/attestation_utils.d.ts +10 -0
- package/dest/p2p/attestation_utils.d.ts.map +1 -0
- package/dest/p2p/attestation_utils.js +21 -0
- package/dest/p2p/block_attestation.d.ts +3 -4
- package/dest/p2p/block_attestation.d.ts.map +1 -1
- package/dest/p2p/block_attestation.js +3 -4
- package/dest/p2p/index.d.ts +1 -0
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +1 -0
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +4 -4
- package/dest/tests/mocks.d.ts +2 -0
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +10 -7
- package/dest/tx/state_reference.d.ts +4 -0
- package/dest/tx/state_reference.d.ts.map +1 -1
- package/dest/tx/state_reference.js +14 -1
- package/package.json +7 -7
- package/src/block/proposal/committee_attestation.ts +5 -1
- package/src/block/published_l2_block.ts +14 -5
- package/src/p2p/attestation_utils.ts +35 -0
- package/src/p2p/block_attestation.ts +3 -4
- package/src/p2p/index.ts +1 -0
- package/src/tests/factories.ts +13 -8
- package/src/tests/mocks.ts +11 -11
- package/src/tx/state_reference.ts +27 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ViemCommitteeAttestation, ViemCommitteeAttestations } from '@aztec/ethereum';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
3
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
4
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
export { EthAddress, Signature };
|
|
6
7
|
export declare class CommitteeAttestation {
|
|
@@ -22,8 +23,9 @@ export declare class CommitteeAttestation {
|
|
|
22
23
|
}>;
|
|
23
24
|
static fromAddress(address: EthAddress): CommitteeAttestation;
|
|
24
25
|
static fromAddressAndSignature(address: EthAddress, signature: Signature): CommitteeAttestation;
|
|
26
|
+
static fromSignature(signature: Signature): CommitteeAttestation;
|
|
25
27
|
static fromViem(viem: ViemCommitteeAttestation): CommitteeAttestation;
|
|
26
|
-
static fromBuffer(buffer: Buffer): CommitteeAttestation;
|
|
28
|
+
static fromBuffer(buffer: Buffer | BufferReader): CommitteeAttestation;
|
|
27
29
|
static random(): CommitteeAttestation;
|
|
28
30
|
static empty(): CommitteeAttestation;
|
|
29
31
|
static fromPacked(packed: ViemCommitteeAttestations, committeeSize: number): CommitteeAttestation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"committee_attestation.d.ts","sourceRoot":"","sources":["../../../src/block/proposal/committee_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"committee_attestation.d.ts","sourceRoot":"","sources":["../../../src/block/proposal/committee_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAEjC,qBAAa,oBAAoB;aAEb,OAAO,EAAE,UAAU;aACnB,SAAS,EAAE,SAAS;gBADpB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,SAAS;IAGtC,MAAM,KAAK,MAAM;;;;;;;;;;;;OAOhB;IAGD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB;IAK7D,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,oBAAoB;IAI/F,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB;IAIhE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,GAAG,oBAAoB;IAIrE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,oBAAoB;IAOtE,MAAM,CAAC,MAAM,IAAI,oBAAoB;IAKrC,MAAM,CAAC,KAAK,IAAI,oBAAoB;IAIpC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,GAAG,oBAAoB,EAAE;IA+CnG,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAI5C,MAAM,IAAI,wBAAwB;CAMnC"}
|
|
@@ -24,6 +24,9 @@ export class CommitteeAttestation {
|
|
|
24
24
|
static fromAddressAndSignature(address, signature) {
|
|
25
25
|
return new CommitteeAttestation(address, signature);
|
|
26
26
|
}
|
|
27
|
+
static fromSignature(signature) {
|
|
28
|
+
return new CommitteeAttestation(EthAddress.ZERO, signature);
|
|
29
|
+
}
|
|
27
30
|
static fromViem(viem) {
|
|
28
31
|
return new CommitteeAttestation(EthAddress.fromString(viem.addr), Signature.fromViemSignature(viem.signature));
|
|
29
32
|
}
|
|
@@ -20,6 +20,7 @@ export declare class L1PublishedData {
|
|
|
20
20
|
timestamp: string | number | bigint;
|
|
21
21
|
blockHash: string;
|
|
22
22
|
}>;
|
|
23
|
+
static random(): L1PublishedData;
|
|
23
24
|
}
|
|
24
25
|
export declare class PublishedL2Block {
|
|
25
26
|
block: L2Block;
|
|
@@ -116,5 +117,5 @@ export declare class PublishedL2Block {
|
|
|
116
117
|
}[];
|
|
117
118
|
}>;
|
|
118
119
|
}
|
|
119
|
-
export declare function getAttestationsFromPublishedL2Block(block: PublishedL2Block): BlockAttestation[];
|
|
120
|
+
export declare function getAttestationsFromPublishedL2Block(block: Pick<PublishedL2Block, 'attestations' | 'block'>): BlockAttestation[];
|
|
120
121
|
//# sourceMappingURL=published_l2_block.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"published_l2_block.d.ts","sourceRoot":"","sources":["../../src/block/published_l2_block.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"published_l2_block.d.ts","sourceRoot":"","sources":["../../src/block/published_l2_block.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,qBAAa,eAAe;IAEjB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;gBAFjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;IAG1B,MAAM,KAAK,MAAM;;;;;;;;;;;;OAMhB;IAED,MAAM,CAAC,MAAM;CAOd;AAED,qBAAa,gBAAgB;IAElB,KAAK,EAAE,OAAO;IACd,EAAE,EAAE,eAAe;IACnB,YAAY,EAAE,oBAAoB,EAAE;gBAFpC,KAAK,EAAE,OAAO,EACd,EAAE,EAAE,eAAe,EACnB,YAAY,EAAE,oBAAoB,EAAE;IAG7C,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAMhB;CACF;AAED,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,cAAc,GAAG,OAAO,CAAC,GACtD,gBAAgB,EAAE,CAKpB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// Ignoring import issue to fix portable inferred type issue in zod schema
|
|
2
|
+
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
3
|
+
import { randomBigInt } from '@aztec/foundation/crypto';
|
|
2
4
|
import { schemas } from '@aztec/foundation/schemas';
|
|
3
5
|
import { z } from 'zod';
|
|
4
6
|
import { BlockAttestation } from '../p2p/block_attestation.js';
|
|
@@ -21,6 +23,9 @@ export class L1PublishedData {
|
|
|
21
23
|
blockHash: z.string()
|
|
22
24
|
});
|
|
23
25
|
}
|
|
26
|
+
static random() {
|
|
27
|
+
return new L1PublishedData(randomBigInt(1000n) + 1n, BigInt(Math.floor(Date.now() / 1000)), Buffer32.random().toString());
|
|
28
|
+
}
|
|
24
29
|
}
|
|
25
30
|
export class PublishedL2Block {
|
|
26
31
|
block;
|
|
@@ -41,5 +46,5 @@ export class PublishedL2Block {
|
|
|
41
46
|
}
|
|
42
47
|
export function getAttestationsFromPublishedL2Block(block) {
|
|
43
48
|
const payload = ConsensusPayload.fromBlock(block.block);
|
|
44
|
-
return block.attestations.filter((attestation)=>!attestation.signature.isEmpty()).map((attestation)=>new BlockAttestation(block.block.
|
|
49
|
+
return block.attestations.filter((attestation)=>!attestation.signature.isEmpty()).map((attestation)=>new BlockAttestation(block.block.number, payload, attestation.signature));
|
|
45
50
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { CommitteeAttestation } from '../block/index.js';
|
|
3
|
+
import type { BlockAttestation } from './block_attestation.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns attestation signatures in the order of a series of provided ethereum addresses
|
|
6
|
+
* The rollup smart contract expects attestations to appear in the order of the committee
|
|
7
|
+
* @todo: perform this logic within the memory attestation store instead?
|
|
8
|
+
*/
|
|
9
|
+
export declare function orderAttestations(attestations: BlockAttestation[], orderAddresses: EthAddress[]): CommitteeAttestation[];
|
|
10
|
+
//# sourceMappingURL=attestation_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/attestation_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,gBAAgB,EAAE,EAChC,cAAc,EAAE,UAAU,EAAE,GAC3B,oBAAoB,EAAE,CAqBxB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CommitteeAttestation } from '../block/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns attestation signatures in the order of a series of provided ethereum addresses
|
|
4
|
+
* The rollup smart contract expects attestations to appear in the order of the committee
|
|
5
|
+
* @todo: perform this logic within the memory attestation store instead?
|
|
6
|
+
*/ export function orderAttestations(attestations, orderAddresses) {
|
|
7
|
+
// Create a map of sender addresses to BlockAttestations
|
|
8
|
+
const attestationMap = new Map();
|
|
9
|
+
for (const attestation of attestations){
|
|
10
|
+
const sender = attestation.getSender();
|
|
11
|
+
if (sender) {
|
|
12
|
+
attestationMap.set(sender.toString(), CommitteeAttestation.fromAddressAndSignature(sender, attestation.signature));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// Create the ordered array based on the orderAddresses, else return an empty attestation
|
|
16
|
+
const orderedAttestations = orderAddresses.map((address)=>{
|
|
17
|
+
const addressString = address.toString();
|
|
18
|
+
return attestationMap.get(addressString) || CommitteeAttestation.fromAddress(address);
|
|
19
|
+
});
|
|
20
|
+
return orderedAttestations;
|
|
21
|
+
}
|
|
@@ -37,10 +37,9 @@ export declare class BlockAttestation extends Gossipable {
|
|
|
37
37
|
generateP2PMessageIdentifier(): Promise<Buffer32>;
|
|
38
38
|
get archive(): Fr;
|
|
39
39
|
get slotNumber(): Fr;
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* @returns The sender of the attestation
|
|
40
|
+
/**
|
|
41
|
+
* Lazily evaluate and cache the signer of the attestation
|
|
42
|
+
* @returns The signer of the attestation
|
|
44
43
|
*/
|
|
45
44
|
getSender(): EthAddress;
|
|
46
45
|
getPayload(): Buffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/block_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,IAAI,EAAE,MAAM;CAGzB;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAM5C,2CAA2C;aAC3B,WAAW,EAAE,MAAM;IAEnC,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;aAC1B,SAAS,EAAE,SAAS;IAZtC,OAAgB,QAAQ,YAA+B;IAEvD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,2CAA2C;IAC3B,WAAW,EAAE,MAAM;IAEnC,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;IAC1B,SAAS,EAAE,SAAS;IAKtC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAQ5C;IAEQ,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;IAED
|
|
1
|
+
{"version":3,"file":"block_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/block_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,IAAI,EAAE,MAAM;CAGzB;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAM5C,2CAA2C;aAC3B,WAAW,EAAE,MAAM;IAEnC,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;aAC1B,SAAS,EAAE,SAAS;IAZtC,OAAgB,QAAQ,YAA+B;IAEvD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,2CAA2C;IAC3B,WAAW,EAAE,MAAM;IAEnC,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;IAC1B,SAAS,EAAE,SAAS;IAKtC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAQ5C;IAEQ,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU;IAWvB,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAK/D,MAAM,CAAC,KAAK,IAAI,gBAAgB;IAIhC,OAAO,IAAI,MAAM;CAGlB"}
|
|
@@ -43,10 +43,9 @@ export class BlockAttestationHash extends Buffer32 {
|
|
|
43
43
|
get slotNumber() {
|
|
44
44
|
return this.payload.header.slotNumber;
|
|
45
45
|
}
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* @returns The sender of the attestation
|
|
46
|
+
/**
|
|
47
|
+
* Lazily evaluate and cache the signer of the attestation
|
|
48
|
+
* @returns The signer of the attestation
|
|
50
49
|
*/ getSender() {
|
|
51
50
|
if (!this.sender) {
|
|
52
51
|
// Recover the sender from the attestation
|
package/dest/p2p/index.d.ts
CHANGED
package/dest/p2p/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/p2p/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/p2p/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"}
|
package/dest/p2p/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/tests/factories.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/tests/factories.ts"],"names":[],"mappings":"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"}
|
package/dest/tests/factories.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BlobAccumulatorPublicInputs, FinalBlobAccumulatorPublicInputs } from '@aztec/blob-lib';
|
|
2
2
|
import { makeBatchedBlobAccumulator, makeBlockBlobPublicInputs, makeSpongeBlob } from '@aztec/blob-lib/testing';
|
|
3
|
-
import { ARCHIVE_HEIGHT, AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_BLOCK, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FIELDS_PER_BLOB, FIXED_DA_GAS, FIXED_L2_GAS, GeneratorIndex, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_CALL, MAX_ENQUEUED_CALLS_PER_TX, MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, MAX_PRIVATE_LOGS_PER_TX, MAX_PUBLIC_LOGS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUM_BASE_PARITY_PER_ROOT_PARITY, NUM_MSGS_PER_BASE_PARITY, PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DATA_TREE_HEIGHT, PUBLIC_LOG_SIZE_IN_FIELDS, RECURSIVE_PROOF_LENGTH, TUBE_PROOF_LENGTH, VK_TREE_HEIGHT } from '@aztec/constants';
|
|
3
|
+
import { ARCHIVE_HEIGHT, AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_BLOCK, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FIELDS_PER_BLOB, FIXED_DA_GAS, FIXED_L2_GAS, GeneratorIndex, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_CALL, MAX_ENQUEUED_CALLS_PER_TX, MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, MAX_PRIVATE_LOGS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_PUBLIC_LOGS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY, NUM_MSGS_PER_BASE_PARITY, PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DATA_TREE_HEIGHT, PUBLIC_LOG_SIZE_IN_FIELDS, RECURSIVE_PROOF_LENGTH, TUBE_PROOF_LENGTH, VK_TREE_HEIGHT } from '@aztec/constants';
|
|
4
4
|
import { makeHalfFullTuple, makeTuple } from '@aztec/foundation/array';
|
|
5
5
|
import { compact, padArrayEnd } from '@aztec/foundation/collection';
|
|
6
6
|
import { SchnorrSignature, poseidon2HashWithSeparator, sha256 } from '@aztec/foundation/crypto';
|
|
@@ -529,10 +529,10 @@ export function makeRootParityInputs(seed = 0) {
|
|
|
529
529
|
* @param seed - The seed to use for generating the state reference.
|
|
530
530
|
* @returns A state reference.
|
|
531
531
|
*/ export function makeStateReference(seed = 0) {
|
|
532
|
-
return new StateReference(makeAppendOnlyTreeSnapshot(seed), makePartialStateReference(seed + 1));
|
|
532
|
+
return new StateReference(makeAppendOnlyTreeSnapshot(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP * seed), makePartialStateReference(seed + 1));
|
|
533
533
|
}
|
|
534
534
|
function makeTreeSnapshots(seed = 0) {
|
|
535
|
-
return new TreeSnapshots(makeAppendOnlyTreeSnapshot(seed), makeAppendOnlyTreeSnapshot(seed + 0x10), makeAppendOnlyTreeSnapshot(seed + 0x20), makeAppendOnlyTreeSnapshot(seed + 0x30));
|
|
535
|
+
return new TreeSnapshots(makeAppendOnlyTreeSnapshot(seed * NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), makeAppendOnlyTreeSnapshot((seed + 0x10) * MAX_NOTE_HASHES_PER_TX), makeAppendOnlyTreeSnapshot((seed + 0x20) * MAX_NULLIFIERS_PER_TX), makeAppendOnlyTreeSnapshot((seed + 0x30) * MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX));
|
|
536
536
|
}
|
|
537
537
|
/**
|
|
538
538
|
* Makes arbitrary L2 to L1 message.
|
|
@@ -554,7 +554,7 @@ function makeScopedL2ToL1Message(seed = 1) {
|
|
|
554
554
|
* @param seed - The seed to use for generating the partial state reference.
|
|
555
555
|
* @returns A partial state reference.
|
|
556
556
|
*/ export function makePartialStateReference(seed = 0) {
|
|
557
|
-
return new PartialStateReference(makeAppendOnlyTreeSnapshot(seed), makeAppendOnlyTreeSnapshot(seed + 1), makeAppendOnlyTreeSnapshot(seed + 2));
|
|
557
|
+
return new PartialStateReference(makeAppendOnlyTreeSnapshot(MAX_NOTE_HASHES_PER_TX * seed), makeAppendOnlyTreeSnapshot(MAX_NULLIFIERS_PER_TX * (seed + 1)), makeAppendOnlyTreeSnapshot(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * (seed + 2)));
|
|
558
558
|
}
|
|
559
559
|
/**
|
|
560
560
|
* Makes arbitrary merge rollup inputs.
|
package/dest/tests/mocks.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Secp256k1Signer } from '@aztec/foundation/crypto';
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import type { ContractArtifact } from '../abi/abi.js';
|
|
4
4
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
5
|
+
import { L2Block } from '../block/l2_block.js';
|
|
5
6
|
import type { PublishedL2Block } from '../block/published_l2_block.js';
|
|
6
7
|
import type { ContractInstanceWithAddress } from '../contract/index.js';
|
|
7
8
|
import { GasFees } from '../gas/gas_fees.js';
|
|
@@ -49,6 +50,7 @@ export interface MakeConsensusPayloadOptions {
|
|
|
49
50
|
}
|
|
50
51
|
export declare const makeBlockProposal: (options?: MakeConsensusPayloadOptions) => BlockProposal;
|
|
51
52
|
export declare const makeBlockAttestation: (options?: MakeConsensusPayloadOptions) => BlockAttestation;
|
|
53
|
+
export declare const makeBlockAttestationFromBlock: (block: L2Block, signer?: Secp256k1Signer) => BlockAttestation;
|
|
52
54
|
export declare function randomPublishedL2Block(l2BlockNumber: number, opts?: {
|
|
53
55
|
signers?: Secp256k1Signer[];
|
|
54
56
|
}): Promise<PublishedL2Block>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/tests/mocks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAe,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/tests/mocks.ts"],"names":[],"mappings":"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"}
|
package/dest/tests/mocks.js
CHANGED
|
@@ -164,6 +164,15 @@ export const makeBlockAttestation = (options)=>{
|
|
|
164
164
|
const { blockNumber, payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockAttestation, options);
|
|
165
165
|
return new BlockAttestation(blockNumber, payload, signature);
|
|
166
166
|
};
|
|
167
|
+
export const makeBlockAttestationFromBlock = (block, signer)=>{
|
|
168
|
+
return makeBlockAttestation({
|
|
169
|
+
signer,
|
|
170
|
+
header: block.header,
|
|
171
|
+
archive: block.archive.root,
|
|
172
|
+
stateReference: block.header.state,
|
|
173
|
+
txHashes: block.body.txEffects.map((tx)=>tx.txHash)
|
|
174
|
+
});
|
|
175
|
+
};
|
|
167
176
|
export async function randomPublishedL2Block(l2BlockNumber, opts = {}) {
|
|
168
177
|
const block = await L2Block.random(l2BlockNumber);
|
|
169
178
|
const l1 = {
|
|
@@ -172,13 +181,7 @@ export async function randomPublishedL2Block(l2BlockNumber, opts = {}) {
|
|
|
172
181
|
blockHash: Buffer32.random().toString()
|
|
173
182
|
};
|
|
174
183
|
const signers = opts.signers ?? times(3, ()=>Secp256k1Signer.random());
|
|
175
|
-
const atts = await Promise.all(signers.map((signer)=>
|
|
176
|
-
signer,
|
|
177
|
-
header: block.header,
|
|
178
|
-
archive: block.archive.root,
|
|
179
|
-
stateReference: block.header.state,
|
|
180
|
-
txHashes: block.body.txEffects.map((tx)=>tx.txHash)
|
|
181
|
-
})));
|
|
184
|
+
const atts = await Promise.all(signers.map((signer)=>makeBlockAttestationFromBlock(block, signer)));
|
|
182
185
|
const attestations = atts.map((attestation, i)=>new CommitteeAttestation(signers[i].address, attestation.signature));
|
|
183
186
|
return {
|
|
184
187
|
block,
|
|
@@ -161,6 +161,10 @@ export declare class StateReference {
|
|
|
161
161
|
nullifierTree: `0x${string}`;
|
|
162
162
|
publicDataTree: `0x${string}`;
|
|
163
163
|
};
|
|
164
|
+
/**
|
|
165
|
+
* Validates the trees in world state have the expected number of leaves (multiple of number of insertions per tx)
|
|
166
|
+
*/
|
|
167
|
+
validate(): void;
|
|
164
168
|
[inspect.custom](): string;
|
|
165
169
|
equals(other: this): boolean;
|
|
166
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state_reference.d.ts","sourceRoot":"","sources":["../../src/tx/state_reference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state_reference.d.ts","sourceRoot":"","sources":["../../src/tx/state_reference.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;GAEG;AACH,qBAAa,cAAc;IAEvB,6CAA6C;IACtC,iBAAiB,EAAE,sBAAsB;IAChD,0CAA0C;IACnC,OAAO,EAAE,qBAAqB;;IAHrC,6CAA6C;IACtC,iBAAiB,EAAE,sBAAsB;IAChD,0CAA0C;IACnC,OAAO,EAAE,qBAAqB;IAGvC,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAOhB;IAED,OAAO;IAIP,QAAQ;IAKR,QAAQ,IAAI,EAAE,EAAE;IAUhB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,cAAc;IAKhE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,cAAc;IAS7D,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,kBAAkB;IAOlD,MAAM,CAAC,KAAK,IAAI,cAAc;IAI9B,MAAM,IAAI,kBAAkB;IAO5B,KAAK,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAIlG,OAAO,IAAI,OAAO;IAIlB,SAAS;;;;;;IAST;;OAEG;IACI,QAAQ;IAkBf,CAAC,OAAO,CAAC,MAAM,CAAC;IAST,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;CAGpC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { STATE_REFERENCE_LENGTH } from '@aztec/constants';
|
|
1
|
+
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, STATE_REFERENCE_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { BufferReader, FieldReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
3
|
import { inspect } from 'util';
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -77,6 +77,19 @@ import { PartialStateReference } from './partial_state_reference.js';
|
|
|
77
77
|
publicDataTree: this.partial.publicDataTree.root.toString()
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Validates the trees in world state have the expected number of leaves (multiple of number of insertions per tx)
|
|
82
|
+
*/ validate() {
|
|
83
|
+
if (this.l1ToL2MessageTree.nextAvailableLeafIndex % NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP !== 0) {
|
|
84
|
+
throw new Error(`Invalid L1 to L2 message tree next available leaf index ${this.l1ToL2MessageTree.nextAvailableLeafIndex} (must be a multiple of ${NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP})`);
|
|
85
|
+
}
|
|
86
|
+
if (this.partial.noteHashTree.nextAvailableLeafIndex % MAX_NOTE_HASHES_PER_TX !== 0) {
|
|
87
|
+
throw new Error(`Invalid note hash tree next available leaf index ${this.partial.noteHashTree.nextAvailableLeafIndex} (must be a multiple of ${MAX_NOTE_HASHES_PER_TX})`);
|
|
88
|
+
}
|
|
89
|
+
if (this.partial.nullifierTree.nextAvailableLeafIndex % MAX_NULLIFIERS_PER_TX !== 0) {
|
|
90
|
+
throw new Error(`Invalid nullifier tree next available leaf index ${this.partial.nullifierTree.nextAvailableLeafIndex} (must be a multiple of ${MAX_NULLIFIERS_PER_TX})`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
80
93
|
[inspect.custom]() {
|
|
81
94
|
return `StateReference {
|
|
82
95
|
l1ToL2MessageTree: ${inspect(this.l1ToL2MessageTree)},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "1.0.0-nightly.
|
|
3
|
+
"version": "1.0.0-nightly.20250730",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -67,12 +67,12 @@
|
|
|
67
67
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/bb.js": "1.0.0-nightly.
|
|
71
|
-
"@aztec/blob-lib": "1.0.0-nightly.
|
|
72
|
-
"@aztec/constants": "1.0.0-nightly.
|
|
73
|
-
"@aztec/ethereum": "1.0.0-nightly.
|
|
74
|
-
"@aztec/foundation": "1.0.0-nightly.
|
|
75
|
-
"@aztec/noir-noirc_abi": "1.0.0-nightly.
|
|
70
|
+
"@aztec/bb.js": "1.0.0-nightly.20250730",
|
|
71
|
+
"@aztec/blob-lib": "1.0.0-nightly.20250730",
|
|
72
|
+
"@aztec/constants": "1.0.0-nightly.20250730",
|
|
73
|
+
"@aztec/ethereum": "1.0.0-nightly.20250730",
|
|
74
|
+
"@aztec/foundation": "1.0.0-nightly.20250730",
|
|
75
|
+
"@aztec/noir-noirc_abi": "1.0.0-nightly.20250730",
|
|
76
76
|
"@google-cloud/storage": "^7.15.0",
|
|
77
77
|
"axios": "^1.9.0",
|
|
78
78
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -32,11 +32,15 @@ export class CommitteeAttestation {
|
|
|
32
32
|
return new CommitteeAttestation(address, signature);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
static fromSignature(signature: Signature): CommitteeAttestation {
|
|
36
|
+
return new CommitteeAttestation(EthAddress.ZERO, signature);
|
|
37
|
+
}
|
|
38
|
+
|
|
35
39
|
static fromViem(viem: ViemCommitteeAttestation): CommitteeAttestation {
|
|
36
40
|
return new CommitteeAttestation(EthAddress.fromString(viem.addr), Signature.fromViemSignature(viem.signature));
|
|
37
41
|
}
|
|
38
42
|
|
|
39
|
-
static fromBuffer(buffer: Buffer): CommitteeAttestation {
|
|
43
|
+
static fromBuffer(buffer: Buffer | BufferReader): CommitteeAttestation {
|
|
40
44
|
const reader = BufferReader.asReader(buffer);
|
|
41
45
|
const address = reader.readObject(EthAddress);
|
|
42
46
|
const signature = reader.readObject(Signature);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// Ignoring import issue to fix portable inferred type issue in zod schema
|
|
2
|
+
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
3
|
+
import { randomBigInt } from '@aztec/foundation/crypto';
|
|
2
4
|
import { schemas } from '@aztec/foundation/schemas';
|
|
3
5
|
|
|
4
6
|
import { z } from 'zod';
|
|
@@ -22,6 +24,14 @@ export class L1PublishedData {
|
|
|
22
24
|
blockHash: z.string(),
|
|
23
25
|
});
|
|
24
26
|
}
|
|
27
|
+
|
|
28
|
+
static random() {
|
|
29
|
+
return new L1PublishedData(
|
|
30
|
+
randomBigInt(1000n) + 1n,
|
|
31
|
+
BigInt(Math.floor(Date.now() / 1000)),
|
|
32
|
+
Buffer32.random().toString(),
|
|
33
|
+
);
|
|
34
|
+
}
|
|
25
35
|
}
|
|
26
36
|
|
|
27
37
|
export class PublishedL2Block {
|
|
@@ -40,12 +50,11 @@ export class PublishedL2Block {
|
|
|
40
50
|
}
|
|
41
51
|
}
|
|
42
52
|
|
|
43
|
-
export function getAttestationsFromPublishedL2Block(
|
|
53
|
+
export function getAttestationsFromPublishedL2Block(
|
|
54
|
+
block: Pick<PublishedL2Block, 'attestations' | 'block'>,
|
|
55
|
+
): BlockAttestation[] {
|
|
44
56
|
const payload = ConsensusPayload.fromBlock(block.block);
|
|
45
57
|
return block.attestations
|
|
46
58
|
.filter(attestation => !attestation.signature.isEmpty())
|
|
47
|
-
.map(
|
|
48
|
-
attestation =>
|
|
49
|
-
new BlockAttestation(block.block.header.globalVariables.blockNumber, payload, attestation.signature),
|
|
50
|
-
);
|
|
59
|
+
.map(attestation => new BlockAttestation(block.block.number, payload, attestation.signature));
|
|
51
60
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
|
|
3
|
+
import { CommitteeAttestation } from '../block/index.js';
|
|
4
|
+
import type { BlockAttestation } from './block_attestation.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns attestation signatures in the order of a series of provided ethereum addresses
|
|
8
|
+
* The rollup smart contract expects attestations to appear in the order of the committee
|
|
9
|
+
* @todo: perform this logic within the memory attestation store instead?
|
|
10
|
+
*/
|
|
11
|
+
export function orderAttestations(
|
|
12
|
+
attestations: BlockAttestation[],
|
|
13
|
+
orderAddresses: EthAddress[],
|
|
14
|
+
): CommitteeAttestation[] {
|
|
15
|
+
// Create a map of sender addresses to BlockAttestations
|
|
16
|
+
const attestationMap = new Map<string, CommitteeAttestation>();
|
|
17
|
+
|
|
18
|
+
for (const attestation of attestations) {
|
|
19
|
+
const sender = attestation.getSender();
|
|
20
|
+
if (sender) {
|
|
21
|
+
attestationMap.set(
|
|
22
|
+
sender.toString(),
|
|
23
|
+
CommitteeAttestation.fromAddressAndSignature(sender, attestation.signature),
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Create the ordered array based on the orderAddresses, else return an empty attestation
|
|
29
|
+
const orderedAttestations = orderAddresses.map(address => {
|
|
30
|
+
const addressString = address.toString();
|
|
31
|
+
return attestationMap.get(addressString) || CommitteeAttestation.fromAddress(address);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return orderedAttestations;
|
|
35
|
+
}
|
|
@@ -66,10 +66,9 @@ export class BlockAttestation extends Gossipable {
|
|
|
66
66
|
return this.payload.header.slotNumber;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* @returns The sender of the attestation
|
|
69
|
+
/**
|
|
70
|
+
* Lazily evaluate and cache the signer of the attestation
|
|
71
|
+
* @returns The signer of the attestation
|
|
73
72
|
*/
|
|
74
73
|
getSender(): EthAddress {
|
|
75
74
|
if (!this.sender) {
|
package/src/p2p/index.ts
CHANGED
package/src/tests/factories.ts
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,
|
|
27
27
|
MAX_PRIVATE_LOGS_PER_CALL,
|
|
28
28
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
29
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
29
30
|
MAX_PUBLIC_LOGS_PER_TX,
|
|
30
31
|
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
31
32
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
@@ -33,6 +34,7 @@ import {
|
|
|
33
34
|
NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH,
|
|
34
35
|
NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH,
|
|
35
36
|
NULLIFIER_TREE_HEIGHT,
|
|
37
|
+
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
36
38
|
NUM_BASE_PARITY_PER_ROOT_PARITY,
|
|
37
39
|
NUM_MSGS_PER_BASE_PARITY,
|
|
38
40
|
PRIVATE_LOG_SIZE_IN_FIELDS,
|
|
@@ -933,15 +935,18 @@ export function makeHeader(
|
|
|
933
935
|
* @returns A state reference.
|
|
934
936
|
*/
|
|
935
937
|
export function makeStateReference(seed = 0): StateReference {
|
|
936
|
-
return new StateReference(
|
|
938
|
+
return new StateReference(
|
|
939
|
+
makeAppendOnlyTreeSnapshot(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP * seed),
|
|
940
|
+
makePartialStateReference(seed + 1),
|
|
941
|
+
);
|
|
937
942
|
}
|
|
938
943
|
|
|
939
944
|
function makeTreeSnapshots(seed = 0) {
|
|
940
945
|
return new TreeSnapshots(
|
|
941
|
-
makeAppendOnlyTreeSnapshot(seed),
|
|
942
|
-
makeAppendOnlyTreeSnapshot(seed + 0x10),
|
|
943
|
-
makeAppendOnlyTreeSnapshot(seed + 0x20),
|
|
944
|
-
makeAppendOnlyTreeSnapshot(seed + 0x30),
|
|
946
|
+
makeAppendOnlyTreeSnapshot(seed * NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
|
|
947
|
+
makeAppendOnlyTreeSnapshot((seed + 0x10) * MAX_NOTE_HASHES_PER_TX),
|
|
948
|
+
makeAppendOnlyTreeSnapshot((seed + 0x20) * MAX_NULLIFIERS_PER_TX),
|
|
949
|
+
makeAppendOnlyTreeSnapshot((seed + 0x30) * MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX),
|
|
945
950
|
);
|
|
946
951
|
}
|
|
947
952
|
|
|
@@ -972,9 +977,9 @@ function makeScopedL2ToL1Message(seed = 1) {
|
|
|
972
977
|
*/
|
|
973
978
|
export function makePartialStateReference(seed = 0): PartialStateReference {
|
|
974
979
|
return new PartialStateReference(
|
|
975
|
-
makeAppendOnlyTreeSnapshot(seed),
|
|
976
|
-
makeAppendOnlyTreeSnapshot(seed + 1),
|
|
977
|
-
makeAppendOnlyTreeSnapshot(seed + 2),
|
|
980
|
+
makeAppendOnlyTreeSnapshot(MAX_NOTE_HASHES_PER_TX * seed),
|
|
981
|
+
makeAppendOnlyTreeSnapshot(MAX_NULLIFIERS_PER_TX * (seed + 1)),
|
|
982
|
+
makeAppendOnlyTreeSnapshot(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * (seed + 2)),
|
|
978
983
|
);
|
|
979
984
|
}
|
|
980
985
|
|
package/src/tests/mocks.ts
CHANGED
|
@@ -291,6 +291,16 @@ export const makeBlockAttestation = (options?: MakeConsensusPayloadOptions): Blo
|
|
|
291
291
|
return new BlockAttestation(blockNumber, payload, signature);
|
|
292
292
|
};
|
|
293
293
|
|
|
294
|
+
export const makeBlockAttestationFromBlock = (block: L2Block, signer?: Secp256k1Signer): BlockAttestation => {
|
|
295
|
+
return makeBlockAttestation({
|
|
296
|
+
signer,
|
|
297
|
+
header: block.header,
|
|
298
|
+
archive: block.archive.root,
|
|
299
|
+
stateReference: block.header.state,
|
|
300
|
+
txHashes: block.body.txEffects.map(tx => tx.txHash),
|
|
301
|
+
});
|
|
302
|
+
};
|
|
303
|
+
|
|
294
304
|
export async function randomPublishedL2Block(
|
|
295
305
|
l2BlockNumber: number,
|
|
296
306
|
opts: { signers?: Secp256k1Signer[] } = {},
|
|
@@ -303,17 +313,7 @@ export async function randomPublishedL2Block(
|
|
|
303
313
|
};
|
|
304
314
|
|
|
305
315
|
const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
|
|
306
|
-
const atts = await Promise.all(
|
|
307
|
-
signers.map(signer =>
|
|
308
|
-
makeBlockAttestation({
|
|
309
|
-
signer,
|
|
310
|
-
header: block.header,
|
|
311
|
-
archive: block.archive.root,
|
|
312
|
-
stateReference: block.header.state,
|
|
313
|
-
txHashes: block.body.txEffects.map(tx => tx.txHash),
|
|
314
|
-
}),
|
|
315
|
-
),
|
|
316
|
-
);
|
|
316
|
+
const atts = await Promise.all(signers.map(signer => makeBlockAttestationFromBlock(block, signer)));
|
|
317
317
|
const attestations = atts.map(
|
|
318
318
|
(attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
|
|
319
319
|
);
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
MAX_NOTE_HASHES_PER_TX,
|
|
3
|
+
MAX_NULLIFIERS_PER_TX,
|
|
4
|
+
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
5
|
+
STATE_REFERENCE_LENGTH,
|
|
6
|
+
} from '@aztec/constants';
|
|
2
7
|
import type { ViemStateReference } from '@aztec/ethereum';
|
|
3
8
|
import type { Fr } from '@aztec/foundation/fields';
|
|
4
9
|
import { BufferReader, FieldReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
@@ -97,6 +102,27 @@ export class StateReference {
|
|
|
97
102
|
};
|
|
98
103
|
}
|
|
99
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Validates the trees in world state have the expected number of leaves (multiple of number of insertions per tx)
|
|
107
|
+
*/
|
|
108
|
+
public validate() {
|
|
109
|
+
if (this.l1ToL2MessageTree.nextAvailableLeafIndex % NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP !== 0) {
|
|
110
|
+
throw new Error(
|
|
111
|
+
`Invalid L1 to L2 message tree next available leaf index ${this.l1ToL2MessageTree.nextAvailableLeafIndex} (must be a multiple of ${NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP})`,
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
if (this.partial.noteHashTree.nextAvailableLeafIndex % MAX_NOTE_HASHES_PER_TX !== 0) {
|
|
115
|
+
throw new Error(
|
|
116
|
+
`Invalid note hash tree next available leaf index ${this.partial.noteHashTree.nextAvailableLeafIndex} (must be a multiple of ${MAX_NOTE_HASHES_PER_TX})`,
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
if (this.partial.nullifierTree.nextAvailableLeafIndex % MAX_NULLIFIERS_PER_TX !== 0) {
|
|
120
|
+
throw new Error(
|
|
121
|
+
`Invalid nullifier tree next available leaf index ${this.partial.nullifierTree.nextAvailableLeafIndex} (must be a multiple of ${MAX_NULLIFIERS_PER_TX})`,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
100
126
|
[inspect.custom]() {
|
|
101
127
|
return `StateReference {
|
|
102
128
|
l1ToL2MessageTree: ${inspect(this.l1ToL2MessageTree)},
|