@aztec/stdlib 5.0.0-nightly.20260701 → 5.0.0-nightly.20260703

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 (51) hide show
  1. package/dest/block/l2_block_source.d.ts +22 -2
  2. package/dest/block/l2_block_source.d.ts.map +1 -1
  3. package/dest/block/l2_block_source.js +10 -0
  4. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +39 -0
  5. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -0
  6. package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +165 -0
  7. package/dest/block/l2_block_stream/index.d.ts +2 -1
  8. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  9. package/dest/block/l2_block_stream/index.js +1 -0
  10. package/dest/block/l2_block_stream/interfaces.d.ts +16 -2
  11. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  12. package/dest/block/l2_block_stream/interfaces.js +25 -1
  13. package/dest/block/l2_block_stream/l2_block_stream.d.ts +21 -35
  14. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  15. package/dest/block/l2_block_stream/l2_block_stream.js +5 -30
  16. package/dest/contract/contract_address.d.ts +5 -4
  17. package/dest/contract/contract_address.d.ts.map +1 -1
  18. package/dest/contract/contract_instance.d.ts +16 -2
  19. package/dest/contract/contract_instance.d.ts.map +1 -1
  20. package/dest/contract/contract_instance.js +45 -0
  21. package/dest/contract/interfaces/contract_instance.d.ts +71 -10
  22. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  23. package/dest/contract/interfaces/contract_instance.js +7 -2
  24. package/dest/contract/partial_address.d.ts +9 -3
  25. package/dest/contract/partial_address.d.ts.map +1 -1
  26. package/dest/contract/partial_address.js +8 -2
  27. package/dest/interfaces/proving-job.d.ts +70 -70
  28. package/dest/keys/derivation.d.ts +35 -5
  29. package/dest/keys/derivation.d.ts.map +1 -1
  30. package/dest/keys/derivation.js +32 -19
  31. package/dest/logs/app_tagging_secret.d.ts +11 -8
  32. package/dest/logs/app_tagging_secret.d.ts.map +1 -1
  33. package/dest/logs/app_tagging_secret.js +14 -14
  34. package/dest/logs/shared_secret_derivation.d.ts +14 -7
  35. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  36. package/dest/logs/shared_secret_derivation.js +16 -8
  37. package/dest/tx/simulated_tx.d.ts +10 -6
  38. package/dest/tx/simulated_tx.d.ts.map +1 -1
  39. package/package.json +8 -8
  40. package/src/block/l2_block_source.ts +41 -0
  41. package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +207 -0
  42. package/src/block/l2_block_stream/index.ts +1 -0
  43. package/src/block/l2_block_stream/interfaces.ts +35 -1
  44. package/src/block/l2_block_stream/l2_block_stream.ts +35 -62
  45. package/src/contract/contract_address.ts +4 -3
  46. package/src/contract/contract_instance.ts +62 -1
  47. package/src/contract/interfaces/contract_instance.ts +26 -8
  48. package/src/contract/partial_address.ts +8 -2
  49. package/src/keys/derivation.ts +53 -16
  50. package/src/logs/app_tagging_secret.ts +14 -10
  51. package/src/logs/shared_secret_derivation.ts +17 -10
@@ -3,6 +3,7 @@ import { AbortError } from '@aztec/foundation/error';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { RunningPromise } from '@aztec/foundation/running-promise';
5
5
  import { makeL2BlockId } from '../l2_block_source.js';
