@aztec/aztec.js 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2c85e299c
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/abi.d.ts +2 -2
- package/dest/api/abi.d.ts.map +1 -1
- package/dest/api/contract.d.ts +5 -5
- package/dest/api/contract.d.ts.map +1 -1
- package/dest/api/contract.js +3 -3
- 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 +18 -6
- package/dest/api/events.d.ts.map +1 -1
- package/dest/api/events.js +37 -22
- 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/keys.d.ts +1 -1
- package/dest/api/keys.js +1 -1
- package/dest/api/wallet.d.ts +3 -2
- package/dest/api/wallet.d.ts.map +1 -1
- package/dest/api/wallet.js +2 -1
- package/dest/contract/base_contract_interaction.d.ts +3 -3
- package/dest/contract/base_contract_interaction.d.ts.map +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 +17 -8
- package/dest/contract/contract_function_interaction.d.ts +7 -16
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +107 -18
- package/dest/contract/deploy_method.d.ts +37 -12
- package/dest/contract/deploy_method.d.ts.map +1 -1
- package/dest/contract/deploy_method.js +42 -21
- package/dest/contract/get_gas_limits.js +3 -3
- package/dest/contract/interaction_options.d.ts +62 -21
- package/dest/contract/interaction_options.d.ts.map +1 -1
- package/dest/contract/interaction_options.js +33 -0
- package/dest/contract/protocol_contracts/auth-registry.d.ts +1 -1
- package/dest/contract/protocol_contracts/auth-registry.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/auth-registry.js +48 -6
- package/dest/contract/protocol_contracts/contract-class-registry.d.ts +2 -22
- package/dest/contract/protocol_contracts/contract-class-registry.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/contract-class-registry.js +13 -658
- package/dest/contract/protocol_contracts/contract-instance-registry.d.ts +2 -11
- package/dest/contract/protocol_contracts/contract-instance-registry.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/contract-instance-registry.js +76 -473
- package/dest/contract/protocol_contracts/fee-juice.d.ts +1 -10
- package/dest/contract/protocol_contracts/fee-juice.d.ts.map +1 -1
- package/dest/contract/protocol_contracts/fee-juice.js +7 -400
- 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 +39 -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 +39 -9
- package/dest/fee/fee_juice_payment_method_with_claim.js +6 -6
- package/dest/fee/private_fee_payment_method.d.ts +2 -1
- package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.js +11 -10
- package/dest/fee/public_fee_payment_method.d.ts +2 -1
- package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/public_fee_payment_method.js +11 -10
- package/dest/fee/sponsored_fee_payment.js +3 -3
- package/dest/utils/abi_types.d.ts +6 -1
- package/dest/utils/abi_types.d.ts.map +1 -1
- package/dest/utils/abi_types.js +1 -1
- package/dest/utils/authwit.d.ts +5 -5
- package/dest/utils/authwit.d.ts.map +1 -1
- package/dest/utils/authwit.js +10 -6
- package/dest/utils/cross_chain.d.ts +3 -8
- package/dest/utils/cross_chain.d.ts.map +1 -1
- package/dest/utils/cross_chain.js +8 -15
- package/dest/wallet/capabilities.d.ts +452 -0
- package/dest/wallet/capabilities.d.ts.map +1 -0
- package/dest/wallet/capabilities.js +3 -0
- 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/index.d.ts +2 -1
- package/dest/wallet/index.d.ts.map +1 -1
- package/dest/wallet/index.js +1 -0
- package/dest/wallet/wallet.d.ts +1663 -89
- package/dest/wallet/wallet.d.ts.map +1 -1
- package/dest/wallet/wallet.js +175 -27
- package/package.json +20 -11
- package/src/api/abi.ts +1 -0
- package/src/api/contract.ts +10 -3
- package/src/api/deployment.ts +0 -1
- package/src/api/events.ts +50 -32
- package/src/api/fields.ts +1 -0
- package/src/api/keys.ts +2 -2
- package/src/api/wallet.ts +43 -1
- package/src/contract/base_contract_interaction.ts +3 -2
- package/src/contract/batch_call.ts +17 -14
- package/src/contract/contract_function_interaction.ts +114 -26
- package/src/contract/deploy_method.ts +77 -32
- package/src/contract/get_gas_limits.ts +3 -3
- package/src/contract/interaction_options.ts +96 -23
- package/src/contract/protocol_contracts/auth-registry.ts +10 -2
- package/src/contract/protocol_contracts/contract-class-registry.ts +4 -338
- package/src/contract/protocol_contracts/contract-instance-registry.ts +33 -225
- package/src/contract/protocol_contracts/fee-juice.ts +2 -193
- package/src/contract/protocol_contracts/multi-call-entrypoint.ts +8 -1
- package/src/contract/protocol_contracts/public-checks.ts +8 -3
- package/src/fee/fee_juice_payment_method_with_claim.ts +5 -5
- package/src/fee/private_fee_payment_method.ts +8 -7
- package/src/fee/public_fee_payment_method.ts +9 -8
- package/src/fee/sponsored_fee_payment.ts +3 -3
- package/src/utils/abi_types.ts +7 -0
- package/src/utils/authwit.ts +20 -22
- package/src/utils/cross_chain.ts +9 -18
- package/src/wallet/capabilities.ts +500 -0
- package/src/wallet/deploy_account_method.ts +39 -2
- package/src/wallet/index.ts +1 -0
- package/src/wallet/wallet.ts +230 -39
- 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,9 +1,8 @@
|
|
|
1
|
-
import { FunctionSelector, FunctionType, decodeFromAbi, encodeArguments } from '@aztec/stdlib/abi';
|
|
2
|
-
import { collectOffchainEffects } from '@aztec/stdlib/tx';
|
|
1
|
+
import { FunctionCall, FunctionSelector, FunctionType, canBeMappedFromNullOrUndefined, decodeFromAbi, encodeArguments, isOptionStruct } from '@aztec/stdlib/abi';
|
|
3
2
|
import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
4
3
|
import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
5
4
|
import { getGasLimits } from './get_gas_limits.js';
|
|
6
|
-
import { toProfileOptions, toSimulateOptions } from './interaction_options.js';
|
|
5
|
+
import { emptyOffchainOutput, extractOffchainOutput, toProfileOptions, toSimulateOptions } from './interaction_options.js';
|
|
7
6
|
/**
|
|
8
7
|
* This is the class that is returned when calling e.g. `contract.methods.myMethod(arg0, arg1)`.
|
|
9
8
|
* It contains available interactions one can call on a method, including view.
|
|
@@ -14,26 +13,43 @@ import { toProfileOptions, toSimulateOptions } from './interaction_options.js';
|
|
|
14
13
|
extraHashedArgs;
|
|
15
14
|
constructor(wallet, contractAddress, functionDao, args, authWitnesses = [], capsules = [], extraHashedArgs = []){
|
|
16
15
|
super(wallet, authWitnesses, capsules), this.contractAddress = contractAddress, this.functionDao = functionDao, this.args = args, this.extraHashedArgs = extraHashedArgs;
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
// This may feel a bit ad-hoc here, so it warrants a comment. We accept Noir Option<T> parameters, and it's natural
|
|
17
|
+
// to map JS's null/undefined to Noir Option's None. One possible way to deal with null/undefined arguments at this
|
|
18
|
+
// point in the codebase is to conclude that they are accepted since at least one Noir type (ie: Option) can be
|
|
19
|
+
// encoded from them. Then we would let `encode` deal with potential mismatches. I chose not to do that because of
|
|
20
|
+
// the pervasiveness of null/undefined in JS, and how easy it is to inadvertently pass it around. Having this check
|
|
21
|
+
// here allows us to fail at a point where the boundaries and intent are clear.
|
|
22
|
+
if (this.hasInvalidNullOrUndefinedArguments(args)) {
|
|
23
|
+
const signature = formatFunctionSignature(this.functionDao.name, this.functionDao.parameters);
|
|
24
|
+
const received = args.map(formatArg).join(', ');
|
|
25
|
+
throw new Error(`Null or undefined arguments are only allowed for Option<T> parameters in ${signature}. Received: (${received}).`);
|
|
19
26
|
}
|
|
20
27
|
}
|
|
28
|
+
hasInvalidNullOrUndefinedArguments(args) {
|
|
29
|
+
return args.some((arg, index)=>{
|
|
30
|
+
if (arg !== undefined && arg !== null) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
const parameterType = this.functionDao.parameters[index]?.type;
|
|
34
|
+
return !parameterType || !canBeMappedFromNullOrUndefined(parameterType);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
21
37
|
/**
|
|
22
38
|
* Returns the encoded function call wrapped by this interaction
|
|
23
39
|
* Useful when generating authwits
|
|
24
40
|
* @returns An encoded function call
|
|
25
41
|
*/ async getFunctionCall() {
|
|
26
42
|
const args = encodeArguments(this.functionDao, this.args);
|
|
27
|
-
return {
|
|
43
|
+
return FunctionCall.from({
|
|
28
44
|
name: this.functionDao.name,
|
|
29
|
-
|
|
45
|
+
to: this.contractAddress,
|
|
30
46
|
selector: await FunctionSelector.fromNameAndParameters(this.functionDao.name, this.functionDao.parameters),
|
|
31
47
|
type: this.functionDao.functionType,
|
|
32
|
-
to: this.contractAddress,
|
|
33
|
-
isStatic: this.functionDao.isStatic,
|
|
34
48
|
hideMsgSender: false,
|
|
49
|
+
isStatic: this.functionDao.isStatic,
|
|
50
|
+
args,
|
|
35
51
|
returnTypes: this.functionDao.returnTypes
|
|
36
|
-
};
|
|
52
|
+
});
|
|
37
53
|
}
|
|
38
54
|
/**
|
|
39
55
|
* Returns the execution payload that allows this operation to happen on chain.
|
|
@@ -52,22 +68,38 @@ import { toProfileOptions, toSimulateOptions } from './interaction_options.js';
|
|
|
52
68
|
]) : functionExecutionPayload;
|
|
53
69
|
return finalExecutionPayload;
|
|
54
70
|
}
|
|
55
|
-
//
|
|
56
|
-
|
|
71
|
+
// docs:start:simulate
|
|
72
|
+
/**
|
|
73
|
+
* Simulate a transaction and get information from its execution.
|
|
74
|
+
* Differs from prove in a few important ways:
|
|
75
|
+
* 1. It returns the values of the function execution, plus additional metadata if requested
|
|
76
|
+
* 2. It supports `utility`, `private` and `public` functions
|
|
77
|
+
*
|
|
78
|
+
* @param options - An optional object containing additional configuration for the simulation.
|
|
79
|
+
* @returns Depending on the simulation options, this method directly returns the result value of the executed
|
|
80
|
+
* function or a rich object containing extra metadata, such as estimated gas costs (if requested via options),
|
|
81
|
+
* execution statistics and emitted offchain effects
|
|
82
|
+
*/ async simulate(options = {}) {
|
|
57
83
|
// docs:end:simulate
|
|
58
84
|
if (this.functionDao.functionType == FunctionType.UTILITY) {
|
|
59
85
|
const call = await this.getFunctionCall();
|
|
60
|
-
const utilityResult = await this.wallet.
|
|
86
|
+
const utilityResult = await this.wallet.executeUtility(call, {
|
|
87
|
+
scope: options.from,
|
|
88
|
+
authWitnesses: options.authWitnesses
|
|
89
|
+
});
|
|
61
90
|
// Decode the raw field elements to the actual return type
|
|
62
91
|
const returnValue = utilityResult.result ? decodeFromAbi(this.functionDao.returnTypes, utilityResult.result) : [];
|
|
63
92
|
if (options.includeMetadata) {
|
|
64
93
|
return {
|
|
65
94
|
stats: utilityResult.stats,
|
|
95
|
+
...emptyOffchainOutput(),
|
|
66
96
|
result: returnValue
|
|
67
97
|
};
|
|
68
|
-
} else {
|
|
69
|
-
return returnValue;
|
|
70
98
|
}
|
|
99
|
+
return {
|
|
100
|
+
result: returnValue,
|
|
101
|
+
...emptyOffchainOutput()
|
|
102
|
+
};
|
|
71
103
|
}
|
|
72
104
|
const executionPayload = await this.request(options);
|
|
73
105
|
const simulatedTx = await this.wallet.simulateTx(executionPayload, toSimulateOptions(options));
|
|
@@ -86,21 +118,24 @@ import { toProfileOptions, toSimulateOptions } from './interaction_options.js';
|
|
|
86
118
|
rawReturnValues = simulatedTx.getPublicReturnValues()?.[0]?.values;
|
|
87
119
|
}
|
|
88
120
|
const returnValue = rawReturnValues ? decodeFromAbi(this.functionDao.returnTypes, rawReturnValues) : [];
|
|
121
|
+
const offchainOutput = extractOffchainOutput(simulatedTx.offchainEffects);
|
|
89
122
|
if (options.includeMetadata || options.fee?.estimateGas) {
|
|
90
123
|
const { gasLimits, teardownGasLimits } = getGasLimits(simulatedTx, options.fee?.estimatedGasPadding);
|
|
91
124
|
this.log.verbose(`Estimated gas limits for tx: DA=${gasLimits.daGas} L2=${gasLimits.l2Gas} teardownDA=${teardownGasLimits.daGas} teardownL2=${teardownGasLimits.l2Gas}`);
|
|
92
125
|
return {
|
|
93
126
|
stats: simulatedTx.stats,
|
|
94
|
-
|
|
127
|
+
...offchainOutput,
|
|
95
128
|
result: returnValue,
|
|
96
129
|
estimatedGas: {
|
|
97
130
|
gasLimits,
|
|
98
131
|
teardownGasLimits
|
|
99
132
|
}
|
|
100
133
|
};
|
|
101
|
-
} else {
|
|
102
|
-
return returnValue;
|
|
103
134
|
}
|
|
135
|
+
return {
|
|
136
|
+
result: returnValue,
|
|
137
|
+
...offchainOutput
|
|
138
|
+
};
|
|
104
139
|
}
|
|
105
140
|
/**
|
|
106
141
|
* Simulate a transaction and profile the gate count for each function in the transaction.
|
|
@@ -124,3 +159,57 @@ import { toProfileOptions, toSimulateOptions } from './interaction_options.js';
|
|
|
124
159
|
return new ContractFunctionInteraction(this.wallet, this.contractAddress, this.functionDao, this.args, this.authWitnesses.concat(authWitnesses), this.capsules.concat(capsules), this.extraHashedArgs.concat(extraHashedArgs));
|
|
125
160
|
}
|
|
126
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Render an AbiType as a human readable string
|
|
164
|
+
* */ function formatAbiType(abiType) {
|
|
165
|
+
switch(abiType.kind){
|
|
166
|
+
case 'field':
|
|
167
|
+
return 'Field';
|
|
168
|
+
case 'boolean':
|
|
169
|
+
return 'bool';
|
|
170
|
+
case 'integer':
|
|
171
|
+
return `${abiType.sign === 'signed' ? 'i' : 'u'}${abiType.width}`;
|
|
172
|
+
case 'string':
|
|
173
|
+
return `str<${abiType.length}>`;
|
|
174
|
+
case 'array':
|
|
175
|
+
return `[${formatAbiType(abiType.type)}; ${abiType.length}]`;
|
|
176
|
+
case 'struct':
|
|
177
|
+
{
|
|
178
|
+
if (isOptionStruct(abiType)) {
|
|
179
|
+
const innerType = abiType.fields.find((f)=>f.name === '_value').type;
|
|
180
|
+
return `Option<${formatAbiType(innerType)}>`;
|
|
181
|
+
}
|
|
182
|
+
return `(${abiType.fields.map((f)=>`${f.name}: ${formatAbiType(f.type)}`).join(', ')})`;
|
|
183
|
+
}
|
|
184
|
+
case 'tuple':
|
|
185
|
+
return `(${abiType.fields.map(formatAbiType).join(', ')})`;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Pretty print a function signature
|
|
190
|
+
*/ function formatFunctionSignature(name, parameters) {
|
|
191
|
+
const params = parameters.map((p)=>`${p.name}: ${formatAbiType(p.type)}`).join(', ');
|
|
192
|
+
return `${name}(${params})`;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Non-exhaustive pretty print of JS args to display in error messages in this module
|
|
196
|
+
*/ function formatArg(arg) {
|
|
197
|
+
if (arg === undefined) {
|
|
198
|
+
return 'undefined';
|
|
199
|
+
}
|
|
200
|
+
if (arg === null) {
|
|
201
|
+
return 'null';
|
|
202
|
+
}
|
|
203
|
+
if (typeof arg === 'bigint') {
|
|
204
|
+
return `${arg}n`;
|
|
205
|
+
}
|
|
206
|
+
if (Array.isArray(arg)) {
|
|
207
|
+
return `[${arg.map(formatArg).join(', ')}]`;
|
|
208
|
+
}
|
|
209
|
+
if (typeof arg === 'object') {
|
|
210
|
+
const entries = Object.entries(arg).map(([k, v])=>`${k}: ${formatArg(v)}`);
|
|
211
|
+
return `{ ${entries.join(', ')} }`;
|
|
212
|
+
}
|
|
213
|
+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
214
|
+
return String(arg);
|
|
215
|
+
}
|
|
@@ -4,12 +4,12 @@ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
6
6
|
import type { PublicKeys } from '@aztec/stdlib/keys';
|
|
7
|
-
import { type Capsule,
|
|
7
|
+
import { type Capsule, HashedValues, type TxProfileResult, type TxReceipt } from '@aztec/stdlib/tx';
|
|
8
8
|
import { ExecutionPayload } from '@aztec/stdlib/tx';
|
|
9
|
-
import type { Wallet } from '../wallet/wallet.js';
|
|
9
|
+
import type { ProfileOptions, SendOptions, SimulateOptions, Wallet } from '../wallet/wallet.js';
|
|
10
10
|
import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
11
11
|
import type { ContractBase } from './contract_base.js';
|
|
12
|
-
import { type NoWait, type ProfileInteractionOptions, type RequestInteractionOptions, type SendInteractionOptionsWithoutWait, type SimulationInteractionFeeOptions, type
|
|
12
|
+
import { type NoWait, type OffchainOutput, type ProfileInteractionOptions, type RequestInteractionOptions, type SendInteractionOptionsWithoutWait, type SimulationInteractionFeeOptions, type SimulationResult, type TxSendResultImmediate, type TxSendResultMined } from './interaction_options.js';
|
|
13
13
|
import type { WaitOpts } from './wait_opts.js';
|
|
14
14
|
/**
|
|
15
15
|
* Wait options specific to deployment transactions.
|
|
@@ -57,7 +57,7 @@ export type DeployOptionsWithoutWait = Omit<RequestDeployOptions, 'deployer'> &
|
|
|
57
57
|
* is mutually exclusive with "deployer"
|
|
58
58
|
*/
|
|
59
59
|
universalDeploy?: boolean;
|
|
60
|
-
} & Pick<SendInteractionOptionsWithoutWait, 'from' | 'fee'>;
|
|
60
|
+
} & Pick<SendInteractionOptionsWithoutWait, 'from' | 'fee' | 'additionalScopes'>;
|
|
61
61
|
/**
|
|
62
62
|
* Extends the deployment options with the required parameters to send the transaction.
|
|
63
63
|
*/
|
|
@@ -94,15 +94,26 @@ export type DeployTxReceipt<TContract extends ContractBase = ContractBase> = TxR
|
|
|
94
94
|
/** The deployed contract instance with address and metadata. */
|
|
95
95
|
instance: ContractInstanceWithAddress;
|
|
96
96
|
};
|
|
97
|
+
/** Wait options that request a full receipt instead of just the contract instance. */
|
|
98
|
+
type WaitWithReturnReceipt = {
|
|
99
|
+
/** Request the full receipt instead of just the contract instance. */
|
|
100
|
+
returnReceipt: true;
|
|
101
|
+
};
|
|
97
102
|
/**
|
|
98
103
|
* Represents the result type of deploying a contract.
|
|
99
104
|
* - If wait is NO_WAIT, returns TxHash immediately.
|
|
100
105
|
* - If wait has returnReceipt: true, returns DeployTxReceipt after waiting.
|
|
101
106
|
* - Otherwise (undefined or DeployWaitOptions without returnReceipt), returns TContract after waiting.
|
|
102
107
|
*/
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
108
|
+
/** Result of deploying a contract when waiting for mining (default case). */
|
|
109
|
+
export type DeployResultMined<TContract extends ContractBase> = {
|
|
110
|
+
/** The deployed contract instance. */
|
|
111
|
+
contract: TContract;
|
|
112
|
+
/** The deploy transaction receipt. */
|
|
113
|
+
receipt: DeployTxReceipt<TContract>;
|
|
114
|
+
} & OffchainOutput;
|
|
115
|
+
/** Conditional return type for deploy based on wait options. */
|
|
116
|
+
export type DeployReturn<TContract extends ContractBase, W extends DeployInteractionWaitOptions> = W extends NoWait ? TxSendResultImmediate : W extends WaitWithReturnReceipt ? TxSendResultMined<DeployTxReceipt<TContract>> : DeployResultMined<TContract>;
|
|
106
117
|
/**
|
|
107
118
|
* Contract interaction for deployment.
|
|
108
119
|
* Handles class publication, instance publication, and initialization of the contract.
|
|
@@ -118,11 +129,12 @@ export declare class DeployMethod<TContract extends ContractBase = ContractBase>
|
|
|
118
129
|
protected artifact: ContractArtifact;
|
|
119
130
|
protected postDeployCtor: (instance: ContractInstanceWithAddress, wallet: Wallet) => TContract;
|
|
120
131
|
private args;
|
|
132
|
+
private extraHashedArgs;
|
|
121
133
|
/** The contract instance to be deployed. */
|
|
122
134
|
private instance?;
|
|
123
135
|
/** Constructor function to call. */
|
|
124
136
|
private constructorArtifact;
|
|
125
|
-
constructor(publicKeys: PublicKeys, wallet: Wallet, artifact: ContractArtifact, postDeployCtor: (instance: ContractInstanceWithAddress, wallet: Wallet) => TContract, args?: any[], constructorNameOrArtifact?: string | FunctionArtifact, authWitnesses?: AuthWitness[], capsules?: Capsule[]);
|
|
137
|
+
constructor(publicKeys: PublicKeys, wallet: Wallet, artifact: ContractArtifact, postDeployCtor: (instance: ContractInstanceWithAddress, wallet: Wallet) => TContract, args?: any[], constructorNameOrArtifact?: string | FunctionArtifact, authWitnesses?: AuthWitness[], capsules?: Capsule[], extraHashedArgs?: HashedValues[]);
|
|
126
138
|
/**
|
|
127
139
|
* Returns the execution payload that allows this operation to happen on chain.
|
|
128
140
|
* @param options - Configuration options.
|
|
@@ -135,7 +147,19 @@ export declare class DeployMethod<TContract extends ContractBase = ContractBase>
|
|
|
135
147
|
* @param options - Deploy options with wait parameter
|
|
136
148
|
* @returns Send options with wait parameter
|
|
137
149
|
*/
|
|
138
|
-
|
|
150
|
+
protected convertDeployOptionsToSendOptions<W extends DeployInteractionWaitOptions>(options: DeployOptions<W>): SendOptions<W extends {
|
|
151
|
+
returnReceipt: true;
|
|
152
|
+
} ? WaitOpts : W>;
|
|
153
|
+
/**
|
|
154
|
+
* Converts deploy simulation options into wallet-level simulate options.
|
|
155
|
+
* @param options - The deploy simulation options to convert.
|
|
156
|
+
*/
|
|
157
|
+
protected convertDeployOptionsToSimulateOptions(options: SimulateDeployOptions): SimulateOptions;
|
|
158
|
+
/**
|
|
159
|
+
* Converts deploy profile options into wallet-level profile options.
|
|
160
|
+
* @param options - The deploy profile options to convert.
|
|
161
|
+
*/
|
|
162
|
+
protected convertDeployOptionsToProfileOptions(options: DeployOptionsWithoutWait & ProfileInteractionOptions): ProfileOptions;
|
|
139
163
|
/**
|
|
140
164
|
* Adds this contract to the wallet and returns the Contract object.
|
|
141
165
|
* @param options - Deployment options.
|
|
@@ -163,7 +187,7 @@ export declare class DeployMethod<TContract extends ContractBase = ContractBase>
|
|
|
163
187
|
* @param options - An object containing various deployment options such as contractAddressSalt and from.
|
|
164
188
|
* @returns TxHash (if wait is NO_WAIT), TContract (if wait is undefined or doesn't have returnReceipt), or DeployTxReceipt (if wait.returnReceipt is true)
|
|
165
189
|
*/
|
|
166
|
-
send(options: DeployOptionsWithoutWait): Promise<TContract
|
|
190
|
+
send(options: DeployOptionsWithoutWait): Promise<DeployResultMined<TContract>>;
|
|
167
191
|
send<W extends DeployInteractionWaitOptions>(options: DeployOptions<W>): Promise<DeployReturn<TContract, W>>;
|
|
168
192
|
/**
|
|
169
193
|
* Builds the contract instance and returns it.
|
|
@@ -179,7 +203,7 @@ export declare class DeployMethod<TContract extends ContractBase = ContractBase>
|
|
|
179
203
|
* @returns A simulation result object containing metadata of the execution, including gas
|
|
180
204
|
* estimations (if requested via options), execution statistics and emitted offchain effects
|
|
181
205
|
*/
|
|
182
|
-
simulate(options: SimulateDeployOptions): Promise<
|
|
206
|
+
simulate(options: SimulateDeployOptions): Promise<SimulationResult>;
|
|
183
207
|
/**
|
|
184
208
|
* Simulate a deployment and profile the gate count for each function in the transaction.
|
|
185
209
|
* @param options - Same options as `send`, plus extra profiling options.
|
|
@@ -203,4 +227,5 @@ export declare class DeployMethod<TContract extends ContractBase = ContractBase>
|
|
|
203
227
|
capsules?: Capsule[];
|
|
204
228
|
}): DeployMethod;
|
|
205
229
|
}
|
|
206
|
-
|
|
230
|
+
export {};
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X21ldGhvZC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L2RlcGxveV9tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFvQixLQUFLLGdCQUFnQixFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBQ25ILE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsS0FBSywyQkFBMkIsRUFJakMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssZUFBZSxFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUEwQixNQUFNLGtCQUFrQixDQUFDO0FBSTVFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3ZELE9BQU8sRUFFTCxLQUFLLE1BQU0sRUFDWCxLQUFLLGNBQWMsRUFDbkIsS0FBSyx5QkFBeUIsRUFDOUIsS0FBSyx5QkFBeUIsRUFDOUIsS0FBSyxpQ0FBaUMsRUFDdEMsS0FBSywrQkFBK0IsRUFDcEMsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxpQkFBaUIsRUFLdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxHQUFHO0lBQ3pDLGdHQUFnRztJQUNoRyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDekIsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxNQUFNLDRCQUE0QixHQUFHLE1BQU0sR0FBRyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7QUFFbEY7Ozs7R0FJRztBQUNILE1BQU0sTUFBTSxvQkFBb0IsR0FBRyx5QkFBeUIsR0FBRztJQUM3RCx1RkFBdUY7SUFDdkYsbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDekI7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDO0lBQ3hCLHVDQUF1QztJQUN2QyxvQkFBb0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUMvQix3RUFBd0U7SUFDeEUsdUJBQXVCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDbEMsb0NBQW9DO0lBQ3BDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzdCLCtDQUErQztJQUMvQyxnQkFBZ0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUM1QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxHQUFHO0lBQzlFOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUMzQixHQUFHLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxHQUFHLGtCQUFrQixDQUFDLENBQUM7QUFFakY7O0dBRUc7QUFDSCxNQUFNLE1BQU0sYUFBYSxDQUFDLENBQUMsU0FBUyw0QkFBNEIsR0FBRyxTQUFTLElBQUksd0JBQXdCLEdBQUc7SUFDekc7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDVixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsR0FBRztJQUMxRSwyQ0FBMkM7SUFDM0MsR0FBRyxDQUFDLEVBQUUsK0JBQStCLENBQUM7SUFDdEM7d0RBQ29EO0lBQ3BELGdCQUFnQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzNCLDhGQUE4RjtJQUM5RixrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM3Qjs7aUZBRTZFO0lBQzdFLGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUMzQixDQUFDO0FBRUYsZ0ZBQWdGO0FBQ2hGLE1BQU0sTUFBTSxlQUFlLENBQUMsU0FBUyxTQUFTLFlBQVksR0FBRyxZQUFZLElBQUksU0FBUyxHQUFHO0lBQ3ZGLCtGQUErRjtJQUMvRixRQUFRLEVBQUUsU0FBUyxDQUFDO0lBQ3BCLGdFQUFnRTtJQUNoRSxRQUFRLEVBQUUsMkJBQTJCLENBQUM7Q0FDdkMsQ0FBQztBQUVGLHNGQUFzRjtBQUN0RixLQUFLLHFCQUFxQixHQUFHO0lBQzNCLHNFQUFzRTtJQUN0RSxhQUFhLEVBQUUsSUFBSSxDQUFDO0NBQ3JCLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILDZFQUE2RTtBQUM3RSxNQUFNLE1BQU0saUJBQWlCLENBQUMsU0FBUyxTQUFTLFlBQVksSUFBSTtJQUM5RCxzQ0FBc0M7SUFDdEMsUUFBUSxFQUFFLFNBQVMsQ0FBQztJQUNwQixzQ0FBc0M7SUFDdEMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztDQUNyQyxHQUFHLGNBQWMsQ0FBQztBQUVuQixnRUFBZ0U7QUFDaEUsTUFBTSxNQUFNLFlBQVksQ0FBQyxTQUFTLFNBQVMsWUFBWSxFQUFFLENBQUMsU0FBUyw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsTUFBTSxHQUMvRyxxQkFBcUIsR0FDckIsQ0FBQyxTQUFTLHFCQUFxQixHQUM3QixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsR0FDN0MsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbkM7Ozs7Ozs7OztHQVNHO0FBQ0gscUJBQWEsWUFBWSxDQUFDLFNBQVMsU0FBUyxZQUFZLEdBQUcsWUFBWSxDQUFFLFNBQVEsdUJBQXVCO0lBUXBHLE9BQU8sQ0FBQyxVQUFVO0lBRWxCLFNBQVMsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCO0lBQ3BDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxTQUFTO0lBQzlGLE9BQU8sQ0FBQyxJQUFJO0lBSVosT0FBTyxDQUFDLGVBQWU7SUFmekIsNENBQTRDO0lBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBMEM7SUFFM0Qsb0NBQW9DO0lBQ3BDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBMEI7SUFFckQsWUFDVSxVQUFVLEVBQUUsVUFBVSxFQUM5QixNQUFNLEVBQUUsTUFBTSxFQUNKLFFBQVEsRUFBRSxnQkFBZ0IsRUFDMUIsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUssU0FBUyxFQUN0RixJQUFJLEdBQUUsR0FBRyxFQUFPLEVBQ3hCLHlCQUF5QixDQUFDLEVBQUUsTUFBTSxHQUFHLGdCQUFnQixFQUNyRCxhQUFhLEdBQUUsV0FBVyxFQUFPLEVBQ2pDLFFBQVEsR0FBRSxPQUFPLEVBQU8sRUFDaEIsZUFBZSxHQUFFLFlBQVksRUFBTyxFQUk3QztJQUVEOzs7O09BSUc7SUFDVSxPQUFPLENBQUMsT0FBTyxHQUFFLG9CQUF5QixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQTRCbEY7SUFFRCxvQ0FBb0MsQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEdBQUcsb0JBQW9CLENBSzVGO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLFNBQVMsNEJBQTRCLEVBQ2hGLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBRXhCLFdBQVcsQ0FBQyxDQUFDLFNBQVM7UUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBTy9EO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLHFDQUFxQyxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsR0FBRyxlQUFlLENBRS9GO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLG9DQUFvQyxDQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEdBQUcseUJBQXlCLEdBQzVELGNBQWMsQ0FFaEI7SUFFRDs7O09BR0c7SUFDVSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUl4RTtJQUVEOzs7Ozs7O09BT0c7SUFDSCxVQUFnQiw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0F5Q3hHO0lBRUQ7Ozs7T0FJRztJQUNILFVBQWdCLGlDQUFpQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQWEzRztJQUVEOzs7Ozs7T0FNRztJQUVhLElBQUksQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFL0UsSUFBSSxDQUFDLENBQUMsU0FBUyw0QkFBNEIsRUFDekQsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FDeEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQThCdkM7Ozs7O09BS0c7SUFDVSxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBVzdGO0lBRUQ7Ozs7OztPQU1HO0lBQ1UsUUFBUSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FpQi9FO0lBRUQ7Ozs7O09BS0c7SUFDVSxPQUFPLENBQUMsT0FBTyxFQUFFLHdCQUF3QixHQUFHLHlCQUF5QixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FHNUc7SUFFRCxzQ0FBc0M7SUFDdEMsSUFBVyxPQUFPLDZCQUVqQjtJQUVELHVEQUF1RDtJQUN2RCxJQUFXLGNBQWMsNEJBRXhCO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxFQUNWLGFBQWtCLEVBQ2xCLFFBQWEsRUFDZCxFQUFFO1FBQ0QsaURBQWlEO1FBQ2pELGFBQWEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzlCLDRDQUE0QztRQUM1QyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUN0QixHQUFHLFlBQVksQ0FXZjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_method.d.ts","sourceRoot":"","sources":["../../src/contract/deploy_method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAoB,KAAK,gBAAgB,EAAkB,MAAM,mBAAmB,CAAC;AACnH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,KAAK,2BAA2B,EAIjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deploy_method.d.ts","sourceRoot":"","sources":["../../src/contract/deploy_method.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,13 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
2
2
|
import { getInitializer } from '@aztec/stdlib/abi';
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import { computePartialAddress, getContractClassFromArtifact, getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
5
|
-
import {
|
|
6
|
-
import { mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
5
|
+
import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
7
6
|
import { publishContractClass } from '../deployment/publish_class.js';
|
|
8
7
|
import { publishInstance } from '../deployment/publish_instance.js';
|
|
9
8
|
import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
10
9
|
import { ContractFunctionInteraction } from './contract_function_interaction.js';
|
|
11
10
|
import { getGasLimits } from './get_gas_limits.js';
|
|
12
|
-
import { NO_WAIT, toProfileOptions, toSendOptions, toSimulateOptions } from './interaction_options.js';
|
|
11
|
+
import { NO_WAIT, extractOffchainOutput, toProfileOptions, toSendOptions, toSimulateOptions } from './interaction_options.js';
|
|
13
12
|
/**
|
|
14
13
|
* Contract interaction for deployment.
|
|
15
14
|
* Handles class publication, instance publication, and initialization of the contract.
|
|
@@ -24,28 +23,35 @@ import { NO_WAIT, toProfileOptions, toSendOptions, toSimulateOptions } from './i
|
|
|
24
23
|
artifact;
|
|
25
24
|
postDeployCtor;
|
|
26
25
|
args;
|
|
26
|
+
extraHashedArgs;
|
|
27
27
|
/** The contract instance to be deployed. */ instance;
|
|
28
28
|
/** Constructor function to call. */ constructorArtifact;
|
|
29
|
-
constructor(publicKeys, wallet, artifact, postDeployCtor, args = [], constructorNameOrArtifact, authWitnesses = [], capsules = []){
|
|
30
|
-
super(wallet, authWitnesses, capsules), this.publicKeys = publicKeys, this.artifact = artifact, this.postDeployCtor = postDeployCtor, this.args = args, this.instance = undefined;
|
|
29
|
+
constructor(publicKeys, wallet, artifact, postDeployCtor, args = [], constructorNameOrArtifact, authWitnesses = [], capsules = [], extraHashedArgs = []){
|
|
30
|
+
super(wallet, authWitnesses, capsules), this.publicKeys = publicKeys, this.artifact = artifact, this.postDeployCtor = postDeployCtor, this.args = args, this.extraHashedArgs = extraHashedArgs, this.instance = undefined;
|
|
31
31
|
this.constructorArtifact = getInitializer(artifact, constructorNameOrArtifact);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Returns the execution payload that allows this operation to happen on chain.
|
|
35
35
|
* @param options - Configuration options.
|
|
36
36
|
* @returns The execution payload for this operation
|
|
37
|
-
*/ async request(options) {
|
|
37
|
+
*/ async request(options = {}) {
|
|
38
38
|
const publication = await this.getPublicationExecutionPayload(options);
|
|
39
39
|
if (!options?.skipRegistration) {
|
|
40
40
|
await this.wallet.registerContract(await this.getInstance(options), this.artifact);
|
|
41
41
|
}
|
|
42
|
+
const { authWitnesses, capsules } = options;
|
|
43
|
+
// Propagates the included authwitnesses, capsules, and extraHashedArgs
|
|
44
|
+
// potentially baked into the interaction
|
|
45
|
+
const initialExecutionPayload = new ExecutionPayload([], this.authWitnesses.concat(authWitnesses ?? []), this.capsules.concat(capsules ?? []), this.extraHashedArgs);
|
|
42
46
|
const initialization = await this.getInitializationExecutionPayload(options);
|
|
43
47
|
const feeExecutionPayload = options?.fee?.paymentMethod ? await options.fee.paymentMethod.getExecutionPayload() : undefined;
|
|
44
48
|
const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
|
|
49
|
+
initialExecutionPayload,
|
|
45
50
|
feeExecutionPayload,
|
|
46
51
|
publication,
|
|
47
52
|
initialization
|
|
48
53
|
]) : mergeExecutionPayloads([
|
|
54
|
+
initialExecutionPayload,
|
|
49
55
|
publication,
|
|
50
56
|
initialization
|
|
51
57
|
]);
|
|
@@ -73,6 +79,18 @@ import { NO_WAIT, toProfileOptions, toSendOptions, toSimulateOptions } from './i
|
|
|
73
79
|
};
|
|
74
80
|
}
|
|
75
81
|
/**
|
|
82
|
+
* Converts deploy simulation options into wallet-level simulate options.
|
|
83
|
+
* @param options - The deploy simulation options to convert.
|
|
84
|
+
*/ convertDeployOptionsToSimulateOptions(options) {
|
|
85
|
+
return toSimulateOptions(options);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Converts deploy profile options into wallet-level profile options.
|
|
89
|
+
* @param options - The deploy profile options to convert.
|
|
90
|
+
*/ convertDeployOptionsToProfileOptions(options) {
|
|
91
|
+
return toProfileOptions(options);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
76
94
|
* Adds this contract to the wallet and returns the Contract object.
|
|
77
95
|
* @param options - Deployment options.
|
|
78
96
|
*/ async register(options) {
|
|
@@ -136,11 +154,11 @@ import { NO_WAIT, toProfileOptions, toSendOptions, toSimulateOptions } from './i
|
|
|
136
154
|
const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
|
|
137
155
|
const sendOptions = this.convertDeployOptionsToSendOptions(options);
|
|
138
156
|
if (options.wait === NO_WAIT) {
|
|
139
|
-
const
|
|
140
|
-
this.log.debug(`Sent deployment tx ${txHash.hash} of ${this.artifact.name} contract`);
|
|
141
|
-
return
|
|
157
|
+
const result = await this.wallet.sendTx(executionPayload, sendOptions);
|
|
158
|
+
this.log.debug(`Sent deployment tx ${result.txHash.hash} of ${this.artifact.name} contract`);
|
|
159
|
+
return result;
|
|
142
160
|
}
|
|
143
|
-
const receipt = await this.wallet.sendTx(executionPayload, sendOptions);
|
|
161
|
+
const { receipt, ...offchainOutput } = await this.wallet.sendTx(executionPayload, sendOptions);
|
|
144
162
|
this.log.debug(`Deployed ${this.artifact.name} contract in tx ${receipt.txHash}`);
|
|
145
163
|
// Attach contract instance
|
|
146
164
|
const instance = await this.getInstance(options);
|
|
@@ -148,12 +166,19 @@ import { NO_WAIT, toProfileOptions, toSendOptions, toSimulateOptions } from './i
|
|
|
148
166
|
// Return full receipt if requested, otherwise just the contract
|
|
149
167
|
if (options.wait && typeof options.wait === 'object' && options.wait.returnReceipt) {
|
|
150
168
|
return {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
169
|
+
receipt: {
|
|
170
|
+
...receipt,
|
|
171
|
+
contract,
|
|
172
|
+
instance
|
|
173
|
+
},
|
|
174
|
+
...offchainOutput
|
|
154
175
|
};
|
|
155
176
|
}
|
|
156
|
-
return
|
|
177
|
+
return {
|
|
178
|
+
contract,
|
|
179
|
+
receipt,
|
|
180
|
+
...offchainOutput
|
|
181
|
+
};
|
|
157
182
|
}
|
|
158
183
|
/**
|
|
159
184
|
* Builds the contract instance and returns it.
|
|
@@ -180,12 +205,12 @@ import { NO_WAIT, toProfileOptions, toSendOptions, toSimulateOptions } from './i
|
|
|
180
205
|
* estimations (if requested via options), execution statistics and emitted offchain effects
|
|
181
206
|
*/ async simulate(options) {
|
|
182
207
|
const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
|
|
183
|
-
const simulatedTx = await this.wallet.simulateTx(executionPayload,
|
|
208
|
+
const simulatedTx = await this.wallet.simulateTx(executionPayload, this.convertDeployOptionsToSimulateOptions(options));
|
|
184
209
|
const { gasLimits, teardownGasLimits } = getGasLimits(simulatedTx, options.fee?.estimatedGasPadding);
|
|
185
210
|
this.log.verbose(`Estimated gas limits for tx: DA=${gasLimits.daGas} L2=${gasLimits.l2Gas} teardownDA=${teardownGasLimits.daGas} teardownL2=${teardownGasLimits.l2Gas}`);
|
|
186
211
|
return {
|
|
187
212
|
stats: simulatedTx.stats,
|
|
188
|
-
|
|
213
|
+
...extractOffchainOutput(simulatedTx.offchainEffects),
|
|
189
214
|
result: undefined,
|
|
190
215
|
estimatedGas: {
|
|
191
216
|
gasLimits,
|
|
@@ -200,11 +225,7 @@ import { NO_WAIT, toProfileOptions, toSendOptions, toSimulateOptions } from './i
|
|
|
200
225
|
* @returns An object containing the function return value and profile result.
|
|
201
226
|
*/ async profile(options) {
|
|
202
227
|
const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
|
|
203
|
-
return await this.wallet.profileTx(executionPayload,
|
|
204
|
-
...toProfileOptions(options),
|
|
205
|
-
profileMode: options.profileMode,
|
|
206
|
-
skipProofGeneration: options.skipProofGeneration
|
|
207
|
-
});
|
|
228
|
+
return await this.wallet.profileTx(executionPayload, this.convertDeployOptionsToProfileOptions(options));
|
|
208
229
|
}
|
|
209
230
|
/** Return this deployment address. */ get address() {
|
|
210
231
|
return this.instance?.address;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
|
|
2
2
|
/**
|
|
3
3
|
* Returns suggested total and teardown gas limits for a simulated tx.
|
|
4
4
|
* @param pad - Percentage to pad the suggested gas limits by, (as decimal, e.g., 0.10 for 10%).
|
|
@@ -6,8 +6,8 @@ import { AVM_MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
|
|
|
6
6
|
// Total gas does not use the teardown gas limit, but the actual total gas used by the tx.
|
|
7
7
|
const gasLimits = simulationResult.gasUsed.totalGas.mul(1 + pad);
|
|
8
8
|
const teardownGasLimits = simulationResult.gasUsed.teardownGas.mul(1 + pad);
|
|
9
|
-
if (gasLimits.l2Gas >
|
|
10
|
-
throw new Error('Transaction consumes more gas than the
|
|
9
|
+
if (gasLimits.l2Gas > MAX_PROCESSABLE_L2_GAS) {
|
|
10
|
+
throw new Error('Transaction consumes more l2 gas than the maximum processable gas');
|
|
11
11
|
}
|
|
12
12
|
return {
|
|
13
13
|
gasLimits,
|