@aztec/aztec.js 0.39.0 → 0.40.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.
- package/dest/contract/base_contract_interaction.d.ts +25 -10
- package/dest/contract/base_contract_interaction.d.ts.map +1 -1
- package/dest/contract/base_contract_interaction.js +33 -6
- package/dest/contract/batch_call.d.ts +0 -1
- package/dest/contract/batch_call.d.ts.map +1 -1
- package/dest/contract/batch_call.js +4 -6
- package/dest/contract/contract_function_interaction.d.ts +0 -1
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +6 -8
- package/dest/contract/deploy_method.d.ts +0 -1
- package/dest/contract/deploy_method.d.ts.map +1 -1
- package/dest/contract/deploy_method.js +11 -6
- package/dest/contract/get_gas_limits.d.ts +12 -0
- package/dest/contract/get_gas_limits.d.ts.map +1 -0
- package/dest/contract/get_gas_limits.js +22 -0
- package/package.json +7 -7
- package/src/contract/base_contract_interaction.ts +40 -13
- package/src/contract/batch_call.ts +4 -5
- package/src/contract/contract_function_interaction.ts +6 -7
- package/src/contract/deploy_method.ts +15 -5
- package/src/contract/get_gas_limits.ts +24 -0
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import {
|
|
1
|
+
import { type Tx, type TxExecutionRequest } from '@aztec/circuit-types';
|
|
2
|
+
import { GasSettings } from '@aztec/circuits.js';
|
|
3
|
+
import { type Wallet } from '../account/wallet.js';
|
|
4
|
+
import { type ExecutionRequestInit, type FeeOptions } from '../entrypoint/entrypoint.js';
|
|
3
5
|
import { SentTx } from './sent_tx.js';
|
|
4
6
|
/**
|
|
5
7
|
* Represents options for calling a (constrained) function in a contract.
|
|
6
8
|
* Allows the user to specify the sender address and nonce for a transaction.
|
|
7
9
|
*/
|
|
8
10
|
export type SendMethodOptions = {
|
|
9
|
-
/**
|
|
10
|
-
* Wether to skip the simulation of the public part of the transaction.
|
|
11
|
-
*/
|
|
11
|
+
/** Wether to skip the simulation of the public part of the transaction. */
|
|
12
12
|
skipPublicSimulation?: boolean;
|
|
13
|
-
/**
|
|
14
|
-
* The fee options for the transaction.
|
|
15
|
-
*/
|
|
13
|
+
/** The fee options for the transaction. */
|
|
16
14
|
fee?: FeeOptions;
|
|
15
|
+
/** Whether to run an initial simulation of the tx with high gas limit to figure out actual gas settings (will default to true later down the road). */
|
|
16
|
+
estimateGas?: boolean;
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* Base class for an interaction with a contract, be it a deployment, a function call, or a batch.
|
|
20
20
|
* Implements the sequence create/simulate/send.
|
|
21
21
|
*/
|
|
22
22
|
export declare abstract class BaseContractInteraction {
|
|
23
|
-
protected
|
|
23
|
+
protected wallet: Wallet;
|
|
24
24
|
protected tx?: Tx;
|
|
25
25
|
protected txRequest?: TxExecutionRequest;
|
|
26
|
-
constructor(
|
|
26
|
+
constructor(wallet: Wallet);
|
|
27
27
|
/**
|
|
28
28
|
* Create a transaction execution request ready to be simulated.
|
|
29
29
|
* @param options - An optional object containing additional configuration for the transaction.
|
|
@@ -46,5 +46,20 @@ export declare abstract class BaseContractInteraction {
|
|
|
46
46
|
* @returns A SentTx instance for tracking the transaction status and information.
|
|
47
47
|
*/
|
|
48
48
|
send(options?: SendMethodOptions): SentTx;
|
|
49
|
+
/**
|
|
50
|
+
* Estimates gas for a given tx request and returns defaults gas settings for it.
|
|
51
|
+
* @param txRequest - Transaction execution request to process.
|
|
52
|
+
* @returns Gas settings.
|
|
53
|
+
*/
|
|
54
|
+
protected estimateGas(txRequest: TxExecutionRequest): Promise<GasSettings>;
|
|
55
|
+
/**
|
|
56
|
+
* Helper method to return fee options based on the user opts, estimating tx gas if needed.
|
|
57
|
+
* @param request - Request to execute for this interaction.
|
|
58
|
+
* @returns Fee options for the actual transaction.
|
|
59
|
+
*/
|
|
60
|
+
protected getFeeOptions(request: ExecutionRequestInit): Promise<{
|
|
61
|
+
gasSettings: GasSettings;
|
|
62
|
+
paymentMethod: import("../index.js").FeePaymentMethod;
|
|
63
|
+
} | undefined>;
|
|
49
64
|
}
|
|
50
65
|
//# sourceMappingURL=base_contract_interaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_contract_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/base_contract_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"base_contract_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/base_contract_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,2CAA2C;IAC3C,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,uJAAuJ;IACvJ,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,8BAAsB,uBAAuB;IAI/B,SAAS,CAAC,MAAM,EAAE,MAAM;IAHpC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAClB,SAAS,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;gBAEnB,MAAM,EAAE,MAAM;IAEpC;;;;OAIG;aACa,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEhF;;;;OAIG;IACU,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,EAAE,CAAC;IAMhE;;;;;;;;OAQG;IACI,IAAI,CAAC,OAAO,GAAE,iBAAsB;IAS3C;;;;OAIG;cACa,WAAW,CAAC,SAAS,EAAE,kBAAkB;IAMzD;;;;OAIG;cACa,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;;CAU5D"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import { GasSettings } from '@aztec/circuits.js';
|
|
2
|
+
import { getGasLimits } from './get_gas_limits.js';
|
|
1
3
|
import { SentTx } from './sent_tx.js';
|
|
2
4
|
/**
|
|
3
5
|
* Base class for an interaction with a contract, be it a deployment, a function call, or a batch.
|
|
4
6
|
* Implements the sequence create/simulate/send.
|
|
5
7
|
*/
|
|
6
8
|
export class BaseContractInteraction {
|
|
7
|
-
constructor(
|
|
8
|
-
this.
|
|
9
|
+
constructor(wallet) {
|
|
10
|
+
this.wallet = wallet;
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
11
13
|
* Proves a transaction execution request and returns a tx object ready to be sent.
|
|
@@ -14,7 +16,7 @@ export class BaseContractInteraction {
|
|
|
14
16
|
*/
|
|
15
17
|
async prove(options = {}) {
|
|
16
18
|
const txRequest = this.txRequest ?? (await this.create(options));
|
|
17
|
-
this.tx = await this.
|
|
19
|
+
this.tx = await this.wallet.proveTx(txRequest, !options.skipPublicSimulation);
|
|
18
20
|
return this.tx;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
@@ -29,9 +31,34 @@ export class BaseContractInteraction {
|
|
|
29
31
|
send(options = {}) {
|
|
30
32
|
const promise = (async () => {
|
|
31
33
|
const tx = this.tx ?? (await this.prove(options));
|
|
32
|
-
return this.
|
|
34
|
+
return this.wallet.sendTx(tx);
|
|
33
35
|
})();
|
|
34
|
-
return new SentTx(this.
|
|
36
|
+
return new SentTx(this.wallet, promise);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Estimates gas for a given tx request and returns defaults gas settings for it.
|
|
40
|
+
* @param txRequest - Transaction execution request to process.
|
|
41
|
+
* @returns Gas settings.
|
|
42
|
+
*/
|
|
43
|
+
async estimateGas(txRequest) {
|
|
44
|
+
const simulationResult = await this.wallet.simulateTx(txRequest, true);
|
|
45
|
+
const { totalGas: gasLimits, teardownGas: teardownGasLimits } = getGasLimits(simulationResult);
|
|
46
|
+
return GasSettings.default({ gasLimits, teardownGasLimits });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Helper method to return fee options based on the user opts, estimating tx gas if needed.
|
|
50
|
+
* @param request - Request to execute for this interaction.
|
|
51
|
+
* @returns Fee options for the actual transaction.
|
|
52
|
+
*/
|
|
53
|
+
async getFeeOptions(request) {
|
|
54
|
+
const fee = request.fee;
|
|
55
|
+
if (fee) {
|
|
56
|
+
const txRequest = await this.wallet.createTxExecutionRequest(request);
|
|
57
|
+
const { gasLimits, teardownGasLimits } = await this.estimateGas(txRequest);
|
|
58
|
+
const gasSettings = GasSettings.default({ ...fee.gasSettings, gasLimits, teardownGasLimits });
|
|
59
|
+
return { ...fee, gasSettings };
|
|
60
|
+
}
|
|
61
|
+
return fee;
|
|
35
62
|
}
|
|
36
63
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250cmFjdF9pbnRlcmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9iYXNlX2NvbnRyYWN0X2ludGVyYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUlqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQWV0Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLHVCQUF1QjtJQUkzQyxZQUFzQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFTeEM7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBNkIsRUFBRTtRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxJQUFJLENBQUMsVUFBNkIsRUFBRTtRQUN6QyxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFTCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQTZCO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0YsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBNkI7UUFDekQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUN4QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0UsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YifQ==
|
|
@@ -3,7 +3,6 @@ import { type Wallet } from '../account/index.js';
|
|
|
3
3
|
import { BaseContractInteraction, type SendMethodOptions } from './base_contract_interaction.js';
|
|
4
4
|
/** A batch of function calls to be sent as a single transaction through a wallet. */
|
|
5
5
|
export declare class BatchCall extends BaseContractInteraction {
|
|
6
|
-
protected wallet: Wallet;
|
|
7
6
|
protected calls: FunctionCall[];
|
|
8
7
|
constructor(wallet: Wallet, calls: FunctionCall[]);
|
|
9
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch_call.d.ts","sourceRoot":"","sources":["../../src/contract/batch_call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEjG,qFAAqF;AACrF,qBAAa,SAAU,SAAQ,uBAAuB;
|
|
1
|
+
{"version":3,"file":"batch_call.d.ts","sourceRoot":"","sources":["../../src/contract/batch_call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEjG,qFAAqF;AACrF,qBAAa,SAAU,SAAQ,uBAAuB;IACxB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE;gBAA/C,MAAM,EAAE,MAAM,EAAY,KAAK,EAAE,YAAY,EAAE;IAI3D;;;;;OAKG;IACU,MAAM,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAQ3E"}
|
|
@@ -3,7 +3,6 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
|
3
3
|
export class BatchCall extends BaseContractInteraction {
|
|
4
4
|
constructor(wallet, calls) {
|
|
5
5
|
super(wallet);
|
|
6
|
-
this.wallet = wallet;
|
|
7
6
|
this.calls = calls;
|
|
8
7
|
}
|
|
9
8
|
/**
|
|
@@ -14,12 +13,11 @@ export class BatchCall extends BaseContractInteraction {
|
|
|
14
13
|
*/
|
|
15
14
|
async create(opts) {
|
|
16
15
|
if (!this.txRequest) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
16
|
+
const calls = this.calls;
|
|
17
|
+
const fee = opts?.estimateGas ? await this.getFeeOptions({ calls, fee: opts?.fee }) : opts?.fee;
|
|
18
|
+
this.txRequest = await this.wallet.createTxExecutionRequest({ calls, fee });
|
|
21
19
|
}
|
|
22
20
|
return this.txRequest;
|
|
23
21
|
}
|
|
24
22
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfY2FsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9iYXRjaF9jYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSx1QkFBdUIsRUFBMEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRyxxRkFBcUY7QUFDckYsTUFBTSxPQUFPLFNBQVUsU0FBUSx1QkFBdUI7SUFDcEQsWUFBWSxNQUFjLEVBQVksS0FBcUI7UUFDekQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRHNCLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBRTNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBd0I7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7WUFDaEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiJ9
|
|
@@ -20,7 +20,6 @@ export type SimulateMethodOptions = {
|
|
|
20
20
|
* It contains available interactions one can call on a method, including view.
|
|
21
21
|
*/
|
|
22
22
|
export declare class ContractFunctionInteraction extends BaseContractInteraction {
|
|
23
|
-
protected wallet: Wallet;
|
|
24
23
|
protected contractAddress: AztecAddress;
|
|
25
24
|
protected functionDao: FunctionAbi;
|
|
26
25
|
protected args: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_function_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/contract_function_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAgB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,KAAK,YAAY,EAAgB,WAAW,EAAa,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAqD,MAAM,uBAAuB,CAAC;AAE5G,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,kCAAkC;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,uBAAuB;
|
|
1
|
+
{"version":3,"file":"contract_function_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/contract_function_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAgB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,KAAK,YAAY,EAAgB,WAAW,EAAa,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAqD,MAAM,uBAAuB,CAAC;AAE5G,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,kCAAkC;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,uBAAuB;IAGpE,SAAS,CAAC,eAAe,EAAE,YAAY;IACvC,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE;gBAHrB,MAAM,EAAE,MAAM,EACJ,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,GAAG,EAAE;IAQvB;;;;;OAKG;IACU,MAAM,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY1E;;;;OAIG;IACI,OAAO,IAAI,YAAY;IAM9B;;;;;;;;;;;;;OAaG;IACU,QAAQ,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,GAAG,CAAC;CA6BzE"}
|
|
@@ -9,7 +9,6 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
|
9
9
|
export class ContractFunctionInteraction extends BaseContractInteraction {
|
|
10
10
|
constructor(wallet, contractAddress, functionDao, args) {
|
|
11
11
|
super(wallet);
|
|
12
|
-
this.wallet = wallet;
|
|
13
12
|
this.contractAddress = contractAddress;
|
|
14
13
|
this.functionDao = functionDao;
|
|
15
14
|
this.args = args;
|
|
@@ -28,10 +27,9 @@ export class ContractFunctionInteraction extends BaseContractInteraction {
|
|
|
28
27
|
throw new Error("Can't call `create` on an unconstrained function.");
|
|
29
28
|
}
|
|
30
29
|
if (!this.txRequest) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
30
|
+
const calls = [this.request()];
|
|
31
|
+
const fee = opts?.estimateGas ? await this.getFeeOptions({ calls, fee: opts?.fee }) : opts?.fee;
|
|
32
|
+
this.txRequest = await this.wallet.createTxExecutionRequest({ calls, fee });
|
|
35
33
|
}
|
|
36
34
|
return this.txRequest;
|
|
37
35
|
}
|
|
@@ -75,17 +73,17 @@ export class ContractFunctionInteraction extends BaseContractInteraction {
|
|
|
75
73
|
argsOfCalls: [packedArgs],
|
|
76
74
|
authWitnesses: [],
|
|
77
75
|
});
|
|
78
|
-
const simulatedTx = await this.
|
|
76
|
+
const simulatedTx = await this.wallet.simulateTx(txRequest, true, options.from ?? this.wallet.getAddress());
|
|
79
77
|
const flattened = simulatedTx.privateReturnValues;
|
|
80
78
|
return flattened ? decodeReturnValues(this.functionDao, flattened) : [];
|
|
81
79
|
}
|
|
82
80
|
else {
|
|
83
81
|
const txRequest = await this.create();
|
|
84
|
-
const simulatedTx = await this.
|
|
82
|
+
const simulatedTx = await this.wallet.simulateTx(txRequest, true);
|
|
85
83
|
this.txRequest = undefined;
|
|
86
84
|
const flattened = simulatedTx.publicOutput?.publicReturnValues;
|
|
87
85
|
return flattened ? decodeReturnValues(this.functionDao, flattened) : [];
|
|
88
86
|
}
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25faW50ZXJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvY29udHJhY3RfZnVuY3Rpb25faW50ZXJhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQXFCLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0YsT0FBTyxFQUFvQixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHNUcsT0FBTyxFQUFFLHVCQUF1QixFQUEwQixNQUFNLGdDQUFnQyxDQUFDO0FBZ0JqRzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsdUJBQXVCO0lBQ3RFLFlBQ0UsTUFBYyxFQUNKLGVBQTZCLEVBQzdCLFdBQXdCLEVBQ3hCLElBQVc7UUFFckIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSkosb0JBQWUsR0FBZixlQUFlLENBQWM7UUFDN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBTztRQUdyQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsNkVBQTZFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDeEcsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBd0I7UUFDMUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakUsTUFBTSxJQUFJ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
|
|
@@ -31,7 +31,6 @@ export type DeployOptions = {
|
|
|
31
31
|
*/
|
|
32
32
|
export declare class DeployMethod<TContract extends ContractBase = Contract> extends BaseContractInteraction {
|
|
33
33
|
private publicKeysHash;
|
|
34
|
-
protected wallet: Wallet;
|
|
35
34
|
private artifact;
|
|
36
35
|
private postDeployCtor;
|
|
37
36
|
private args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_method.d.ts","sourceRoot":"","sources":["../../src/contract/deploy_method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EACL,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAkB,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uFAAuF;IACvF,mBAAmB,CAAC,EAAE,EAAE,CAAC;IACzB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,iBAAiB,CAAC;AAItB;;;GAGG;AACH,qBAAa,YAAY,CAAC,SAAS,SAAS,YAAY,GAAG,QAAQ,CAAE,SAAQ,uBAAuB;IAahG,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"deploy_method.d.ts","sourceRoot":"","sources":["../../src/contract/deploy_method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EACL,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAkB,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uFAAuF;IACvF,mBAAmB,CAAC,EAAE,EAAE,CAAC;IACzB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,iBAAiB,CAAC;AAItB;;;GAGG;AACH,qBAAa,YAAY,CAAC,SAAS,SAAS,YAAY,GAAG,QAAQ,CAAE,SAAQ,uBAAuB;IAahG,OAAO,CAAC,cAAc;IAEtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,IAAI;IAhBd,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,CAA0C;IAE3D,oCAAoC;IACpC,OAAO,CAAC,mBAAmB,CAA+B;IAE1D,+BAA+B;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAuB;IAE7C,OAAO,CAAC,GAAG,CAA+C;gBAGhD,cAAc,EAAE,EAAE,EAC1B,MAAM,EAAE,MAAM,EACN,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,EAC7E,IAAI,GAAE,GAAG,EAAO,EACxB,yBAAyB,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAMvD;;;;;;;;OAQG;IACU,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY7E;;;;;;;OAOG;IACU,OAAO,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0BhF;;;;OAIG;cACa,0BAA0B,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuCtG;;;;OAIG;IACH,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiB3F;;;;;;;OAOG;IACa,IAAI,CAAC,OAAO,GAAE,aAAkB,GAAG,YAAY,CAAC,SAAS,CAAC;IAS1E;;;;;OAKG;IACI,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,2BAA2B;IAa5E;;;;OAIG;IACa,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC;IAI1D,sCAAsC;IACtC,IAAW,OAAO,6BAEjB;IAED,uDAAuD;IACvD,IAAW,cAAc,mBAExB;CACF"}
|
|
@@ -15,7 +15,6 @@ export class DeployMethod extends BaseContractInteraction {
|
|
|
15
15
|
constructor(publicKeysHash, wallet, artifact, postDeployCtor, args = [], constructorNameOrArtifact) {
|
|
16
16
|
super(wallet);
|
|
17
17
|
this.publicKeysHash = publicKeysHash;
|
|
18
|
-
this.wallet = wallet;
|
|
19
18
|
this.artifact = artifact;
|
|
20
19
|
this.postDeployCtor = postDeployCtor;
|
|
21
20
|
this.args = args;
|
|
@@ -37,10 +36,12 @@ export class DeployMethod extends BaseContractInteraction {
|
|
|
37
36
|
if (!this.txRequest) {
|
|
38
37
|
this.txRequest = await this.wallet.createTxExecutionRequest(await this.request(options));
|
|
39
38
|
// TODO: Should we add the contracts to the DB here, or once the tx has been sent or mined?
|
|
40
|
-
await this.
|
|
39
|
+
await this.wallet.registerContract({ artifact: this.artifact, instance: this.instance });
|
|
41
40
|
}
|
|
42
41
|
return this.txRequest;
|
|
43
42
|
}
|
|
43
|
+
// REFACTOR: Having a `request` method with different semantics than the ones in the other
|
|
44
|
+
// derived ContractInteractions is confusing. We should unify the flow of all ContractInteractions.
|
|
44
45
|
/**
|
|
45
46
|
* Returns an array of function calls that represent this operation. Useful as a building
|
|
46
47
|
* block for constructing batch requests.
|
|
@@ -56,12 +57,16 @@ export class DeployMethod extends BaseContractInteraction {
|
|
|
56
57
|
if (deployment.calls.length + bootstrap.calls.length === 0) {
|
|
57
58
|
throw new Error(`No function calls needed to deploy contract ${this.artifact.name}`);
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
+
const request = {
|
|
60
61
|
calls: [...deployment.calls, ...bootstrap.calls],
|
|
61
62
|
authWitnesses: [...(deployment.authWitnesses ?? []), ...(bootstrap.authWitnesses ?? [])],
|
|
62
63
|
packedArguments: [...(deployment.packedArguments ?? []), ...(bootstrap.packedArguments ?? [])],
|
|
63
64
|
fee: options.fee,
|
|
64
65
|
};
|
|
66
|
+
if (options.estimateGas) {
|
|
67
|
+
request.fee = await this.getFeeOptions(request);
|
|
68
|
+
}
|
|
69
|
+
this.functionCalls = request;
|
|
65
70
|
}
|
|
66
71
|
return this.functionCalls;
|
|
67
72
|
}
|
|
@@ -82,7 +87,7 @@ export class DeployMethod extends BaseContractInteraction {
|
|
|
82
87
|
}
|
|
83
88
|
// Register the contract class if it hasn't been published already.
|
|
84
89
|
if (!options.skipClassRegistration) {
|
|
85
|
-
if (await this.
|
|
90
|
+
if (await this.wallet.isContractClassPubliclyRegistered(contractClass.id)) {
|
|
86
91
|
this.log.debug(`Skipping registration of already registered contract class ${contractClass.id.toString()} for ${instance.address.toString()}`);
|
|
87
92
|
}
|
|
88
93
|
else {
|
|
@@ -126,7 +131,7 @@ export class DeployMethod extends BaseContractInteraction {
|
|
|
126
131
|
const txHashPromise = super.send(options).getTxHash();
|
|
127
132
|
const instance = this.getInstance(options);
|
|
128
133
|
this.log.debug(`Sent deployment tx of ${this.artifact.name} contract with deployment address ${instance.address.toString()}`);
|
|
129
|
-
return new DeploySentTx(this.
|
|
134
|
+
return new DeploySentTx(this.wallet, txHashPromise, this.postDeployCtor, instance);
|
|
130
135
|
}
|
|
131
136
|
/**
|
|
132
137
|
* Builds the contract instance to be deployed and returns it.
|
|
@@ -163,4 +168,4 @@ export class DeployMethod extends BaseContractInteraction {
|
|
|
163
168
|
return this.instance && computePartialAddress(this.instance);
|
|
164
169
|
}
|
|
165
170
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X21ldGhvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9kZXBsb3lfbWV0aG9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLDRCQUE0QixFQUM1QixtQ0FBbUMsR0FDcEMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWdELGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQTBCLE1BQU0sZ0NBQWdDLENBQUM7QUFHakcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBbUJuRCxvREFBb0Q7QUFFcEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQXdELFNBQVEsdUJBQXVCO0lBWWxHLFlBQ1UsY0FBa0IsRUFDMUIsTUFBYyxFQUNOLFFBQTBCLEVBQzFCLGNBQTZFLEVBQzdFLE9BQWMsRUFBRSxFQUN4Qix5QkFBcUQ7UUFFckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBUE4sbUJBQWMsR0FBZCxjQUFjLENBQUk7UUFFbEIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQStEO1FBQzdFLFNBQUksR0FBSixJQUFJLENBQVk7UUFoQjFCLDRDQUE0QztRQUNwQyxhQUFRLEdBQWlDLFNBQVMsQ0FBQztRQVFuRCxRQUFHLEdBQUcsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQVd4RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBeUIsRUFBRTtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLDJGQUEyRjtZQUMzRixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVMsRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsMEZBQTBGO0lBQzFGLG1HQUFtRztJQUVuRzs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUF5QixFQUFFO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFakUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRztnQkFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxhQUFhLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDeEYsZUFBZSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzlGLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRzthQUNqQixDQUFDO1lBRUYsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sS0FBSyxDQUFDLDBCQUEwQixDQUFDLFVBQXlCLEVBQUU7UUFDcEUsTUFBTSxLQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVqQyx3RkFBd0Y7UUFDeEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzQyw2RkFBNkY7UUFDN0YsNkZBQTZGO1FBQzdGLE1BQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FDYix3REFBd0QsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLGFBQWEsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUM3SixDQUFDO1FBQ0osQ0FBQztRQUVELG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDbkMsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNaLDhEQUE4RCxhQUFhLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDL0gsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDWCxtREFBbUQsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsOEJBQThCLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDMUksQ0FBQztnQkFDRixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbEYsQ0FBQztRQUNILENBQUM7UUFFRCxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsT0FBTztZQUNMLEtBQUs7U0FDTixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTywwQkFBMEIsQ0FBQyxPQUFzQjtRQUN6RCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxNQUFNLEtBQUssR0FBbUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUQsTUFBTSxlQUFlLEdBQUcsSUFBSSwyQkFBMkIsQ0FDckQsSUFBSSxDQUFDLE1BQU0sRUFDWCxPQUFPLEVBQ1AsSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsSUFBSSxDQUNWLENBQUM7WUFDRixLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckIsS0FBSztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ2EsSUFBSSxDQUFDLFVBQXlCLEVBQUU7UUFDOUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNaLHlCQUF5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUkscUNBQXFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDOUcsQ0FBQztRQUNGLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxXQUFXLENBQUMsVUFBeUIsRUFBRTtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsbUNBQW1DLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakUsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUMxQixJQUFJLEVBQUUsT0FBTyxDQUFDLG1CQUFtQjtnQkFDakMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUNuQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUM3QyxRQUFRLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7YUFDakYsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNhLEtBQUssQ0FBQyxPQUFzQjtRQUMxQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SimulatedTx } from '@aztec/circuit-types';
|
|
2
|
+
import { Gas } from '@aztec/circuits.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns suggested total and teardown gas limits for a simulated tx.
|
|
5
|
+
* Note that public gas usage is only accounted for if the publicOutput is present.
|
|
6
|
+
* @param pad - Percentage to pad the suggested gas limits by, defaults to 10%.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getGasLimits(simulatedTx: SimulatedTx, pad?: number): {
|
|
9
|
+
totalGas: Gas;
|
|
10
|
+
teardownGas: Gas;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=get_gas_limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get_gas_limits.d.ts","sourceRoot":"","sources":["../../src/contract/get_gas_limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,SAAM;;;EAe/D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
+
import { Gas } from '@aztec/circuits.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns suggested total and teardown gas limits for a simulated tx.
|
|
5
|
+
* Note that public gas usage is only accounted for if the publicOutput is present.
|
|
6
|
+
* @param pad - Percentage to pad the suggested gas limits by, defaults to 10%.
|
|
7
|
+
*/
|
|
8
|
+
export function getGasLimits(simulatedTx, pad = 0.1) {
|
|
9
|
+
const privateGasUsed = simulatedTx.tx.data.publicInputs.end.gasUsed;
|
|
10
|
+
if (simulatedTx.publicOutput) {
|
|
11
|
+
const publicGasUsed = Object.values(simulatedTx.publicOutput.gasUsed)
|
|
12
|
+
.filter(Boolean)
|
|
13
|
+
.reduce((total, current) => total.add(current), Gas.empty());
|
|
14
|
+
const teardownGas = simulatedTx.publicOutput.gasUsed[PublicKernelType.TEARDOWN] ?? Gas.empty();
|
|
15
|
+
return {
|
|
16
|
+
totalGas: privateGasUsed.add(publicGasUsed).mul(1 + pad),
|
|
17
|
+
teardownGas: teardownGas.mul(1 + pad),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { totalGas: privateGasUsed.mul(1 + pad), teardownGas: Gas.empty() };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0X2dhc19saW1pdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvZ2V0X2dhc19saW1pdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxXQUF3QixFQUFFLEdBQUcsR0FBRyxHQUFHO0lBQzlELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQ3BFLElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7YUFDbEUsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRS9GLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN4RCxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3RDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDN0UsQ0FBQyJ9
|
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.
|
|
4
|
+
"version": "0.40.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": "./dest/index.js",
|
|
@@ -65,12 +65,12 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aztec/circuit-types": "0.
|
|
69
|
-
"@aztec/circuits.js": "0.
|
|
70
|
-
"@aztec/ethereum": "0.
|
|
71
|
-
"@aztec/foundation": "0.
|
|
72
|
-
"@aztec/protocol-contracts": "0.
|
|
73
|
-
"@aztec/types": "0.
|
|
68
|
+
"@aztec/circuit-types": "0.40.1",
|
|
69
|
+
"@aztec/circuits.js": "0.40.1",
|
|
70
|
+
"@aztec/ethereum": "0.40.1",
|
|
71
|
+
"@aztec/foundation": "0.40.1",
|
|
72
|
+
"@aztec/protocol-contracts": "0.40.1",
|
|
73
|
+
"@aztec/types": "0.40.1",
|
|
74
74
|
"tslib": "^2.4.0"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Tx, type TxExecutionRequest } from '@aztec/circuit-types';
|
|
2
|
+
import { GasSettings } from '@aztec/circuits.js';
|
|
2
3
|
|
|
3
|
-
import { type
|
|
4
|
+
import { type Wallet } from '../account/wallet.js';
|
|
5
|
+
import { type ExecutionRequestInit, type FeeOptions } from '../entrypoint/entrypoint.js';
|
|
6
|
+
import { getGasLimits } from './get_gas_limits.js';
|
|
4
7
|
import { SentTx } from './sent_tx.js';
|
|
5
8
|
|
|
6
9
|
/**
|
|
@@ -8,15 +11,12 @@ import { SentTx } from './sent_tx.js';
|
|
|
8
11
|
* Allows the user to specify the sender address and nonce for a transaction.
|
|
9
12
|
*/
|
|
10
13
|
export type SendMethodOptions = {
|
|
11
|
-
/**
|
|
12
|
-
* Wether to skip the simulation of the public part of the transaction.
|
|
13
|
-
*/
|
|
14
|
+
/** Wether to skip the simulation of the public part of the transaction. */
|
|
14
15
|
skipPublicSimulation?: boolean;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* The fee options for the transaction.
|
|
18
|
-
*/
|
|
16
|
+
/** The fee options for the transaction. */
|
|
19
17
|
fee?: FeeOptions;
|
|
18
|
+
/** Whether to run an initial simulation of the tx with high gas limit to figure out actual gas settings (will default to true later down the road). */
|
|
19
|
+
estimateGas?: boolean;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -27,7 +27,7 @@ export abstract class BaseContractInteraction {
|
|
|
27
27
|
protected tx?: Tx;
|
|
28
28
|
protected txRequest?: TxExecutionRequest;
|
|
29
29
|
|
|
30
|
-
constructor(protected
|
|
30
|
+
constructor(protected wallet: Wallet) {}
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Create a transaction execution request ready to be simulated.
|
|
@@ -43,7 +43,7 @@ export abstract class BaseContractInteraction {
|
|
|
43
43
|
*/
|
|
44
44
|
public async prove(options: SendMethodOptions = {}): Promise<Tx> {
|
|
45
45
|
const txRequest = this.txRequest ?? (await this.create(options));
|
|
46
|
-
this.tx = await this.
|
|
46
|
+
this.tx = await this.wallet.proveTx(txRequest, !options.skipPublicSimulation);
|
|
47
47
|
return this.tx;
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -59,9 +59,36 @@ export abstract class BaseContractInteraction {
|
|
|
59
59
|
public send(options: SendMethodOptions = {}) {
|
|
60
60
|
const promise = (async () => {
|
|
61
61
|
const tx = this.tx ?? (await this.prove(options));
|
|
62
|
-
return this.
|
|
62
|
+
return this.wallet.sendTx(tx);
|
|
63
63
|
})();
|
|
64
64
|
|
|
65
|
-
return new SentTx(this.
|
|
65
|
+
return new SentTx(this.wallet, promise);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Estimates gas for a given tx request and returns defaults gas settings for it.
|
|
70
|
+
* @param txRequest - Transaction execution request to process.
|
|
71
|
+
* @returns Gas settings.
|
|
72
|
+
*/
|
|
73
|
+
protected async estimateGas(txRequest: TxExecutionRequest) {
|
|
74
|
+
const simulationResult = await this.wallet.simulateTx(txRequest, true);
|
|
75
|
+
const { totalGas: gasLimits, teardownGas: teardownGasLimits } = getGasLimits(simulationResult);
|
|
76
|
+
return GasSettings.default({ gasLimits, teardownGasLimits });
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Helper method to return fee options based on the user opts, estimating tx gas if needed.
|
|
81
|
+
* @param request - Request to execute for this interaction.
|
|
82
|
+
* @returns Fee options for the actual transaction.
|
|
83
|
+
*/
|
|
84
|
+
protected async getFeeOptions(request: ExecutionRequestInit) {
|
|
85
|
+
const fee = request.fee;
|
|
86
|
+
if (fee) {
|
|
87
|
+
const txRequest = await this.wallet.createTxExecutionRequest(request);
|
|
88
|
+
const { gasLimits, teardownGasLimits } = await this.estimateGas(txRequest);
|
|
89
|
+
const gasSettings = GasSettings.default({ ...fee.gasSettings, gasLimits, teardownGasLimits });
|
|
90
|
+
return { ...fee, gasSettings };
|
|
91
|
+
}
|
|
92
|
+
return fee;
|
|
66
93
|
}
|
|
67
94
|
}
|
|
@@ -5,7 +5,7 @@ import { BaseContractInteraction, type SendMethodOptions } from './base_contract
|
|
|
5
5
|
|
|
6
6
|
/** A batch of function calls to be sent as a single transaction through a wallet. */
|
|
7
7
|
export class BatchCall extends BaseContractInteraction {
|
|
8
|
-
constructor(
|
|
8
|
+
constructor(wallet: Wallet, protected calls: FunctionCall[]) {
|
|
9
9
|
super(wallet);
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -17,10 +17,9 @@ export class BatchCall extends BaseContractInteraction {
|
|
|
17
17
|
*/
|
|
18
18
|
public async create(opts?: SendMethodOptions): Promise<TxExecutionRequest> {
|
|
19
19
|
if (!this.txRequest) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
20
|
+
const calls = this.calls;
|
|
21
|
+
const fee = opts?.estimateGas ? await this.getFeeOptions({ calls, fee: opts?.fee }) : opts?.fee;
|
|
22
|
+
this.txRequest = await this.wallet.createTxExecutionRequest({ calls, fee });
|
|
24
23
|
}
|
|
25
24
|
return this.txRequest;
|
|
26
25
|
}
|
|
@@ -25,7 +25,7 @@ export type SimulateMethodOptions = {
|
|
|
25
25
|
*/
|
|
26
26
|
export class ContractFunctionInteraction extends BaseContractInteraction {
|
|
27
27
|
constructor(
|
|
28
|
-
|
|
28
|
+
wallet: Wallet,
|
|
29
29
|
protected contractAddress: AztecAddress,
|
|
30
30
|
protected functionDao: FunctionAbi,
|
|
31
31
|
protected args: any[],
|
|
@@ -47,10 +47,9 @@ export class ContractFunctionInteraction extends BaseContractInteraction {
|
|
|
47
47
|
throw new Error("Can't call `create` on an unconstrained function.");
|
|
48
48
|
}
|
|
49
49
|
if (!this.txRequest) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
});
|
|
50
|
+
const calls = [this.request()];
|
|
51
|
+
const fee = opts?.estimateGas ? await this.getFeeOptions({ calls, fee: opts?.fee }) : opts?.fee;
|
|
52
|
+
this.txRequest = await this.wallet.createTxExecutionRequest({ calls, fee });
|
|
54
53
|
}
|
|
55
54
|
return this.txRequest;
|
|
56
55
|
}
|
|
@@ -98,12 +97,12 @@ export class ContractFunctionInteraction extends BaseContractInteraction {
|
|
|
98
97
|
argsOfCalls: [packedArgs],
|
|
99
98
|
authWitnesses: [],
|
|
100
99
|
});
|
|
101
|
-
const simulatedTx = await this.
|
|
100
|
+
const simulatedTx = await this.wallet.simulateTx(txRequest, true, options.from ?? this.wallet.getAddress());
|
|
102
101
|
const flattened = simulatedTx.privateReturnValues;
|
|
103
102
|
return flattened ? decodeReturnValues(this.functionDao, flattened) : [];
|
|
104
103
|
} else {
|
|
105
104
|
const txRequest = await this.create();
|
|
106
|
-
const simulatedTx = await this.
|
|
105
|
+
const simulatedTx = await this.wallet.simulateTx(txRequest, true);
|
|
107
106
|
this.txRequest = undefined;
|
|
108
107
|
const flattened = simulatedTx.publicOutput?.publicReturnValues;
|
|
109
108
|
return flattened ? decodeReturnValues(this.functionDao, flattened) : [];
|
|
@@ -57,7 +57,7 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
|
|
|
57
57
|
|
|
58
58
|
constructor(
|
|
59
59
|
private publicKeysHash: Fr,
|
|
60
|
-
|
|
60
|
+
wallet: Wallet,
|
|
61
61
|
private artifact: ContractArtifact,
|
|
62
62
|
private postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>,
|
|
63
63
|
private args: any[] = [],
|
|
@@ -80,11 +80,14 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
|
|
|
80
80
|
if (!this.txRequest) {
|
|
81
81
|
this.txRequest = await this.wallet.createTxExecutionRequest(await this.request(options));
|
|
82
82
|
// TODO: Should we add the contracts to the DB here, or once the tx has been sent or mined?
|
|
83
|
-
await this.
|
|
83
|
+
await this.wallet.registerContract({ artifact: this.artifact, instance: this.instance! });
|
|
84
84
|
}
|
|
85
85
|
return this.txRequest;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
// REFACTOR: Having a `request` method with different semantics than the ones in the other
|
|
89
|
+
// derived ContractInteractions is confusing. We should unify the flow of all ContractInteractions.
|
|
90
|
+
|
|
88
91
|
/**
|
|
89
92
|
* Returns an array of function calls that represent this operation. Useful as a building
|
|
90
93
|
* block for constructing batch requests.
|
|
@@ -102,13 +105,20 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
|
|
|
102
105
|
throw new Error(`No function calls needed to deploy contract ${this.artifact.name}`);
|
|
103
106
|
}
|
|
104
107
|
|
|
105
|
-
|
|
108
|
+
const request = {
|
|
106
109
|
calls: [...deployment.calls, ...bootstrap.calls],
|
|
107
110
|
authWitnesses: [...(deployment.authWitnesses ?? []), ...(bootstrap.authWitnesses ?? [])],
|
|
108
111
|
packedArguments: [...(deployment.packedArguments ?? []), ...(bootstrap.packedArguments ?? [])],
|
|
109
112
|
fee: options.fee,
|
|
110
113
|
};
|
|
114
|
+
|
|
115
|
+
if (options.estimateGas) {
|
|
116
|
+
request.fee = await this.getFeeOptions(request);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
this.functionCalls = request;
|
|
111
120
|
}
|
|
121
|
+
|
|
112
122
|
return this.functionCalls;
|
|
113
123
|
}
|
|
114
124
|
|
|
@@ -134,7 +144,7 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
|
|
|
134
144
|
|
|
135
145
|
// Register the contract class if it hasn't been published already.
|
|
136
146
|
if (!options.skipClassRegistration) {
|
|
137
|
-
if (await this.
|
|
147
|
+
if (await this.wallet.isContractClassPubliclyRegistered(contractClass.id)) {
|
|
138
148
|
this.log.debug(
|
|
139
149
|
`Skipping registration of already registered contract class ${contractClass.id.toString()} for ${instance.address.toString()}`,
|
|
140
150
|
);
|
|
@@ -192,7 +202,7 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
|
|
|
192
202
|
this.log.debug(
|
|
193
203
|
`Sent deployment tx of ${this.artifact.name} contract with deployment address ${instance.address.toString()}`,
|
|
194
204
|
);
|
|
195
|
-
return new DeploySentTx(this.
|
|
205
|
+
return new DeploySentTx(this.wallet, txHashPromise, this.postDeployCtor, instance);
|
|
196
206
|
}
|
|
197
207
|
|
|
198
208
|
/**
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PublicKernelType, type SimulatedTx } from '@aztec/circuit-types';
|
|
2
|
+
import { Gas } from '@aztec/circuits.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns suggested total and teardown gas limits for a simulated tx.
|
|
6
|
+
* Note that public gas usage is only accounted for if the publicOutput is present.
|
|
7
|
+
* @param pad - Percentage to pad the suggested gas limits by, defaults to 10%.
|
|
8
|
+
*/
|
|
9
|
+
export function getGasLimits(simulatedTx: SimulatedTx, pad = 0.1) {
|
|
10
|
+
const privateGasUsed = simulatedTx.tx.data.publicInputs.end.gasUsed;
|
|
11
|
+
if (simulatedTx.publicOutput) {
|
|
12
|
+
const publicGasUsed = Object.values(simulatedTx.publicOutput.gasUsed)
|
|
13
|
+
.filter(Boolean)
|
|
14
|
+
.reduce((total, current) => total.add(current), Gas.empty());
|
|
15
|
+
const teardownGas = simulatedTx.publicOutput.gasUsed[PublicKernelType.TEARDOWN] ?? Gas.empty();
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
totalGas: privateGasUsed.add(publicGasUsed).mul(1 + pad),
|
|
19
|
+
teardownGas: teardownGas.mul(1 + pad),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return { totalGas: privateGasUsed.mul(1 + pad), teardownGas: Gas.empty() };
|
|
24
|
+
}
|