@aztec/stdlib 1.0.0-nightly.20250623 → 1.0.0-nightly.20250625
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/hash/hash.d.ts +1 -1
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +7 -3
- package/dest/vks/verification_key.d.ts +1 -0
- package/dest/vks/verification_key.d.ts.map +1 -1
- package/dest/vks/verification_key.js +5 -0
- package/package.json +7 -7
- package/src/hash/hash.ts +7 -3
- package/src/vks/verification_key.ts +6 -0
package/dest/hash/hash.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
3
3
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Computes a hash of a given verification key.
|
|
6
|
-
* @param
|
|
6
|
+
* @param keyAsFields - The verification key as fields.
|
|
7
7
|
* @returns The hash of the verification key.
|
|
8
8
|
*/
|
|
9
9
|
export declare function hashVK(keyAsFields: Fr[]): Promise<Fr>;
|
package/dest/hash/hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/hash/hash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/hash/hash.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAK3D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAE1F;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAErF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEnF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEzG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEzD;AAED,wBAAsB,6BAA6B,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,eAMtG;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,WAAW,EACX,OAAO,EACP,aAAa,EACb,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,OAAO,EAAE,EAAE,CAAC;IACZ,aAAa,EAAE,EAAE,CAAC;IAClB,OAAO,EAAE,EAAE,CAAC;CACb,MAEA"}
|
package/dest/hash/hash.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { GeneratorIndex } from '@aztec/constants';
|
|
2
|
+
import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
2
3
|
import { poseidon2Hash, poseidon2HashWithSeparator, sha256ToField } from '@aztec/foundation/crypto';
|
|
3
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
5
|
/**
|
|
5
6
|
* Computes a hash of a given verification key.
|
|
6
|
-
* @param
|
|
7
|
+
* @param keyAsFields - The verification key as fields.
|
|
7
8
|
* @returns The hash of the verification key.
|
|
8
|
-
*/ export function hashVK(keyAsFields) {
|
|
9
|
-
|
|
9
|
+
*/ export async function hashVK(keyAsFields) {
|
|
10
|
+
// Should match the implementation in barretenberg/cpp/src/barretenberg/flavor/flavor.hpp > hash()
|
|
11
|
+
const hash = (await poseidon2Hash(keyAsFields)).toBuffer();
|
|
12
|
+
// Taking the last 16 bytes (128 bits) of the hash.
|
|
13
|
+
return new Fr(toBigIntBE(hash.subarray(Fr.SIZE_IN_BYTES - 16)));
|
|
10
14
|
}
|
|
11
15
|
/**
|
|
12
16
|
* Computes a note hash nonce, which will be used to create a unique note hash.
|
|
@@ -66,6 +66,7 @@ export declare class VerificationKeyAsFields {
|
|
|
66
66
|
key: Fr[];
|
|
67
67
|
hash: Fr;
|
|
68
68
|
constructor(key: Fr[], hash: Fr);
|
|
69
|
+
static fromKey(key: Fr[]): Promise<VerificationKeyAsFields>;
|
|
69
70
|
get numPublicInputs(): number;
|
|
70
71
|
get circuitSize(): number;
|
|
71
72
|
get isRecursive(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification_key.d.ts","sourceRoot":"","sources":["../../src/vks/verification_key.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"verification_key.d.ts","sourceRoot":"","sources":["../../src/vks/verification_key.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { Fq, Fr } from '@aztec/foundation/fields';
|
|
|
5
5
|
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
6
6
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
7
7
|
import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
8
|
+
import { hashVK } from '../hash/index.js';
|
|
8
9
|
import { CircuitType } from '../types/shared.js';
|
|
9
10
|
/**
|
|
10
11
|
* Curve data.
|
|
@@ -73,6 +74,10 @@ export const CIRCUIT_RECURSIVE_INDEX = 3;
|
|
|
73
74
|
this.key = key;
|
|
74
75
|
this.hash = hash;
|
|
75
76
|
}
|
|
77
|
+
static async fromKey(key) {
|
|
78
|
+
const hash = await hashVK(key);
|
|
79
|
+
return new VerificationKeyAsFields(key, hash);
|
|
80
|
+
}
|
|
76
81
|
get numPublicInputs() {
|
|
77
82
|
return Number(this.key[CIRCUIT_PUBLIC_INPUTS_INDEX]);
|
|
78
83
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "1.0.0-nightly.
|
|
3
|
+
"version": "1.0.0-nightly.20250625",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -67,12 +67,12 @@
|
|
|
67
67
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/bb.js": "1.0.0-nightly.
|
|
71
|
-
"@aztec/blob-lib": "1.0.0-nightly.
|
|
72
|
-
"@aztec/constants": "1.0.0-nightly.
|
|
73
|
-
"@aztec/ethereum": "1.0.0-nightly.
|
|
74
|
-
"@aztec/foundation": "1.0.0-nightly.
|
|
75
|
-
"@aztec/noir-noirc_abi": "1.0.0-nightly.
|
|
70
|
+
"@aztec/bb.js": "1.0.0-nightly.20250625",
|
|
71
|
+
"@aztec/blob-lib": "1.0.0-nightly.20250625",
|
|
72
|
+
"@aztec/constants": "1.0.0-nightly.20250625",
|
|
73
|
+
"@aztec/ethereum": "1.0.0-nightly.20250625",
|
|
74
|
+
"@aztec/foundation": "1.0.0-nightly.20250625",
|
|
75
|
+
"@aztec/noir-noirc_abi": "1.0.0-nightly.20250625",
|
|
76
76
|
"@google-cloud/storage": "^7.15.0",
|
|
77
77
|
"axios": "^1.9.0",
|
|
78
78
|
"json-stringify-deterministic": "1.0.12",
|
package/src/hash/hash.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GeneratorIndex } from '@aztec/constants';
|
|
2
|
+
import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
2
3
|
import { poseidon2Hash, poseidon2HashWithSeparator, sha256ToField } from '@aztec/foundation/crypto';
|
|
3
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -7,11 +8,14 @@ import type { AztecAddress } from '../aztec-address/index.js';
|
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Computes a hash of a given verification key.
|
|
10
|
-
* @param
|
|
11
|
+
* @param keyAsFields - The verification key as fields.
|
|
11
12
|
* @returns The hash of the verification key.
|
|
12
13
|
*/
|
|
13
|
-
export function hashVK(keyAsFields: Fr[]): Promise<Fr> {
|
|
14
|
-
|
|
14
|
+
export async function hashVK(keyAsFields: Fr[]): Promise<Fr> {
|
|
15
|
+
// Should match the implementation in barretenberg/cpp/src/barretenberg/flavor/flavor.hpp > hash()
|
|
16
|
+
const hash = (await poseidon2Hash(keyAsFields)).toBuffer();
|
|
17
|
+
// Taking the last 16 bytes (128 bits) of the hash.
|
|
18
|
+
return new Fr(toBigIntBE(hash.subarray(Fr.SIZE_IN_BYTES - 16)));
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
/**
|
|
@@ -9,6 +9,7 @@ import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
|
9
9
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
10
10
|
import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
11
11
|
|
|
12
|
+
import { hashVK } from '../hash/index.js';
|
|
12
13
|
import { CircuitType } from '../types/shared.js';
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -93,6 +94,11 @@ export class VerificationKeyAsFields {
|
|
|
93
94
|
public hash: Fr,
|
|
94
95
|
) {}
|
|
95
96
|
|
|
97
|
+
static async fromKey(key: Fr[]) {
|
|
98
|
+
const hash = await hashVK(key);
|
|
99
|
+
return new VerificationKeyAsFields(key, hash);
|
|
100
|
+
}
|
|
101
|
+
|
|
96
102
|
public get numPublicInputs() {
|
|
97
103
|
return Number(this.key[CIRCUIT_PUBLIC_INPUTS_INDEX]);
|
|
98
104
|
}
|