@aztec/aztec.js 0.45.0 → 0.45.1

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.
@@ -10,7 +10,7 @@ import { type Wallet } from '../wallet/index.js';
10
10
  * @param selector - Selector of the function to be broadcast.
11
11
  * @returns A ContractFunctionInteraction object that can be used to send the transaction.
12
12
  */
13
- export declare function broadcastPrivateFunction(wallet: Wallet, artifact: ContractArtifact, selector: FunctionSelector): ContractFunctionInteraction;
13
+ export declare function broadcastPrivateFunction(wallet: Wallet, artifact: ContractArtifact, selector: FunctionSelector): Promise<ContractFunctionInteraction>;
14
14
  /**
15
15
  * Sets up a call to broadcast an unconstrained function's bytecode via the ClassRegisterer contract.
16
16
  * Note that this is not required for users to call the function, but is rather a convenience to make
@@ -20,5 +20,5 @@ export declare function broadcastPrivateFunction(wallet: Wallet, artifact: Contr
20
20
  * @param selector - Selector of the function to be broadcast.
21
21
  * @returns A ContractFunctionInteraction object that can be used to send the transaction.
22
22
  */
23
- export declare function broadcastUnconstrainedFunction(wallet: Wallet, artifact: ContractArtifact, selector: FunctionSelector): ContractFunctionInteraction;
23
+ export declare function broadcastUnconstrainedFunction(wallet: Wallet, artifact: ContractArtifact, selector: FunctionSelector): Promise<ContractFunctionInteraction>;
24
24
  //# sourceMappingURL=broadcast_function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast_function.d.ts","sourceRoot":"","sources":["../../src/deployment/broadcast_function.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC;AAInH,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,gBAAgB,GACzB,2BAA2B,CAmC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,gBAAgB,GACzB,2BAA2B,CA8B7B"}
