@aztec-labs/txe 6.0.0-nightly.20260829

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.
Files changed (173) hide show
  1. package/dest/AuthRegistry-D4XJULH3.js +3 -0
  2. package/dest/AuthRegistry-D4XJULH3.js.map +7 -0
  3. package/dest/ContractClassRegistry-Q76MXQZD.js +3 -0
  4. package/dest/ContractClassRegistry-Q76MXQZD.js.map +7 -0
  5. package/dest/ContractInstanceRegistry-CTRARU77.js +3 -0
  6. package/dest/ContractInstanceRegistry-CTRARU77.js.map +7 -0
  7. package/dest/FeeJuice-YLTJXWYJ.js +3 -0
  8. package/dest/FeeJuice-YLTJXWYJ.js.map +7 -0
  9. package/dest/HandshakeRegistry-BRPEG7GL.js +3 -0
  10. package/dest/HandshakeRegistry-BRPEG7GL.js.map +7 -0
  11. package/dest/MultiCallEntrypoint-CJHMYQT5.js +3 -0
  12. package/dest/MultiCallEntrypoint-CJHMYQT5.js.map +7 -0
  13. package/dest/SchnorrAccount-OB4N4QIM.js +3 -0
  14. package/dest/SchnorrAccount-OB4N4QIM.js.map +7 -0
  15. package/dest/SchnorrInitializerlessAccount-TWGKRUSY.js +3 -0
  16. package/dest/SchnorrInitializerlessAccount-TWGKRUSY.js.map +7 -0
  17. package/dest/bin/check_txe_oracle_version.d.ts +2 -0
  18. package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
  19. package/dest/bin/check_txe_oracle_version.js +22 -0
  20. package/dest/bin/index.d.ts +3 -0
  21. package/dest/bin/index.d.ts.map +1 -0
  22. package/dest/bin/index.js +4 -0
  23. package/dest/bin/index.js.map +7 -0
  24. package/dest/bin/oracle_test_server.d.ts +3 -0
  25. package/dest/bin/oracle_test_server.d.ts.map +1 -0
  26. package/dest/bin/oracle_test_server.js +41 -0
  27. package/dest/chunk-32UHX7YY.js +3 -0
  28. package/dest/chunk-32UHX7YY.js.map +7 -0
  29. package/dest/chunk-F4QVFWNM.js +258 -0
  30. package/dest/chunk-F4QVFWNM.js.map +7 -0
  31. package/dest/chunk-LILEKW2X.js +304 -0
  32. package/dest/chunk-LILEKW2X.js.map +7 -0
  33. package/dest/constants.d.ts +7 -0
  34. package/dest/constants.d.ts.map +1 -0
  35. package/dest/constants.js +10 -0
  36. package/dest/dispatcher_pool.d.ts +67 -0
  37. package/dest/dispatcher_pool.d.ts.map +1 -0
  38. package/dest/dispatcher_pool.js +288 -0
  39. package/dest/index.d.ts +52 -0
  40. package/dest/index.d.ts.map +1 -0
  41. package/dest/index.js +102 -0
  42. package/dest/metafile.json +38805 -0
  43. package/dest/msgpackr_fr_extension.d.ts +2 -0
  44. package/dest/msgpackr_fr_extension.d.ts.map +1 -0
  45. package/dest/msgpackr_fr_extension.js +21 -0
  46. package/dest/oracle/interfaces.d.ts +90 -0
  47. package/dest/oracle/interfaces.d.ts.map +1 -0
  48. package/dest/oracle/interfaces.js +3 -0
  49. package/dest/oracle/noir-structs/gas_settings_data.d.ts +14 -0
  50. package/dest/oracle/noir-structs/gas_settings_data.d.ts.map +1 -0
  51. package/dest/oracle/noir-structs/gas_settings_data.js +1 -0
  52. package/dest/oracle/noir-structs/tx_effects_data.d.ts +11 -0
  53. package/dest/oracle/noir-structs/tx_effects_data.d.ts.map +1 -0
  54. package/dest/oracle/noir-structs/tx_effects_data.js +1 -0
  55. package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
  56. package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
  57. package/dest/oracle/tagging_secret_strategy.js +12 -0
  58. package/dest/oracle/test-resolver/default_fixtures.d.ts +16 -0
  59. package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
  60. package/dest/oracle/test-resolver/default_fixtures.js +207 -0
  61. package/dest/oracle/test-resolver/index.d.ts +9 -0
  62. package/dest/oracle/test-resolver/index.d.ts.map +1 -0
  63. package/dest/oracle/test-resolver/index.js +32 -0
  64. package/dest/oracle/test-resolver/resolver.d.ts +48 -0
  65. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
  66. package/dest/oracle/test-resolver/resolver.js +181 -0
  67. package/dest/oracle/txe_oracle_public_context.d.ts +58 -0
  68. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -0
  69. package/dest/oracle/txe_oracle_public_context.js +170 -0
  70. package/dest/oracle/txe_oracle_registry.d.ts +164 -0
  71. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
  72. package/dest/oracle/txe_oracle_registry.js +753 -0
  73. package/dest/oracle/txe_oracle_top_level_context.d.ts +128 -0
  74. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -0
  75. package/dest/oracle/txe_oracle_top_level_context.js +815 -0
  76. package/dest/oracle/txe_oracle_version.d.ts +17 -0
  77. package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
  78. package/dest/oracle/txe_oracle_version.js +14 -0
  79. package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
  80. package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
  81. package/dest/oracle/txe_private_execution_oracle.js +15 -0
  82. package/dest/rpc_server.d.ts +14 -0
  83. package/dest/rpc_server.d.ts.map +1 -0
  84. package/dest/rpc_server.js +78 -0
  85. package/dest/rpc_translator.d.ts +140 -0
  86. package/dest/rpc_translator.d.ts.map +1 -0
  87. package/dest/rpc_translator.js +976 -0
  88. package/dest/server.bundle.js +3 -0
  89. package/dest/server.bundle.js.map +7 -0
  90. package/dest/state_machine/archiver.d.ts +32 -0
  91. package/dest/state_machine/archiver.d.ts.map +1 -0
  92. package/dest/state_machine/archiver.js +95 -0
  93. package/dest/state_machine/dummy_p2p_client.d.ts +69 -0
  94. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -0
  95. package/dest/state_machine/dummy_p2p_client.js +180 -0
  96. package/dest/state_machine/global_variable_builder.d.ts +15 -0
  97. package/dest/state_machine/global_variable_builder.d.ts.map +1 -0
  98. package/dest/state_machine/global_variable_builder.js +25 -0
  99. package/dest/state_machine/index.d.ts +22 -0
  100. package/dest/state_machine/index.d.ts.map +1 -0
  101. package/dest/state_machine/index.js +110 -0
  102. package/dest/state_machine/mock_epoch_cache.d.ts +43 -0
  103. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -0
  104. package/dest/state_machine/mock_epoch_cache.js +88 -0
  105. package/dest/state_machine/synchronizer.d.ts +41 -0
  106. package/dest/state_machine/synchronizer.d.ts.map +1 -0
  107. package/dest/state_machine/synchronizer.js +70 -0
  108. package/dest/txe_session.d.ts +179 -0
  109. package/dest/txe_session.d.ts.map +1 -0
  110. package/dest/txe_session.js +697 -0
  111. package/dest/utils/block_creation.d.ts +28 -0
  112. package/dest/utils/block_creation.d.ts.map +1 -0
  113. package/dest/utils/block_creation.js +59 -0
  114. package/dest/utils/encoding.d.ts +194 -0
  115. package/dest/utils/encoding.d.ts.map +1 -0
  116. package/dest/utils/encoding.js +136 -0
  117. package/dest/utils/expected_failure_error.d.ts +4 -0
  118. package/dest/utils/expected_failure_error.d.ts.map +1 -0
  119. package/dest/utils/expected_failure_error.js +5 -0
  120. package/dest/utils/tx_effect_creation.d.ts +5 -0
  121. package/dest/utils/tx_effect_creation.d.ts.map +1 -0
  122. package/dest/utils/tx_effect_creation.js +12 -0
  123. package/dest/utils/txe_account_store.d.ts +10 -0
  124. package/dest/utils/txe_account_store.d.ts.map +1 -0
  125. package/dest/utils/txe_account_store.js +17 -0
  126. package/dest/utils/txe_artifact_resolver.d.ts +36 -0
  127. package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
  128. package/dest/utils/txe_artifact_resolver.js +160 -0
  129. package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
  130. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
  131. package/dest/utils/txe_public_contract_data_source.js +51 -0
  132. package/dest/worker.bundle.js +3 -0
  133. package/dest/worker.bundle.js.map +7 -0
  134. package/dest/worker.d.ts +2 -0
  135. package/dest/worker.d.ts.map +1 -0
  136. package/dest/worker.js +92 -0
  137. package/package.json +115 -0
  138. package/src/bin/check_txe_oracle_version.ts +31 -0
  139. package/src/bin/index.ts +49 -0
  140. package/src/bin/oracle_test_server.ts +51 -0
  141. package/src/constants.ts +13 -0
  142. package/src/dispatcher_pool.ts +319 -0
  143. package/src/index.ts +152 -0
  144. package/src/msgpackr_fr_extension.ts +22 -0
  145. package/src/oracle/interfaces.ts +125 -0
  146. package/src/oracle/noir-structs/gas_settings_data.ts +16 -0
  147. package/src/oracle/noir-structs/tx_effects_data.ts +11 -0
  148. package/src/oracle/tagging_secret_strategy.ts +25 -0
  149. package/src/oracle/test-resolver/default_fixtures.ts +278 -0
  150. package/src/oracle/test-resolver/index.ts +43 -0
  151. package/src/oracle/test-resolver/resolver.ts +245 -0
  152. package/src/oracle/txe_oracle_public_context.ts +220 -0
  153. package/src/oracle/txe_oracle_registry.ts +501 -0
  154. package/src/oracle/txe_oracle_top_level_context.ts +1086 -0
  155. package/src/oracle/txe_oracle_version.ts +17 -0
  156. package/src/oracle/txe_private_execution_oracle.ts +30 -0
  157. package/src/rpc_server.ts +86 -0
  158. package/src/rpc_translator.ts +1229 -0
  159. package/src/state_machine/archiver.ts +118 -0
  160. package/src/state_machine/dummy_p2p_client.ts +264 -0
  161. package/src/state_machine/global_variable_builder.ts +39 -0
  162. package/src/state_machine/index.ts +152 -0
  163. package/src/state_machine/mock_epoch_cache.ts +111 -0
  164. package/src/state_machine/synchronizer.ts +105 -0
  165. package/src/txe_session.ts +1107 -0
  166. package/src/utils/block_creation.ts +91 -0
  167. package/src/utils/encoding.ts +171 -0
  168. package/src/utils/expected_failure_error.ts +5 -0
  169. package/src/utils/tx_effect_creation.ts +28 -0
  170. package/src/utils/txe_account_store.ts +23 -0
  171. package/src/utils/txe_artifact_resolver.ts +217 -0
  172. package/src/utils/txe_public_contract_data_source.ts +60 -0
  173. package/src/worker.ts +98 -0
