@aztec/sequencer-client 0.1.0-alpha17 → 0.1.0-alpha21
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/.tsbuildinfo +1 -1
- package/dest/block_builder/solo_block_builder.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.js +5 -5
- package/dest/block_builder/solo_block_builder.test.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.test.js +12 -28
- package/dest/index.d.ts +0 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/sequencer/public_processor.d.ts +2 -2
- package/dest/sequencer/public_processor.d.ts.map +1 -1
- package/dest/sequencer/public_processor.js +10 -10
- package/dest/sequencer/public_processor.test.js +10 -11
- package/dest/sequencer/sequencer.test.js +4 -5
- package/package.json +10 -10
- package/src/block_builder/solo_block_builder.test.ts +30 -40
- package/src/block_builder/solo_block_builder.ts +4 -5
- package/src/index.ts +0 -1
- package/src/sequencer/public_processor.test.ts +10 -10
- package/src/sequencer/public_processor.ts +17 -15
- package/src/sequencer/sequencer.test.ts +4 -4
- package/dest/mocks/tx.d.ts +0 -10
- package/dest/mocks/tx.d.ts.map +0 -1
- package/dest/mocks/tx.js +0 -18
- package/src/mocks/tx.ts +0 -26
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { ARGS_LENGTH, CallContext, CircuitsWasm, EthAddress, Fr, FunctionData, GlobalVariables,
|
|
1
|
+
import { ARGS_LENGTH, CallContext, CircuitsWasm, EthAddress, Fr, FunctionData, GlobalVariables, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, PUBLIC_DATA_TREE_HEIGHT, makeEmptyProof, makeTuple, } from '@aztec/circuits.js';
|
|
2
2
|
import { computeCallStackItemHash } from '@aztec/circuits.js/abis';
|
|
3
3
|
import { makeAztecAddress, makeKernelPublicInputs, makePublicCallRequest, makeSelector, } from '@aztec/circuits.js/factories';
|
|
4
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { SiblingPath } from '@aztec/merkle-tree';
|
|
6
|
-
import { ContractPublicData, EncodedContractFunction, FunctionL2Logs, Tx, TxL2Logs, } from '@aztec/types';
|
|
6
|
+
import { ContractPublicData, EncodedContractFunction, FunctionL2Logs, mockTx, Tx, TxL2Logs, } from '@aztec/types';
|
|
7
7
|
import { mock } from 'jest-mock-extended';
|
|
8
8
|
import pick from 'lodash.pick';
|
|
9
9
|
import times from 'lodash.times';
|
|
10
|
-
import { makeTx } from '../index.js';
|
|
11
10
|
import { WasmPublicKernelCircuitSimulator } from '../simulator/public_kernel.js';
|
|
12
11
|
import { PublicProcessor } from './public_processor.js';
|
|
13
12
|
describe('public_processor', () => {
|
|
@@ -42,8 +41,8 @@ describe('public_processor', () => {
|
|
|
42
41
|
processor = new PublicProcessor(db, publicExecutor, publicKernel, publicProver, contractDataSource);
|
|
43
42
|
});
|
|
44
43
|
it('skips txs without public execution requests', async function () {
|
|
45
|
-
const tx =
|
|
46
|
-
tx.data.end.publicCallStack = makeTuple(
|
|
44
|
+
const tx = mockTx();
|
|
45
|
+
tx.data.end.publicCallStack = makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, Fr.zero);
|
|
47
46
|
const hash = await tx.getTxHash();
|
|
48
47
|
const [processed, failed] = await processor.process([tx], GlobalVariables.empty());
|
|
49
48
|
expect(processed).toEqual([
|
|
@@ -53,7 +52,7 @@ describe('public_processor', () => {
|
|
|
53
52
|
});
|
|
54
53
|
it('returns failed txs without aborting entire operation', async function () {
|
|
55
54
|
publicExecutor.execute.mockRejectedValue(new Error(`Failed`));
|
|
56
|
-
const tx =
|
|
55
|
+
const tx = mockTx();
|
|
57
56
|
const [processed, failed] = await processor.process([tx], GlobalVariables.empty());
|
|
58
57
|
expect(processed).toEqual([]);
|
|
59
58
|
expect(failed).toEqual([tx]);
|
|
@@ -80,8 +79,8 @@ describe('public_processor', () => {
|
|
|
80
79
|
const callStackItems = await Promise.all(callRequests.map(call => call.toPublicCallStackItem()));
|
|
81
80
|
const callStackHashes = callStackItems.map(call => computeCallStackItemHash(wasm, call));
|
|
82
81
|
const kernelOutput = makeKernelPublicInputs(0x10);
|
|
83
|
-
kernelOutput.end.publicCallStack = padArrayEnd(callStackHashes, Fr.ZERO,
|
|
84
|
-
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO,
|
|
82
|
+
kernelOutput.end.publicCallStack = padArrayEnd(callStackHashes, Fr.ZERO, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX);
|
|
83
|
+
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX);
|
|
85
84
|
const tx = new Tx(kernelOutput, proof, TxL2Logs.random(2, 3), TxL2Logs.random(3, 2), [], callRequests);
|
|
86
85
|
publicExecutor.execute.mockImplementation(execution => {
|
|
87
86
|
for (const request of callRequests) {
|
|
@@ -102,8 +101,8 @@ describe('public_processor', () => {
|
|
|
102
101
|
const callStackItem = await callRequest.toPublicCallStackItem();
|
|
103
102
|
const callStackHash = computeCallStackItemHash(wasm, callStackItem);
|
|
104
103
|
const kernelOutput = makeKernelPublicInputs(0x10);
|
|
105
|
-
kernelOutput.end.publicCallStack = padArrayEnd([callStackHash], Fr.ZERO,
|
|
106
|
-
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO,
|
|
104
|
+
kernelOutput.end.publicCallStack = padArrayEnd([callStackHash], Fr.ZERO, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX);
|
|
105
|
+
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX);
|
|
107
106
|
const tx = new Tx(kernelOutput, proof, TxL2Logs.random(2, 3), TxL2Logs.random(3, 2), [], [callRequest]);
|
|
108
107
|
const publicExecutionResult = makePublicExecutionResultFromRequest(callRequest);
|
|
109
108
|
publicExecutionResult.nestedExecutions = [
|
|
@@ -156,4 +155,4 @@ function makePublicExecutionResult(tx, nestedExecutions = []) {
|
|
|
156
155
|
unencryptedLogs: new FunctionL2Logs([]),
|
|
157
156
|
};
|
|
158
157
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci9wdWJsaWNfcHJvY2Vzc29yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFVBQVUsRUFDVixFQUFFLEVBQ0YsWUFBWSxFQUNaLGVBQWUsRUFDZixvQ0FBb0MsRUFDcEMsbUNBQW1DLEVBQ25DLHVCQUF1QixFQUd2QixjQUFjLEVBQ2QsU0FBUyxHQUNWLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFlBQVksR0FDYixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUVMLGtCQUFrQixFQUNsQix1QkFBdUIsRUFFdkIsY0FBYyxFQUNkLE1BQU0sRUFDTixFQUFFLEVBQ0YsUUFBUSxHQUNULE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBYSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBR2pDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLElBQUksRUFBbUMsQ0FBQztJQUN4QyxJQUFJLGNBQXlDLENBQUM7SUFDOUMsSUFB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
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { CombinedHistoricTreeRoots, Fr, GlobalVariables, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, makeEmptyProof, } from '@aztec/circuits.js';
|
|
2
2
|
import { P2PClientState } from '@aztec/p2p';
|
|
3
|
-
import { L2Block, MerkleTreeId, Tx, TxHash } from '@aztec/types';
|
|
3
|
+
import { L2Block, MerkleTreeId, mockTx, Tx, TxHash } from '@aztec/types';
|
|
4
4
|
import { WorldStateRunningState } from '@aztec/world-state';
|
|
5
5
|
import { mock } from 'jest-mock-extended';
|
|
6
6
|
import times from 'lodash.times';
|
|
7
|
-
import { makeTx } from '../index.js';
|
|
8
7
|
import { makeEmptyProcessedTx, makeProcessedTx } from './processed_tx.js';
|
|
9
8
|
import { Sequencer } from './sequencer.js';
|
|
10
9
|
describe('sequencer', () => {
|
|
@@ -54,7 +53,7 @@ describe('sequencer', () => {
|
|
|
54
53
|
});
|
|
55
54
|
});
|
|
56
55
|
it('builds a block out of a single tx', async () => {
|
|
57
|
-
const tx =
|
|
56
|
+
const tx = mockTx();
|
|
58
57
|
const block = L2Block.random(lastBlockNumber + 1);
|
|
59
58
|
const proof = makeEmptyProof();
|
|
60
59
|
p2p.getTxs.mockResolvedValueOnce([tx]);
|
|
@@ -68,7 +67,7 @@ describe('sequencer', () => {
|
|
|
68
67
|
expect(publisher.processL2Block).toHaveBeenCalledWith(block);
|
|
69
68
|
});
|
|
70
69
|
it('builds a block out of several txs rejecting double spends', async () => {
|
|
71
|
-
const txs = [
|
|
70
|
+
const txs = [mockTx(0x10000), mockTx(0x20000), mockTx(0x30000)];
|
|
72
71
|
const doubleSpendTx = txs[1];
|
|
73
72
|
const block = L2Block.random(lastBlockNumber + 1);
|
|
74
73
|
const proof = makeEmptyProof();
|
|
@@ -97,4 +96,4 @@ class TestSubject extends Sequencer {
|
|
|
97
96
|
return super.initialSync();
|
|
98
97
|
}
|
|
99
98
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL3NlcXVlbmNlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsRUFBRSxFQUNGLGVBQWUsRUFDZixtQ0FBbUMsRUFDbkMsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFPLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQXVCLE9BQU8sRUFBaUIsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdHLE9BQU8sRUFBd0Isc0JBQXNCLEVBQTBCLE1BQU0sb0JBQW9CLENBQUM7QUFDMUcsT0FBTyxFQUFhLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUdqQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLElBQUksU0FBaUMsQ0FBQztJQUN0QyxJQUFJLHFCQUF1RCxDQUFDO0lBQzVELElBQUksR0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQTZDLENBQUM7SUFDbEQsSUFBSSxZQUFxQyxDQUFDO0lBQzFDLElBQUksYUFBOEMsQ0FBQztJQUNuRCxJQUFJLGVBQTJDLENBQUM7SUFDaEQsSUFBSSxhQUF1QyxDQUFDO0lBQzVDLElBQUksbUJBQW1ELENBQUM7SUFDeEQsSUFBSSxzQkFBeUQsQ0FBQztJQUU5RCxJQUFJLGVBQXVCLENBQUM7SUFFNUIsSUFBSSxTQUFzQixDQUFDO0lBRTNCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJ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
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.1.0-
|
|
3
|
+
"version": "0.1.0-alpha21",
|
|
4
4
|
"exports": "./dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@aztec/acir-simulator": "0.1.0-
|
|
8
|
-
"@aztec/circuits.js": "0.1.0-
|
|
9
|
-
"@aztec/ethereum": "0.1.0-
|
|
10
|
-
"@aztec/foundation": "0.1.0-
|
|
11
|
-
"@aztec/l1-artifacts": "0.1.0-
|
|
12
|
-
"@aztec/merkle-tree": "0.1.0-
|
|
13
|
-
"@aztec/p2p": "0.1.0-
|
|
14
|
-
"@aztec/types": "0.1.0-
|
|
15
|
-
"@aztec/world-state": "0.1.0-
|
|
7
|
+
"@aztec/acir-simulator": "0.1.0-alpha21",
|
|
8
|
+
"@aztec/circuits.js": "0.1.0-alpha21",
|
|
9
|
+
"@aztec/ethereum": "0.1.0-alpha21",
|
|
10
|
+
"@aztec/foundation": "0.1.0-alpha21",
|
|
11
|
+
"@aztec/l1-artifacts": "0.1.0-alpha21",
|
|
12
|
+
"@aztec/merkle-tree": "0.1.0-alpha21",
|
|
13
|
+
"@aztec/p2p": "0.1.0-alpha21",
|
|
14
|
+
"@aztec/types": "0.1.0-alpha21",
|
|
15
|
+
"@aztec/world-state": "0.1.0-alpha21",
|
|
16
16
|
"lodash.chunk": "^4.2.0",
|
|
17
17
|
"lodash.flatmap": "^4.5.0",
|
|
18
18
|
"lodash.pick": "^4.4.0",
|
|
@@ -5,13 +5,12 @@ import {
|
|
|
5
5
|
CircuitsWasm,
|
|
6
6
|
Fr,
|
|
7
7
|
GlobalVariables,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
MAX_NEW_COMMITMENTS_PER_TX,
|
|
9
|
+
MAX_NEW_L2_TO_L1_MSGS_PER_TX,
|
|
10
|
+
MAX_NEW_NULLIFIERS_PER_TX,
|
|
11
|
+
MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
|
|
12
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
13
13
|
KernelCircuitPublicInputs,
|
|
14
|
-
NULLIFIER_TREE_HEIGHT,
|
|
15
14
|
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
16
15
|
Proof,
|
|
17
16
|
PublicDataUpdateRequest,
|
|
@@ -30,14 +29,23 @@ import {
|
|
|
30
29
|
makeRootRollupPublicInputs,
|
|
31
30
|
} from '@aztec/circuits.js/factories';
|
|
32
31
|
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
33
|
-
import {
|
|
32
|
+
import {
|
|
33
|
+
ContractData,
|
|
34
|
+
L2Block,
|
|
35
|
+
L2BlockL2Logs,
|
|
36
|
+
MerkleTreeId,
|
|
37
|
+
mockTx,
|
|
38
|
+
PublicDataWrite,
|
|
39
|
+
Tx,
|
|
40
|
+
TxL2Logs,
|
|
41
|
+
makeEmptyLogs,
|
|
42
|
+
} from '@aztec/types';
|
|
34
43
|
import { MerkleTreeOperations, MerkleTrees } from '@aztec/world-state';
|
|
35
44
|
import { MockProxy, mock } from 'jest-mock-extended';
|
|
36
45
|
import { default as levelup } from 'levelup';
|
|
37
46
|
import flatMap from 'lodash.flatmap';
|
|
38
47
|
import times from 'lodash.times';
|
|
39
48
|
import { default as memdown, type MemDown } from 'memdown';
|
|
40
|
-
import { makeEmptyLogs, makeTx } from '../mocks/tx.js';
|
|
41
49
|
import { VerificationKeys, getVerificationKeys } from '../mocks/verification_keys.js';
|
|
42
50
|
import { EmptyRollupProver } from '../prover/empty.js';
|
|
43
51
|
import { RollupProver } from '../prover/index.js';
|
|
@@ -121,10 +129,14 @@ describe('sequencer/solo_block_builder', () => {
|
|
|
121
129
|
for (const [tree, leaves] of [
|
|
122
130
|
[MerkleTreeId.PRIVATE_DATA_TREE, flatMap(txs, tx => tx.data.end.newCommitments.map(l => l.toBuffer()))],
|
|
123
131
|
[MerkleTreeId.CONTRACT_TREE, newContracts.map(x => x.toBuffer())],
|
|
124
|
-
[MerkleTreeId.NULLIFIER_TREE, flatMap(txs, tx => tx.data.end.newNullifiers.map(x => x.toBuffer()))],
|
|
125
132
|
] as const) {
|
|
126
133
|
await expectsDb.appendLeaves(tree, leaves);
|
|
127
134
|
}
|
|
135
|
+
await expectsDb.batchInsert(
|
|
136
|
+
MerkleTreeId.NULLIFIER_TREE,
|
|
137
|
+
flatMap(txs, tx => tx.data.end.newNullifiers.map(x => x.toBuffer())),
|
|
138
|
+
BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT,
|
|
139
|
+
);
|
|
128
140
|
for (const write of txs.flatMap(tx => tx.data.end.publicDataUpdateRequests)) {
|
|
129
141
|
await expectsDb.updateLeaf(MerkleTreeId.PUBLIC_DATA_TREE, write.newValue.toBuffer(), write.leafIndex.value);
|
|
130
142
|
}
|
|
@@ -151,7 +163,7 @@ describe('sequencer/solo_block_builder', () => {
|
|
|
151
163
|
makeEmptyLogs(),
|
|
152
164
|
makeEmptyLogs(),
|
|
153
165
|
[],
|
|
154
|
-
times(
|
|
166
|
+
times(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, makePublicCallRequest),
|
|
155
167
|
),
|
|
156
168
|
);
|
|
157
169
|
|
|
@@ -263,29 +275,6 @@ describe('sequencer/solo_block_builder', () => {
|
|
|
263
275
|
expect(proof).toEqual(emptyProof);
|
|
264
276
|
}, 20000);
|
|
265
277
|
|
|
266
|
-
// For varying orders of insertions assert the local batch insertion generator creates the correct proofs
|
|
267
|
-
it.each([
|
|
268
|
-
// These are arbitrary but it needs to be higher than the constant `INITIAL_NULLIFIER_TREE_SIZE` and `KERNEL_NEW_NULLIFIERS_LENGTH * 2`
|
|
269
|
-
[[1003, 1002, 1001, 1000, 0, 0, 0, 0]],
|
|
270
|
-
[[1003, 1004, 1005, 1006, 0, 0, 0, 0]],
|
|
271
|
-
[[1234, 1098, 0, 0, 99999, 1096, 1054, 0]],
|
|
272
|
-
[[1970, 1980, 1040, 0, 99999, 1880, 100001, 9000000]],
|
|
273
|
-
] as const)('performs nullifier tree batch insertion correctly', async nullifiers => {
|
|
274
|
-
const leaves = nullifiers.map(i => toBufferBE(BigInt(i), 32));
|
|
275
|
-
await expectsDb.appendLeaves(MerkleTreeId.NULLIFIER_TREE, leaves);
|
|
276
|
-
|
|
277
|
-
await builderDb.batchInsert(
|
|
278
|
-
MerkleTreeId.NULLIFIER_TREE,
|
|
279
|
-
leaves,
|
|
280
|
-
NULLIFIER_TREE_HEIGHT,
|
|
281
|
-
BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT,
|
|
282
|
-
);
|
|
283
|
-
|
|
284
|
-
const expected = await expectsDb.getTreeInfo(MerkleTreeId.NULLIFIER_TREE);
|
|
285
|
-
const actual = await builderDb.getTreeInfo(MerkleTreeId.NULLIFIER_TREE);
|
|
286
|
-
expect(actual).toEqual(expected);
|
|
287
|
-
});
|
|
288
|
-
|
|
289
278
|
it('rejects if too many l1 to l2 messages are provided', async () => {
|
|
290
279
|
// Assemble a fake transaction
|
|
291
280
|
const txs = await buildMockSimulatorInputs();
|
|
@@ -308,21 +297,21 @@ describe('sequencer/solo_block_builder', () => {
|
|
|
308
297
|
};
|
|
309
298
|
|
|
310
299
|
const makeBloatedProcessedTx = async (seed = 0x1) => {
|
|
311
|
-
const tx =
|
|
300
|
+
const tx = mockTx(seed);
|
|
312
301
|
const kernelOutput = KernelCircuitPublicInputs.empty();
|
|
313
302
|
kernelOutput.constants.historicTreeRoots = await getCombinedHistoricTreeRoots(builderDb);
|
|
314
303
|
kernelOutput.end.publicDataUpdateRequests = makeTuple(
|
|
315
|
-
|
|
304
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
316
305
|
i => new PublicDataUpdateRequest(fr(i), fr(0), fr(i + 10)),
|
|
317
306
|
seed + 0x500,
|
|
318
307
|
);
|
|
319
308
|
|
|
320
309
|
const processedTx = await makeProcessedTx(tx, kernelOutput, makeProof());
|
|
321
310
|
|
|
322
|
-
processedTx.data.end.newCommitments = makeTuple(
|
|
323
|
-
processedTx.data.end.newNullifiers = makeTuple(
|
|
311
|
+
processedTx.data.end.newCommitments = makeTuple(MAX_NEW_COMMITMENTS_PER_TX, fr, seed + 0x100);
|
|
312
|
+
processedTx.data.end.newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x200);
|
|
324
313
|
processedTx.data.end.newNullifiers[tx.data.end.newNullifiers.length - 1] = Fr.ZERO;
|
|
325
|
-
processedTx.data.end.newL2ToL1Msgs = makeTuple(
|
|
314
|
+
processedTx.data.end.newL2ToL1Msgs = makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_TX, fr, seed + 0x300);
|
|
326
315
|
processedTx.data.end.newContracts = [makeNewContractData(seed + 0x1000)];
|
|
327
316
|
processedTx.data.end.encryptedLogsHash = to2Fields(L2Block.computeKernelLogsHash(processedTx.encryptedLogs));
|
|
328
317
|
processedTx.data.end.unencryptedLogsHash = to2Fields(L2Block.computeKernelLogsHash(processedTx.unencryptedLogs));
|
|
@@ -395,13 +384,14 @@ describe('sequencer/solo_block_builder', () => {
|
|
|
395
384
|
const prover = new EmptyRollupProver();
|
|
396
385
|
builder = new SoloBlockBuilder(builderDb, vks, simulator, prover);
|
|
397
386
|
// update the starting tree
|
|
398
|
-
const updateVals = Array(4 *
|
|
387
|
+
const updateVals = Array(4 * MAX_NEW_NULLIFIERS_PER_TX).fill(0n);
|
|
399
388
|
updateVals[0] = 19777494491628650244807463906174285795660759352776418619064841306523677458742n;
|
|
400
389
|
updateVals[1] = 10246291467305176436335175657884940686778521321101740385288169037814567547848n;
|
|
401
390
|
|
|
402
|
-
await builderDb.
|
|
391
|
+
await builderDb.batchInsert(
|
|
403
392
|
MerkleTreeId.NULLIFIER_TREE,
|
|
404
393
|
updateVals.map(v => toBufferBE(v, 32)),
|
|
394
|
+
BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT,
|
|
405
395
|
);
|
|
406
396
|
|
|
407
397
|
// new added values
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
CircuitsWasm,
|
|
7
7
|
ConstantBaseRollupData,
|
|
8
8
|
GlobalVariables,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
L1_TO_L2_MSG_ROOTS_TREE_HEIGHT,
|
|
10
|
+
L1_TO_L2_MSG_SUBTREE_HEIGHT,
|
|
11
11
|
MembershipWitness,
|
|
12
12
|
MergeRollupInputs,
|
|
13
13
|
NULLIFIER_TREE_HEIGHT,
|
|
@@ -426,7 +426,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
426
426
|
);
|
|
427
427
|
const newL1ToL2MessageTreeRootSiblingPath = await this.getSubtreeSiblingPath(
|
|
428
428
|
MerkleTreeId.L1_TO_L2_MESSAGES_TREE,
|
|
429
|
-
|
|
429
|
+
L1_TO_L2_MSG_SUBTREE_HEIGHT,
|
|
430
430
|
);
|
|
431
431
|
|
|
432
432
|
// Get tree snapshots
|
|
@@ -518,7 +518,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
518
518
|
return this.getMembershipWitnessFor(
|
|
519
519
|
tx.data.constants.historicTreeRoots.privateHistoricTreeRoots.l1ToL2MessagesTreeRoot,
|
|
520
520
|
MerkleTreeId.L1_TO_L2_MESSAGES_ROOTS_TREE,
|
|
521
|
-
|
|
521
|
+
L1_TO_L2_MSG_ROOTS_TREE_HEIGHT,
|
|
522
522
|
);
|
|
523
523
|
}
|
|
524
524
|
|
|
@@ -655,7 +655,6 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
655
655
|
const [nullifierWitnessLeaves, newNullifiersSubtreeSiblingPath] = await this.db.batchInsert(
|
|
656
656
|
MerkleTreeId.NULLIFIER_TREE,
|
|
657
657
|
newNullifiers.map(fr => fr.toBuffer()),
|
|
658
|
-
NULLIFIER_TREE_HEIGHT,
|
|
659
658
|
BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT,
|
|
660
659
|
);
|
|
661
660
|
if (nullifierWitnessLeaves === undefined) {
|
package/src/index.ts
CHANGED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
Fr,
|
|
8
8
|
FunctionData,
|
|
9
9
|
GlobalVariables,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX,
|
|
11
|
+
MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
|
|
12
12
|
PUBLIC_DATA_TREE_HEIGHT,
|
|
13
13
|
Proof,
|
|
14
14
|
PublicCallRequest,
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
EncodedContractFunction,
|
|
31
31
|
ExecutionRequest,
|
|
32
32
|
FunctionL2Logs,
|
|
33
|
+
mockTx,
|
|
33
34
|
Tx,
|
|
34
35
|
TxL2Logs,
|
|
35
36
|
} from '@aztec/types';
|
|
@@ -37,7 +38,6 @@ import { MerkleTreeOperations, TreeInfo } from '@aztec/world-state';
|
|
|
37
38
|
import { MockProxy, mock } from 'jest-mock-extended';
|
|
38
39
|
import pick from 'lodash.pick';
|
|
39
40
|
import times from 'lodash.times';
|
|
40
|
-
import { makeTx } from '../index.js';
|
|
41
41
|
import { PublicProver } from '../prover/index.js';
|
|
42
42
|
import { PublicKernelCircuitSimulator } from '../simulator/index.js';
|
|
43
43
|
import { WasmPublicKernelCircuitSimulator } from '../simulator/public_kernel.js';
|
|
@@ -83,8 +83,8 @@ describe('public_processor', () => {
|
|
|
83
83
|
});
|
|
84
84
|
|
|
85
85
|
it('skips txs without public execution requests', async function () {
|
|
86
|
-
const tx =
|
|
87
|
-
tx.data.end.publicCallStack = makeTuple(
|
|
86
|
+
const tx = mockTx();
|
|
87
|
+
tx.data.end.publicCallStack = makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, Fr.zero);
|
|
88
88
|
const hash = await tx.getTxHash();
|
|
89
89
|
const [processed, failed] = await processor.process([tx], GlobalVariables.empty());
|
|
90
90
|
|
|
@@ -97,7 +97,7 @@ describe('public_processor', () => {
|
|
|
97
97
|
it('returns failed txs without aborting entire operation', async function () {
|
|
98
98
|
publicExecutor.execute.mockRejectedValue(new Error(`Failed`));
|
|
99
99
|
|
|
100
|
-
const tx =
|
|
100
|
+
const tx = mockTx();
|
|
101
101
|
const [processed, failed] = await processor.process([tx], GlobalVariables.empty());
|
|
102
102
|
|
|
103
103
|
expect(processed).toEqual([]);
|
|
@@ -132,8 +132,8 @@ describe('public_processor', () => {
|
|
|
132
132
|
const callStackHashes = callStackItems.map(call => computeCallStackItemHash(wasm, call));
|
|
133
133
|
|
|
134
134
|
const kernelOutput = makeKernelPublicInputs(0x10);
|
|
135
|
-
kernelOutput.end.publicCallStack = padArrayEnd(callStackHashes, Fr.ZERO,
|
|
136
|
-
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO,
|
|
135
|
+
kernelOutput.end.publicCallStack = padArrayEnd(callStackHashes, Fr.ZERO, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX);
|
|
136
|
+
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX);
|
|
137
137
|
|
|
138
138
|
const tx = new Tx(kernelOutput, proof, TxL2Logs.random(2, 3), TxL2Logs.random(3, 2), [], callRequests);
|
|
139
139
|
|
|
@@ -160,8 +160,8 @@ describe('public_processor', () => {
|
|
|
160
160
|
const callStackHash = computeCallStackItemHash(wasm, callStackItem);
|
|
161
161
|
|
|
162
162
|
const kernelOutput = makeKernelPublicInputs(0x10);
|
|
163
|
-
kernelOutput.end.publicCallStack = padArrayEnd([callStackHash], Fr.ZERO,
|
|
164
|
-
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO,
|
|
163
|
+
kernelOutput.end.publicCallStack = padArrayEnd([callStackHash], Fr.ZERO, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX);
|
|
164
|
+
kernelOutput.end.privateCallStack = padArrayEnd([], Fr.ZERO, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX);
|
|
165
165
|
|
|
166
166
|
const tx = new Tx(kernelOutput, proof, TxL2Logs.random(2, 3), TxL2Logs.random(3, 2), [], [callRequest]);
|
|
167
167
|
|
|
@@ -6,14 +6,14 @@ import {
|
|
|
6
6
|
ContractStorageUpdateRequest,
|
|
7
7
|
Fr,
|
|
8
8
|
GlobalVariables,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
MAX_PUBLIC_DATA_READS_PER_CALL,
|
|
10
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,
|
|
11
11
|
KernelCircuitPublicInputs,
|
|
12
12
|
MembershipWitness,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
MAX_NEW_COMMITMENTS_PER_CALL,
|
|
14
|
+
MAX_NEW_L2_TO_L1_MSGS_PER_CALL,
|
|
15
|
+
MAX_NEW_NULLIFIERS_PER_CALL,
|
|
16
|
+
MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,
|
|
17
17
|
PreviousKernelData,
|
|
18
18
|
Proof,
|
|
19
19
|
PublicCallData,
|
|
@@ -210,19 +210,19 @@ export class PublicProcessor {
|
|
|
210
210
|
callContext: result.execution.callContext,
|
|
211
211
|
proverAddress: AztecAddress.random(),
|
|
212
212
|
argsHash: await computeVarArgsHash(wasm, result.execution.args),
|
|
213
|
-
newCommitments: padArrayEnd(result.newCommitments, Fr.ZERO,
|
|
214
|
-
newNullifiers: padArrayEnd(result.newNullifiers, Fr.ZERO,
|
|
215
|
-
newL2ToL1Msgs: padArrayEnd(result.newL2ToL1Messages, Fr.ZERO,
|
|
213
|
+
newCommitments: padArrayEnd(result.newCommitments, Fr.ZERO, MAX_NEW_COMMITMENTS_PER_CALL),
|
|
214
|
+
newNullifiers: padArrayEnd(result.newNullifiers, Fr.ZERO, MAX_NEW_NULLIFIERS_PER_CALL),
|
|
215
|
+
newL2ToL1Msgs: padArrayEnd(result.newL2ToL1Messages, Fr.ZERO, MAX_NEW_L2_TO_L1_MSGS_PER_CALL),
|
|
216
216
|
returnValues: padArrayEnd(result.returnValues, Fr.ZERO, RETURN_VALUES_LENGTH),
|
|
217
217
|
contractStorageReads: padArrayEnd(
|
|
218
218
|
result.contractStorageReads,
|
|
219
219
|
ContractStorageRead.empty(),
|
|
220
|
-
|
|
220
|
+
MAX_PUBLIC_DATA_READS_PER_CALL,
|
|
221
221
|
),
|
|
222
222
|
contractStorageUpdateRequests: padArrayEnd(
|
|
223
223
|
result.contractStorageUpdateRequests,
|
|
224
224
|
ContractStorageUpdateRequest.empty(),
|
|
225
|
-
|
|
225
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,
|
|
226
226
|
),
|
|
227
227
|
publicCallStack,
|
|
228
228
|
unencryptedLogsHash,
|
|
@@ -243,12 +243,14 @@ export class PublicProcessor {
|
|
|
243
243
|
protected async getPublicCallStackPreimages(result: PublicExecutionResult) {
|
|
244
244
|
const nested = result.nestedExecutions;
|
|
245
245
|
const preimages: PublicCallStackItem[] = await Promise.all(nested.map(n => this.getPublicCallStackItem(n)));
|
|
246
|
-
if (preimages.length >
|
|
247
|
-
throw new Error(
|
|
246
|
+
if (preimages.length > MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL) {
|
|
247
|
+
throw new Error(
|
|
248
|
+
`Public call stack size exceeded (max ${MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL}, got ${preimages.length})`,
|
|
249
|
+
);
|
|
248
250
|
}
|
|
249
251
|
|
|
250
252
|
// Top of the stack is at the end of the array, so we padStart
|
|
251
|
-
return padArrayStart(preimages, PublicCallStackItem.empty(),
|
|
253
|
+
return padArrayStart(preimages, PublicCallStackItem.empty(), MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL);
|
|
252
254
|
}
|
|
253
255
|
|
|
254
256
|
protected getBytecodeHash(_result: PublicExecutionResult) {
|
|
@@ -268,7 +270,7 @@ export class PublicProcessor {
|
|
|
268
270
|
*/
|
|
269
271
|
protected async getPublicCallData(
|
|
270
272
|
result: PublicExecutionResult,
|
|
271
|
-
preimages: Tuple<PublicCallStackItem, typeof
|
|
273
|
+
preimages: Tuple<PublicCallStackItem, typeof MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,
|
|
272
274
|
isExecutionRequest = false,
|
|
273
275
|
) {
|
|
274
276
|
const bytecodeHash = await this.getBytecodeHash(result);
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
makeEmptyProof,
|
|
7
7
|
} from '@aztec/circuits.js';
|
|
8
8
|
import { P2P, P2PClientState } from '@aztec/p2p';
|
|
9
|
-
import { L1ToL2MessageSource, L2Block, L2BlockSource, MerkleTreeId, Tx, TxHash } from '@aztec/types';
|
|
9
|
+
import { L1ToL2MessageSource, L2Block, L2BlockSource, MerkleTreeId, mockTx, Tx, TxHash } from '@aztec/types';
|
|
10
10
|
import { MerkleTreeOperations, WorldStateRunningState, WorldStateSynchroniser } from '@aztec/world-state';
|
|
11
11
|
import { MockProxy, mock } from 'jest-mock-extended';
|
|
12
12
|
import times from 'lodash.times';
|
|
13
13
|
import { BlockBuilder } from '../block_builder/index.js';
|
|
14
|
-
import { L1Publisher
|
|
14
|
+
import { L1Publisher } from '../index.js';
|
|
15
15
|
import { makeEmptyProcessedTx, makeProcessedTx } from './processed_tx.js';
|
|
16
16
|
import { PublicProcessor, PublicProcessorFactory } from './public_processor.js';
|
|
17
17
|
import { Sequencer } from './sequencer.js';
|
|
@@ -87,7 +87,7 @@ describe('sequencer', () => {
|
|
|
87
87
|
});
|
|
88
88
|
|
|
89
89
|
it('builds a block out of a single tx', async () => {
|
|
90
|
-
const tx =
|
|
90
|
+
const tx = mockTx();
|
|
91
91
|
const block = L2Block.random(lastBlockNumber + 1);
|
|
92
92
|
const proof = makeEmptyProof();
|
|
93
93
|
|
|
@@ -112,7 +112,7 @@ describe('sequencer', () => {
|
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
it('builds a block out of several txs rejecting double spends', async () => {
|
|
115
|
-
const txs = [
|
|
115
|
+
const txs = [mockTx(0x10000), mockTx(0x20000), mockTx(0x30000)];
|
|
116
116
|
const doubleSpendTx = txs[1];
|
|
117
117
|
const block = L2Block.random(lastBlockNumber + 1);
|
|
118
118
|
const proof = makeEmptyProof();
|
package/dest/mocks/tx.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Tx, TxL2Logs } from '@aztec/types';
|
|
2
|
-
/**
|
|
3
|
-
* Testing utility to create empty logs composed from a single empty log.
|
|
4
|
-
*/
|
|
5
|
-
export declare function makeEmptyLogs(): TxL2Logs;
|
|
6
|
-
/**
|
|
7
|
-
* Testing utility to create a tx with gibberish kernel circuit output, random logs, and an empty proof.
|
|
8
|
-
*/
|
|
9
|
-
export declare function makeTx(seed?: number): Tx;
|
|
10
|
-
//# sourceMappingURL=tx.d.ts.map
|
package/dest/mocks/tx.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../src/mocks/tx.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,EAAE,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG5D;;GAEG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAGxC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,SAAI,MAS9B"}
|
package/dest/mocks/tx.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { KERNEL_PUBLIC_CALL_STACK_LENGTH, makeEmptyProof } from '@aztec/circuits.js';
|
|
2
|
-
import { makeKernelPublicInputs, makePublicCallRequest } from '@aztec/circuits.js/factories';
|
|
3
|
-
import { FunctionL2Logs, Tx, TxL2Logs } from '@aztec/types';
|
|
4
|
-
import times from 'lodash.times';
|
|
5
|
-
/**
|
|
6
|
-
* Testing utility to create empty logs composed from a single empty log.
|
|
7
|
-
*/
|
|
8
|
-
export function makeEmptyLogs() {
|
|
9
|
-
const functionLogs = [new FunctionL2Logs([Buffer.alloc(0)])];
|
|
10
|
-
return new TxL2Logs(functionLogs);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Testing utility to create a tx with gibberish kernel circuit output, random logs, and an empty proof.
|
|
14
|
-
*/
|
|
15
|
-
export function makeTx(seed = 0) {
|
|
16
|
-
return new Tx(makeKernelPublicInputs(seed), makeEmptyProof(), TxL2Logs.random(2, 3), TxL2Logs.random(3, 0), [], times(KERNEL_PUBLIC_CALL_STACK_LENGTH, makePublicCallRequest));
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvdHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1RCxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFFakM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYTtJQUMzQixNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxPQUFPLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDN0IsT0FBTyxJQUFJLEVBQUUsQ0FDWCxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFDNUIsY0FBYyxFQUFFLEVBQ2hCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNyQixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDckIsRUFBRSxFQUNGLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUM5RCxDQUFDO0FBQ0osQ0FBQyJ9
|
package/src/mocks/tx.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { KERNEL_PUBLIC_CALL_STACK_LENGTH, makeEmptyProof } from '@aztec/circuits.js';
|
|
2
|
-
import { makeKernelPublicInputs, makePublicCallRequest } from '@aztec/circuits.js/factories';
|
|
3
|
-
import { FunctionL2Logs, Tx, TxL2Logs } from '@aztec/types';
|
|
4
|
-
import times from 'lodash.times';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Testing utility to create empty logs composed from a single empty log.
|
|
8
|
-
*/
|
|
9
|
-
export function makeEmptyLogs(): TxL2Logs {
|
|
10
|
-
const functionLogs = [new FunctionL2Logs([Buffer.alloc(0)])];
|
|
11
|
-
return new TxL2Logs(functionLogs);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Testing utility to create a tx with gibberish kernel circuit output, random logs, and an empty proof.
|
|
16
|
-
*/
|
|
17
|
-
export function makeTx(seed = 0) {
|
|
18
|
-
return new Tx(
|
|
19
|
-
makeKernelPublicInputs(seed),
|
|
20
|
-
makeEmptyProof(),
|
|
21
|
-
TxL2Logs.random(2, 3),
|
|
22
|
-
TxL2Logs.random(3, 0),
|
|
23
|
-
[],
|
|
24
|
-
times(KERNEL_PUBLIC_CALL_STACK_LENGTH, makePublicCallRequest),
|
|
25
|
-
);
|
|
26
|
-
}
|