1
+ {"version":3,"file":"broadcast_function.d.ts","sourceRoot":"","sources":["../../src/deployment/broadcast_function.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC;AAInH,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,2BAA2B,CAAC,CAuCtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,2BAA2B,CAAC,CAgCtC"}
@@ -12,7 +12,7 @@ import { getRegistererContract } from './protocol_contracts.js';
12
12
  * @param selector - Selector of the function to be broadcast.
13
13
  * @returns A ContractFunctionInteraction object that can be used to send the transaction.
14
14
  */
15
- export function broadcastPrivateFunction(wallet, artifact, selector) {
15
+ export async function broadcastPrivateFunction(wallet, artifact, selector) {
16
16
  const contractClass = getContractClassFromArtifact(artifact);
17
17
  const privateFunctionArtifact = artifact.functions.find(fn => selector.equals(fn));
18
18
  if (!privateFunctionArtifact) {
@@ -21,10 +21,11 @@ export function broadcastPrivateFunction(wallet, artifact, selector) {
21
21
  const { artifactTreeSiblingPath, artifactTreeLeafIndex, artifactMetadataHash, functionMetadataHash, unconstrainedFunctionsArtifactTreeRoot, privateFunctionTreeSiblingPath, privateFunctionTreeLeafIndex, } = createPrivateFunctionMembershipProof(selector, artifact);
22
22
  const vkHash = computeVerificationKeyHash(privateFunctionArtifact.verificationKey);
23
23
  const bytecode = bufferAsFields(privateFunctionArtifact.bytecode, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS);
24
+ await wallet.addCapsule(bytecode);
24
25
  const registerer = getRegistererContract(wallet);
25
- return registerer.methods.broadcast_private_function(contractClass.id, artifactMetadataHash, unconstrainedFunctionsArtifactTreeRoot, privateFunctionTreeSiblingPath, privateFunctionTreeLeafIndex, padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT), artifactTreeLeafIndex,
26
+ return Promise.resolve(registerer.methods.broadcast_private_function(contractClass.id, artifactMetadataHash, unconstrainedFunctionsArtifactTreeRoot, privateFunctionTreeSiblingPath, privateFunctionTreeLeafIndex, padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT), artifactTreeLeafIndex,
26
27
  // eslint-disable-next-line camelcase
27
- { selector, metadata_hash: functionMetadataHash, bytecode, vk_hash: vkHash });
28
+ { selector, metadata_hash: functionMetadataHash, vk_hash: vkHash }));
28
29
  }
29
30
  /**
30
31
  * Sets up a call to broadcast an unconstrained function's bytecode via the ClassRegisterer contract.
@@ -35,7 +36,7 @@ export function broadcastPrivateFunction(wallet, artifact, selector) {
35
36
  * @param selector - Selector of the function to be broadcast.
36
37
  * @returns A ContractFunctionInteraction object that can be used to send the transaction.
37
38
  */
38
- export function broadcastUnconstrainedFunction(wallet, artifact, selector) {
39
+ export async function broadcastUnconstrainedFunction(wallet, artifact, selector) {
39
40
  const contractClass = getContractClassFromArtifact(artifact);
40
41
  const functionArtifactIndex = artifact.functions.findIndex(fn => fn.functionType === FunctionType.UNCONSTRAINED && selector.equals(fn));
41
42
  if (functionArtifactIndex < 0) {
@@ -44,9 +45,10 @@ export function broadcastUnconstrainedFunction(wallet, artifact, selector) {
44
45
  const functionArtifact = artifact.functions[functionArtifactIndex];
45
46
  const { artifactMetadataHash, artifactTreeLeafIndex, artifactTreeSiblingPath, functionMetadataHash, privateFunctionsArtifactTreeRoot, } = createUnconstrainedFunctionMembershipProof(selector, artifact);
46
47
  const bytecode = bufferAsFields(functionArtifact.bytecode, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS);
48
+ await wallet.addCapsule(bytecode);
47
49
  const registerer = getRegistererContract(wallet);
48
50
  return registerer.methods.broadcast_unconstrained_function(contractClass.id, artifactMetadataHash, privateFunctionsArtifactTreeRoot, padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT), artifactTreeLeafIndex,
49
51
  // eslint-disable-next-line camelcase
50
- { selector, metadata_hash: functionMetadataHash, bytecode });
52
+ { selector, metadata_hash: functionMetadataHash });
51
53
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0X2Z1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlcGxveW1lbnQvYnJvYWRjYXN0X2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsdURBQXVELEVBQ3ZELDBCQUEwQixFQUMxQixvQ0FBb0MsRUFDcEMsMENBQTBDLEVBQzFDLDRCQUE0QixHQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBZ0QsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLE1BQWMsRUFDZCxRQUEwQixFQUMxQixRQUEwQjtJQUUxQixNQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELE1BQU0sRUFDSix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsc0NBQXNDLEVBQ3RDLDhCQUE4QixFQUM5Qiw0QkFBNEIsR0FDN0IsR0FBRyxvQ0FBb0MsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFN0QsTUFBTSxNQUFNLEdBQUcsMEJBQTBCLENBQUMsdUJBQXVCLENBQUMsZUFBZ0IsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FDN0IsdUJBQXVCLENBQUMsUUFBUSxFQUNoQyx1REFBdUQsQ0FDeEQsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FDbEQsYUFBYSxDQUFDLEVBQUUsRUFDaEIsb0JBQW9CLEVBQ3BCLHNDQUFzQyxFQUN0Qyw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBQzVCLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLGlDQUFpQyxDQUFDLEVBQ2hGLHFCQUFxQjtJQUNyQixxQ0FBcUM7SUFDckMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQzdFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLE1BQWMsRUFDZCxRQUEwQixFQUMxQixRQUEwQjtJQUUxQixNQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN4RCxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUM1RSxDQUFDO0lBQ0YsSUFBSSxxQkFBcUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUVuRSxNQUFNLEVBQ0osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxHQUNqQyxHQUFHLDBDQUEwQyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVuRSxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLHVEQUF1RCxDQUFDLENBQUM7SUFFcEgsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUN4RCxhQUFhLENBQUMsRUFBRSxFQUNoQixvQkFBb0IsRUFDcEIsZ0NBQWdDLEVBQ2hDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLGlDQUFpQyxDQUFDLEVBQ2hGLHFCQUFxQjtJQUNyQixxQ0FBcUM7SUFDckMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxDQUM1RCxDQUFDO0FBQ0osQ0FBQyJ9
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0X2Z1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlcGxveW1lbnQvYnJvYWRjYXN0X2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsdURBQXVELEVBQ3ZELDBCQUEwQixFQUMxQixvQ0FBb0MsRUFDcEMsMENBQTBDLEVBQzFDLDRCQUE0QixHQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBZ0QsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHdCQUF3QixDQUM1QyxNQUFjLEVBQ2QsUUFBMEIsRUFDMUIsUUFBMEI7SUFFMUIsTUFBTSxhQUFhLEdBQUcsNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0QsTUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxNQUFNLEVBQ0osdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHNDQUFzQyxFQUN0Qyw4QkFBOEIsRUFDOUIsNEJBQTRCLEdBQzdCLEdB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aztec/aztec.js",
3
3
  "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/aztec.js",
4
- "version": "0.45.0",
4
+ "version": "0.45.1",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./dest/index.js",
@@ -73,12 +73,12 @@
73
73
  ]
74
74
  },
75
75
  "dependencies": {
76
- "@aztec/circuit-types": "0.45.0",
77
- "@aztec/circuits.js": "0.45.0",
78
- "@aztec/ethereum": "0.45.0",
79
- "@aztec/foundation": "0.45.0",
80
- "@aztec/protocol-contracts": "0.45.0",
81
- "@aztec/types": "0.45.0",
76
+ "@aztec/circuit-types": "0.45.1",
77
+ "@aztec/circuits.js": "0.45.1",
78
+ "@aztec/ethereum": "0.45.1",
79
+ "@aztec/foundation": "0.45.1",
80
+ "@aztec/protocol-contracts": "0.45.1",
81
+ "@aztec/types": "0.45.1",
82
82
  "tslib": "^2.4.0"
83
83
  },
84
84
  "devDependencies": {
@@ -23,11 +23,11 @@ import { getRegistererContract } from './protocol_contracts.js';
23
23
  * @param selector - Selector of the function to be broadcast.
24
24
  * @returns A ContractFunctionInteraction object that can be used to send the transaction.
25
25
  */
26
- export function broadcastPrivateFunction(
26
+ export async function broadcastPrivateFunction(
27
27
  wallet: Wallet,
28
28
  artifact: ContractArtifact,
29
29
  selector: FunctionSelector,
30
- ): ContractFunctionInteraction {
30
+ ): Promise<ContractFunctionInteraction> {
31
31
  const contractClass = getContractClassFromArtifact(artifact);
32
32
  const privateFunctionArtifact = artifact.functions.find(fn => selector.equals(fn));
33
33
  if (!privateFunctionArtifact) {
@@ -50,17 +50,21 @@ export function broadcastPrivateFunction(
50
50
  MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS,
51
51
  );
52
52
 
53
+ await wallet.addCapsule(bytecode);
54
+
53
55
  const registerer = getRegistererContract(wallet);
54
- return registerer.methods.broadcast_private_function(
55
- contractClass.id,
56
- artifactMetadataHash,
57
- unconstrainedFunctionsArtifactTreeRoot,
58
- privateFunctionTreeSiblingPath,
59
- privateFunctionTreeLeafIndex,
60
- padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT),
61
- artifactTreeLeafIndex,
62
- // eslint-disable-next-line camelcase
63
- { selector, metadata_hash: functionMetadataHash, bytecode, vk_hash: vkHash },
56
+ return Promise.resolve(
57
+ registerer.methods.broadcast_private_function(
58
+ contractClass.id,
59
+ artifactMetadataHash,
60
+ unconstrainedFunctionsArtifactTreeRoot,
61
+ privateFunctionTreeSiblingPath,
62
+ privateFunctionTreeLeafIndex,
63
+ padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT),
64
+ artifactTreeLeafIndex,
65
+ // eslint-disable-next-line camelcase
66
+ { selector, metadata_hash: functionMetadataHash, vk_hash: vkHash },
67
+ ),
64
68
  );
65
69
  }
66
70
 
@@ -73,11 +77,11 @@ export function broadcastPrivateFunction(
73
77
  * @param selector - Selector of the function to be broadcast.
74
78
  * @returns A ContractFunctionInteraction object that can be used to send the transaction.
75
79
  */
76
- export function broadcastUnconstrainedFunction(
80
+ export async function broadcastUnconstrainedFunction(
77
81
  wallet: Wallet,
78
82
  artifact: ContractArtifact,
79
83
  selector: FunctionSelector,
80
- ): ContractFunctionInteraction {
84
+ ): Promise<ContractFunctionInteraction> {
81
85
  const contractClass = getContractClassFromArtifact(artifact);
82
86
  const functionArtifactIndex = artifact.functions.findIndex(
83
87
  fn => fn.functionType === FunctionType.UNCONSTRAINED && selector.equals(fn),
@@ -97,6 +101,8 @@ export function broadcastUnconstrainedFunction(
97
101
 
98
102
  const bytecode = bufferAsFields(functionArtifact.bytecode, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS);
99
103
 
104
+ await wallet.addCapsule(bytecode);
105
+
100
106
  const registerer = getRegistererContract(wallet);
101
107
  return registerer.methods.broadcast_unconstrained_function(
102
108
  contractClass.id,
@@ -105,6 +111,6 @@ export function broadcastUnconstrainedFunction(
105
111
  padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT),
106
112
  artifactTreeLeafIndex,
107
113
  // eslint-disable-next-line camelcase
108
- { selector, metadata_hash: functionMetadataHash, bytecode },
114
+ { selector, metadata_hash: functionMetadataHash },
109
115
  );
110
116
  }