@aztec/stdlib 5.0.0-nightly.20260702 → 5.0.0-nightly.20260704
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/contract/contract_address.d.ts +3 -3
- package/dest/contract/contract_address.d.ts.map +1 -1
- package/dest/contract/contract_instance.d.ts +16 -2
- package/dest/contract/contract_instance.d.ts.map +1 -1
- package/dest/contract/contract_instance.js +45 -0
- package/dest/contract/interfaces/contract_instance.d.ts +71 -10
- package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.js +7 -2
- package/dest/keys/derivation.d.ts +8 -8
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +15 -10
- package/dest/tx/simulated_tx.d.ts +10 -6
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/contract/contract_address.ts +2 -2
- package/src/contract/contract_instance.ts +62 -1
- package/src/contract/interfaces/contract_instance.ts +26 -8
- package/src/keys/derivation.ts +18 -10
|
@@ -1,7 +1,7 @@
|
|
|
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
5
|
import type { PartialAddress } from './partial_address.js';
|
|
6
6
|
/**
|
|
7
7
|
* Returns the deployment address for a given contract instance.
|
|
@@ -12,7 +12,7 @@ import type { PartialAddress } from './partial_address.js';
|
|
|
12
12
|
* ```
|
|
13
13
|
* @param instance - A contract instance for which to calculate the deployment address.
|
|
14
14
|
*/
|
|
15
|
-
export declare function computeContractAddressFromInstance(instance:
|
|
15
|
+
export declare function computeContractAddressFromInstance(instance: ContractInstancePreimage | ({
|
|
16
16
|
originalContractClassId: Fr;
|
|
17
17
|
saltedInitializationHash: Fr;
|
|
18
18
|
} & Pick<ContractInstance, 'publicKeys'>)): Promise<AztecAddress>;
|
|
@@ -43,4 +43,4 @@ export declare function computeInitializationHash(initFn: FunctionAbi | undefine
|
|
|
43
43
|
* @returns The hash.
|
|
44
44
|
*/
|
|
45
45
|
export declare function computeInitializationHashFromEncodedArgs(initFn: FunctionSelector, encodedArgs: Fr[]): Promise<Fr>;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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;
|
|
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,
|
|
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,
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
})));
|
|
@@ -4,10 +4,10 @@ import { AztecAddress } from '../aztec-address/index.js';
|
|
|
4
4
|
import type { KeyPrefix } from './key_types.js';
|
|
5
5
|
import { PublicKey } from './public_key.js';
|
|
6
6
|
import { PublicKeys } from './public_keys.js';
|
|
7
|
-
export declare function computeAppNullifierHidingKey(
|
|
7
|
+
export declare function computeAppNullifierHidingKey(masterNullifierHidingSecretKey: GrumpkinScalar, app: AztecAddress): Promise<Fr>;
|
|
8
8
|
export declare function computeAppSecretKey(skM: GrumpkinScalar, app: AztecAddress, keyPrefix: KeyPrefix): Promise<Fr>;
|
|
9
9
|
export declare function computeOvskApp(ovsk: GrumpkinScalar, app: AztecAddress): Promise<Fq>;
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function deriveMasterNullifierHidingSecretKey(secretKey: Fr): GrumpkinScalar;
|
|
11
11
|
export declare function deriveMasterIncomingViewingSecretKey(secretKey: Fr): GrumpkinScalar;
|
|
12
12
|
export declare function deriveMasterOutgoingViewingSecretKey(secretKey: Fr): GrumpkinScalar;
|
|
13
13
|
export declare function deriveMasterMessageSigningSecretKey(secretKey: Fr): GrumpkinScalar;
|
|
@@ -21,7 +21,7 @@ export declare function derivePublicKeyFromSecretKey(secretKey: Fq): Promise<Pub
|
|
|
21
21
|
* The six master secret keys that fully define an account's privacy keys.
|
|
22
22
|
*/
|
|
23
23
|
export type MasterSecretKeys = {
|
|
24
|
-
|
|
24
|
+
masterNullifierHidingSecretKey: GrumpkinScalar;
|
|
25
25
|
masterIncomingViewingSecretKey: GrumpkinScalar;
|
|
26
26
|
masterOutgoingViewingSecretKey: GrumpkinScalar;
|
|
27
27
|
masterTaggingSecretKey: GrumpkinScalar;
|
|
@@ -34,13 +34,13 @@ export type MasterSecretKeys = {
|
|
|
34
34
|
* @returns The derived keys.
|
|
35
35
|
*/
|
|
36
36
|
export declare function deriveKeys(secretKey: Fr): Promise<{
|
|
37
|
-
|
|
37
|
+
masterNullifierHidingSecretKey: Fq;
|
|
38
38
|
masterIncomingViewingSecretKey: Fq;
|
|
39
39
|
masterOutgoingViewingSecretKey: Fq;
|
|
40
40
|
masterTaggingSecretKey: Fq;
|
|
41
41
|
masterMessageSigningSecretKey: Fq;
|
|
42
42
|
masterFallbackSecretKey: Fq;
|
|
43
|
-
|
|
43
|
+
masterNullifierHidingPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
44
44
|
masterOutgoingViewingPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
45
45
|
masterTaggingPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
46
46
|
masterMessageSigningPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
@@ -53,17 +53,17 @@ export declare function deriveKeys(secretKey: Fr): Promise<{
|
|
|
53
53
|
* @returns The provided secret keys alongside the derived public keys.
|
|
54
54
|
*/
|
|
55
55
|
export declare function deriveKeysFromMasterSecretKeys(secretKeys: MasterSecretKeys): Promise<{
|
|
56
|
-
|
|
56
|
+
masterNullifierHidingSecretKey: Fq;
|
|
57
57
|
masterIncomingViewingSecretKey: Fq;
|
|
58
58
|
masterOutgoingViewingSecretKey: Fq;
|
|
59
59
|
masterTaggingSecretKey: Fq;
|
|
60
60
|
masterMessageSigningSecretKey: Fq;
|
|
61
61
|
masterFallbackSecretKey: Fq;
|
|
62
|
-
|
|
62
|
+
masterNullifierHidingPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
63
63
|
masterOutgoingViewingPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
64
64
|
masterTaggingPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
65
65
|
masterMessageSigningPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
66
66
|
masterFallbackPublicKey: import("@aztec/foundation/curves/grumpkin").Point;
|
|
67
67
|
publicKeys: PublicKeys;
|
|
68
68
|
}>;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZhdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tleXMvZGVyaXZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHOUMsd0JBQWdCLDRCQUE0QixDQUMxQyw4QkFBOEIsRUFBRSxjQUFjLEVBQzlDLEdBQUcsRUFBRSxZQUFZLEdBQ2hCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFYjtBQUVELHdCQUFnQixtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBRzdHO0FBRUQsd0JBQXNCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUt6RjtBQUVELHdCQUFnQixvQ0FBb0MsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLGNBQWMsQ0FFbEY7QUFFRCx3QkFBZ0Isb0NBQW9DLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxjQUFjLENBRWxGO0FBRUQsd0JBQWdCLG9DQUFvQyxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsY0FBYyxDQUVsRjtBQUVELHdCQUFnQixtQ0FBbUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLGNBQWMsQ0FFakY7QUFFRCx3QkFBZ0IsNkJBQTZCLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxjQUFjLENBRTNFO0FBRUQsd0JBQWdCLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsY0FBYyxDQUc5RDtBQUVELHdCQUFnQixpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLGVBRXZFO0FBRUQsd0JBQXNCLGNBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQVl0RztBQUVELHdCQUFzQixvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLGVBb0JsRTtBQUVELHdCQUFnQiw0QkFBNEIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FPOUU7QUFFRDs7R0FFRztBQUNILE1BQU0sTUFBTSxnQkFBZ0IsR0FBRztJQUM3Qiw4QkFBOEIsRUFBRSxjQUFjLENBQUM7SUFDL0MsOEJBQThCLEVBQUUsY0FBYyxDQUFDO0lBQy9DLDhCQUE4QixFQUFFLGNBQWMsQ0FBQztJQUMvQyxzQkFBc0IsRUFBRSxjQUFjLENBQUM7SUFDdkMsNkJBQTZCLEVBQUUsY0FBYyxDQUFDO0lBQzlDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQztDQUN6QyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILHdCQUFnQixVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUU7Ozs7Ozs7Ozs7Ozs7R0FXdkM7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQXNCLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxnQkFBZ0I7Ozs7Ozs7Ozs7Ozs7R0E0Q2hGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivation.d.ts","sourceRoot":"","sources":["../../src/keys/derivation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,wBAAgB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"derivation.d.ts","sourceRoot":"","sources":["../../src/keys/derivation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,wBAAgB,4BAA4B,CAC1C,8BAA8B,EAAE,cAAc,EAC9C,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,EAAE,CAAC,CAEb;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,CAG7G;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAKzF;AAED,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,EAAE,GAAG,cAAc,CAElF;AAED,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,EAAE,GAAG,cAAc,CAElF;AAED,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,EAAE,GAAG,cAAc,CAElF;AAED,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,EAAE,GAAG,cAAc,CAEjF;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,cAAc,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,EAAE,GAAG,cAAc,CAG9D;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,eAEvE;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAYtG;AAED,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,eAoBlE;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAO9E;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8BAA8B,EAAE,cAAc,CAAC;IAC/C,8BAA8B,EAAE,cAAc,CAAC;IAC/C,8BAA8B,EAAE,cAAc,CAAC;IAC/C,sBAAsB,EAAE,cAAc,CAAC;IACvC,6BAA6B,EAAE,cAAc,CAAC;IAC9C,uBAAuB,EAAE,cAAc,CAAC;CACzC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,EAAE;;;;;;;;;;;;;GAWvC;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,UAAU,EAAE,gBAAgB;;;;;;;;;;;;;GA4ChF"}
|
package/dest/keys/derivation.js
CHANGED
|
@@ -5,11 +5,11 @@ import { sha512ToGrumpkinScalar } from '@aztec/foundation/crypto/sha512';
|
|
|
5
5
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
7
7
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
8
|
-
import { hashPublicKey } from './public_key.js';
|
|
8
|
+
import { PublicKey, hashPublicKey } from './public_key.js';
|
|
9
9
|
import { PublicKeys } from './public_keys.js';
|
|
10
10
|
import { getKeyGenerator } from './utils.js';
|
|
11
|
-
export function computeAppNullifierHidingKey(
|
|
12
|
-
return computeAppSecretKey(
|
|
11
|
+
export function computeAppNullifierHidingKey(masterNullifierHidingSecretKey, app) {
|
|
12
|
+
return computeAppSecretKey(masterNullifierHidingSecretKey, app, 'n'); // 'n' is the key prefix for nullifier hiding key
|
|
13
13
|
}
|
|
14
14
|
export function computeAppSecretKey(skM, app, keyPrefix) {
|
|
15
15
|
const generator = getKeyGenerator(keyPrefix);
|
|
@@ -25,7 +25,7 @@ export async function computeOvskApp(ovsk, app) {
|
|
|
25
25
|
// P = s * G will not be uniform because 2 * (q - r) / q is small.
|
|
26
26
|
return GrumpkinScalar.fromBuffer(ovskAppFr.toBuffer());
|
|
27
27
|
}
|
|
28
|
-
export function
|
|
28
|
+
export function deriveMasterNullifierHidingSecretKey(secretKey) {
|
|
29
29
|
return sha512ToGrumpkinScalar([
|
|
30
30
|
secretKey,
|
|
31
31
|
DomainSeparator.NHK_M
|
|
@@ -97,6 +97,11 @@ export async function computeAddressSecret(preaddress, ivsk) {
|
|
|
97
97
|
return addressSecretCandidate;
|
|
98
98
|
}
|
|
99
99
|
export function derivePublicKeyFromSecretKey(secretKey) {
|
|
100
|
+
// 0 * G is the point at infinity. The WASM encodes infinity with an out-of-field x coordinate that Point cannot
|
|
101
|
+
// deserialize, so return the point directly instead of calling into it.
|
|
102
|
+
if (secretKey.isZero()) {
|
|
103
|
+
return Promise.resolve(PublicKey.INFINITY);
|
|
104
|
+
}
|
|
100
105
|
return Grumpkin.mul(Grumpkin.generator, secretKey);
|
|
101
106
|
}
|
|
102
107
|
/**
|
|
@@ -107,7 +112,7 @@ export function derivePublicKeyFromSecretKey(secretKey) {
|
|
|
107
112
|
// First we derive master secret/hiding keys - we use sha512 here because this derivation will never take place
|
|
108
113
|
// in a circuit
|
|
109
114
|
return deriveKeysFromMasterSecretKeys({
|
|
110
|
-
|
|
115
|
+
masterNullifierHidingSecretKey: deriveMasterNullifierHidingSecretKey(secretKey),
|
|
111
116
|
masterIncomingViewingSecretKey: deriveMasterIncomingViewingSecretKey(secretKey),
|
|
112
117
|
masterOutgoingViewingSecretKey: deriveMasterOutgoingViewingSecretKey(secretKey),
|
|
113
118
|
masterTaggingSecretKey: sha512ToGrumpkinScalar([
|
|
@@ -123,8 +128,8 @@ export function derivePublicKeyFromSecretKey(secretKey) {
|
|
|
123
128
|
* @param secretKeys - The master secret keys to derive public keys from.
|
|
124
129
|
* @returns The provided secret keys alongside the derived public keys.
|
|
125
130
|
*/ export async function deriveKeysFromMasterSecretKeys(secretKeys) {
|
|
126
|
-
const {
|
|
127
|
-
const
|
|
131
|
+
const { masterNullifierHidingSecretKey, masterIncomingViewingSecretKey, masterOutgoingViewingSecretKey, masterTaggingSecretKey, masterMessageSigningSecretKey, masterFallbackSecretKey } = secretKeys;
|
|
132
|
+
const masterNullifierHidingPublicKey = await derivePublicKeyFromSecretKey(masterNullifierHidingSecretKey);
|
|
128
133
|
const masterIncomingViewingPublicKey = await derivePublicKeyFromSecretKey(masterIncomingViewingSecretKey);
|
|
129
134
|
const masterOutgoingViewingPublicKey = await derivePublicKeyFromSecretKey(masterOutgoingViewingSecretKey);
|
|
130
135
|
const masterTaggingPublicKey = await derivePublicKeyFromSecretKey(masterTaggingSecretKey);
|
|
@@ -134,15 +139,15 @@ export function derivePublicKeyFromSecretKey(secretKey) {
|
|
|
134
139
|
// point only for ivpk_m. The npk/ovpk/tpk/mspk/fbpk raw points are also returned alongside so the key
|
|
135
140
|
// store can persist them under `${account}-{n|ov|t|ms|fb}pk_m` (only their hashes live in publicKeys).
|
|
136
141
|
// The ivpk_m point isn't returned separately because it already lives in publicKeys.ivpkM.
|
|
137
|
-
const publicKeys = new PublicKeys(await hashPublicKey(
|
|
142
|
+
const publicKeys = new PublicKeys(await hashPublicKey(masterNullifierHidingPublicKey), masterIncomingViewingPublicKey, await hashPublicKey(masterOutgoingViewingPublicKey), await hashPublicKey(masterTaggingPublicKey), await hashPublicKey(masterMessageSigningPublicKey), await hashPublicKey(masterFallbackPublicKey));
|
|
138
143
|
return {
|
|
139
|
-
|
|
144
|
+
masterNullifierHidingSecretKey,
|
|
140
145
|
masterIncomingViewingSecretKey,
|
|
141
146
|
masterOutgoingViewingSecretKey,
|
|
142
147
|
masterTaggingSecretKey,
|
|
143
148
|
masterMessageSigningSecretKey,
|
|
144
149
|
masterFallbackSecretKey,
|
|
145
|
-
|
|
150
|
+
masterNullifierHidingPublicKey,
|
|
146
151
|
masterOutgoingViewingPublicKey,
|
|
147
152
|
masterTaggingPublicKey,
|
|
148
153
|
masterMessageSigningPublicKey,
|
|
@@ -35,11 +35,10 @@ export declare class SimulationOverrides {
|
|
|
35
35
|
value: import("@aztec/foundation/schemas").Fr;
|
|
36
36
|
}[] | null | undefined>>;
|
|
37
37
|
contracts: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
38
|
-
instance: z.ZodIntersection<z.ZodObject<{
|
|
38
|
+
instance: z.ZodIntersection<z.ZodIntersection<z.ZodObject<{
|
|
39
39
|
version: z.ZodLiteral<2>;
|
|
40
40
|
salt: ZodFor<import("@aztec/foundation/schemas").Fr>;
|
|
41
41
|
deployer: ZodFor<import("../aztec-address/index.js").AztecAddress>;
|
|
42
|
-
currentContractClassId: ZodFor<import("@aztec/foundation/schemas").Fr>;
|
|
43
42
|
originalContractClassId: ZodFor<import("@aztec/foundation/schemas").Fr>;
|
|
44
43
|
initializationHash: ZodFor<import("@aztec/foundation/schemas").Fr>;
|
|
45
44
|
immutablesHash: ZodFor<import("@aztec/foundation/schemas").Fr>;
|
|
@@ -59,6 +58,8 @@ export declare class SimulationOverrides {
|
|
|
59
58
|
fbpkMHash: import("@aztec/foundation/schemas").Fr;
|
|
60
59
|
}>>;
|
|
61
60
|
}, z.core.$strip>, z.ZodObject<{
|
|
61
|
+
currentContractClassId: ZodFor<import("@aztec/foundation/schemas").Fr>;
|
|
62
|
+
}, z.core.$strip>>, z.ZodObject<{
|
|
62
63
|
address: ZodFor<import("../aztec-address/index.js").AztecAddress>;
|
|
63
64
|
}, z.core.$strip>>;
|
|
64
65
|
}, z.core.$strip>>>>, z.ZodTransform<Record<string, {
|
|
@@ -66,11 +67,12 @@ export declare class SimulationOverrides {
|
|
|
66
67
|
version: 2;
|
|
67
68
|
salt: import("@aztec/foundation/schemas").Fr;
|
|
68
69
|
deployer: import("../aztec-address/index.js").AztecAddress;
|
|
69
|
-
currentContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
70
70
|
originalContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
71
71
|
initializationHash: import("@aztec/foundation/schemas").Fr;
|
|
72
72
|
immutablesHash: import("@aztec/foundation/schemas").Fr;
|
|
73
73
|
publicKeys: import("../keys/public_keys.js").PublicKeys;
|
|
74
|
+
} & {
|
|
75
|
+
currentContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
74
76
|
} & {
|
|
75
77
|
address: import("../aztec-address/index.js").AztecAddress;
|
|
76
78
|
};
|
|
@@ -79,11 +81,12 @@ export declare class SimulationOverrides {
|
|
|
79
81
|
version: 2;
|
|
80
82
|
salt: import("@aztec/foundation/schemas").Fr;
|
|
81
83
|
deployer: import("../aztec-address/index.js").AztecAddress;
|
|
82
|
-
currentContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
83
84
|
originalContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
84
85
|
initializationHash: import("@aztec/foundation/schemas").Fr;
|
|
85
86
|
immutablesHash: import("@aztec/foundation/schemas").Fr;
|
|
86
87
|
publicKeys: import("../keys/public_keys.js").PublicKeys;
|
|
88
|
+
} & {
|
|
89
|
+
currentContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
87
90
|
} & {
|
|
88
91
|
address: import("../aztec-address/index.js").AztecAddress;
|
|
89
92
|
};
|
|
@@ -99,11 +102,12 @@ export declare class SimulationOverrides {
|
|
|
99
102
|
version: 2;
|
|
100
103
|
salt: import("@aztec/foundation/schemas").Fr;
|
|
101
104
|
deployer: import("../aztec-address/index.js").AztecAddress;
|
|
102
|
-
currentContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
103
105
|
originalContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
104
106
|
initializationHash: import("@aztec/foundation/schemas").Fr;
|
|
105
107
|
immutablesHash: import("@aztec/foundation/schemas").Fr;
|
|
106
108
|
publicKeys: import("../keys/public_keys.js").PublicKeys;
|
|
109
|
+
} & {
|
|
110
|
+
currentContractClassId: import("@aztec/foundation/schemas").Fr;
|
|
107
111
|
} & {
|
|
108
112
|
address: import("../aztec-address/index.js").AztecAddress;
|
|
109
113
|
};
|
|
@@ -141,4 +145,4 @@ export declare class TxSimulationResult {
|
|
|
141
145
|
* @returns
|
|
142
146
|
*/
|
|
143
147
|
export declare function accumulatePrivateReturnValues(executionResult: PrivateExecutionResult): NestedProcessReturnValues;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltdWxhdGVkX3R4LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvc2ltdWxhdGVkX3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUNMLEtBQUssMkJBQTJCLEVBRWpDLE1BQU0sNkNBQTZDLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQStCLE1BQU0sMENBQTBDLENBQUM7QUFDbkgsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFOUcsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUVMLHNCQUFzQixFQUd2QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBeUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBUzdCLE1BQU0sTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUErQjtJQUFFLFFBQVEsRUFBRSwyQkFBMkIsQ0FBQTtDQUFFLENBQUMsQ0FBQztBQVF2SCxxQkFBYSxtQkFBbUI7SUFDdkIsYUFBYSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztJQUN4QyxTQUFTLENBQUMsRUFBRSxpQkFBaUIsQ0FBQztJQUVyQyxZQUFZLElBQUksR0FBRTtRQUFFLGFBQWEsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFBQyxTQUFTLENBQUMsRUFBRSxpQkFBaUIsQ0FBQTtLQUFPLEVBR2hHO0lBRUQsTUFBTSxLQUFLLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBT2hCO0NBQ0Y7QUFFRCxxQkFBYSx1QkFBdUI7SUFFekIsc0JBQXNCLEVBQUUsc0JBQXNCO0lBQzlDLFlBQVksRUFBRSxvQ0FBb0M7SUFGM0QsWUFDUyxzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsWUFBWSxFQUFFLG9DQUFvQyxFQUN2RDtJQUVKLHNCQUFzQiw4QkFFckI7SUFFSyxhQUFhLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQVNqQztDQUNGO0FBRUQscUJBQWEsa0JBQWtCO0lBRXBCLHNCQUFzQixFQUFFLHNCQUFzQjtJQUM5QyxZQUFZLEVBQUUsb0NBQW9DO0lBQ2xELFlBQVksQ0FBQztJQUNiLEtBQUssQ0FBQztJQUpmLFlBQ1Msc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFlBQVksRUFBRSxvQ0FBb0MsRUFDbEQsWUFBWSxDQUFDLG9DQUF3QixFQUNyQyxLQUFLLENBQUMsNkJBQWlCLEVBQzVCO0lBRUosaUVBQWlFO0lBQ2pFLElBQUksZUFBZSxJQUFJLGNBQWMsRUFBRSxDQUV0QztJQUVELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FTckI7SUFFRCxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQVM5QztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsc0JBT3BGO0lBRUQsTUFBTSxDQUFDLDBDQUEwQyxDQUMvQyx1QkFBdUIsRUFBRSx1QkFBdUIsRUFDaEQsWUFBWSxDQUFDLEVBQUUsc0JBQXNCLEVBQ3JDLEtBQUssQ0FBQyxFQUFFLGVBQWUsc0JBUXhCO0lBRUQsT0FBYSxNQUFNLGdDQU1sQjtJQUVELHNCQUFzQiw4QkFFckI7SUFFRCxhQUFhLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUUzQjtJQUVELHFCQUFxQixnQ0FFcEI7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDZCQUE2QixDQUFDLGVBQWUsRUFBRSxzQkFBc0IsR0FBRyx5QkFBeUIsQ0FXaEgifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulated_tx.d.ts","sourceRoot":"","sources":["../../src/tx/simulated_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAY,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA+B,MAAM,0CAA0C,CAAC;AACnH,OAAO,EAAE,oCAAoC,EAAE,MAAM,wDAAwD,CAAC;AAE9G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,sBAAsB,EAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAS7B,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAA+B;IAAE,QAAQ,EAAE,2BAA2B,CAAA;CAAE,CAAC,CAAC;AAQvH,qBAAa,mBAAmB;IACvB,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAErC,YAAY,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,iBAAiB,CAAA;KAAO,EAGhG;IAED,MAAM,KAAK,MAAM
|
|
1
|
+
{"version":3,"file":"simulated_tx.d.ts","sourceRoot":"","sources":["../../src/tx/simulated_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAY,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA+B,MAAM,0CAA0C,CAAC;AACnH,OAAO,EAAE,oCAAoC,EAAE,MAAM,wDAAwD,CAAC;AAE9G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,sBAAsB,EAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAS7B,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAA+B;IAAE,QAAQ,EAAE,2BAA2B,CAAA;CAAE,CAAC,CAAC;AAQvH,qBAAa,mBAAmB;IACvB,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAErC,YAAY,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,iBAAiB,CAAA;KAAO,EAGhG;IAED,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAOhB;CACF;AAED,qBAAa,uBAAuB;IAEzB,sBAAsB,EAAE,sBAAsB;IAC9C,YAAY,EAAE,oCAAoC;IAF3D,YACS,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,oCAAoC,EACvD;IAEJ,sBAAsB,8BAErB;IAEK,aAAa,IAAI,OAAO,CAAC,EAAE,CAAC,CASjC;CACF;AAED,qBAAa,kBAAkB;IAEpB,sBAAsB,EAAE,sBAAsB;IAC9C,YAAY,EAAE,oCAAoC;IAClD,YAAY,CAAC;IACb,KAAK,CAAC;IAJf,YACS,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,oCAAoC,EAClD,YAAY,CAAC,oCAAwB,EACrC,KAAK,CAAC,6BAAiB,EAC5B;IAEJ,iEAAiE;IACjE,IAAI,eAAe,IAAI,cAAc,EAAE,CAEtC;IAED,IAAI,OAAO,IAAI,OAAO,CASrB;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAS9C;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,GAAG,iBAAiB,CAAC,sBAOpF;IAED,MAAM,CAAC,0CAA0C,CAC/C,uBAAuB,EAAE,uBAAuB,EAChD,YAAY,CAAC,EAAE,sBAAsB,EACrC,KAAK,CAAC,EAAE,eAAe,sBAQxB;IAED,OAAa,MAAM,gCAMlB;IAED,sBAAsB,8BAErB;IAED,aAAa,IAAI,OAAO,CAAC,EAAE,CAAC,CAE3B;IAED,qBAAqB,gCAEpB;CACF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,eAAe,EAAE,sBAAsB,GAAG,yBAAyB,CAWhH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "5.0.0-nightly.
|
|
3
|
+
"version": "5.0.0-nightly.20260704",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -92,13 +92,13 @@
|
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
94
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
95
|
-
"@aztec/bb.js": "5.0.0-nightly.
|
|
96
|
-
"@aztec/blob-lib": "5.0.0-nightly.
|
|
97
|
-
"@aztec/constants": "5.0.0-nightly.
|
|
98
|
-
"@aztec/ethereum": "5.0.0-nightly.
|
|
99
|
-
"@aztec/foundation": "5.0.0-nightly.
|
|
100
|
-
"@aztec/l1-artifacts": "5.0.0-nightly.
|
|
101
|
-
"@aztec/noir-noirc_abi": "5.0.0-nightly.
|
|
95
|
+
"@aztec/bb.js": "5.0.0-nightly.20260704",
|
|
96
|
+
"@aztec/blob-lib": "5.0.0-nightly.20260704",
|
|
97
|
+
"@aztec/constants": "5.0.0-nightly.20260704",
|
|
98
|
+
"@aztec/ethereum": "5.0.0-nightly.20260704",
|
|
99
|
+
"@aztec/foundation": "5.0.0-nightly.20260704",
|
|
100
|
+
"@aztec/l1-artifacts": "5.0.0-nightly.20260704",
|
|
101
|
+
"@aztec/noir-noirc_abi": "5.0.0-nightly.20260704",
|
|
102
102
|
"@google-cloud/storage": "^7.15.0",
|
|
103
103
|
"axios": "^1.15.1",
|
|
104
104
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -6,7 +6,7 @@ import { type FunctionAbi, FunctionSelector, encodeArguments } from '../abi/inde
|
|
|
6
6
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
7
7
|
import { computeVarArgsHash } from '../hash/hash.js';
|
|
8
8
|
import { computeAddress } from '../keys/index.js';
|
|
9
|
-
import type { ContractInstance } from './interfaces/contract_instance.js';
|
|
9
|
+
import type { ContractInstance, ContractInstancePreimage } from './interfaces/contract_instance.js';
|
|
10
10
|
import type { PartialAddress } from './partial_address.js';
|
|
11
11
|
|
|
12
12
|
// TODO(@spalladino): Review all generator indices in this file
|
|
@@ -22,7 +22,7 @@ import type { PartialAddress } from './partial_address.js';
|
|
|
22
22
|
*/
|
|
23
23
|
export async function computeContractAddressFromInstance(
|
|
24
24
|
instance:
|
|
25
|
-
|
|
|
25
|
+
| ContractInstancePreimage
|
|
26
26
|
| ({ originalContractClassId: Fr; saltedInitializationHash: Fr } & Pick<ContractInstance, 'publicKeys'>),
|
|
27
27
|
): Promise<AztecAddress> {
|
|
28
28
|
const partialAddress = await computePartialAddress(instance);
|
|
@@ -18,7 +18,12 @@ import {
|
|
|
18
18
|
computeInitializationHash,
|
|
19
19
|
computeInitializationHashFromEncodedArgs,
|
|
20
20
|
} from './contract_address.js';
|
|
21
|
-
import type {
|
|
21
|
+
import type {
|
|
22
|
+
ContractInstance,
|
|
23
|
+
ContractInstancePreimage,
|
|
24
|
+
ContractInstancePreimageWithAddress,
|
|
25
|
+
ContractInstanceWithAddress,
|
|
26
|
+
} from './interfaces/contract_instance.js';
|
|
22
27
|
|
|
23
28
|
const VERSION = 2 as const;
|
|
24
29
|
|
|
@@ -115,6 +120,62 @@ export class SerializableContractInstance {
|
|
|
115
120
|
}
|
|
116
121
|
}
|
|
117
122
|
|
|
123
|
+
export class SerializableContractInstancePreimage {
|
|
124
|
+
public readonly version = VERSION;
|
|
125
|
+
public readonly salt: Fr;
|
|
126
|
+
public readonly deployer: AztecAddress;
|
|
127
|
+
public readonly originalContractClassId: Fr;
|
|
128
|
+
public readonly initializationHash: Fr;
|
|
129
|
+
public readonly immutablesHash: Fr;
|
|
130
|
+
public readonly publicKeys: PublicKeys;
|
|
131
|
+
|
|
132
|
+
constructor(instance: ContractInstancePreimage) {
|
|
133
|
+
if (instance.version !== VERSION) {
|
|
134
|
+
throw new Error(`Unexpected contract class version ${instance.version}`);
|
|
135
|
+
}
|
|
136
|
+
this.salt = instance.salt;
|
|
137
|
+
this.deployer = instance.deployer;
|
|
138
|
+
this.originalContractClassId = instance.originalContractClassId;
|
|
139
|
+
this.initializationHash = instance.initializationHash;
|
|
140
|
+
this.immutablesHash = instance.immutablesHash;
|
|
141
|
+
this.publicKeys = instance.publicKeys;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
public toBuffer() {
|
|
145
|
+
return serializeToBuffer(
|
|
146
|
+
numToUInt8(this.version),
|
|
147
|
+
this.salt,
|
|
148
|
+
this.deployer,
|
|
149
|
+
this.originalContractClassId,
|
|
150
|
+
this.initializationHash,
|
|
151
|
+
this.immutablesHash,
|
|
152
|
+
this.publicKeys,
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Returns a copy of this object with its address included. */
|
|
157
|
+
withAddress(address: AztecAddress): ContractInstancePreimageWithAddress {
|
|
158
|
+
return { ...this, address };
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
static fromBuffer(bufferOrReader: Buffer | BufferReader): SerializableContractInstancePreimage {
|
|
162
|
+
const reader = BufferReader.asReader(bufferOrReader);
|
|
163
|
+
const version = reader.readUInt8();
|
|
164
|
+
if (version !== VERSION) {
|
|
165
|
+
throw new Error(`Unexpected contract instance preimage version ${version}`);
|
|
166
|
+
}
|
|
167
|
+
return new SerializableContractInstancePreimage({
|
|
168
|
+
version: VERSION,
|
|
169
|
+
salt: reader.readObject(Fr),
|
|
170
|
+
deployer: reader.readObject(AztecAddress),
|
|
171
|
+
originalContractClassId: reader.readObject(Fr),
|
|
172
|
+
initializationHash: reader.readObject(Fr),
|
|
173
|
+
immutablesHash: reader.readObject(Fr),
|
|
174
|
+
publicKeys: reader.readObject(PublicKeys),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
118
179
|
/**
|
|
119
180
|
* Generates a Contract Instance from some instantiation params.
|
|
120
181
|
* @param artifact - The account contract build artifact.
|
|
@@ -9,19 +9,19 @@ import { schemas, zodFor } from '../../schemas/index.js';
|
|
|
9
9
|
const VERSION = 2 as const;
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* The address preimage of a contract instance: the immutable data that hashes to its address, i.e. everything a
|
|
13
|
+
* contract deployment commits to.
|
|
14
|
+
*
|
|
15
|
+
* Note that `originaContractClassId` is not necessarily the instance's _current_ class id, in case of upgrades: that
|
|
16
|
+
* one is not part of the preimage and is instead derived from chain state.
|
|
15
17
|
*/
|
|
16
|
-
export interface
|
|
18
|
+
export interface ContractInstancePreimage {
|
|
17
19
|
/** Version identifier. Initially one, bumped for any changes to the contract instance struct. */
|
|
18
20
|
version: typeof VERSION;
|
|
19
21
|
/** User-generated pseudorandom value for uniqueness. */
|
|
20
22
|
salt: Fr;
|
|
21
23
|
/** Optional deployer address or zero if this was a universal deploy. */
|
|
22
24
|
deployer: AztecAddress;
|
|
23
|
-
/** Identifier of the contract class for this instance. */
|
|
24
|
-
currentContractClassId: Fr;
|
|
25
25
|
/** Identifier of the original (at deployment) contract class for this instance */
|
|
26
26
|
originalContractClassId: Fr;
|
|
27
27
|
/** Hash of the selector and arguments to the constructor. */
|
|
@@ -32,14 +32,24 @@ export interface ContractInstance {
|
|
|
32
32
|
publicKeys: PublicKeys;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* The address preimage plus the current contract class id, which is chain-tracked state derived from the
|
|
37
|
+
* ContractInstanceRegistry (it equals the original class id unless the contract has been upgraded).
|
|
38
|
+
*/
|
|
39
|
+
export interface ContractInstance extends ContractInstancePreimage {
|
|
40
|
+
/** Identifier of the contract class this instance currently runs (as of some block). */
|
|
41
|
+
currentContractClassId: Fr;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type ContractInstancePreimageWithAddress = ContractInstancePreimage & { address: AztecAddress };
|
|
45
|
+
|
|
35
46
|
export type ContractInstanceWithAddress = ContractInstance & { address: AztecAddress };
|
|
36
47
|
|
|
37
|
-
export const
|
|
48
|
+
export const ContractInstancePreimageSchema = zodFor<ContractInstancePreimage>()(
|
|
38
49
|
z.object({
|
|
39
50
|
version: z.literal(VERSION),
|
|
40
51
|
salt: schemas.Fr,
|
|
41
52
|
deployer: schemas.AztecAddress,
|
|
42
|
-
currentContractClassId: schemas.Fr,
|
|
43
53
|
originalContractClassId: schemas.Fr,
|
|
44
54
|
initializationHash: schemas.Fr,
|
|
45
55
|
immutablesHash: schemas.Fr,
|
|
@@ -47,6 +57,14 @@ export const ContractInstanceSchema = zodFor<ContractInstance>()(
|
|
|
47
57
|
}),
|
|
48
58
|
);
|
|
49
59
|
|
|
60
|
+
export const ContractInstanceSchema = zodFor<ContractInstance>()(
|
|
61
|
+
ContractInstancePreimageSchema.and(z.object({ currentContractClassId: schemas.Fr })),
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
export const ContractInstancePreimageWithAddressSchema = zodFor<ContractInstancePreimageWithAddress>()(
|
|
65
|
+
ContractInstancePreimageSchema.and(z.object({ address: schemas.AztecAddress })),
|
|
66
|
+
);
|
|
67
|
+
|
|
50
68
|
export const ContractInstanceWithAddressSchema = zodFor<ContractInstanceWithAddress>()(
|
|
51
69
|
ContractInstanceSchema.and(z.object({ address: schemas.AztecAddress })),
|
|
52
70
|
);
|
package/src/keys/derivation.ts
CHANGED
|
@@ -11,8 +11,11 @@ import { PublicKey, hashPublicKey } from './public_key.js';
|
|
|
11
11
|
import { PublicKeys } from './public_keys.js';
|
|
12
12
|
import { getKeyGenerator } from './utils.js';
|
|
13
13
|
|
|
14
|
-
export function computeAppNullifierHidingKey(
|
|
15
|
-
|
|
14
|
+
export function computeAppNullifierHidingKey(
|
|
15
|
+
masterNullifierHidingSecretKey: GrumpkinScalar,
|
|
16
|
+
app: AztecAddress,
|
|
17
|
+
): Promise<Fr> {
|
|
18
|
+
return computeAppSecretKey(masterNullifierHidingSecretKey, app, 'n'); // 'n' is the key prefix for nullifier hiding key
|
|
16
19
|
}
|
|
17
20
|
|
|
18
21
|
export function computeAppSecretKey(skM: GrumpkinScalar, app: AztecAddress, keyPrefix: KeyPrefix): Promise<Fr> {
|
|
@@ -27,7 +30,7 @@ export async function computeOvskApp(ovsk: GrumpkinScalar, app: AztecAddress): P
|
|
|
27
30
|
return GrumpkinScalar.fromBuffer(ovskAppFr.toBuffer());
|
|
28
31
|
}
|
|
29
32
|
|
|
30
|
-
export function
|
|
33
|
+
export function deriveMasterNullifierHidingSecretKey(secretKey: Fr): GrumpkinScalar {
|
|
31
34
|
return sha512ToGrumpkinScalar([secretKey, DomainSeparator.NHK_M]);
|
|
32
35
|
}
|
|
33
36
|
|
|
@@ -93,6 +96,11 @@ export async function computeAddressSecret(preaddress: Fr, ivsk: Fq) {
|
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
export function derivePublicKeyFromSecretKey(secretKey: Fq): Promise<PublicKey> {
|
|
99
|
+
// 0 * G is the point at infinity. The WASM encodes infinity with an out-of-field x coordinate that Point cannot
|
|
100
|
+
// deserialize, so return the point directly instead of calling into it.
|
|
101
|
+
if (secretKey.isZero()) {
|
|
102
|
+
return Promise.resolve(PublicKey.INFINITY);
|
|
103
|
+
}
|
|
96
104
|
return Grumpkin.mul(Grumpkin.generator, secretKey);
|
|
97
105
|
}
|
|
98
106
|
|
|
@@ -100,7 +108,7 @@ export function derivePublicKeyFromSecretKey(secretKey: Fq): Promise<PublicKey>
|
|
|
100
108
|
* The six master secret keys that fully define an account's privacy keys.
|
|
101
109
|
*/
|
|
102
110
|
export type MasterSecretKeys = {
|
|
103
|
-
|
|
111
|
+
masterNullifierHidingSecretKey: GrumpkinScalar;
|
|
104
112
|
masterIncomingViewingSecretKey: GrumpkinScalar;
|
|
105
113
|
masterOutgoingViewingSecretKey: GrumpkinScalar;
|
|
106
114
|
masterTaggingSecretKey: GrumpkinScalar;
|
|
@@ -117,7 +125,7 @@ export function deriveKeys(secretKey: Fr) {
|
|
|
117
125
|
// First we derive master secret/hiding keys - we use sha512 here because this derivation will never take place
|
|
118
126
|
// in a circuit
|
|
119
127
|
return deriveKeysFromMasterSecretKeys({
|
|
120
|
-
|
|
128
|
+
masterNullifierHidingSecretKey: deriveMasterNullifierHidingSecretKey(secretKey),
|
|
121
129
|
masterIncomingViewingSecretKey: deriveMasterIncomingViewingSecretKey(secretKey),
|
|
122
130
|
masterOutgoingViewingSecretKey: deriveMasterOutgoingViewingSecretKey(secretKey),
|
|
123
131
|
masterTaggingSecretKey: sha512ToGrumpkinScalar([secretKey, DomainSeparator.TSK_M]),
|
|
@@ -133,7 +141,7 @@ export function deriveKeys(secretKey: Fr) {
|
|
|
133
141
|
*/
|
|
134
142
|
export async function deriveKeysFromMasterSecretKeys(secretKeys: MasterSecretKeys) {
|
|
135
143
|
const {
|
|
136
|
-
|
|
144
|
+
masterNullifierHidingSecretKey,
|
|
137
145
|
masterIncomingViewingSecretKey,
|
|
138
146
|
masterOutgoingViewingSecretKey,
|
|
139
147
|
masterTaggingSecretKey,
|
|
@@ -141,7 +149,7 @@ export async function deriveKeysFromMasterSecretKeys(secretKeys: MasterSecretKey
|
|
|
141
149
|
masterFallbackSecretKey,
|
|
142
150
|
} = secretKeys;
|
|
143
151
|
|
|
144
|
-
const
|
|
152
|
+
const masterNullifierHidingPublicKey = await derivePublicKeyFromSecretKey(masterNullifierHidingSecretKey);
|
|
145
153
|
const masterIncomingViewingPublicKey = await derivePublicKeyFromSecretKey(masterIncomingViewingSecretKey);
|
|
146
154
|
const masterOutgoingViewingPublicKey = await derivePublicKeyFromSecretKey(masterOutgoingViewingSecretKey);
|
|
147
155
|
const masterTaggingPublicKey = await derivePublicKeyFromSecretKey(masterTaggingSecretKey);
|
|
@@ -153,7 +161,7 @@ export async function deriveKeysFromMasterSecretKeys(secretKeys: MasterSecretKey
|
|
|
153
161
|
// store can persist them under `${account}-{n|ov|t|ms|fb}pk_m` (only their hashes live in publicKeys).
|
|
154
162
|
// The ivpk_m point isn't returned separately because it already lives in publicKeys.ivpkM.
|
|
155
163
|
const publicKeys = new PublicKeys(
|
|
156
|
-
await hashPublicKey(
|
|
164
|
+
await hashPublicKey(masterNullifierHidingPublicKey),
|
|
157
165
|
masterIncomingViewingPublicKey,
|
|
158
166
|
await hashPublicKey(masterOutgoingViewingPublicKey),
|
|
159
167
|
await hashPublicKey(masterTaggingPublicKey),
|
|
@@ -162,13 +170,13 @@ export async function deriveKeysFromMasterSecretKeys(secretKeys: MasterSecretKey
|
|
|
162
170
|
);
|
|
163
171
|
|
|
164
172
|
return {
|
|
165
|
-
|
|
173
|
+
masterNullifierHidingSecretKey,
|
|
166
174
|
masterIncomingViewingSecretKey,
|
|
167
175
|
masterOutgoingViewingSecretKey,
|
|
168
176
|
masterTaggingSecretKey,
|
|
169
177
|
masterMessageSigningSecretKey,
|
|
170
178
|
masterFallbackSecretKey,
|
|
171
|
-
|
|
179
|
+
masterNullifierHidingPublicKey,
|
|
172
180
|
masterOutgoingViewingPublicKey,
|
|
173
181
|
masterTaggingPublicKey,
|
|
174
182
|
masterMessageSigningPublicKey,
|