@@ -0,0 +1,220 @@
1
+ import { BlockNumber } from '@aztec-labs/foundation/branded-types';
2
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
3
+ import { type Logger, createLogger } from '@aztec-labs/foundation/log';
4
+ import type { ContractStore } from '@aztec-labs/pxe/server';
5
+ import { PublicDataWrite } from '@aztec-labs/stdlib/avm';
6
+ import { AztecAddress } from '@aztec-labs/stdlib/aztec-address';
7
+ import type { L2Block } from '@aztec-labs/stdlib/block';
8
+ import type { ContractInstancePreimageWithAddress } from '@aztec-labs/stdlib/contract';
9
+ import { computePublicDataTreeLeafSlot, siloNoteHash, siloNullifier } from '@aztec-labs/stdlib/hash';
10
+ import {
11
+ MerkleTreeId,
12
+ type MerkleTreeWriteOperations,
13
+ PublicDataTreeLeaf,
14
+ PublicDataTreeLeafPreimage,
15
+ } from '@aztec-labs/stdlib/trees';
16
+ import { GlobalVariables, TxEffect, TxHash } from '@aztec-labs/stdlib/tx';
17
+
18
+ import { insertTxEffectIntoWorldTrees, makeTXEBlock } from '../utils/block_creation.js';
19
+ import type { IAvmExecutionOracle } from './interfaces.js';
20
+
21
+ export class TXEOraclePublicContext implements IAvmExecutionOracle {
22
+ isAvm = true as const;
23
+
24
+ private logger: Logger;
25
+ private transientUniqueNoteHashes: Fr[] = [];
26
+ private transientSiloedNullifiers: Fr[] = [];
27
+ private publicDataWrites: PublicDataWrite[] = [];
28
+
29
+ constructor(
30
+ private contractAddress: AztecAddress,
31
+ private forkedWorldTrees: MerkleTreeWriteOperations,
32
+ private txRequestHash: Fr,
33
+ private globalVariables: GlobalVariables,
34
+ private contractStore: ContractStore,
35
+ ) {
36
+ this.logger = createLogger('txe:public_context');
37
+
38
+ this.logger.debug('Entering Public Context', {
39
+ contractAddress,
40
+ blockNumber: globalVariables.blockNumber,
41
+ timestamp: globalVariables.timestamp,
42
+ });
43
+ }
44
+
45
+ address(): Promise<AztecAddress> {
46
+ return Promise.resolve(this.contractAddress);
47
+ }
48
+
49
+ sender(): Promise<AztecAddress> {
50
+ return Promise.resolve(AztecAddress.ZERO); // todo: change?
51
+ }
52
+
53
+ blockNumber(): Promise<BlockNumber> {
54
+ return Promise.resolve(this.globalVariables.blockNumber);
55
+ }
56
+
57
+ timestamp(): Promise<bigint> {
58
+ return Promise.resolve(this.globalVariables.timestamp);
59
+ }
60
+
61
+ isStaticCall(): Promise<boolean> {
62
+ return Promise.resolve(false);
63
+ }
64
+
65
+ chainId(): Promise<Fr> {
66
+ return Promise.resolve(this.globalVariables.chainId);
67
+ }
68
+
69
+ version(): Promise<Fr> {
70
+ return Promise.resolve(this.globalVariables.version);
71
+ }
72
+
73
+ async emitNullifier(nullifier: Fr) {
74
+ const siloedNullifier = await siloNullifier(this.contractAddress, nullifier);
75
+ this.transientSiloedNullifiers.push(siloedNullifier);
76
+ }
77
+
78
+ async emitNoteHash(noteHash: Fr) {
79
+ const siloedNoteHash = await siloNoteHash(this.contractAddress, noteHash);
80
+ // TODO: make the note hash unique - they are only siloed right now
81
+ this.transientUniqueNoteHashes.push(siloedNoteHash);
82
+ }
83
+
84
+ async nullifierExists(siloedNullifier: Fr): Promise<boolean> {
85
+ const treeIndex = (
86
+ await this.forkedWorldTrees.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, [siloedNullifier.toBuffer()])
87
+ )[0];
88
+ const transientIndex = this.transientSiloedNullifiers.find(n => n.equals(siloedNullifier));
89
+
90
+ return treeIndex !== undefined || transientIndex !== undefined;
91
+ }
92
+
93
+ async storageWrite(slot: Fr, value: Fr) {
94
+ this.logger.debug('AVM storage write', { slot, value });
95
+
96
+ const dataWrite = new PublicDataWrite(await computePublicDataTreeLeafSlot(this.contractAddress, slot), value);
97
+
98
+ this.publicDataWrites.push(dataWrite);
99
+
100
+ await this.forkedWorldTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
101
+ new PublicDataTreeLeaf(dataWrite.leafSlot, dataWrite.value).toBuffer(),
102
+ ]);
103
+ }
104
+
105
+ async storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr> {
106
+ const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
107
+
108
+ const lowLeafResult = await this.forkedWorldTrees.getPreviousValueIndex(
109
+ MerkleTreeId.PUBLIC_DATA_TREE,
110
+ leafSlot.toBigInt(),
111
+ );
112
+
113
+ const value =
114
+ !lowLeafResult || !lowLeafResult.alreadyPresent
115
+ ? Fr.ZERO
116
+ : (
117
+ (await this.forkedWorldTrees.getLeafPreimage(
118
+ MerkleTreeId.PUBLIC_DATA_TREE,
119
+ lowLeafResult.index,
120
+ )) as PublicDataTreeLeafPreimage
121
+ ).leaf.value;
122
+
123
+ this.logger.debug('AVM storage read', { slot, contractAddress, value });
124
+
125
+ return value;
126
+ }
127
+
128
+ getContractInstanceDeployer(address: AztecAddress): Promise<{ member: Fr; exists: boolean }[]> {
129
+ return this.getContractInstanceMember(address, i => i.deployer.toField());
130
+ }
131
+
132
+ getContractInstanceClassId(address: AztecAddress): Promise<{ member: Fr; exists: boolean }[]> {
133
+ // TXE has no contract updates, so the current class always equals the original.
134
+ return this.getContractInstanceMember(address, i => i.originalContractClassId);
135
+ }
136
+
137
+ getContractInstanceInitializationHash(address: AztecAddress): Promise<{ member: Fr; exists: boolean }[]> {
138
+ return this.getContractInstanceMember(address, i => i.initializationHash);
139
+ }
140
+
141
+ getContractInstanceImmutablesHash(address: AztecAddress): Promise<{ member: Fr; exists: boolean }[]> {
142
+ return this.getContractInstanceMember(address, i => i.immutablesHash);
143
+ }
144
+
145
+ // The one-element array mirrors the oracles' Noir return type, `[GetContractInstanceResult; 1]`.
146
+ private async getContractInstanceMember(
147
+ address: AztecAddress,
148
+ accessor: (instance: ContractInstancePreimageWithAddress) => Fr,
149
+ ): Promise<{ member: Fr; exists: boolean }[]> {
150
+ const instance = await this.contractStore.getContractInstance(address);
151
+ if (!instance) {
152
+ return [{ member: Fr.ZERO, exists: false }];
153
+ }
154
+ return [{ member: accessor(instance), exists: true }];
155
+ }
156
+
157
+ returndataSize(): Promise<number> {
158
+ throw new Error(
159
+ 'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
160
+ );
161
+ }
162
+
163
+ returndataCopy(_rdOffset: number, _copySize: number): Promise<Fr[]> {
164
+ throw new Error(
165
+ 'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
166
+ );
167
+ }
168
+
169
+ call(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<void> {
170
+ throw new Error(
171
+ 'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
172
+ );
173
+ }
174
+
175
+ staticCall(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<void> {
176
+ throw new Error(
177
+ 'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
178
+ );
179
+ }
180
+
181
+ successCopy(): Promise<boolean> {
182
+ throw new Error(
183
+ 'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
184
+ );
185
+ }
186
+
187
+ async close(): Promise<L2Block> {
188
+ this.logger.debug('Exiting Public Context, building block with collected side effects', {
189
+ blockNumber: this.globalVariables.blockNumber,
190
+ });
191
+
192
+ const txEffect = this.makeTxEffect();
193
+ await insertTxEffectIntoWorldTrees(txEffect, this.forkedWorldTrees);
194
+
195
+ const block = await makeTXEBlock(this.forkedWorldTrees, this.globalVariables, [txEffect]);
196
+
197
+ await this.forkedWorldTrees.close();
198
+
199
+ this.logger.debug('Exited PublicContext with built block', {
200
+ blockNumber: block.number,
201
+ txEffects: block.body.txEffects,
202
+ });
203
+
204
+ return block;
205
+ }
206
+
207
+ private makeTxEffect(): TxEffect {
208
+ const txEffect = TxEffect.empty();
209
+
210
+ txEffect.noteHashes = this.transientUniqueNoteHashes;
211
+ txEffect.nullifiers = [this.txRequestHash, ...this.transientSiloedNullifiers];
212
+
213
+ txEffect.publicDataWrites = this.publicDataWrites;
214
+ // TODO: support public logs
215
+
216
+ txEffect.txHash = new TxHash(new Fr(this.globalVariables.blockNumber));
217
+
218
+ return txEffect;
219
+ }
220
+ }