6
+ import { localBlockIdDiffers } from './interfaces.js';
6
7
  /** Creates a stream of events for new blocks, chain tips updates, and reorgs, out of polling an archiver or a node. */ export class L2BlockStream {
7
8
  l2BlockSource;
8
9
  localData;
@@ -129,28 +130,28 @@ import { makeL2BlockId } from '../l2_block_source.js';
129
130
  // End-of-pass reconciliation: chain-proposed fires against the pre-pass baseline (a post-prune re-read would
130
131
  // equal the source tip and suppress it), then the tiers highest-to-lowest so the finalized <= proven <=
131
132
  // checkpointed <= proposed invariant holds mid-pass.
132
- if (this.blockTipDiffers(prePassProposed, sourceTips.proposed)) {
133
+ if (localBlockIdDiffers(prePassProposed, sourceTips.proposed)) {
133
134
  await this.emitEvent({
134
135
  type: 'chain-proposed',
135
136
  block: sourceTips.proposed
136
137
  });
137
138
  }
138
139
  const reconcileTips = pruned ? await this.localData.getL2Tips() : localTips;
139
- if (!this.opts.ignoreCheckpoints && this.tipDiffers(reconcileTips.checkpointed?.block, sourceTips.checkpointed)) {
140
+ if (!this.opts.ignoreCheckpoints && localBlockIdDiffers(reconcileTips.checkpointed?.block, sourceTips.checkpointed.block)) {
140
141
  await this.emitEvent({
141
142
  type: 'chain-checkpointed',
142
143
  block: sourceTips.checkpointed.block,
143
144
  checkpoint: sourceTips.checkpointed.checkpoint
144
145
  });
145
146
  }
146
- if (reconcileTips.proven !== undefined && this.tipDiffers(reconcileTips.proven.block, sourceTips.proven)) {
147
+ if (reconcileTips.proven !== undefined && localBlockIdDiffers(reconcileTips.proven.block, sourceTips.proven.block)) {
147
148
  await this.emitEvent({
148
149
  type: 'chain-proven',
149
150
  block: sourceTips.proven.block,
150
151
  checkpoint: sourceTips.proven.checkpoint
151
152
  });
152
153
  }
153
- if (reconcileTips.finalized !== undefined && this.tipDiffers(reconcileTips.finalized.block, sourceTips.finalized)) {
154
+ if (reconcileTips.finalized !== undefined && localBlockIdDiffers(reconcileTips.finalized.block, sourceTips.finalized.block)) {
154
155
  await this.emitEvent({
155
156
  type: 'chain-finalized',
156
157
  block: sourceTips.finalized.block,
@@ -230,32 +231,6 @@ import { makeL2BlockId } from '../l2_block_source.js';
230
231
  return true;
231
232
  }
232
233
  /**
233
- * Returns whether the source tip differs from the local one and therefore warrants a tier event. Compares block
234
- * number and, when both hashes are known, block hash. The hash comparison is skipped when the local hash is
235
- * undefined or missing: world-state legitimately reports `undefined` hashes for tips ahead of its synced range,
236
- * and comparing against an undefined hash would re-emit the event on every poll.
237
- */ tipDiffers(localBlock, sourceTip) {
238
- return this.blockTipDiffers(localBlock, sourceTip.block);
239
- }
240
- /**
241
- * Block-only variant of {@link tipDiffers} for the proposed tip (an {@link L2BlockId}, with no checkpoint). Compares
242
- * block number and, when the local hash is known, block hash. The hash comparison is skipped when the local hash is
243
- * undefined: world-state reports `undefined` for its proposed hash, and a strict comparison would re-emit
244
- * `chain-proposed` on every poll for it. ({@link L2TipsStoreBase} consumers always carry a hash, so the leniency is
245
- * inert for them.)
246
- */ blockTipDiffers(localBlock, sourceBlock) {
247
- if (localBlock === undefined) {
248
- return true;
249
- }
250
- if (sourceBlock.number !== localBlock.number) {
251
- return true;
252
- }
253
- if (localBlock.hash === undefined) {
254
- return false;
255
- }
256
- return sourceBlock.hash !== localBlock.hash;
257
- }
258
- /**
259
234
  * Returns whether the source and local agree on the block hash at a given height.
260
235
  * @param blockNumber - The block number to test.
261
236
  * @param args - A cache of data already requested from source (to avoid re-requesting it) and the source's
@@ -1,7 +1,8 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { type FunctionAbi, FunctionSelector } from '../abi/index.js';
3
3
  import type { AztecAddress } from '../aztec-address/index.js';
4
- import type { ContractInstance } from './interfaces/contract_instance.js';
4
+ import type { ContractInstance, ContractInstancePreimage } from './interfaces/contract_instance.js';
5
+ import type { PartialAddress } from './partial_address.js';
5
6
  /**
6
7
  * Returns the deployment address for a given contract instance.
7
8
  * ```
@@ -11,7 +12,7 @@ import type { ContractInstance } from './interfaces/contract_instance.js';
11
12
  * ```
12
13
  * @param instance - A contract instance for which to calculate the deployment address.
13
14
  */
14
- export declare function computeContractAddressFromInstance(instance: ContractInstance | ({
15
+ export declare function computeContractAddressFromInstance(instance: ContractInstancePreimage | ({
15
16
  originalContractClassId: Fr;
16
17
  saltedInitializationHash: Fr;
17
18
  } & Pick<ContractInstance, 'publicKeys'>)): Promise<AztecAddress>;
@@ -22,7 +23,7 @@ export declare function computeContractAddressFromInstance(instance: ContractIns
22
23
  export declare function computePartialAddress(instance: Pick<ContractInstance, 'originalContractClassId' | 'initializationHash' | 'salt' | 'deployer' | 'immutablesHash'> | {
23
24
  originalContractClassId: Fr;
24
25
  saltedInitializationHash: Fr;
25
- }): Promise<Fr>;
26
+ }): Promise<PartialAddress>;
26
27
  /**
27
28
  * Computes the salted initialization hash for an address, defined as the hash of the salt and initialization hash.
28
29
  * @param instance - Contract instance for which to compute the salted initialization hash.
@@ -42,4 +43,4 @@ export declare function computeInitializationHash(initFn: FunctionAbi | undefine
42
43
  * @returns The hash.
43
44
  */
44
45
  export declare function computeInitializationHashFromEncodedArgs(initFn: FunctionSelector, encodedArgs: Fr[]): Promise<Fr>;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfYWRkcmVzcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L2NvbnRyYWN0X2FkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSTFFOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLGtDQUFrQyxDQUN0RCxRQUFRLEVBQ0osZ0JBQWdCLEdBQ2hCLENBQUM7SUFBRSx1QkFBdUIsRUFBRSxFQUFFLENBQUM7SUFBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUE7Q0FBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUN6RyxPQUFPLENBQUMsWUFBWSxDQUFDLENBR3ZCO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQXNCLHFCQUFxQixDQUN6QyxRQUFRLEVBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUFFLHlCQUF5QixHQUFHLG9CQUFvQixHQUFHLE1BQU0sR0FBRyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsR0FDakg7SUFBRSx1QkFBdUIsRUFBRSxFQUFFLENBQUM7SUFBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUE7Q0FBRSxHQUNoRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBVWI7QUFFRDs7O0dBR0c7QUFDSCx3QkFBZ0IsK0JBQStCLENBQzdDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLEdBQUcsTUFBTSxHQUFHLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUM5RixPQUFPLENBQUMsRUFBRSxDQUFDLENBS2I7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQix5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQU96RztBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLHdDQUF3QyxDQUM1RCxNQUFNLEVBQUUsZ0JBQWdCLEVBQ3hCLFdBQVcsRUFBRSxFQUFFLEVBQUUsR0FDaEIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUdiIn0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfYWRkcmVzcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L2NvbnRyYWN0X2FkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTNEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLGtDQUFrQyxDQUN0RCxRQUFRLEVBQ0osd0JBQXdCLEdBQ3hCLENBQUM7SUFBRSx1QkFBdUIsRUFBRSxFQUFFLENBQUM7SUFBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUE7Q0FBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUN6RyxPQUFPLENBQUMsWUFBWSxDQUFDLENBR3ZCO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQXNCLHFCQUFxQixDQUN6QyxRQUFRLEVBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUFFLHlCQUF5QixHQUFHLG9CQUFvQixHQUFHLE1BQU0sR0FBRyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsR0FDakg7SUFBRSx1QkFBdUIsRUFBRSxFQUFFLENBQUM7SUFBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUE7Q0FBRSxHQUNoRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBVXpCO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQWdCLCtCQUErQixDQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixHQUFHLE1BQU0sR0FBRyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsR0FDOUYsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUtiO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBc0IseUJBQXlCLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FPekc7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQix3Q0FBd0MsQ0FDNUQsTUFBTSxFQUFFLGdCQUFnQixFQUN4QixXQUFXLEVBQUUsRUFBRSxFQUFFLEdBQ2hCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FHYiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"contract_address.d.ts","sourceRoot":"","sources":["../../src/contract/contract_address.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,KAAK,WAAW,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAI1E;;;;;;;;GAQG;AACH,wBAAsB,kCAAkC,CACtD,QAAQ,EACJ,gBAAgB,GAChB,CAAC;IAAE,uBAAuB,EAAE,EAAE,CAAC;IAAC,wBAAwB,EAAE,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,GACzG,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EACJ,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,GAAG,oBAAoB,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,CAAC,GACjH;IAAE,uBAAuB,EAAE,EAAE,CAAC;IAAC,wBAAwB,EAAE,EAAE,CAAA;CAAE,GAChE,OAAO,CAAC,EAAE,CAAC,CAUb;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,CAAC,GAC9F,OAAO,CAAC,EAAE,CAAC,CAKb;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAOzG;AAED;;;;;GAKG;AACH,wBAAsB,wCAAwC,CAC5D,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,EAAE,EAAE,GAChB,OAAO,CAAC,EAAE,CAAC,CAGb"}
1
+ {"version":3,"file":"contract_address.d.ts","sourceRoot":"","sources":["../../src/contract/contract_address.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,KAAK,WAAW,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D;;;;;;;;GAQG;AACH,wBAAsB,kCAAkC,CACtD,QAAQ,EACJ,wBAAwB,GACxB,CAAC;IAAE,uBAAuB,EAAE,EAAE,CAAC;IAAC,wBAAwB,EAAE,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,GACzG,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EACJ,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,GAAG,oBAAoB,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,CAAC,GACjH;IAAE,uBAAuB,EAAE,EAAE,CAAC;IAAC,wBAAwB,EAAE,EAAE,CAAA;CAAE,GAChE,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,MAAM,GAAG,UAAU,GAAG,gBAAgB,CAAC,GAC9F,OAAO,CAAC,EAAE,CAAC,CAKb;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAOzG;AAED;;;;;GAKG;AACH,wBAAsB,wCAAwC,CAC5D,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,EAAE,EAAE,GAChB,OAAO,CAAC,EAAE,CAAC,CAGb"}
@@ -4,7 +4,7 @@ import type { FieldsOf } from '@aztec/foundation/types';
4
4
  import { type ContractArtifact, type FunctionAbi } from '../abi/index.js';
5
5
  import { AztecAddress } from '../aztec-address/index.js';
6
6
  import { PublicKeys } from '../keys/public_keys.js';
7
- import type { ContractInstance, ContractInstanceWithAddress } from './interfaces/contract_instance.js';
7
+ import type { ContractInstance, ContractInstancePreimage, ContractInstancePreimageWithAddress, ContractInstanceWithAddress } from './interfaces/contract_instance.js';
8
8
  export type ContractInstantiationData = {
9
9
  constructorArtifact?: FunctionAbi | string;
10
10
  constructorArgs?: any[];
@@ -31,6 +31,20 @@ export declare class SerializableContractInstance {
31
31
  static random(opts?: Partial<FieldsOf<ContractInstance>>): Promise<SerializableContractInstance>;
32
32
  static default(): SerializableContractInstance;
33
33
  }
34
+ export declare class SerializableContractInstancePreimage {
35
+ readonly version: 2;
36
+ readonly salt: Fr;
37
+ readonly deployer: AztecAddress;
38
+ readonly originalContractClassId: Fr;
39
+ readonly initializationHash: Fr;
40
+ readonly immutablesHash: Fr;
41
+ readonly publicKeys: PublicKeys;
42
+ constructor(instance: ContractInstancePreimage);
43
+ toBuffer(): Buffer<ArrayBufferLike>;
44
+ /** Returns a copy of this object with its address included. */
45
+ withAddress(address: AztecAddress): ContractInstancePreimageWithAddress;
46
+ static fromBuffer(bufferOrReader: Buffer | BufferReader): SerializableContractInstancePreimage;
47
+ }
34
48
  /**
35
49
  * Generates a Contract Instance from some instantiation params.
36
50
  * @param artifact - The account contract build artifact.
@@ -38,4 +52,4 @@ export declare class SerializableContractInstance {
38
52
  * @returns - The contract instance
39
53
  */
40
54
  export declare function getContractInstanceFromInstantiationParams(artifact: ContractArtifact, opts: ContractInstantiationData): Promise<ContractInstanceWithAddress>;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jb250cmFjdF9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBaUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBS2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU1wRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSXZHLE1BQU0sTUFBTSx5QkFBeUIsR0FBRztJQUN0QyxtQkFBbUIsQ0FBQyxFQUFFLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDM0MsZUFBZSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDM0IsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNULFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUN4QixRQUFRLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDeEIsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDO0NBQ3JCLENBQUM7QUFFRixxQkFBYSw0QkFBNEI7SUFDdkMsU0FBZ0IsT0FBTyxJQUFXO0lBQ2xDLFNBQWdCLElBQUksRUFBRSxFQUFFLENBQUM7SUFDekIsU0FBZ0IsUUFBUSxFQUFFLFlBQVksQ0FBQztJQUN2QyxTQUFnQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7SUFDM0MsU0FBZ0IsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO0lBQzVDLFNBQWdCLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztJQUN2QyxTQUFnQixjQUFjLEVBQUUsRUFBRSxDQUFDO0lBQ25DLFNBQWdCLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFFdkMsWUFBWSxRQUFRLEVBQUUsZ0JBQWdCLEVBV3JDO0lBRU0sUUFBUSw0QkFXZDtJQUVELCtEQUErRDtJQUMvRCxXQUFXLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRywyQkFBMkIsQ0FFOUQ7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxNQUFNLEdBQUcsWUFBWSxnQ0FZdEQ7SUFFRCxPQUFhLE1BQU0sQ0FBQyxJQUFJLEdBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFNLHlDQVlqRTtJQUVELE1BQU0sQ0FBQyxPQUFPLGlDQVdiO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQiwwQ0FBMEMsQ0FDOUQsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixJQUFJLEVBQUUseUJBQXlCLEdBQzlCLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQTJCdEMifQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jb250cmFjdF9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBaUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBS2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU1wRCxPQUFPLEtBQUssRUFDVixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLG1DQUFtQyxFQUNuQywyQkFBMkIsRUFDNUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUkzQyxNQUFNLE1BQU0seUJBQXlCLEdBQUc7SUFDdEMsbUJBQW1CLENBQUMsRUFBRSxXQUFXLEdBQUcsTUFBTSxDQUFDO0lBQzNDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzNCLElBQUksRUFBRSxFQUFFLENBQUM7SUFDVCxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDeEIsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDO0lBQ3hCLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztDQUNyQixDQUFDO0FBRUYscUJBQWEsNEJBQTRCO0lBQ3ZDLFNBQWdCLE9BQU8sSUFBVztJQUNsQyxTQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3pCLFNBQWdCLFFBQVEsRUFBRSxZQUFZLENBQUM7SUFDdkMsU0FBZ0Isc0JBQXNCLEVBQUUsRUFBRSxDQUFDO0lBQzNDLFNBQWdCLHVCQUF1QixFQUFFLEVBQUUsQ0FBQztJQUM1QyxTQUFnQixrQkFBa0IsRUFBRSxFQUFFLENBQUM7SUFDdkMsU0FBZ0IsY0FBYyxFQUFFLEVBQUUsQ0FBQztJQUNuQyxTQUFnQixVQUFVLEVBQUUsVUFBVSxDQUFDO0lBRXZDLFlBQVksUUFBUSxFQUFFLGdCQUFnQixFQVdyQztJQUVNLFFBQVEsNEJBV2Q7SUFFRCwrREFBK0Q7SUFDL0QsV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsMkJBQTJCLENBRTlEO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxHQUFHLFlBQVksZ0NBWXREO0lBRUQsT0FBYSxNQUFNLENBQUMsSUFBSSxHQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBTSx5Q0FZakU7SUFFRCxNQUFNLENBQUMsT0FBTyxpQ0FXYjtDQUNGO0FBRUQscUJBQWEsb0NBQW9DO0lBQy9DLFNBQWdCLE9BQU8sSUFBVztJQUNsQyxTQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3pCLFNBQWdCLFFBQVEsRUFBRSxZQUFZLENBQUM7SUFDdkMsU0FBZ0IsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO0lBQzVDLFNBQWdCLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztJQUN2QyxTQUFnQixjQUFjLEVBQUUsRUFBRSxDQUFDO0lBQ25DLFNBQWdCLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFFdkMsWUFBWSxRQUFRLEVBQUUsd0JBQXdCLEVBVTdDO0lBRU0sUUFBUSw0QkFVZDtJQUVELCtEQUErRDtJQUMvRCxXQUFXLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxtQ0FBbUMsQ0FFdEU7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLG9DQUFvQyxDQWU3RjtDQUNGO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsMENBQTBDLENBQzlELFFBQVEsRUFBRSxnQkFBZ0IsRUFDMUIsSUFBSSxFQUFFLHlCQUF5QixHQUM5QixPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0EyQnRDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"contract_instance.d.ts","sourceRoot":"","sources":["../../src/contract/contract_instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAiC,MAAM,6BAA6B,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAKjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAIvG,MAAM,MAAM,yBAAyB,GAAG;IACtC,mBAAmB,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3C,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,EAAE,CAAC;IACT,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,cAAc,CAAC,EAAE,EAAE,CAAC;CACrB,CAAC;AAEF,qBAAa,4BAA4B;IACvC,SAAgB,OAAO,IAAW;IAClC,SAAgB,IAAI,EAAE,EAAE,CAAC;IACzB,SAAgB,QAAQ,EAAE,YAAY,CAAC;IACvC,SAAgB,sBAAsB,EAAE,EAAE,CAAC;IAC3C,SAAgB,uBAAuB,EAAE,EAAE,CAAC;IAC5C,SAAgB,kBAAkB,EAAE,EAAE,CAAC;IACvC,SAAgB,cAAc,EAAE,EAAE,CAAC;IACnC,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,YAAY,QAAQ,EAAE,gBAAgB,EAWrC;IAEM,QAAQ,4BAWd;IAED,+DAA+D;IAC/D,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,2BAA2B,CAE9D;IAED,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,gCAYtD;IAED,OAAa,MAAM,CAAC,IAAI,GAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAM,yCAYjE;IAED,MAAM,CAAC,OAAO,iCAWb;CACF;AAED;;;;;GAKG;AACH,wBAAsB,0CAA0C,CAC9D,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,2BAA2B,CAAC,CA2BtC"}
1
+ {"version":3,"file":"contract_instance.d.ts","sourceRoot":"","sources":["../../src/contract/contract_instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAiC,MAAM,6BAA6B,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAKjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMpD,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EACxB,mCAAmC,EACnC,2BAA2B,EAC5B,MAAM,mCAAmC,CAAC;AAI3C,MAAM,MAAM,yBAAyB,GAAG;IACtC,mBAAmB,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3C,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,EAAE,CAAC;IACT,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,cAAc,CAAC,EAAE,EAAE,CAAC;CACrB,CAAC;AAEF,qBAAa,4BAA4B;IACvC,SAAgB,OAAO,IAAW;IAClC,SAAgB,IAAI,EAAE,EAAE,CAAC;IACzB,SAAgB,QAAQ,EAAE,YAAY,CAAC;IACvC,SAAgB,sBAAsB,EAAE,EAAE,CAAC;IAC3C,SAAgB,uBAAuB,EAAE,EAAE,CAAC;IAC5C,SAAgB,kBAAkB,EAAE,EAAE,CAAC;IACvC,SAAgB,cAAc,EAAE,EAAE,CAAC;IACnC,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,YAAY,QAAQ,EAAE,gBAAgB,EAWrC;IAEM,QAAQ,4BAWd;IAED,+DAA+D;IAC/D,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,2BAA2B,CAE9D;IAED,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,gCAYtD;IAED,OAAa,MAAM,CAAC,IAAI,GAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAM,yCAYjE;IAED,MAAM,CAAC,OAAO,iCAWb;CACF;AAED,qBAAa,oCAAoC;IAC/C,SAAgB,OAAO,IAAW;IAClC,SAAgB,IAAI,EAAE,EAAE,CAAC;IACzB,SAAgB,QAAQ,EAAE,YAAY,CAAC;IACvC,SAAgB,uBAAuB,EAAE,EAAE,CAAC;IAC5C,SAAgB,kBAAkB,EAAE,EAAE,CAAC;IACvC,SAAgB,cAAc,EAAE,EAAE,CAAC;IACnC,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,YAAY,QAAQ,EAAE,wBAAwB,EAU7C;IAEM,QAAQ,4BAUd;IAED,+DAA+D;IAC/D,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,mCAAmC,CAEtE;IAED,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,oCAAoC,CAe7F;CACF;AAED;;;;;GAKG;AACH,wBAAsB,0CAA0C,CAC9D,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,2BAA2B,CAAC,CA2BtC"}
@@ -75,6 +75,51 @@ export class SerializableContractInstance {
75
75
  });
76
76
  }
77
77
  }
78
+ export class SerializableContractInstancePreimage {
79
+ version = VERSION;
80
+ salt;
81
+ deployer;
82
+ originalContractClassId;
83
+ initializationHash;
84
+ immutablesHash;
85
+ publicKeys;
86
+ constructor(instance){
87
+ if (instance.version !== VERSION) {
88
+ throw new Error(`Unexpected contract class version ${instance.version}`);
89
+ }
90
+ this.salt = instance.salt;
91
+ this.deployer = instance.deployer;
92
+ this.originalContractClassId = instance.originalContractClassId;
93
+ this.initializationHash = instance.initializationHash;
94
+ this.immutablesHash = instance.immutablesHash;
95
+ this.publicKeys = instance.publicKeys;
96
+ }
97
+ toBuffer() {
98
+ return serializeToBuffer(numToUInt8(this.version), this.salt, this.deployer, this.originalContractClassId, this.initializationHash, this.immutablesHash, this.publicKeys);
99
+ }
100
+ /** Returns a copy of this object with its address included. */ withAddress(address) {
101
+ return {
102
+ ...this,
103
+ address
104
+ };
105
+ }
106
+ static fromBuffer(bufferOrReader) {
107
+ const reader = BufferReader.asReader(bufferOrReader);
108
+ const version = reader.readUInt8();
109
+ if (version !== VERSION) {
110
+ throw new Error(`Unexpected contract instance preimage version ${version}`);
111
+ }
112
+ return new SerializableContractInstancePreimage({
113
+ version: VERSION,
114
+ salt: reader.readObject(Fr),
115
+ deployer: reader.readObject(AztecAddress),
116
+ originalContractClassId: reader.readObject(Fr),
117
+ initializationHash: reader.readObject(Fr),
118
+ immutablesHash: reader.readObject(Fr),
119
+ publicKeys: reader.readObject(PublicKeys)
120
+ });
121
+ }
122
+ }
78
123
  /**
79
124
  * Generates a Contract Instance from some instantiation params.
80
125
  * @param artifact - The account contract build artifact.
@@ -4,19 +4,19 @@ import { AztecAddress } from '../../aztec-address/index.js';
4
4
  import { PublicKeys } from '../../keys/public_keys.js';
5
5
  declare const VERSION: 2;
6
6
  /**
7
- * A contract instance is a concrete deployment of a contract class. It always references a contract class,
8
- * which dictates what code it executes when called. It has state (both private and public), as well as an
9
- * address that acts as its identifier. It can be called into. It may have encryption and nullifying public keys.
7
+ * The address preimage of a contract instance: the immutable data that hashes to its address, i.e. everything a
8
+ * contract deployment commits to.
9
+ *
10
+ * Note that `originaContractClassId` is not necessarily the instance's _current_ class id, in case of upgrades: that
11
+ * one is not part of the preimage and is instead derived from chain state.
10
12
  */
11
- export interface ContractInstance {
13
+ export interface ContractInstancePreimage {
12
14
  /** Version identifier. Initially one, bumped for any changes to the contract instance struct. */
13
15
  version: typeof VERSION;
14
16
  /** User-generated pseudorandom value for uniqueness. */
15
17
  salt: Fr;
16
18
  /** Optional deployer address or zero if this was a universal deploy. */
17
19
  deployer: AztecAddress;
18
- /** Identifier of the contract class for this instance. */
19
- currentContractClassId: Fr;
20
20
  /** Identifier of the original (at deployment) contract class for this instance */
21
21
  originalContractClassId: Fr;
22
22
  /** Hash of the selector and arguments to the constructor. */
@@ -26,14 +26,24 @@ export interface ContractInstance {
26
26
  /** Public keys associated with this instance. */
27
27
  publicKeys: PublicKeys;
28
28
  }
29
+ /**
30
+ * The address preimage plus the current contract class id, which is chain-tracked state derived from the
31
+ * ContractInstanceRegistry (it equals the original class id unless the contract has been upgraded).
32
+ */
33
+ export interface ContractInstance extends ContractInstancePreimage {
34
+ /** Identifier of the contract class this instance currently runs (as of some block). */
35
+ currentContractClassId: Fr;
36
+ }
37
+ export type ContractInstancePreimageWithAddress = ContractInstancePreimage & {
38
+ address: AztecAddress;
39
+ };
29
40
  export type ContractInstanceWithAddress = ContractInstance & {
30
41
  address: AztecAddress;
31
42
  };
32
- export declare const ContractInstanceSchema: z.ZodObject<{
43
+ export declare const ContractInstancePreimageSchema: z.ZodObject<{
33
44
  version: z.ZodLiteral<2>;
34
45
  salt: import("../../schemas/index.js").ZodFor<Fr>;
35
46
  deployer: import("../../schemas/index.js").ZodFor<AztecAddress>;
36
- currentContractClassId: import("../../schemas/index.js").ZodFor<Fr>;
37
47
  originalContractClassId: import("../../schemas/index.js").ZodFor<Fr>;
38
48
  initializationHash: import("../../schemas/index.js").ZodFor<Fr>;
39
49
  immutablesHash: import("../../schemas/index.js").ZodFor<Fr>;
@@ -53,11 +63,60 @@ export declare const ContractInstanceSchema: z.ZodObject<{
53
63
  fbpkMHash: Fr;
54
64
  }>>;
55
65
  }, z.core.$strip>;
56
- export declare const ContractInstanceWithAddressSchema: z.ZodIntersection<z.ZodObject<{
66
+ export declare const ContractInstanceSchema: z.ZodIntersection<z.ZodObject<{
57
67
  version: z.ZodLiteral<2>;
58
68
  salt: import("../../schemas/index.js").ZodFor<Fr>;
59
69
  deployer: import("../../schemas/index.js").ZodFor<AztecAddress>;
70
+ originalContractClassId: import("../../schemas/index.js").ZodFor<Fr>;
71
+ initializationHash: import("../../schemas/index.js").ZodFor<Fr>;
72
+ immutablesHash: import("../../schemas/index.js").ZodFor<Fr>;
73
+ publicKeys: z.ZodPipe<z.ZodObject<{
74
+ npkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
75
+ ivpkM: z.ZodType<import("@aztec/foundation/schemas").Point, string, z.core.$ZodTypeInternals<import("@aztec/foundation/schemas").Point, string>>;
76
+ ovpkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
77
+ tpkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
78
+ mspkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
79
+ fbpkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
80
+ }, z.core.$strip>, z.ZodTransform<PublicKeys, {
81
+ npkMHash: Fr;
82
+ ivpkM: import("@aztec/foundation/schemas").Point;
83
+ ovpkMHash: Fr;
84
+ tpkMHash: Fr;
85
+ mspkMHash: Fr;
86
+ fbpkMHash: Fr;
87
+ }>>;
88
+ }, z.core.$strip>, z.ZodObject<{
60
89
  currentContractClassId: import("../../schemas/index.js").ZodFor<Fr>;
90
+ }, z.core.$strip>>;
91
+ export declare const ContractInstancePreimageWithAddressSchema: z.ZodIntersection<z.ZodObject<{
92
+ version: z.ZodLiteral<2>;
93
+ salt: import("../../schemas/index.js").ZodFor<Fr>;
94
+ deployer: import("../../schemas/index.js").ZodFor<AztecAddress>;
95
+ originalContractClassId: import("../../schemas/index.js").ZodFor<Fr>;
96
+ initializationHash: import("../../schemas/index.js").ZodFor<Fr>;
97
+ immutablesHash: import("../../schemas/index.js").ZodFor<Fr>;
98
+ publicKeys: z.ZodPipe<z.ZodObject<{
99
+ npkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
100
+ ivpkM: z.ZodType<import("@aztec/foundation/schemas").Point, string, z.core.$ZodTypeInternals<import("@aztec/foundation/schemas").Point, string>>;
101
+ ovpkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
102
+ tpkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
103
+ mspkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
104
+ fbpkMHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
105
+ }, z.core.$strip>, z.ZodTransform<PublicKeys, {
106
+ npkMHash: Fr;
107
+ ivpkM: import("@aztec/foundation/schemas").Point;
108
+ ovpkMHash: Fr;
109
+ tpkMHash: Fr;
110
+ mspkMHash: Fr;
111
+ fbpkMHash: Fr;
112
+ }>>;
113
+ }, z.core.$strip>, z.ZodObject<{
114
+ address: import("../../schemas/index.js").ZodFor<AztecAddress>;
115
+ }, z.core.$strip>>;
116
+ export declare const ContractInstanceWithAddressSchema: z.ZodIntersection<z.ZodIntersection<z.ZodObject<{
117
+ version: z.ZodLiteral<2>;
118
+ salt: import("../../schemas/index.js").ZodFor<Fr>;
119
+ deployer: import("../../schemas/index.js").ZodFor<AztecAddress>;
61
120
  originalContractClassId: import("../../schemas/index.js").ZodFor<Fr>;
62
121
  initializationHash: import("../../schemas/index.js").ZodFor<Fr>;
63
122
  immutablesHash: import("../../schemas/index.js").ZodFor<Fr>;
@@ -77,6 +136,8 @@ export declare const ContractInstanceWithAddressSchema: z.ZodIntersection<z.ZodO
77
136
  fbpkMHash: Fr;
78
137
  }>>;
79
138
  }, z.core.$strip>, z.ZodObject<{
139
+ currentContractClassId: import("../../schemas/index.js").ZodFor<Fr>;
140
+ }, z.core.$strip>>, z.ZodObject<{
80
141
  address: import("../../schemas/index.js").ZodFor<AztecAddress>;
81
142
  }, z.core.$strip>>;
82
143
  /**
@@ -90,4 +151,4 @@ export declare function contractInstanceFromPlainObject(obj: any): ContractInsta
90
151
  */
91
152
  export declare function contractInstanceWithAddressFromPlainObject(address: AztecAddress, obj: any): ContractInstanceWithAddress;
92
153
  export {};
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdC9pbnRlcmZhY2VzL2NvbnRyYWN0X2luc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHdkQsUUFBQSxNQUFNLE9BQU8sR0FBYSxDQUFDO0FBRTNCOzs7O0dBSUc7QUFDSCxNQUFNLFdBQVcsZ0JBQWdCO0lBQy9CLGlHQUFpRztJQUNqRyxPQUFPLEVBQUUsT0FBTyxPQUFPLENBQUM7SUFDeEIsd0RBQXdEO0lBQ3hELElBQUksRUFBRSxFQUFFLENBQUM7SUFDVCx3RUFBd0U7SUFDeEUsUUFBUSxFQUFFLFlBQVksQ0FBQztJQUN2QiwwREFBMEQ7SUFDMUQsc0JBQXNCLEVBQUUsRUFBRSxDQUFDO0lBQzNCLGtGQUFrRjtJQUNsRix1QkFBdUIsRUFBRSxFQUFFLENBQUM7SUFDNUIsNkRBQTZEO0lBQzdELGtCQUFrQixFQUFFLEVBQUUsQ0FBQztJQUN2QiwrREFBK0Q7SUFDL0QsY0FBYyxFQUFFLEVBQUUsQ0FBQztJQUNuQixpREFBaUQ7SUFDakQsVUFBVSxFQUFFLFVBQVUsQ0FBQztDQUN4QjtBQUVELE1BQU0sTUFBTSwyQkFBMkIsR0FBRyxnQkFBZ0IsR0FBRztJQUFFLE9BQU8sRUFBRSxZQUFZLENBQUE7Q0FBRSxDQUFDO0FBRXZGLGVBQU8sTUFBTSxzQkFBc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQVdsQyxDQUFDO0FBRUYsZUFBTyxNQUFNLGlDQUFpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFFN0MsQ0FBQztBQUVGOzs7R0FHRztBQUNILHdCQUFnQiwrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLGdCQUFnQixDQVcxRTtBQUVEOzs7R0FHRztBQUNILHdCQUFnQiwwQ0FBMEMsQ0FDeEQsT0FBTyxFQUFFLFlBQVksRUFDckIsR0FBRyxFQUFFLEdBQUcsR0FDUCwyQkFBMkIsQ0FLN0IifQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdC9pbnRlcmZhY2VzL2NvbnRyYWN0X2luc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHdkQsUUFBQSxNQUFNLE9BQU8sR0FBYSxDQUFDO0FBRTNCOzs7Ozs7R0FNRztBQUNILE1BQU0sV0FBVyx3QkFBd0I7SUFDdkMsaUdBQWlHO0lBQ2pHLE9BQU8sRUFBRSxPQUFPLE9BQU8sQ0FBQztJQUN4Qix3REFBd0Q7SUFDeEQsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNULHdFQUF3RTtJQUN4RSxRQUFRLEVBQUUsWUFBWSxDQUFDO0lBQ3ZCLGtGQUFrRjtJQUNsRix1QkFBdUIsRUFBRSxFQUFFLENBQUM7SUFDNUIsNkRBQTZEO0lBQzdELGtCQUFrQixFQUFFLEVBQUUsQ0FBQztJQUN2QiwrREFBK0Q7SUFDL0QsY0FBYyxFQUFFLEVBQUUsQ0FBQztJQUNuQixpREFBaUQ7SUFDakQsVUFBVSxFQUFFLFVBQVUsQ0FBQztDQUN4QjtBQUVEOzs7R0FHRztBQUNILE1BQU0sV0FBVyxnQkFBaUIsU0FBUSx3QkFBd0I7SUFDaEUsd0ZBQXdGO0lBQ3hGLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztDQUM1QjtBQUVELE1BQU0sTUFBTSxtQ0FBbUMsR0FBRyx3QkFBd0IsR0FBRztJQUFFLE9BQU8sRUFBRSxZQUFZLENBQUE7Q0FBRSxDQUFDO0FBRXZHLE1BQU0sTUFBTSwyQkFBMkIsR0FBRyxnQkFBZ0IsR0FBRztJQUFFLE9BQU8sRUFBRSxZQUFZLENBQUE7Q0FBRSxDQUFDO0FBRXZGLGVBQU8sTUFBTSw4QkFBOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBVTFDLENBQUM7QUFFRixlQUFPLE1BQU0sc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBRWxDLENBQUM7QUFFRixlQUFPLE1BQU0seUNBQXlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBRXJELENBQUM7QUFFRixlQUFPLE1BQU0saUNBQWlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFFN0MsQ0FBQztBQUVGOzs7R0FHRztBQUNILHdCQUFnQiwrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLGdCQUFnQixDQVcxRTtBQUVEOzs7R0FHRztBQUNILHdCQUFnQiwwQ0FBMEMsQ0FDeEQsT0FBTyxFQUFFLFlBQVksRUFDckIsR0FBRyxFQUFFLEdBQUcsR0FDUCwyQkFBMkIsQ0FLN0IifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"contract_instance.d.ts","sourceRoot":"","sources":["../../../src/contract/interfaces/contract_instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,QAAA,MAAM,OAAO,GAAa,CAAC;AAE3B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,wDAAwD;IACxD,IAAI,EAAE,EAAE,CAAC;IACT,wEAAwE;IACxE,QAAQ,EAAE,YAAY,CAAC;IACvB,0DAA0D;IAC1D,sBAAsB,EAAE,EAAE,CAAC;IAC3B,kFAAkF;IAClF,uBAAuB,EAAE,EAAE,CAAC;IAC5B,6DAA6D;IAC7D,kBAAkB,EAAE,EAAE,CAAC;IACvB,+DAA+D;IAC/D,cAAc,EAAE,EAAE,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,GAAG;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAEvF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;iBAWlC,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;kBAE7C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,GAAG,GAAG,gBAAgB,CAW1E;AAED;;;GAGG;AACH,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,GAAG,GACP,2BAA2B,CAK7B"}
1
+ {"version":3,"file":"contract_instance.d.ts","sourceRoot":"","sources":["../../../src/contract/interfaces/contract_instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,QAAA,MAAM,OAAO,GAAa,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,iGAAiG;IACjG,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,wDAAwD;IACxD,IAAI,EAAE,EAAE,CAAC;IACT,wEAAwE;IACxE,QAAQ,EAAE,YAAY,CAAC;IACvB,kFAAkF;IAClF,uBAAuB,EAAE,EAAE,CAAC;IAC5B,6DAA6D;IAC7D,kBAAkB,EAAE,EAAE,CAAC;IACvB,+DAA+D;IAC/D,cAAc,EAAE,EAAE,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,wBAAwB;IAChE,wFAAwF;IACxF,sBAAsB,EAAE,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,mCAAmC,GAAG,wBAAwB,GAAG;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAEvG,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,GAAG;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAEvF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;iBAU1C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;kBAElC,CAAC;AAEF,eAAO,MAAM,yCAAyC;;;;;;;;;;;;;;;;;;;;;;;;kBAErD,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE7C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,GAAG,GAAG,gBAAgB,CAW1E;AAED;;;GAGG;AACH,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,GAAG,GACP,2BAA2B,CAK7B"}
@@ -4,16 +4,21 @@ import { AztecAddress } from '../../aztec-address/index.js';
4
4
  import { PublicKeys } from '../../keys/public_keys.js';
5
5
  import { schemas, zodFor } from '../../schemas/index.js';
6
6
  const VERSION = 2;
7
- export const ContractInstanceSchema = zodFor()(z.object({
7
+ export const ContractInstancePreimageSchema = zodFor()(z.object({
8
8
  version: z.literal(VERSION),
9
9
  salt: schemas.Fr,
10
10
  deployer: schemas.AztecAddress,
11
- currentContractClassId: schemas.Fr,
12
11
  originalContractClassId: schemas.Fr,
13
12
  initializationHash: schemas.Fr,
14
13
  immutablesHash: schemas.Fr,
15
14
  publicKeys: PublicKeys.schema
16
15
  }));
16
+ export const ContractInstanceSchema = zodFor()(ContractInstancePreimageSchema.and(z.object({
17
+ currentContractClassId: schemas.Fr
18
+ })));
19
+ export const ContractInstancePreimageWithAddressSchema = zodFor()(ContractInstancePreimageSchema.and(z.object({
20
+ address: schemas.AztecAddress
21
+ })));
17
22
  export const ContractInstanceWithAddressSchema = zodFor()(ContractInstanceSchema.and(z.object({
18
23
  address: schemas.AztecAddress
19
24
  })));
@@ -1,7 +1,13 @@
1
1
  import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  /**
3
- * A type which along with public key forms a preimage of a contract address. See the link below for more details
4
- * https://github.com/AztecProtocol/aztec-packages/blob/master/docs/docs/concepts/foundation/accounts/keys.md#addresses-partial-addresses-and-public-keys
3
+ * The contract-side preimage of an Aztec address, i.e. the commitment to a specific contract instance.
4
+ *
5
+ * A partial address commits to a contract's code and initialization
6
+ * (`hash(contract_class_id, salted_initialization_hash)`) but not to its keys. Combined with an account's `PublicKeys`,
7
+ * it fully determines the address: `address = (hash(public_keys_hash, partial_address) * G + Ivpk_m).x`. Two accounts
8
+ * therefore share an address only if they share both their public keys and their partial address.
9
+ *
10
+ * See `computePartialAddress` for the derivation.
5
11
  */
6
12
  export type PartialAddress = Fr;
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbF9hZGRyZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvcGFydGlhbF9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpEOzs7R0FHRztBQUNILE1BQU0sTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbF9hZGRyZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvcGFydGlhbF9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"partial_address.d.ts","sourceRoot":"","sources":["../../src/contract/partial_address.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"partial_address.d.ts","sourceRoot":"","sources":["../../src/contract/partial_address.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC"}
@@ -1,4 +1,10 @@
1
1
  /**
2
- * A type which along with public key forms a preimage of a contract address. See the link below for more details
3
- * https://github.com/AztecProtocol/aztec-packages/blob/master/docs/docs/concepts/foundation/accounts/keys.md#addresses-partial-addresses-and-public-keys
2
+ * The contract-side preimage of an Aztec address, i.e. the commitment to a specific contract instance.
3
+ *
4
+ * A partial address commits to a contract's code and initialization
5
+ * (`hash(contract_class_id, salted_initialization_hash)`) but not to its keys. Combined with an account's `PublicKeys`,
6
+ * it fully determines the address: `address = (hash(public_keys_hash, partial_address) * G + Ivpk_m).x`. Two accounts
7
+ * therefore share an address only if they share both their public keys and their partial address.
8
+ *
9
+ * See `computePartialAddress` for the derivation.
4
10
  */ export { };