@aztec/txe 5.0.0-private.20260319 → 5.0.0-rc.2

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 (160) hide show
  1. package/dest/AuthRegistry-URXCCPYF.js +3 -0
  2. package/dest/AuthRegistry-URXCCPYF.js.map +7 -0
  3. package/dest/ContractClassRegistry-5RDBM6TC.js +3 -0
  4. package/dest/ContractClassRegistry-5RDBM6TC.js.map +7 -0
  5. package/dest/ContractInstanceRegistry-GCR4G4D7.js +3 -0
  6. package/dest/ContractInstanceRegistry-GCR4G4D7.js.map +7 -0
  7. package/dest/FeeJuice-O3KOSZO5.js +3 -0
  8. package/dest/FeeJuice-O3KOSZO5.js.map +7 -0
  9. package/dest/HandshakeRegistry-TXSMHMNY.js +3 -0
  10. package/dest/HandshakeRegistry-TXSMHMNY.js.map +7 -0
  11. package/dest/MultiCallEntrypoint-P4FSRXAD.js +3 -0
  12. package/dest/MultiCallEntrypoint-P4FSRXAD.js.map +7 -0
  13. package/dest/SchnorrAccount-AQZX7ROU.js +3 -0
  14. package/dest/SchnorrAccount-AQZX7ROU.js.map +7 -0
  15. package/dest/SchnorrInitializerlessAccount-KMX2H3J6.js +3 -0
  16. package/dest/SchnorrInitializerlessAccount-KMX2H3J6.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 +61 -0
  20. package/dest/bin/index.js +3 -30
  21. package/dest/bin/index.js.map +7 -0
  22. package/dest/bin/oracle_test_server.d.ts +3 -0
  23. package/dest/bin/oracle_test_server.d.ts.map +1 -0
  24. package/dest/bin/oracle_test_server.js +41 -0
  25. package/dest/chunk-BJVAAXNA.js +3 -0
  26. package/dest/chunk-BJVAAXNA.js.map +7 -0
  27. package/dest/chunk-I6DL4FT2.js +304 -0
  28. package/dest/chunk-I6DL4FT2.js.map +7 -0
  29. package/dest/chunk-IAO54JS2.js +266 -0
  30. package/dest/chunk-IAO54JS2.js.map +7 -0
  31. package/dest/constants.d.ts +5 -1
  32. package/dest/constants.d.ts.map +1 -1
  33. package/dest/constants.js +9 -1
  34. package/dest/dispatcher_pool.d.ts +67 -0
  35. package/dest/dispatcher_pool.d.ts.map +1 -0
  36. package/dest/dispatcher_pool.js +286 -0
  37. package/dest/index.d.ts +51 -7
  38. package/dest/index.d.ts.map +1 -1
  39. package/dest/index.js +70 -190
  40. package/dest/metafile.json +39364 -0
  41. package/dest/msgpackr_fr_extension.d.ts +2 -0
  42. package/dest/msgpackr_fr_extension.d.ts.map +1 -0
  43. package/dest/msgpackr_fr_extension.js +21 -0
  44. package/dest/oracle/interfaces.d.ts +38 -8
  45. package/dest/oracle/interfaces.d.ts.map +1 -1
  46. package/dest/oracle/test-resolver/default_fixtures.d.ts +9 -0
  47. package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
  48. package/dest/oracle/test-resolver/default_fixtures.js +164 -0
  49. package/dest/oracle/test-resolver/index.d.ts +9 -0
  50. package/dest/oracle/test-resolver/index.d.ts.map +1 -0
  51. package/dest/oracle/test-resolver/index.js +32 -0
  52. package/dest/oracle/test-resolver/resolver.d.ts +48 -0
  53. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
  54. package/dest/oracle/test-resolver/resolver.js +144 -0
  55. package/dest/oracle/txe_oracle_public_context.d.ts +26 -2
  56. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  57. package/dest/oracle/txe_oracle_public_context.js +43 -1
  58. package/dest/oracle/txe_oracle_registry.d.ts +167 -0
  59. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
  60. package/dest/oracle/txe_oracle_registry.js +715 -0
  61. package/dest/oracle/txe_oracle_top_level_context.d.ts +42 -17
  62. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  63. package/dest/oracle/txe_oracle_top_level_context.js +205 -70
  64. package/dest/oracle/txe_oracle_version.d.ts +17 -0
  65. package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
  66. package/dest/oracle/txe_oracle_version.js +14 -0
  67. package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
  68. package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
  69. package/dest/oracle/txe_private_execution_oracle.js +15 -0
  70. package/dest/rpc_server.d.ts +14 -0
  71. package/dest/rpc_server.d.ts.map +1 -0
  72. package/dest/rpc_server.js +78 -0
  73. package/dest/rpc_translator.d.ts +111 -233
  74. package/dest/rpc_translator.d.ts.map +1 -1
  75. package/dest/rpc_translator.js +759 -636
  76. package/dest/server.bundle.js +3 -0
  77. package/dest/server.bundle.js.map +7 -0
  78. package/dest/state_machine/archiver.d.ts +4 -3
  79. package/dest/state_machine/archiver.d.ts.map +1 -1
  80. package/dest/state_machine/archiver.js +24 -14
  81. package/dest/state_machine/dummy_p2p_client.d.ts +15 -7
  82. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  83. package/dest/state_machine/dummy_p2p_client.js +22 -4
  84. package/dest/state_machine/global_variable_builder.d.ts +10 -6
  85. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  86. package/dest/state_machine/global_variable_builder.js +8 -5
  87. package/dest/state_machine/index.d.ts +9 -6
  88. package/dest/state_machine/index.d.ts.map +1 -1
  89. package/dest/state_machine/index.js +45 -12
  90. package/dest/state_machine/mock_epoch_cache.d.ts +1 -2
  91. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  92. package/dest/state_machine/mock_epoch_cache.js +0 -3
  93. package/dest/state_machine/synchronizer.d.ts +3 -2
  94. package/dest/state_machine/synchronizer.d.ts.map +1 -1
  95. package/dest/state_machine/synchronizer.js +4 -3
  96. package/dest/txe_session.d.ts +89 -20
  97. package/dest/txe_session.d.ts.map +1 -1
  98. package/dest/txe_session.js +289 -64
  99. package/dest/utils/block_creation.d.ts +2 -2
  100. package/dest/utils/block_creation.d.ts.map +1 -1
  101. package/dest/utils/block_creation.js +2 -2
  102. package/dest/utils/encoding.d.ts +191 -0
  103. package/dest/utils/encoding.d.ts.map +1 -0
  104. package/dest/{util → utils}/encoding.js +7 -2
  105. package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
  106. package/dest/utils/expected_failure_error.d.ts.map +1 -0
  107. package/dest/{util → utils}/txe_account_store.d.ts +1 -1
  108. package/dest/utils/txe_account_store.d.ts.map +1 -0
  109. package/dest/utils/txe_artifact_resolver.d.ts +37 -0
  110. package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
  111. package/dest/utils/txe_artifact_resolver.js +161 -0
  112. package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
  113. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
  114. package/dest/{util → utils}/txe_public_contract_data_source.js +1 -3
  115. package/dest/worker.bundle.js +3 -0
  116. package/dest/worker.bundle.js.map +7 -0
  117. package/dest/worker.d.ts +2 -0
  118. package/dest/worker.d.ts.map +1 -0
  119. package/dest/worker.js +92 -0
  120. package/package.json +38 -21
  121. package/src/bin/check_txe_oracle_version.ts +70 -0
  122. package/src/bin/index.ts +11 -2
  123. package/src/bin/oracle_test_server.ts +51 -0
  124. package/src/constants.ts +11 -1
  125. package/src/dispatcher_pool.ts +317 -0
  126. package/src/index.ts +97 -227
  127. package/src/msgpackr_fr_extension.ts +23 -0
  128. package/src/oracle/interfaces.ts +35 -7
  129. package/src/oracle/test-resolver/default_fixtures.ts +226 -0
  130. package/src/oracle/test-resolver/index.ts +44 -0
  131. package/src/oracle/test-resolver/resolver.ts +198 -0
  132. package/src/oracle/txe_oracle_public_context.ts +60 -0
  133. package/src/oracle/txe_oracle_registry.ts +494 -0
  134. package/src/oracle/txe_oracle_top_level_context.ts +245 -81
  135. package/src/oracle/txe_oracle_version.ts +17 -0
  136. package/src/oracle/txe_private_execution_oracle.ts +30 -0
  137. package/src/rpc_server.ts +87 -0
  138. package/src/rpc_translator.ts +845 -905
  139. package/src/state_machine/archiver.ts +37 -16
  140. package/src/state_machine/dummy_p2p_client.ts +40 -11
  141. package/src/state_machine/global_variable_builder.ts +12 -11
  142. package/src/state_machine/index.ts +44 -30
  143. package/src/state_machine/mock_epoch_cache.ts +0 -4
  144. package/src/state_machine/synchronizer.ts +4 -3
  145. package/src/txe_session.ts +496 -80
  146. package/src/utils/block_creation.ts +2 -1
  147. package/src/{util → utils}/encoding.ts +8 -2
  148. package/src/utils/txe_artifact_resolver.ts +217 -0
  149. package/src/{util → utils}/txe_public_contract_data_source.ts +0 -2
  150. package/src/worker.ts +98 -0
  151. package/dest/util/encoding.d.ts +0 -720
  152. package/dest/util/encoding.d.ts.map +0 -1
  153. package/dest/util/expected_failure_error.d.ts.map +0 -1
  154. package/dest/util/txe_account_store.d.ts.map +0 -1
  155. package/dest/util/txe_public_contract_data_source.d.ts +0 -20
  156. package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
  157. /package/dest/{util → utils}/expected_failure_error.js +0 -0
  158. /package/dest/{util → utils}/txe_account_store.js +0 -0
  159. /package/src/{util → utils}/expected_failure_error.ts +0 -0
  160. /package/src/{util → utils}/txe_account_store.ts +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNncGFja3JfZnJfZXh0ZW5zaW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbXNncGFja3JfZnJfZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msgpackr_fr_extension.d.ts","sourceRoot":"","sources":["../src/msgpackr_fr_extension.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { addExtension } from 'msgpackr';
