@aztec/txe 0.0.1-commit.2ed92850 → 0.0.1-commit.43c09e3f
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/oracle/interfaces.d.ts +2 -2
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +2 -2
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +3 -4
- package/dest/oracle/txe_oracle_top_level_context.d.ts +1 -1
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +15 -12
- package/dest/rpc_translator.d.ts +5 -5
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +38 -27
- package/dest/state_machine/archiver.d.ts +1 -1
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +2 -0
- package/dest/state_machine/index.d.ts +5 -5
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +14 -9
- package/dest/txe_session.d.ts +1 -1
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +11 -8
- package/dest/utils/block_creation.d.ts +1 -1
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +3 -1
- package/package.json +15 -15
- package/src/oracle/interfaces.ts +1 -1
- package/src/oracle/txe_oracle_public_context.ts +3 -5
- package/src/oracle/txe_oracle_top_level_context.ts +42 -14
- package/src/rpc_translator.ts +40 -22
- package/src/state_machine/archiver.ts +2 -0
- package/src/state_machine/index.ts +24 -9
- package/src/txe_session.ts +13 -14
- package/src/utils/block_creation.ts +3 -1
package/src/txe_session.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
|
6
6
|
import type { ProtocolContract } from '@aztec/protocol-contracts';
|
|
7
7
|
import {
|
|
8
8
|
AddressStore,
|
|
9
|
+
AnchorBlockStore,
|
|
9
10
|
CapsuleStore,
|
|
10
11
|
JobCoordinator,
|
|
11
12
|
NoteService,
|
|
@@ -49,6 +50,7 @@ import type { IAvmExecutionOracle, ITxeExecutionOracle } from './oracle/interfac
|
|
|
49
50
|
import { TXEOraclePublicContext } from './oracle/txe_oracle_public_context.js';
|
|
50
51
|
import { TXEOracleTopLevelContext } from './oracle/txe_oracle_top_level_context.js';
|
|
51
52
|
import { RPCTranslator } from './rpc_translator.js';
|
|
53
|
+
import { TXEArchiver } from './state_machine/archiver.js';
|
|
52
54
|
import { TXEStateMachine } from './state_machine/index.js';
|
|
53
55
|
import type { ForeignCallArgs, ForeignCallResult } from './util/encoding.js';
|
|
54
56
|
import { TXEAccountStore } from './util/txe_account_store.js';
|
|
@@ -176,7 +178,9 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
176
178
|
await contractStore.addContractInstance(instance);
|
|
177
179
|
}
|
|
178
180
|
|
|
179
|
-
const
|
|
181
|
+
const archiver = new TXEArchiver(store);
|
|
182
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
183
|
+
const stateMachine = await TXEStateMachine.create(archiver, anchorBlockStore, contractStore, noteStore);
|
|
180
184
|
|
|
181
185
|
const nextBlockTimestamp = BigInt(Math.floor(new Date().getTime() / 1000));
|
|
182
186
|
const version = new Fr(await stateMachine.node.getVersion());
|
|
@@ -312,17 +316,14 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
312
316
|
): Promise<PrivateContextInputs> {
|
|
313
317
|
this.exitTopLevelState();
|
|
314
318
|
|
|
315
|
-
await new NoteService(
|
|
316
|
-
this.noteStore,
|
|
317
|
-
this.stateMachine.node,
|
|
318
|
-
this.stateMachine.anchorBlockStore,
|
|
319
|
-
this.currentJobId,
|
|
320
|
-
).syncNoteNullifiers(contractAddress);
|
|
321
|
-
|
|
322
319
|
// Private execution has two associated block numbers: the anchor block (i.e. the historical block that is used to
|
|
323
320
|
// build the proof), and the *next* block, i.e. the one we'll create once the execution ends, and which will contain
|
|
324
321
|
// a single transaction with the effects of what was done in the test.
|
|
325
322
|
const anchorBlock = await this.stateMachine.node.getBlockHeader(anchorBlockNumber ?? 'latest');
|
|
323
|
+
|
|
324
|
+
await new NoteService(this.noteStore, this.stateMachine.node, anchorBlock!, this.currentJobId).syncNoteNullifiers(
|
|
325
|
+
contractAddress,
|
|
326
|
+
);
|
|
326
327
|
const latestBlock = await this.stateMachine.node.getBlockHeader('latest');
|
|
327
328
|
|
|
328
329
|
const nextBlockGlobalVariables = makeGlobalVariables(undefined, {
|
|
@@ -354,12 +355,12 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
354
355
|
this.keyStore,
|
|
355
356
|
this.addressStore,
|
|
356
357
|
this.stateMachine.node,
|
|
357
|
-
this.stateMachine.anchorBlockStore,
|
|
358
358
|
this.senderTaggingStore,
|
|
359
359
|
this.recipientTaggingStore,
|
|
360
360
|
this.senderAddressBookStore,
|
|
361
361
|
this.capsuleStore,
|
|
362
362
|
this.privateEventStore,
|
|
363
|
+
this.stateMachine.contractSyncService,
|
|
363
364
|
this.currentJobId,
|
|
364
365
|
);
|
|
365
366
|
|
|
@@ -401,6 +402,8 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
401
402
|
async enterUtilityState(contractAddress: AztecAddress = DEFAULT_ADDRESS) {
|
|
402
403
|
this.exitTopLevelState();
|
|
403
404
|
|
|
405
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
406
|
+
|
|
404
407
|
// There is no automatic message discovery and contract-driven syncing process in inlined private or utility
|
|
405
408
|
// contexts, which means that known nullifiers are also not searched for, since it is during the tagging sync that
|
|
406
409
|
// we perform this. We therefore search for known nullifiers now, as otherwise notes that were nullified would not
|
|
@@ -409,12 +412,10 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
409
412
|
await new NoteService(
|
|
410
413
|
this.noteStore,
|
|
411
414
|
this.stateMachine.node,
|
|
412
|
-
|
|
415
|
+
anchorBlockHeader,
|
|
413
416
|
this.currentJobId,
|
|
414
417
|
).syncNoteNullifiers(contractAddress);
|
|
415
418
|
|
|
416
|
-
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
417
|
-
|
|
418
419
|
this.oracleHandler = new UtilityExecutionOracle(
|
|
419
420
|
contractAddress,
|
|
420
421
|
[],
|
|
@@ -425,7 +426,6 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
425
426
|
this.keyStore,
|
|
426
427
|
this.addressStore,
|
|
427
428
|
this.stateMachine.node,
|
|
428
|
-
this.stateMachine.anchorBlockStore,
|
|
429
429
|
this.recipientTaggingStore,
|
|
430
430
|
this.senderAddressBookStore,
|
|
431
431
|
this.capsuleStore,
|
|
@@ -516,7 +516,6 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
516
516
|
this.keyStore,
|
|
517
517
|
this.addressStore,
|
|
518
518
|
this.stateMachine.node,
|
|
519
|
-
this.stateMachine.anchorBlockStore,
|
|
520
519
|
this.recipientTaggingStore,
|
|
521
520
|
this.senderAddressBookStore,
|
|
522
521
|
this.capsuleStore,
|
|
@@ -87,7 +87,9 @@ export async function makeTXEBlock(
|
|
|
87
87
|
const newArchiveInfo = await worldTrees.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
88
88
|
const newArchive = new AppendOnlyTreeSnapshot(new Fr(newArchiveInfo.root), Number(newArchiveInfo.size));
|
|
89
89
|
|
|
90
|
-
// L2Block requires checkpointNumber and indexWithinCheckpoint
|
|
90
|
+
// L2Block requires checkpointNumber and indexWithinCheckpoint.
|
|
91
|
+
// TXE uses 1-block-per-checkpoint for testing simplicity, so we can use block number as checkpoint number.
|
|
92
|
+
// This uses the deprecated fromBlockNumber method intentionally for the TXE testing environment.
|
|
91
93
|
const checkpointNumber = CheckpointNumber.fromBlockNumber(globalVariables.blockNumber);
|
|
92
94
|
const indexWithinCheckpoint = IndexWithinCheckpoint(0);
|
|
93
95
|
|