@aztec/aztec.js 0.0.1-commit.8afd444 → 0.0.1-commit.9117c5f5a
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/api/contract.d.ts +2 -2
- package/dest/api/contract.js +2 -2
- package/dest/api/deployment.d.ts +1 -2
- package/dest/api/deployment.d.ts.map +1 -1
- package/dest/api/deployment.js +0 -1
- package/dest/api/events.d.ts +10 -6
- package/dest/api/events.d.ts.map +1 -1
- package/dest/api/events.js +30 -20
- package/dest/api/fields.d.ts +2 -1
- package/dest/api/fields.d.ts.map +1 -1
- package/dest/api/fields.js +1 -0
- package/dest/api/wallet.d.ts +2 -2
- package/dest/api/wallet.d.ts.map +1 -1
- package/dest/api/wallet.js +1 -1
- package/dest/contract/batch_call.d.ts +3 -3
- package/dest/contract/batch_call.d.ts.map +1 -1
- package/dest/contract/batch_call.js +8 -5
- package/dest/contract/contract_function_interaction.d.ts +3 -12
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +10 -7
- package/dest/contract/deploy_method.d.ts +19 -6
- package/dest/contract/deploy_method.d.ts.map +1 -1
- package/dest/contract/deploy_method.js +25 -10
- package/dest/contract/get_gas_limits.js +3 -3
- package/dest/contract/interaction_options.d.ts +8 -1
- package/dest/contract/interaction_options.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/auth-registry.d.ts +10 -1
- package/dest/contract/protocol_contracts/auth-registry.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/auth-registry.js +506 -59
- package/dest/contract/protocol_contracts/contract-class-registry.d.ts +2 -13
- package/dest/contract/protocol_contracts/contract-class-registry.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/contract-class-registry.js +12 -258
- package/dest/contract/protocol_contracts/fee-juice.d.ts +1 -1
- package/dest/contract/protocol_contracts/fee-juice.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/fee-juice.js +8 -0
- package/dest/contract/protocol_contracts/multi-call-entrypoint.d.ts +1 -1
- package/dest/contract/protocol_contracts/multi-call-entrypoint.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/multi-call-entrypoint.js +17 -1
- package/dest/contract/protocol_contracts/public-checks.d.ts +1 -1
- package/dest/contract/protocol_contracts/public-checks.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/public-checks.js +17 -1
- package/dest/fee/fee_juice_payment_method_with_claim.js +6 -6
- package/dest/fee/private_fee_payment_method.js +10 -10
- package/dest/fee/public_fee_payment_method.js +10 -10
- package/dest/fee/sponsored_fee_payment.js +3 -3
- package/dest/wallet/capabilities.d.ts +13 -5
- package/dest/wallet/capabilities.d.ts.map +1 -1
- package/dest/wallet/deploy_account_method.d.ts +15 -4
- package/dest/wallet/deploy_account_method.d.ts.map +1 -1
- package/dest/wallet/deploy_account_method.js +26 -0
- package/dest/wallet/wallet.d.ts +297 -89
- package/dest/wallet/wallet.d.ts.map +1 -1
- package/dest/wallet/wallet.js +35 -25
- package/package.json +20 -11
- package/src/api/contract.ts +2 -2
- package/src/api/deployment.ts +0 -1
- package/src/api/events.ts +35 -27
- package/src/api/fields.ts +1 -0
- package/src/api/wallet.ts +5 -1
- package/src/contract/batch_call.ts +7 -12
- package/src/contract/contract_function_interaction.ts +17 -7
- package/src/contract/deploy_method.ts +48 -14
- package/src/contract/get_gas_limits.ts +3 -3
- package/src/contract/interaction_options.ts +7 -0
- package/src/contract/protocol_contracts/auth-registry.ts +239 -37
- package/src/contract/protocol_contracts/contract-class-registry.ts +3 -145
- package/src/contract/protocol_contracts/fee-juice.ts +2 -0
- package/src/contract/protocol_contracts/multi-call-entrypoint.ts +5 -1
- package/src/contract/protocol_contracts/public-checks.ts +5 -1
- package/src/fee/fee_juice_payment_method_with_claim.ts +5 -5
- package/src/fee/private_fee_payment_method.ts +7 -7
- package/src/fee/public_fee_payment_method.ts +8 -8
- package/src/fee/sponsored_fee_payment.ts +3 -3
- package/src/wallet/capabilities.ts +13 -4
- package/src/wallet/deploy_account_method.ts +39 -2
- package/src/wallet/wallet.ts +88 -38
- package/dest/deployment/broadcast_function.d.ts +0 -24
- package/dest/deployment/broadcast_function.d.ts.map +0 -1
- package/dest/deployment/broadcast_function.js +0 -74
- package/src/deployment/broadcast_function.ts +0 -148
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ARTIFACT_FUNCTION_TREE_MAX_HEIGHT,
|
|
3
|
-
CONTRACT_CLASS_REGISTRY_BYTECODE_CAPSULE_SLOT,
|
|
4
|
-
MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS,
|
|
5
|
-
} from '@aztec/constants';
|
|
6
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
7
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
9
|
-
import { type ContractArtifact, FunctionSelector, FunctionType, bufferAsFields } from '@aztec/stdlib/abi';
|
|
10
|
-
import {
|
|
11
|
-
computeVerificationKeyHash,
|
|
12
|
-
createPrivateFunctionMembershipProof,
|
|
13
|
-
createUtilityFunctionMembershipProof,
|
|
14
|
-
getContractClassFromArtifact,
|
|
15
|
-
} from '@aztec/stdlib/contract';
|
|
16
|
-
import { Capsule } from '@aztec/stdlib/tx';
|
|
17
|
-
|
|
18
|
-
import type { ContractFunctionInteraction } from '../contract/contract_function_interaction.js';
|
|
19
|
-
import { ContractClassRegistryContract } from '../contract/protocol_contracts/contract-class-registry.js';
|
|
20
|
-
import type { Wallet } from '../wallet/index.js';
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Sets up a call to broadcast a private function's bytecode via the ClassRegistry contract.
|
|
24
|
-
* Note that this is not required for users to call the function, but is rather a convenience to make
|
|
25
|
-
* this code publicly available so dapps or wallets do not need to redistribute it.
|
|
26
|
-
* @param wallet - Wallet to send the transaction.
|
|
27
|
-
* @param artifact - Contract artifact that contains the function to be broadcast.
|
|
28
|
-
* @param selector - Selector of the function to be broadcast.
|
|
29
|
-
* @returns A ContractFunctionInteraction object that can be used to send the transaction.
|
|
30
|
-
*/
|
|
31
|
-
export async function broadcastPrivateFunction(
|
|
32
|
-
wallet: Wallet,
|
|
33
|
-
artifact: ContractArtifact,
|
|
34
|
-
selector: FunctionSelector,
|
|
35
|
-
): Promise<ContractFunctionInteraction> {
|
|
36
|
-
const contractClass = await getContractClassFromArtifact(artifact);
|
|
37
|
-
const privateFunctions = artifact.functions.filter(fn => fn.functionType === FunctionType.PRIVATE);
|
|
38
|
-
const functionsAndSelectors = await Promise.all(
|
|
39
|
-
privateFunctions.map(async fn => ({
|
|
40
|
-
f: fn,
|
|
41
|
-
selector: await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters),
|
|
42
|
-
})),
|
|
43
|
-
);
|
|
44
|
-
const privateFunctionArtifact = functionsAndSelectors.find(fn => selector.equals(fn.selector))?.f;
|
|
45
|
-
if (!privateFunctionArtifact) {
|
|
46
|
-
throw new Error(`Private function with selector ${selector.toString()} not found`);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const {
|
|
50
|
-
artifactTreeSiblingPath,
|
|
51
|
-
artifactTreeLeafIndex,
|
|
52
|
-
artifactMetadataHash,
|
|
53
|
-
functionMetadataHash,
|
|
54
|
-
utilityFunctionsTreeRoot,
|
|
55
|
-
privateFunctionTreeSiblingPath,
|
|
56
|
-
privateFunctionTreeLeafIndex,
|
|
57
|
-
} = await createPrivateFunctionMembershipProof(selector, artifact);
|
|
58
|
-
|
|
59
|
-
const vkHash = await computeVerificationKeyHash(privateFunctionArtifact);
|
|
60
|
-
|
|
61
|
-
const classRegistry = ContractClassRegistryContract.at(wallet);
|
|
62
|
-
const bytecode = bufferAsFields(
|
|
63
|
-
privateFunctionArtifact.bytecode,
|
|
64
|
-
MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS,
|
|
65
|
-
);
|
|
66
|
-
return classRegistry.methods
|
|
67
|
-
.broadcast_private_function(
|
|
68
|
-
contractClass.id,
|
|
69
|
-
artifactMetadataHash,
|
|
70
|
-
utilityFunctionsTreeRoot,
|
|
71
|
-
privateFunctionTreeSiblingPath,
|
|
72
|
-
privateFunctionTreeLeafIndex,
|
|
73
|
-
padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT),
|
|
74
|
-
artifactTreeLeafIndex,
|
|
75
|
-
// eslint-disable-next-line camelcase
|
|
76
|
-
{ selector, metadata_hash: functionMetadataHash, vk_hash: vkHash },
|
|
77
|
-
)
|
|
78
|
-
.with({
|
|
79
|
-
capsules: [
|
|
80
|
-
new Capsule(
|
|
81
|
-
ProtocolContractAddress.ContractClassRegistry,
|
|
82
|
-
new Fr(CONTRACT_CLASS_REGISTRY_BYTECODE_CAPSULE_SLOT),
|
|
83
|
-
bytecode,
|
|
84
|
-
),
|
|
85
|
-
],
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Sets up a call to broadcast a utility function's bytecode via the ClassRegistry contract.
|
|
91
|
-
* Note that this is not required for users to call the function, but is rather a convenience to make
|
|
92
|
-
* this code publicly available so dapps or wallets do not need to redistribute it.
|
|
93
|
-
* @param wallet - Wallet to send the transaction.
|
|
94
|
-
* @param artifact - Contract artifact that contains the function to be broadcast.
|
|
95
|
-
* @param selector - Selector of the function to be broadcast.
|
|
96
|
-
* @returns A ContractFunctionInteraction object that can be used to send the transaction.
|
|
97
|
-
*/
|
|
98
|
-
export async function broadcastUtilityFunction(
|
|
99
|
-
wallet: Wallet,
|
|
100
|
-
artifact: ContractArtifact,
|
|
101
|
-
selector: FunctionSelector,
|
|
102
|
-
): Promise<ContractFunctionInteraction> {
|
|
103
|
-
const contractClass = await getContractClassFromArtifact(artifact);
|
|
104
|
-
const utilityFunctions = artifact.functions.filter(fn => fn.functionType === FunctionType.UTILITY);
|
|
105
|
-
const utilityFunctionsAndSelectors = await Promise.all(
|
|
106
|
-
utilityFunctions.map(async fn => ({
|
|
107
|
-
f: fn,
|
|
108
|
-
selector: await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters),
|
|
109
|
-
})),
|
|
110
|
-
);
|
|
111
|
-
const utilityFunctionArtifact = utilityFunctionsAndSelectors.find(fn => selector.equals(fn.selector))?.f;
|
|
112
|
-
if (!utilityFunctionArtifact) {
|
|
113
|
-
throw new Error(`Utility function with selector ${selector.toString()} not found`);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const {
|
|
117
|
-
artifactMetadataHash,
|
|
118
|
-
artifactTreeLeafIndex,
|
|
119
|
-
artifactTreeSiblingPath,
|
|
120
|
-
functionMetadataHash,
|
|
121
|
-
privateFunctionsArtifactTreeRoot,
|
|
122
|
-
} = await createUtilityFunctionMembershipProof(selector, artifact);
|
|
123
|
-
|
|
124
|
-
const classRegistry = ContractClassRegistryContract.at(wallet);
|
|
125
|
-
const bytecode = bufferAsFields(
|
|
126
|
-
utilityFunctionArtifact.bytecode,
|
|
127
|
-
MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS,
|
|
128
|
-
);
|
|
129
|
-
return classRegistry.methods
|
|
130
|
-
.broadcast_utility_function(
|
|
131
|
-
contractClass.id,
|
|
132
|
-
artifactMetadataHash,
|
|
133
|
-
privateFunctionsArtifactTreeRoot,
|
|
134
|
-
padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT),
|
|
135
|
-
artifactTreeLeafIndex,
|
|
136
|
-
// eslint-disable-next-line camelcase
|
|
137
|
-
{ selector, metadata_hash: functionMetadataHash },
|
|
138
|
-
)
|
|
139
|
-
.with({
|
|
140
|
-
capsules: [
|
|
141
|
-
new Capsule(
|
|
142
|
-
ProtocolContractAddress.ContractClassRegistry,
|
|
143
|
-
new Fr(CONTRACT_CLASS_REGISTRY_BYTECODE_CAPSULE_SLOT),
|
|
144
|
-
bytecode,
|
|
145
|
-
),
|
|
146
|
-
],
|
|
147
|
-
});
|
|
148
|
-
}
|