3
+ // `@aztec/native/msgpack_channel` registers a msgpackr extension that packs `Fr` instances to
4
+ // their raw 32-byte buffer for the C++ world-state side to deserialize. Because `@aztec/native`
5
+ // is externalized in TXE's esbuild config (it loads a `.node` binary that can't be bundled),
6
+ // the `Fr` class the extension is keyed on belongs to the *external* `@aztec/foundation`
7
+ // module instance — a different class identity than the `Fr` bundled into the TXE worker /
8
+ // bin. msgpackr's extension match uses `instanceof`, so bundled `Fr` instances slip through
9
+ // and msgpackr falls back to `Fr.toJSON()` (returns `Fr.toString()` — a `0x...` hex string).
10
+ // The C++ side then sees a string where a 32-byte binary was expected and throws
11
+ // `msgpack::type_error` whose `what()` is literally `"std::bad_cast"`.
12
+ //
13
+ // Fix: register the same extension under the BUNDLED `Fr` class identity. msgpackr's extension
14
+ // table holds an entry per `Class`, so both Fr classes now resolve to the same `write` callback
15
+ // and produce the same wire format. Imported as a side-effect from `./index.js` so both the
16
+ // worker (via `./worker.ts`) and the main-thread RPC server (via `./rpc_server.ts`) get the
17
+ // registration before any `sendMessage` runs.
18
+ addExtension({
19
+ Class: Fr,
20
+ write: (fr)=>fr.toBuffer()
21
+ });
@@ -1,11 +1,14 @@
1
- import type { ContractArtifact } from '@aztec/aztec.js/abi';
2
1
  import { CompleteAddress } from '@aztec/aztec.js/addresses';
3
- import type { ContractInstanceWithAddress } from '@aztec/aztec.js/contracts';
4
2
  import { TxHash } from '@aztec/aztec.js/tx';
5
3
  import { BlockNumber } from '@aztec/foundation/branded-types';
6
4
  import type { Fr } from '@aztec/foundation/curves/bn254';
5
+ import type { EthAddress } from '@aztec/foundation/eth-address';
6
+ import type { TaggingSecretStrategy } from '@aztec/pxe/server';
7
+ import type { Option } from '@aztec/pxe/simulator';
7
8
  import type { EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
8
9
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
10
+ import type { GasSettings } from '@aztec/stdlib/gas';
11
+ import type { PrivateLog } from '@aztec/stdlib/logs';
9
12
  import type { UInt64 } from '@aztec/stdlib/types';
10
13
  /**
11
14
  * Oracle methods associated with the execution of an Aztec #[external("public")] function.
@@ -28,6 +31,27 @@ export interface IAvmExecutionOracle {
28
31
  nullifierExists(siloedNullifier: Fr): Promise<boolean>;
29
32
  storageWrite(slot: Fr, value: Fr): Promise<void>;
30
33
  storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
34
+ getContractInstanceDeployer(address: AztecAddress): Promise<{
35
+ member: Fr;
36
+ exists: boolean;
37
+ }>;
38
+ getContractInstanceClassId(address: AztecAddress): Promise<{
39
+ member: Fr;
40
+ exists: boolean;
41
+ }>;
42
+ getContractInstanceInitializationHash(address: AztecAddress): Promise<{
43
+ member: Fr;
44
+ exists: boolean;
45
+ }>;
46
+ getContractInstanceImmutablesHash(address: AztecAddress): Promise<{
47
+ member: Fr;
48
+ exists: boolean;
49
+ }>;
50
+ returndataSize(): Promise<Fr>;
51
+ returndataCopy(rdOffset: number, copySize: number): Promise<Fr[]>;
52
+ call(l2Gas: number, daGas: number, address: AztecAddress, argsLength: number, args: Fr[]): Promise<void>;
53
+ staticCall(l2Gas: number, daGas: number, address: AztecAddress, argsLength: number, args: Fr[]): Promise<void>;
54
+ successCopy(): Promise<boolean>;
31
55
  }
32
56
  /**
33
57
  * Oracle methods associated with the execution of an Aztec Noir test.
@@ -39,20 +63,26 @@ export interface ITxeExecutionOracle {
39
63
  getNextBlockTimestamp(): Promise<UInt64>;
40
64
  advanceBlocksBy(blocks: number): Promise<void>;
41
65
  advanceTimestampBy(duration: UInt64): void;
42
- deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: Fr): Promise<void>;
66
+ deploy(contractPath: string, initializer: string, args: Fr[], secret: Fr, salt: Fr, deployer: AztecAddress): Promise<Fr[]>;
43
67
  createAccount(secret: Fr): Promise<CompleteAddress>;
44
- addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<CompleteAddress>;
68
+ addAccount(secret: Fr): Promise<CompleteAddress>;
45
69
  addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
70
+ sendL1ToL2Message(content: Fr, secretHash: Fr, sender: EthAddress, recipient: AztecAddress): Promise<Fr>;
71
+ setTaggingSecretStrategy(strategy: Option<TaggingSecretStrategy>): void;
46
72
  getLastBlockTimestamp(): Promise<bigint>;
47
73
  getLastTxEffects(): Promise<{
48
74
  txHash: TxHash;
49
75
  noteHashes: Fr[];
50
76
  nullifiers: Fr[];
77
+ privateLogs: PrivateLog[];
51
78
  }>;
52
79
  getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
53
- privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean, jobId: string): Promise<Fr[]>;
54
- executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string): Promise<Fr[]>;
55
- publicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
80
+ privateCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean, additionalScopes: AztecAddress[], jobId: string, authorizedUtilityCallTargets: AztecAddress[], gasSettings: GasSettings): Promise<{
81
+ returnValues: Fr[];
82
+ offchainEffects: Fr[][];
83
+ }>;
84
+ executeUtilityFunction(from: AztecAddress | undefined, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string, authorizedUtilityCallTargets: AztecAddress[]): Promise<Fr[]>;
85
+ publicCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean, gasSettings: GasSettings): Promise<Fr[]>;
56
86
  syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
57
87
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUM7SUFFWixPQUFPLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwQyxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLFlBQVksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxD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
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFRbEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDO0lBRVosT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsU0FBUyxJQUFJLE9B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
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type OracleRegistryEntry } from '@aztec/pxe/simulator';
2
+ import type { OracleTestScenario } from './resolver.js';
3
+ /**
4
+ * Synthesizes fixture scenarios for every oracle in the registry whose parameters and return are built from scalars,
5
+ * arrays/bounded vecs of them, or `Option`s of them. The matching Noir serialization tests are auto-generated by
6
+ * `#[auto_serialization_test]` from the same seed/scenario convention.
7
+ */
8
+ export declare function synthesizeDefaultFixtures(registry: Record<string, OracleRegistryEntry>): Record<string, OracleTestScenario[]>;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9maXh0dXJlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29yYWNsZS90ZXN0LXJlc29sdmVyL2RlZmF1bHRfZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQWFMLEtBQUssbUJBQW1CLEVBR3pCLE1BQU0sc0JBQXNCLENBQUM7QUFJOUIsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEQ7Ozs7R0FJRztBQUNILHdCQUFnQix5QkFBeUIsQ0FDdkMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsR0FDNUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBV3RDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default_fixtures.d.ts","sourceRoot":"","sources":["../../../src/oracle/test-resolver/default_fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,EAaL,KAAK,mBAAmB,EAGzB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAC5C,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAWtC"}
@@ -0,0 +1,164 @@
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { BlockNumber } from '@aztec/foundation/branded-types';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
+ import { AZTEC_ADDRESS, BIGINT, BLOCK_HASH, BLOCK_NUMBER, BOOL, BYTE, BoundedVec, ETH_ADDRESS, FIELD, FUNCTION_SELECTOR, NOTE_SELECTOR, Option, U32 } from '@aztec/pxe/simulator';
6
+ import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
7
+ import { BlockHash } from '@aztec/stdlib/block';
8
+ /**
9
+ * Synthesizes fixture scenarios for every oracle in the registry whose parameters and return are built from scalars,
10
+ * arrays/bounded vecs of them, or `Option`s of them. The matching Noir serialization tests are auto-generated by
11
+ * `#[auto_serialization_test]` from the same seed/scenario convention.
12
+ */ export function synthesizeDefaultFixtures(registry) {
13
+ const synthesized = {};
14
+ for (const [name, entry] of Object.entries(registry)){
15
+ const scenarios = synthesizeScenarios(entry);
16
+ if (scenarios !== undefined) {
17
+ synthesized[name] = scenarios;
18
+ }
19
+ }
20
+ return synthesized;
21
+ }
22
+ /**
23
+ * The test-value implementations, one per oracle type, mirroring the Noir `OracleTestValue` trait exactly
24
+ * (`noir-projects/aztec-nr/.../macros/oracle_testing.nr`).
25
+ */ const TEST_VALUE_IMPLS = [
26
+ scalar(FIELD, (seed)=>new Fr(seed)),
27
+ scalar(U32, (seed)=>seed),
28
+ scalar(BLOCK_NUMBER, (seed)=>BlockNumber(seed)),
29
+ scalar(BIGINT, (seed)=>BigInt(seed)),
30
+ scalar(BYTE, (seed)=>seed),
31
+ scalar(BOOL, (seed)=>seed % 2 !== 0),
32
+ scalar(AZTEC_ADDRESS, (seed)=>AztecAddress.fromNumberUnsafe(seed)),
33
+ scalar(ETH_ADDRESS, (seed)=>EthAddress.fromField(new Fr(seed))),
34
+ scalar(FUNCTION_SELECTOR, (seed)=>FunctionSelector.fromField(new Fr(seed))),
35
+ scalar(NOTE_SELECTOR, (seed)=>NoteSelector.fromField(new Fr(seed))),
36
+ scalar(BLOCK_HASH, (seed)=>new BlockHash(new Fr(seed))),
37
+ composite(isOption, (type, seed)=>[
38
+ named(Option.some(firstValue(type.inner, seed)), 'some'),
39
+ named(Option.none(firstValue(type.inner, seed)), 'none')
40
+ ]),
41
+ composite(isArray, (type, seed)=>[
42
+ unnamed(collectionData(type.inner, seed, DEFAULT_ARRAY_LENGTH))
43
+ ]),
44
+ composite(isBoundedVec, (type, seed)=>[
45
+ unnamed(BoundedVec.from({
46
+ data: collectionData(type.inner, seed, DEFAULT_ARRAY_LENGTH),
47
+ maxLength: BOUNDED_VEC_MAX_LENGTH
48
+ }))
49
+ ])
50
+ ];
51
+ /**
52
+ * The base every seed is offset by, applied once where a parameter's position becomes its seed, so generated values
53
+ * stay clear of 0. Must match `SEED_BASE` in the Noir `oracle_testing.nr`.
54
+ */ const SEED_BASE = 10;
55
+ /** Elements per synthesized array and bounded vec. Must match `TEST_COLLECTION_LEN` in the Noir `oracle_testing.nr`. */ const DEFAULT_ARRAY_LENGTH = 3;
56
+ /**
57
+ * Capacity of synthesized bounded vecs, deliberately larger than the data length so padding is exercised. Must match
58
+ * `TEST_BOUNDED_VEC_CAP` in the Noir `oracle_testing.nr`.
59
+ */ const BOUNDED_VEC_MAX_LENGTH = 5;
60
+ function unnamed(value) {
61
+ return {
62
+ value
63
+ };
64
+ }
65
+ function named(value, name) {
66
+ return {
67
+ value,
68
+ name
69
+ };
70
+ }
71
+ /** A scalar impl: matches the singleton `type` by identity and yields a single unnamed scenario. */ function scalar(type, value) {
72
+ return {
73
+ match: (t)=>t === type,
74
+ scenarios: (_type, seed)=>[
75
+ unnamed(value(seed))
76
+ ]
77
+ };
78
+ }
79
+ /** A composite impl: selected by the `kind` type guard, recursing through its element/inner mapping. */ function composite(guard, scenarios) {
80
+ return {
81
+ match: guard,
82
+ scenarios: (type, seed)=>scenarios(type, seed)
83
+ };
84
+ }
85
+ /** Synthesized element values for a collection. */ function collectionData(element, seed, length) {
86
+ return Array.from({
87
+ length
88
+ }, (_, i)=>firstValue(element, seed + i));
89
+ }
90
+ /**
91
+ * The [`Scenario`]s for `type` at `seed`, one per serialization *shape*, mirroring the Noir
92
+ * `OracleTestValue::oracle_test_value(seed) -> [Scenario<Self>; N]`. Throws if the type has no matching impl.
93
+ */ function scenariosForType(type, seed) {
94
+ const impl = TEST_VALUE_IMPLS.find((i)=>i.match(type));
95
+ if (!impl) {
96
+ throw new UnsynthesizableTypeError(type);
97
+ }
98
+ return impl.scenarios(type, seed);
99
+ }
100
+ /** The first (representative) test value of `type`, used for collection elements and `Option` inners. */ function firstValue(type, seed) {
101
+ return scenariosForType(type, seed)[0].value;
102
+ }
103
+ class UnsynthesizableTypeError extends Error {
104
+ constructor(type){
105
+ super(`No test-value impl for type: ${JSON.stringify(Object.keys(type))}`);
106
+ this.name = 'UnsynthesizableTypeError';
107
+ }
108
+ }
109
+ /**
110
+ * Synthesizes the scenarios for one oracle by zipping every position's [`Scenario`] list to one case per test (a
111
+ * shorter list wraps around via mod), mirroring the Noir macro. Returns `undefined` if any param or return type is
112
+ * unsynthesizable (structs, ephemeral arrays).
113
+ */ function synthesizeScenarios(entry) {
114
+ try {
115
+ return synthesizeScenariosOrThrow(entry);
116
+ } catch (e) {
117
+ if (e instanceof UnsynthesizableTypeError) {
118
+ return undefined;
119
+ }
120
+ throw e;
121
+ }
122
+ }
123
+ function synthesizeScenariosOrThrow(entry) {
124
+ const params = entry.params.map((param, index)=>({
125
+ name: param.name,
126
+ scenarios: scenariosForType(param.type, SEED_BASE + index)
127
+ }));
128
+ // The return's seed is the slot right after the last parameter, so its value is distinct from every parameter.
129
+ const returnScenarios = entry.returnType === undefined ? undefined : scenariosForType(entry.returnType, SEED_BASE + entry.params.length);
130
+ // Positions with more than one scenario drive the test count; their names are zipped together (joined with `+`) per
131
+ // test, matching the announcements the Noir tests emit and the resolver joins.
132
+ const positions = [
133
+ ...params.map((p)=>p.scenarios),
134
+ ...returnScenarios !== undefined ? [
135
+ returnScenarios
136
+ ] : []
137
+ ];
138
+ const namedPositions = positions.filter((s)=>s.length > 1);
139
+ const testCount = Math.max(1, ...positions.map((s)=>s.length));
140
+ const scenarios = [];
141
+ for(let index = 0; index < testCount; index++){
142
+ const inputs = {};
143
+ for (const { name, scenarios: cases } of params){
144
+ inputs[name] = cases[index % cases.length].value;
145
+ }
146
+ const output = returnScenarios === undefined ? undefined : returnScenarios[index % returnScenarios.length].value;
147
+ const scenario = namedPositions.length === 0 ? undefined : namedPositions.map((cases)=>cases[index % cases.length].name).join('+');
148
+ scenarios.push({
149
+ scenario,
150
+ inputs,
151
+ output
152
+ });
153
+ }
154
+ return scenarios;
155
+ }
156
+ function isArray(type) {
157
+ return 'kind' in type && type.kind === 'array';
158
+ }
159
+ function isBoundedVec(type) {
160
+ return 'kind' in type && type.kind === 'bounded-vec';
161
+ }
162
+ function isOption(type) {
163
+ return 'kind' in type && type.kind === 'option';
164
+ }
@@ -0,0 +1,9 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import { OracleTestResolver } from './resolver.js';
3
+ /** Creates an RPC server backed by the oracle test resolver. */
4
+ export declare function createOracleTestRpcServer(logger: Logger): {
5
+ server: import("@aztec/foundation/json-rpc/server").SafeJsonRpcServer;
6
+ resolver: OracleTestResolver;
7
+ };
8
+ export { OracleTestResolver } from './resolver.js';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcmFjbGUvdGVzdC1yZXNvbHZlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVFwRCxPQUFPLEVBQTRCLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBd0I3RSxnRUFBZ0U7QUFDaEUsd0JBQWdCLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxNQUFNOzs7RUFNdkQ7QUFFRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/oracle/test-resolver/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQpD,OAAO,EAA4B,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAwB7E,gEAAgE;AAChE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM;;;EAMvD;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,32 @@
1
+ /* eslint-disable camelcase */ import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
2
+ import { zodFor } from '@aztec/stdlib/schemas';
3
+ import { z } from 'zod';
4
+ import { ForeignCallArgsSchema, ForeignCallResultSchema } from '../../utils/encoding.js';
5
+ import { TXE_ORACLE_REGISTRY } from '../txe_oracle_registry.js';
6
+ import { OracleTestResolver } from './resolver.js';
7
+ const OracleTestCallInputSchema = zodFor()(z.object({
8
+ session_id: z.number().nonnegative(),
9
+ function: z.string(),
10
+ root_path: z.string(),
11
+ package_name: z.string(),
12
+ inputs: ForeignCallArgsSchema
13
+ }));
14
+ const OracleTestRpcHandlerSchema = {
15
+ resolve_foreign_call: z.function({
16
+ input: z.tuple([
17
+ OracleTestCallInputSchema
18
+ ]),
19
+ output: ForeignCallResultSchema
20
+ })
21
+ };
22
+ /** Creates an RPC server backed by the oracle test resolver. */ export function createOracleTestRpcServer(logger) {
23
+ const resolver = OracleTestResolver.fromRegistry(TXE_ORACLE_REGISTRY, logger);
24
+ const server = createSafeJsonRpcServer(resolver, OracleTestRpcHandlerSchema, {
25
+ http200OnError: true
26
+ });
27
+ return {
28
+ server,
29
+ resolver
30
+ };
31
+ }
32
+ export { OracleTestResolver } from './resolver.js';
@@ -0,0 +1,48 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import { BoundedVec, type OracleRegistryEntry } from '@aztec/pxe/simulator';
3
+ import type { ForeignCallArgs, ForeignCallResult } from '../../utils/encoding.js';
4
+ export declare const SET_SCENARIO_ENTRY: OracleRegistryEntry<[import("@aztec/pxe/simulator").NamedValue<"name", BoundedVec<number>>], void>;
5
+ export type OracleTestCallInput = {
6
+ session_id: number;
7
+ function: string;
8
+ root_path: string;
9
+ package_name: string;
10
+ inputs: ForeignCallArgs;
11
+ };
12
+ /**
13
+ * One test case for an oracle: the expected deserialized `inputs`, the `output` to serialize back to Noir, and the
14
+ * `scenario` name (`some`/`none`) the matching Noir test announces. Single-scenario oracles leave `scenario` undefined
15
+ * and are selected automatically.
16
+ */
17
+ export interface OracleTestScenario {
18
+ scenario?: string;
19
+ inputs: Record<string, unknown>;
20
+ output: unknown;
21
+ }
22
+ /**
23
+ * Oracle resolver for serialization tests. Selects a fixture scenario, verifies that the received inputs match, and
24
+ * returns the corresponding fixture output.
25
+ *
26
+ * For oracles with a single scenario, it is selected automatically. For oracles with multiple scenarios, the Noir test
27
+ * announces the scenario by name via the `aztec_oracle_test_set_scenario` meta-oracle before calling the real oracle.
28
+ */
29
+ export declare class OracleTestResolver {
30
+ #private;
31
+ private readonly registry;
32
+ private readonly fixtures;
33
+ private readonly calledOracles;
34
+ private readonly pendingScenario;
35
+ private readonly logger;
36
+ constructor(registry: Record<string, OracleRegistryEntry>, fixtures: Record<string, OracleTestScenario[]>, logger?: Logger);
37
+ /**
38
+ * Builds a resolver whose fixtures are the default scenarios synthesized from the registry's type mappings. The
39
+ * matching Noir serialization tests are auto-generated by `#[auto_serialization_test]` from the same convention.
40
+ */
41
+ static fromRegistry(registry: Record<string, OracleRegistryEntry>, logger?: Logger): OracleTestResolver;
42
+ resolve_foreign_call(callData: OracleTestCallInput): Promise<ForeignCallResult>;
43
+ /** Returns oracles that have a fixture defined but were never called during testing. */
44
+ getUncalledFixtures(): string[];
45
+ /** Returns oracles in the registry that have no fixture defined at all. */
46
+ getMissingFixtures(): string[];
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcmFjbGUvdGVzdC1yZXNvbHZlci9yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRCxPQUFPLEVBQXFCLFVBQVUsRUFBVSxLQUFLLG1CQUFtQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFFbEgsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFNbEYsZUFBTyxNQUFNLGtCQUFrQixvR0FBcUUsQ0FBQztBQUVyRyxNQUFNLE1BQU0sbUJBQW1CLEdBQUc7SUFDaEMsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsWUFBWSxFQUFFLE1BQU0sQ0FBQztJQUNyQixNQUFNLEVBQUUsZUFBZSxDQUFDO0NBQ3pCLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxXQUFXLGtCQUFrQjtJQUNqQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEMsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUNqQjtBQUVEOzs7Ozs7R0FNRztBQUNILHFCQUFhLGtCQUFrQjs7SUFNM0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTtJQU4zQixPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBcUI7SUFDbkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQTZCO0lBQzdELE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFTO0lBRWhDLFlBQ21CLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLEVBQzdDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFDL0QsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUdoQjtJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEdBQUcsa0JBQWtCLENBRXRHO0lBR0ssb0JBQW9CLENBQUMsUUFBUSxFQUFFLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQTRCcEY7SUFFRCx3RkFBd0Y7SUFDeEYsbUJBQW1CLElBQUksTUFBTSxFQUFFLENBRTlCO0lBRUQsMkVBQTJFO0lBQzNFLGtCQUFrQixJQUFJLE1BQU0sRUFBRSxDQUU3QjtDQXNFRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/oracle/test-resolver/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAqB,UAAU,EAAU,KAAK,mBAAmB,EAAa,MAAM,sBAAsB,CAAC;AAElH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMlF,eAAO,MAAM,kBAAkB,oGAAqE,CAAC;AAErG,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,qBAAa,kBAAkB;;IAM3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,YACmB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAC/D,MAAM,CAAC,EAAE,MAAM,EAGhB;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAEtG;IAGK,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4BpF;IAED,wFAAwF;IACxF,mBAAmB,IAAI,MAAM,EAAE,CAE9B;IAED,2EAA2E;IAC3E,kBAAkB,IAAI,MAAM,EAAE,CAE7B;CAsEF"}
@@ -0,0 +1,144 @@
1
+ /* eslint-disable camelcase */ import { createLogger } from '@aztec/foundation/log';
2
+ import { withoutHexPrefix } from '@aztec/foundation/string';
3
+ import { BOUNDED_VEC, BYTE, BoundedVec, Option, makeEntry } from '@aztec/pxe/simulator';
4
+ import { toInputSlots } from '../txe_oracle_registry.js';
5
+ import { synthesizeDefaultFixtures } from './default_fixtures.js';
6
+ /** Name of the meta-oracle that Noir tests call to announce the next call's scenario by name. */ const SET_SCENARIO_ORACLE = 'aztec_oracle_test_set_scenario';
7
+ export const SET_SCENARIO_ENTRY = makeEntry({
8
+ params: [
9
+ {
10
+ name: 'name',
11
+ type: BOUNDED_VEC(BYTE)
12
+ }
13
+ ]
14
+ });
15
+ /**
16
+ * Oracle resolver for serialization tests. Selects a fixture scenario, verifies that the received inputs match, and
17
+ * returns the corresponding fixture output.
18
+ *
19
+ * For oracles with a single scenario, it is selected automatically. For oracles with multiple scenarios, the Noir test
20
+ * announces the scenario by name via the `aztec_oracle_test_set_scenario` meta-oracle before calling the real oracle.
21
+ */ export class OracleTestResolver {
22
+ registry;
23
+ fixtures;
24
+ calledOracles;
25
+ pendingScenario;
26
+ logger;
27
+ constructor(registry, fixtures, logger){
28
+ this.registry = registry;
29
+ this.fixtures = fixtures;
30
+ this.calledOracles = new Set();
31
+ this.pendingScenario = new Map();
32
+ this.logger = logger ?? createLogger('txe:test-resolver');
33
+ }
34
+ /**
35
+ * Builds a resolver whose fixtures are the default scenarios synthesized from the registry's type mappings. The
36
+ * matching Noir serialization tests are auto-generated by `#[auto_serialization_test]` from the same convention.
37
+ */ static fromRegistry(registry, logger) {
38
+ return new OracleTestResolver(registry, synthesizeDefaultFixtures(registry), logger);
39
+ }
40
+ // eslint-disable-next-line require-await
41
+ async resolve_foreign_call(callData) {
42
+ const oracleName = callData.function;
43
+ this.logger.debug('Resolving oracle', {
44
+ oracleName
45
+ });
46
+ if (oracleName === SET_SCENARIO_ORACLE) {
47
+ return this.#handleSetScenario(callData);
48
+ }
49
+ if (!(oracleName in this.registry)) {
50
+ throw new Error(`Oracle '${oracleName}' not found in registry`);
51
+ }
52
+ const entry = this.registry[oracleName];
53
+ const scenarios = this.fixtures[oracleName];
54
+ if (!scenarios || scenarios.length === 0) {
55
+ throw new Error(`No fixture defined for oracle '${oracleName}'`);
56
+ }
57
+ const match = this.#selectScenario(callData.session_id, oracleName, scenarios);
58
+ this.#verifyInputs(callData.inputs, entry, match, oracleName);
59
+ this.calledOracles.add(oracleName);
60
+ this.logger.debug('Verified scenario for oracle', {
61
+ oracleName
62
+ });
63
+ const outputSlots = entry.serializeReturn(match.output);
64
+ return {
65
+ values: outputSlots.map((slot)=>Array.isArray(slot) ? slot.map(withoutHexPrefix) : withoutHexPrefix(slot))
66
+ };
67
+ }
68
+ /** Returns oracles that have a fixture defined but were never called during testing. */ getUncalledFixtures() {
69
+ return Object.keys(this.fixtures).filter((name)=>!this.calledOracles.has(name));
70
+ }
71
+ /** Returns oracles in the registry that have no fixture defined at all. */ getMissingFixtures() {
72
+ return Object.keys(this.registry).filter((name)=>!(name in this.fixtures));
73
+ }
74
+ /**
75
+ * Records the scenario name for the session's next oracle call. A test announces once per multi-scenario position
76
+ * (param or return), so successive announcements accumulate joined with `+`, matching the names the fixture
77
+ * synthesizer builds (e.g. `some+some`).
78
+ */ #handleSetScenario(callData) {
79
+ const name = decodeScenarioName(callData.inputs);
80
+ const existing = this.pendingScenario.get(callData.session_id);
81
+ const scenario = existing !== undefined ? `${existing}+${name}` : name;
82
+ this.logger.debug('Setting scenario for next oracle call', {
83
+ sessionId: callData.session_id,
84
+ scenario
85
+ });
86
+ this.pendingScenario.set(callData.session_id, scenario);
87
+ return {
88
+ values: []
89
+ };
90
+ }
91
+ /** Selects the fixture by the announced scenario name (for multi-scenario oracles) or returns the single fixture. */ #selectScenario(sessionId, oracleName, fixtures) {
92
+ const announced = this.pendingScenario.get(sessionId);
93
+ if (announced !== undefined) {
94
+ this.pendingScenario.delete(sessionId);
95
+ const match = fixtures.find((s)=>s.scenario === announced);
96
+ if (!match) {
97
+ const available = fixtures.map((s)=>s.scenario ?? '<default>').join(', ');
98
+ throw new Error(`No scenario '${announced}' for oracle '${oracleName}'. Available: ${available}`);
99
+ }
100
+ return match;
101
+ }
102
+ if (fixtures.length === 1) {
103
+ return fixtures[0];
104
+ }
105
+ throw new Error(`Oracle '${oracleName}' has ${fixtures.length} scenarios but none was announced before the call.`);
106
+ }
107
+ /** Deserializes actual inputs and verifies they match the scenario's expected inputs. */ #verifyInputs(rawInputs, entry, fixture, oracleName) {
108
+ const expectedInputs = fixture.inputs;
109
+ if (Object.keys(expectedInputs).length === 0) {
110
+ return;
111
+ }
112
+ const scenarioLabel = fixture.scenario ? ` (scenario '${fixture.scenario}')` : '';
113
+ const named = entry.deserializeParams(toInputSlots(rawInputs));
114
+ for (const param of named){
115
+ if (!(param.name in expectedInputs)) {
116
+ throw new Error(`Unexpected param '${param.name}' for oracle '${oracleName}'. ` + `Expected: ${Object.keys(expectedInputs).join(', ')}`);
117
+ }
118
+ if (!valuesEqual(param.value, expectedInputs[param.name])) {
119
+ throw new Error(`Input mismatch for oracle '${oracleName}'${scenarioLabel}: ` + `param '${param.name}' expected ${String(expectedInputs[param.name])} ` + `but got ${String(param.value)}. ${versionBumpHint(oracleName)}`);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * Decodes the scenario name announced by `set_oracle_test_scenario`, whose argument is a `BoundedVec<u8, N>`
126
+ */ function decodeScenarioName(inputs) {
127
+ const [{ value }] = SET_SCENARIO_ENTRY.deserializeParams(toInputSlots(inputs));
128
+ return String.fromCharCode(...value.data);
129
+ }
130
+ function valuesEqual(actual, expected) {
131
+ if (actual instanceof Option && expected instanceof Option) {
132
+ return actual.equals(expected, valuesEqual);
133
+ }
134
+ if (actual instanceof BoundedVec && expected instanceof BoundedVec) {
135
+ return actual.equals(expected, valuesEqual);
136
+ }
137
+ if (Array.isArray(actual) && Array.isArray(expected)) {
138
+ return actual.length === expected.length && actual.every((v, i)=>valuesEqual(v, expected[i]));
139
+ }
140
+ return String(actual) === String(expected);
141
+ }
142
+ function versionBumpHint(oracle) {
143
+ return oracle.startsWith('aztec_txe_') || oracle.startsWith('aztec_avm_') ? 'If you changed this oracle, consider bumping the TXE oracle version in yarn-project/txe/src/oracle/txe_oracle_version.ts.' : 'If you changed this oracle, consider bumping the PXE oracle version in yarn-project/pxe/src/oracle_version.ts.';
144
+ }
@@ -1,5 +1,6 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { ContractStore } from '@aztec/pxe/server';
3
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
5
  import type { L2Block } from '@aztec/stdlib/block';
5
6
  import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
@@ -10,12 +11,13 @@ export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
10
11
  private forkedWorldTrees;
11
12
  private txRequestHash;
12
13
  private globalVariables;
14
+ private contractStore;
13
15
  isAvm: true;
14
16
  private logger;
15
17
  private transientUniqueNoteHashes;
16
18
  private transientSiloedNullifiers;
17
19
  private publicDataWrites;
18
- constructor(contractAddress: AztecAddress, forkedWorldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables);
20
+ constructor(contractAddress: AztecAddress, forkedWorldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables, contractStore: ContractStore);
19
21
  address(): Promise<AztecAddress>;
20
22
  sender(): Promise<AztecAddress>;
21
23
  blockNumber(): Promise<BlockNumber>;
@@ -28,7 +30,29 @@ export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
28
30
  nullifierExists(siloedNullifier: Fr): Promise<boolean>;
29
31
  storageWrite(slot: Fr, value: Fr): Promise<void>;
30
32
  storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
33
+ getContractInstanceDeployer(address: AztecAddress): Promise<{
34
+ member: Fr;
35
+ exists: boolean;
36
+ }>;
37
+ getContractInstanceClassId(address: AztecAddress): Promise<{
38
+ member: Fr;
39
+ exists: boolean;
40
+ }>;
41
+ getContractInstanceInitializationHash(address: AztecAddress): Promise<{
42
+ member: Fr;
43
+ exists: boolean;
44
+ }>;
45
+ getContractInstanceImmutablesHash(address: AztecAddress): Promise<{
46
+ member: Fr;
47
+ exists: boolean;
48
+ }>;
49
+ private getContractInstanceMember;
50
+ returndataSize(): Promise<Fr>;
51
+ returndataCopy(_rdOffset: number, _copySize: number): Promise<Fr[]>;
52
+ call(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<void>;
53
+ staticCall(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<void>;
54
+ successCopy(): Promise<boolean>;
31
55
  close(): Promise<L2Block>;
32
56
  private makeTxEffect;
33
57
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9wdWJsaWNfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3B1YmxpY19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxLQUFLLHlCQUF5QixFQUcvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxxQkFBYSxzQkFBdUIsWUFBVyxtQkFBbUI7SUFTOUQsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsZUFBZTtJQVh6QixLQUFLLE9BQWlCO0lBRXRCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBWTtJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELFlBQ1UsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQzNDLGFBQWEsRUFBRSxFQUFFLEVBQ2pCLGVBQWUsRUFBRSxlQUFlLEVBU3pDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FFL0I7SUFFRCxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUU5QjtJQUVELFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRWxDO0lBRUQsU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFM0I7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUUvQjtJQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBRXJCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFckI7SUFFSyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBR2hDO0lBRUssWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLGlCQUk5QjtJQUVLLGVBQWUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FPM0Q7SUFFSyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxpQkFVckM7SUFFSyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FxQnRFO0lBRUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FrQjlCO0lBRUQsT0FBTyxDQUFDLFlBQVk7Q0FhckIifQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9wdWJsaWNfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3B1YmxpY19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR25ELE9BQU8sRUFFTCxLQUFLLHlCQUF5QixFQUcvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxxQkFBYSxzQkFBdUIsWUFBVyxtQkFBbUI7SUFTOUQsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsZUFBZTtJQUN2QixPQUFPLENBQUMsYUFBYTtJQVp2QixLQUFLLE9BQWlCO0lBRXRCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBWTtJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELFlBQ1UsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQzNDLGFBQWEsRUFBRSxFQUFFLEVBQ2pCLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLGFBQWEsRUFBRSxhQUFh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