@aztec/aztec.js 0.80.0 → 0.82.0
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/account/{contract.d.ts → account_contract.d.ts} +11 -5
- package/dest/account/account_contract.d.ts.map +1 -0
- package/dest/account/{contract.js → account_contract.js} +5 -1
- package/dest/account/index.d.ts +2 -3
- package/dest/account/index.d.ts.map +1 -1
- package/dest/account/index.js +1 -2
- package/dest/account/interface.d.ts +1 -13
- package/dest/account/interface.d.ts.map +1 -1
- package/dest/account/interface.js +1 -0
- package/dest/account_manager/account_manager.d.ts +105 -0
- package/dest/account_manager/account_manager.d.ts.map +1 -0
- package/dest/account_manager/account_manager.js +165 -0
- package/dest/account_manager/deploy_account_method.d.ts +4 -4
- package/dest/account_manager/deploy_account_method.d.ts.map +1 -1
- package/dest/account_manager/deploy_account_method.js +28 -13
- package/dest/account_manager/deploy_account_sent_tx.d.ts +3 -3
- package/dest/account_manager/deploy_account_sent_tx.d.ts.map +1 -1
- package/dest/account_manager/deploy_account_sent_tx.js +2 -2
- package/dest/account_manager/index.d.ts +1 -104
- package/dest/account_manager/index.d.ts.map +1 -1
- package/dest/account_manager/index.js +1 -157
- package/dest/api/account.d.ts +2 -1
- package/dest/api/account.d.ts.map +1 -1
- package/dest/api/contract.d.ts +4 -1
- package/dest/api/contract.d.ts.map +1 -1
- package/dest/api/contract.js +3 -0
- package/dest/api/fee.d.ts +1 -1
- package/dest/api/fee.d.ts.map +1 -1
- package/dest/api/utils.d.ts +2 -1
- package/dest/api/utils.d.ts.map +1 -1
- package/dest/api/utils.js +2 -1
- package/dest/api/wallet.d.ts +1 -1
- package/dest/api/wallet.d.ts.map +1 -1
- package/dest/contract/base_contract_interaction.d.ts +22 -57
- package/dest/contract/base_contract_interaction.d.ts.map +1 -1
- package/dest/contract/base_contract_interaction.js +12 -67
- package/dest/contract/batch_call.d.ts +6 -18
- package/dest/contract/batch_call.d.ts.map +1 -1
- package/dest/contract/batch_call.js +25 -54
- package/dest/contract/contract.d.ts +1 -1
- package/dest/contract/contract.d.ts.map +1 -1
- package/dest/contract/contract_base.d.ts +2 -2
- package/dest/contract/contract_base.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.d.ts +38 -18
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +34 -41
- package/dest/contract/deploy_method.d.ts +7 -8
- package/dest/contract/deploy_method.d.ts.map +1 -1
- package/dest/contract/deploy_method.js +27 -32
- package/dest/contract/deploy_proven_tx.d.ts +2 -3
- package/dest/contract/deploy_proven_tx.d.ts.map +1 -1
- package/dest/contract/deploy_sent_tx.d.ts +2 -3
- package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
- package/dest/contract/deploy_sent_tx.js +4 -4
- package/dest/contract/protocol_contracts.d.ts +1 -1
- package/dest/contract/protocol_contracts.d.ts.map +1 -1
- package/dest/contract/proven_tx.d.ts +3 -4
- package/dest/contract/proven_tx.d.ts.map +1 -1
- package/dest/contract/sent_tx.d.ts +4 -16
- package/dest/contract/sent_tx.d.ts.map +1 -1
- package/dest/contract/sent_tx.js +6 -37
- package/dest/contract/unsafe_contract.d.ts +1 -1
- package/dest/contract/unsafe_contract.d.ts.map +1 -1
- package/dest/contract/wait_for_proven.d.ts +17 -0
- package/dest/contract/wait_for_proven.d.ts.map +1 -0
- package/dest/contract/wait_for_proven.js +17 -0
- package/dest/deployment/broadcast_function.js +12 -8
- package/dest/deployment/contract_deployer.d.ts +1 -1
- package/dest/deployment/contract_deployer.d.ts.map +1 -1
- package/dest/deployment/register_class.d.ts +1 -1
- package/dest/deployment/register_class.d.ts.map +1 -1
- package/dest/deployment/register_class.js +6 -11
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts +3 -2
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +1 -1
- package/dest/entrypoint/default_multi_call_entrypoint.js +12 -8
- package/dest/ethereum/portal_manager.d.ts +20 -11
- package/dest/ethereum/portal_manager.d.ts.map +1 -1
- package/dest/ethereum/portal_manager.js +64 -30
- package/dest/fee/fee_juice_payment_method.d.ts +3 -3
- package/dest/fee/fee_juice_payment_method.d.ts.map +1 -1
- package/dest/fee/fee_juice_payment_method.js +3 -2
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts +4 -4
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
- package/dest/fee/fee_juice_payment_method_with_claim.js +6 -5
- package/dest/fee/private_fee_payment_method.d.ts +6 -6
- package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.js +13 -12
- package/dest/fee/public_fee_payment_method.d.ts +7 -7
- package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/public_fee_payment_method.js +10 -11
- package/dest/fee/utils.d.ts +13 -0
- package/dest/fee/utils.d.ts.map +1 -0
- package/dest/fee/utils.js +32 -0
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/test/aztec_cheat_codes.d.ts +2 -2
- package/dest/test/aztec_cheat_codes.d.ts.map +1 -1
- package/dest/test/aztec_cheat_codes.js +3 -3
- package/dest/utils/authwit.d.ts +16 -9
- package/dest/utils/authwit.d.ts.map +1 -1
- package/dest/utils/authwit.js +26 -35
- package/dest/wallet/account_wallet.d.ts +6 -6
- package/dest/wallet/account_wallet.d.ts.map +1 -1
- package/dest/wallet/account_wallet.js +15 -17
- package/dest/wallet/base_wallet.d.ts +12 -35
- package/dest/wallet/base_wallet.d.ts.map +1 -1
- package/dest/wallet/base_wallet.js +11 -64
- package/dest/wallet/index.d.ts +2 -2
- package/dest/wallet/index.d.ts.map +1 -1
- package/dest/wallet/index.js +1 -1
- package/dest/wallet/signerless_wallet.d.ts +3 -3
- package/dest/wallet/signerless_wallet.d.ts.map +1 -1
- package/dest/wallet/signerless_wallet.js +3 -6
- package/dest/wallet/wallet.d.ts +11 -0
- package/dest/wallet/wallet.d.ts.map +1 -0
- package/package.json +8 -7
- package/src/account/{contract.ts → account_contract.ts} +17 -4
- package/src/account/index.ts +2 -3
- package/src/account/interface.ts +1 -12
- package/src/account_manager/account_manager.ts +235 -0
- package/src/account_manager/deploy_account_method.ts +35 -15
- package/src/account_manager/deploy_account_sent_tx.ts +4 -4
- package/src/account_manager/index.ts +1 -227
- package/src/api/account.ts +2 -8
- package/src/api/contract.ts +5 -5
- package/src/api/fee.ts +1 -1
- package/src/api/utils.ts +1 -1
- package/src/api/wallet.ts +7 -1
- package/src/contract/base_contract_interaction.ts +32 -88
- package/src/contract/batch_call.ts +40 -43
- package/src/contract/contract.ts +1 -1
- package/src/contract/contract_base.ts +1 -1
- package/src/contract/contract_function_interaction.ts +85 -56
- package/src/contract/deploy_method.ts +24 -26
- package/src/contract/deploy_proven_tx.ts +2 -3
- package/src/contract/deploy_sent_tx.ts +6 -6
- package/src/contract/protocol_contracts.ts +1 -1
- package/src/contract/proven_tx.ts +2 -3
- package/src/contract/sent_tx.ts +6 -47
- package/src/contract/unsafe_contract.ts +1 -1
- package/src/contract/wait_for_proven.ts +38 -0
- package/src/deployment/broadcast_function.ts +40 -40
- package/src/deployment/contract_deployer.ts +1 -1
- package/src/deployment/register_class.ts +9 -22
- package/src/entrypoint/default_multi_call_entrypoint.ts +14 -7
- package/src/ethereum/portal_manager.ts +73 -24
- package/src/fee/fee_juice_payment_method.ts +4 -5
- package/src/fee/fee_juice_payment_method_with_claim.ts +24 -20
- package/src/fee/private_fee_payment_method.ts +29 -28
- package/src/fee/public_fee_payment_method.ts +29 -29
- package/src/fee/utils.ts +39 -0
- package/src/index.ts +1 -1
- package/src/test/aztec_cheat_codes.ts +3 -3
- package/src/utils/authwit.ts +32 -35
- package/src/wallet/account_wallet.ts +18 -17
- package/src/wallet/base_wallet.ts +27 -88
- package/src/wallet/index.ts +2 -2
- package/src/wallet/signerless_wallet.ts +9 -8
- package/src/wallet/wallet.ts +34 -0
- package/dest/account/contract.d.ts.map +0 -1
- package/dest/account/wallet.d.ts +0 -11
- package/dest/account/wallet.d.ts.map +0 -1
- package/dest/api/entrypoint.d.ts +0 -2
- package/dest/api/entrypoint.d.ts.map +0 -1
- package/dest/api/entrypoint.js +0 -1
- package/dest/entrypoint/default_entrypoint.d.ts +0 -12
- package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/default_entrypoint.js +0 -28
- package/dest/entrypoint/entrypoint.d.ts +0 -39
- package/dest/entrypoint/entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/entrypoint.js +0 -20
- package/dest/entrypoint/payload.d.ts +0 -128
- package/dest/entrypoint/payload.d.ts.map +0 -1
- package/dest/entrypoint/payload.js +0 -143
- package/dest/fee/fee_payment_method.d.ts +0 -22
- package/dest/fee/fee_payment_method.d.ts.map +0 -1
- package/dest/fee/fee_payment_method.js +0 -3
- package/src/account/wallet.ts +0 -13
- package/src/api/entrypoint.ts +0 -1
- package/src/entrypoint/default_entrypoint.ts +0 -39
- package/src/entrypoint/entrypoint.ts +0 -60
- package/src/entrypoint/payload.ts +0 -238
- package/src/fee/fee_payment_method.ts +0 -22
- /package/dest/{account → wallet}/wallet.js +0 -0
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import type { Tuple } from '@aztec/foundation/serialize';
|
|
3
|
-
import type { FieldsOf } from '@aztec/foundation/types';
|
|
4
|
-
import { FunctionCall } from '@aztec/stdlib/abi';
|
|
5
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
|
-
import type { GasSettings } from '@aztec/stdlib/gas';
|
|
7
|
-
import { HashedValues } from '@aztec/stdlib/tx';
|
|
8
|
-
import type { FeePaymentMethod } from '../fee/fee_payment_method.js';
|
|
9
|
-
/**
|
|
10
|
-
* Fee payment options for a transaction.
|
|
11
|
-
*/
|
|
12
|
-
export type FeeOptions = {
|
|
13
|
-
/** The fee payment method to use */
|
|
14
|
-
paymentMethod: FeePaymentMethod;
|
|
15
|
-
/** The gas settings */
|
|
16
|
-
gasSettings: GasSettings;
|
|
17
|
-
};
|
|
18
|
-
/** Fee options as set by a user. */
|
|
19
|
-
export type UserFeeOptions = {
|
|
20
|
-
/** The fee payment method to use */
|
|
21
|
-
paymentMethod?: FeePaymentMethod;
|
|
22
|
-
/** The gas settings */
|
|
23
|
-
gasSettings?: Partial<FieldsOf<GasSettings>>;
|
|
24
|
-
/** Percentage to pad the base fee by, if empty, defaults to 0.5 */
|
|
25
|
-
baseFeePadding?: number;
|
|
26
|
-
/** Whether to run an initial simulation of the tx with high gas limit to figure out actual gas settings. */
|
|
27
|
-
estimateGas?: boolean;
|
|
28
|
-
/** Percentage to pad the estimated gas limits by, if empty, defaults to 0.1. Only relevant if estimateGas is set. */
|
|
29
|
-
estimatedGasPadding?: number;
|
|
30
|
-
};
|
|
31
|
-
/** Encoded function call for account contract entrypoint */
|
|
32
|
-
type EncodedFunctionCall = {
|
|
33
|
-
/** Arguments hash for the call */
|
|
34
|
-
args_hash: Fr;
|
|
35
|
-
/** Selector of the function to call */
|
|
36
|
-
function_selector: Fr;
|
|
37
|
-
/** Address of the contract to call */
|
|
38
|
-
target_address: Fr;
|
|
39
|
-
/** Whether the function is public or private */
|
|
40
|
-
is_public: boolean;
|
|
41
|
-
/** Whether the function can alter state */
|
|
42
|
-
is_static: boolean;
|
|
43
|
-
};
|
|
44
|
-
/** Assembles an entrypoint payload */
|
|
45
|
-
export declare abstract class EntrypointPayload {
|
|
46
|
-
private functionCalls;
|
|
47
|
-
private _hashedArguments;
|
|
48
|
-
private generatorIndex;
|
|
49
|
-
private _nonce;
|
|
50
|
-
protected constructor(functionCalls: EncodedFunctionCall[], _hashedArguments: HashedValues[], generatorIndex: number, _nonce: Fr);
|
|
51
|
-
protected static create(functionCalls: FunctionCall[]): Promise<{
|
|
52
|
-
encodedFunctionCalls: {
|
|
53
|
-
args_hash: Fr;
|
|
54
|
-
function_selector: Fr;
|
|
55
|
-
target_address: Fr;
|
|
56
|
-
is_public: boolean;
|
|
57
|
-
is_static: boolean;
|
|
58
|
-
}[];
|
|
59
|
-
hashedArguments: HashedValues[];
|
|
60
|
-
}>;
|
|
61
|
-
/**
|
|
62
|
-
* The function calls to execute. This uses snake_case naming so that it is compatible with Noir encoding
|
|
63
|
-
* @internal
|
|
64
|
-
*/
|
|
65
|
-
get function_calls(): EncodedFunctionCall[];
|
|
66
|
-
/**
|
|
67
|
-
* The nonce
|
|
68
|
-
* @internal
|
|
69
|
-
*/
|
|
70
|
-
get nonce(): Fr;
|
|
71
|
-
/**
|
|
72
|
-
* The hashed arguments for the function calls
|
|
73
|
-
*/
|
|
74
|
-
get hashedArguments(): HashedValues[];
|
|
75
|
-
/**
|
|
76
|
-
* Serializes the payload to an array of fields
|
|
77
|
-
* @returns The fields of the payload
|
|
78
|
-
*/
|
|
79
|
-
abstract toFields(): Fr[];
|
|
80
|
-
/**
|
|
81
|
-
* Hashes the payload
|
|
82
|
-
* @returns The hash of the payload
|
|
83
|
-
*/
|
|
84
|
-
hash(): Promise<Fr>;
|
|
85
|
-
/** Serializes the function calls to an array of fields. */
|
|
86
|
-
protected functionCallsToFields(): Fr[];
|
|
87
|
-
/**
|
|
88
|
-
* Creates an execution payload for a dapp from a set of function calls
|
|
89
|
-
* @param functionCalls - The function calls to execute
|
|
90
|
-
* @returns The execution payload
|
|
91
|
-
*/
|
|
92
|
-
static fromFunctionCalls(functionCalls: FunctionCall[]): Promise<AppEntrypointPayload>;
|
|
93
|
-
/**
|
|
94
|
-
* Creates an execution payload for the app-portion of a transaction from a set of function calls
|
|
95
|
-
* @param functionCalls - The function calls to execute
|
|
96
|
-
* @param nonce - The nonce for the payload, used to emit a nullifier identifying the call
|
|
97
|
-
* @returns The execution payload
|
|
98
|
-
*/
|
|
99
|
-
static fromAppExecution(functionCalls: FunctionCall[] | Tuple<FunctionCall, 4>, nonce?: Fr): Promise<AppEntrypointPayload>;
|
|
100
|
-
/**
|
|
101
|
-
* Creates an execution payload to pay the fee for a transaction
|
|
102
|
-
* @param sender - The address sending this payload
|
|
103
|
-
* @param feeOpts - The fee payment options
|
|
104
|
-
* @returns The execution payload
|
|
105
|
-
*/
|
|
106
|
-
static fromFeeOptions(sender: AztecAddress, feeOpts?: FeeOptions): Promise<FeeEntrypointPayload>;
|
|
107
|
-
}
|
|
108
|
-
/** Entrypoint payload for app phase execution. */
|
|
109
|
-
declare class AppEntrypointPayload extends EntrypointPayload {
|
|
110
|
-
toFields(): Fr[];
|
|
111
|
-
}
|
|
112
|
-
/** Entrypoint payload for fee payment to be run during setup phase. */
|
|
113
|
-
declare class FeeEntrypointPayload extends EntrypointPayload {
|
|
114
|
-
#private;
|
|
115
|
-
constructor(functionCalls: EncodedFunctionCall[], hashedArguments: HashedValues[], generatorIndex: number, nonce: Fr, isFeePayer: boolean);
|
|
116
|
-
toFields(): Fr[];
|
|
117
|
-
/** Whether the sender should be appointed as fee payer. */
|
|
118
|
-
get is_fee_payer(): boolean;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Computes a hash of a combined payload.
|
|
122
|
-
* @param appPayload - An app payload.
|
|
123
|
-
* @param feePayload - A fee payload.
|
|
124
|
-
* @returns A hash of a combined payload.
|
|
125
|
-
*/
|
|
126
|
-
export declare function computeCombinedPayloadHash(appPayload: AppEntrypointPayload, feePayload: FeeEntrypointPayload): Promise<Fr>;
|
|
127
|
-
export {};
|
|
128
|
-
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/entrypoint/payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { GeneratorIndex } from '@aztec/constants';
|
|
2
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
-
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto';
|
|
4
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
-
import { FunctionCall, FunctionType } from '@aztec/stdlib/abi';
|
|
6
|
-
import { HashedValues } from '@aztec/stdlib/tx';
|
|
7
|
-
// docs:end:user_fee_options
|
|
8
|
-
// These must match the values defined in:
|
|
9
|
-
// - noir-projects/aztec-nr/aztec/src/entrypoint/app.nr
|
|
10
|
-
const APP_MAX_CALLS = 4;
|
|
11
|
-
// - and noir-projects/aztec-nr/aztec/src/entrypoint/fee.nr
|
|
12
|
-
const FEE_MAX_CALLS = 2;
|
|
13
|
-
/* eslint-enable camelcase */ /** Assembles an entrypoint payload */ export class EntrypointPayload {
|
|
14
|
-
functionCalls;
|
|
15
|
-
_hashedArguments;
|
|
16
|
-
generatorIndex;
|
|
17
|
-
_nonce;
|
|
18
|
-
constructor(functionCalls, _hashedArguments, generatorIndex, _nonce){
|
|
19
|
-
this.functionCalls = functionCalls;
|
|
20
|
-
this._hashedArguments = _hashedArguments;
|
|
21
|
-
this.generatorIndex = generatorIndex;
|
|
22
|
-
this._nonce = _nonce;
|
|
23
|
-
}
|
|
24
|
-
static async create(functionCalls) {
|
|
25
|
-
const hashedArguments = [];
|
|
26
|
-
for (const call of functionCalls){
|
|
27
|
-
hashedArguments.push(await HashedValues.fromValues(call.args));
|
|
28
|
-
}
|
|
29
|
-
/* eslint-disable camelcase */ const encodedFunctionCalls = functionCalls.map((call, index)=>({
|
|
30
|
-
args_hash: hashedArguments[index].hash,
|
|
31
|
-
function_selector: call.selector.toField(),
|
|
32
|
-
target_address: call.to.toField(),
|
|
33
|
-
is_public: call.type == FunctionType.PUBLIC,
|
|
34
|
-
is_static: call.isStatic
|
|
35
|
-
}));
|
|
36
|
-
/* eslint-enable camelcase */ return {
|
|
37
|
-
encodedFunctionCalls,
|
|
38
|
-
hashedArguments
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/* eslint-disable camelcase */ /**
|
|
42
|
-
* The function calls to execute. This uses snake_case naming so that it is compatible with Noir encoding
|
|
43
|
-
* @internal
|
|
44
|
-
*/ get function_calls() {
|
|
45
|
-
return this.functionCalls;
|
|
46
|
-
}
|
|
47
|
-
/* eslint-enable camelcase */ /**
|
|
48
|
-
* The nonce
|
|
49
|
-
* @internal
|
|
50
|
-
*/ get nonce() {
|
|
51
|
-
return this._nonce;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* The hashed arguments for the function calls
|
|
55
|
-
*/ get hashedArguments() {
|
|
56
|
-
return this._hashedArguments;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Hashes the payload
|
|
60
|
-
* @returns The hash of the payload
|
|
61
|
-
*/ hash() {
|
|
62
|
-
return poseidon2HashWithSeparator(this.toFields(), this.generatorIndex);
|
|
63
|
-
}
|
|
64
|
-
/** Serializes the function calls to an array of fields. */ functionCallsToFields() {
|
|
65
|
-
return this.functionCalls.flatMap((call)=>[
|
|
66
|
-
call.args_hash,
|
|
67
|
-
call.function_selector,
|
|
68
|
-
call.target_address,
|
|
69
|
-
new Fr(call.is_public),
|
|
70
|
-
new Fr(call.is_static)
|
|
71
|
-
]);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Creates an execution payload for a dapp from a set of function calls
|
|
75
|
-
* @param functionCalls - The function calls to execute
|
|
76
|
-
* @returns The execution payload
|
|
77
|
-
*/ static async fromFunctionCalls(functionCalls) {
|
|
78
|
-
const { encodedFunctionCalls, hashedArguments } = await this.create(functionCalls);
|
|
79
|
-
return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, 0, Fr.random());
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Creates an execution payload for the app-portion of a transaction from a set of function calls
|
|
83
|
-
* @param functionCalls - The function calls to execute
|
|
84
|
-
* @param nonce - The nonce for the payload, used to emit a nullifier identifying the call
|
|
85
|
-
* @returns The execution payload
|
|
86
|
-
*/ static async fromAppExecution(functionCalls, nonce = Fr.random()) {
|
|
87
|
-
if (functionCalls.length > APP_MAX_CALLS) {
|
|
88
|
-
throw new Error(`Expected at most ${APP_MAX_CALLS} function calls, got ${functionCalls.length}`);
|
|
89
|
-
}
|
|
90
|
-
const paddedCalls = padArrayEnd(functionCalls, FunctionCall.empty(), APP_MAX_CALLS);
|
|
91
|
-
const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
|
|
92
|
-
return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, GeneratorIndex.SIGNATURE_PAYLOAD, nonce);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Creates an execution payload to pay the fee for a transaction
|
|
96
|
-
* @param sender - The address sending this payload
|
|
97
|
-
* @param feeOpts - The fee payment options
|
|
98
|
-
* @returns The execution payload
|
|
99
|
-
*/ static async fromFeeOptions(sender, feeOpts) {
|
|
100
|
-
const calls = await feeOpts?.paymentMethod.getFunctionCalls(feeOpts?.gasSettings) ?? [];
|
|
101
|
-
const feePayer = await feeOpts?.paymentMethod.getFeePayer(feeOpts?.gasSettings);
|
|
102
|
-
const isFeePayer = !!feePayer && feePayer.equals(sender);
|
|
103
|
-
const paddedCalls = padArrayEnd(calls, FunctionCall.empty(), FEE_MAX_CALLS);
|
|
104
|
-
const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
|
|
105
|
-
return new FeeEntrypointPayload(encodedFunctionCalls, hashedArguments, GeneratorIndex.FEE_PAYLOAD, Fr.random(), isFeePayer);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/** Entrypoint payload for app phase execution. */ class AppEntrypointPayload extends EntrypointPayload {
|
|
109
|
-
toFields() {
|
|
110
|
-
return [
|
|
111
|
-
...this.functionCallsToFields(),
|
|
112
|
-
this.nonce
|
|
113
|
-
];
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/** Entrypoint payload for fee payment to be run during setup phase. */ class FeeEntrypointPayload extends EntrypointPayload {
|
|
117
|
-
#isFeePayer;
|
|
118
|
-
constructor(functionCalls, hashedArguments, generatorIndex, nonce, isFeePayer){
|
|
119
|
-
super(functionCalls, hashedArguments, generatorIndex, nonce);
|
|
120
|
-
this.#isFeePayer = isFeePayer;
|
|
121
|
-
}
|
|
122
|
-
toFields() {
|
|
123
|
-
return [
|
|
124
|
-
...this.functionCallsToFields(),
|
|
125
|
-
this.nonce,
|
|
126
|
-
new Fr(this.#isFeePayer)
|
|
127
|
-
];
|
|
128
|
-
}
|
|
129
|
-
/* eslint-disable camelcase */ /** Whether the sender should be appointed as fee payer. */ get is_fee_payer() {
|
|
130
|
-
return this.#isFeePayer;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Computes a hash of a combined payload.
|
|
135
|
-
* @param appPayload - An app payload.
|
|
136
|
-
* @param feePayload - A fee payload.
|
|
137
|
-
* @returns A hash of a combined payload.
|
|
138
|
-
*/ export async function computeCombinedPayloadHash(appPayload, feePayload) {
|
|
139
|
-
return poseidon2HashWithSeparator([
|
|
140
|
-
await appPayload.hash(),
|
|
141
|
-
await feePayload.hash()
|
|
142
|
-
], GeneratorIndex.COMBINED_PAYLOAD);
|
|
143
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
2
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import type { GasSettings } from '@aztec/stdlib/gas';
|
|
4
|
-
/**
|
|
5
|
-
* Holds information about how the fee for a transaction is to be paid.
|
|
6
|
-
*/
|
|
7
|
-
export interface FeePaymentMethod {
|
|
8
|
-
/** The asset used to pay the fee. */
|
|
9
|
-
getAsset(): Promise<AztecAddress>;
|
|
10
|
-
/**
|
|
11
|
-
* Creates a function call to pay the fee in the given asset.
|
|
12
|
-
* @param gasSettings - The gas limits and max fees.
|
|
13
|
-
* @returns The function call to pay the fee.
|
|
14
|
-
*/
|
|
15
|
-
getFunctionCalls(gasSettings: GasSettings): Promise<FunctionCall[]>;
|
|
16
|
-
/**
|
|
17
|
-
* The expected fee payer for this tx.
|
|
18
|
-
* @param gasSettings - The gas limits and max fees.
|
|
19
|
-
*/
|
|
20
|
-
getFeePayer(gasSettings: GasSettings): Promise<AztecAddress>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=fee_payment_method.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fee_payment_method.d.ts","sourceRoot":"","sources":["../../src/fee/fee_payment_method.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpE;;;OAGG;IACH,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9D"}
|
package/src/account/wallet.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
2
|
-
import type { PXE } from '@aztec/stdlib/interfaces/client';
|
|
3
|
-
|
|
4
|
-
import type { IntentAction, IntentInnerHash } from '../utils/authwit.js';
|
|
5
|
-
import type { AccountInterface } from './interface.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The wallet interface.
|
|
9
|
-
*/
|
|
10
|
-
export type Wallet = AccountInterface &
|
|
11
|
-
PXE & {
|
|
12
|
-
createAuthWit(intent: IntentInnerHash | IntentAction): Promise<AuthWitness>;
|
|
13
|
-
};
|
package/src/api/entrypoint.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '../entrypoint/entrypoint.js';
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { FunctionType } from '@aztec/stdlib/abi';
|
|
2
|
-
import { HashedValues, TxContext, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
3
|
-
|
|
4
|
-
import type { EntrypointInterface, ExecutionRequestInit } from './entrypoint.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Default implementation of the entrypoint interface. It calls a function on a contract directly
|
|
8
|
-
*/
|
|
9
|
-
export class DefaultEntrypoint implements EntrypointInterface {
|
|
10
|
-
constructor(private chainId: number, private protocolVersion: number) {}
|
|
11
|
-
|
|
12
|
-
async createTxExecutionRequest(exec: ExecutionRequestInit): Promise<TxExecutionRequest> {
|
|
13
|
-
const { fee, calls, authWitnesses = [], hashedArguments = [], capsules = [] } = exec;
|
|
14
|
-
|
|
15
|
-
if (calls.length > 1) {
|
|
16
|
-
throw new Error(`Expected a single call, got ${calls.length}`);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const call = calls[0];
|
|
20
|
-
|
|
21
|
-
if (call.type !== FunctionType.PRIVATE) {
|
|
22
|
-
throw new Error('Public entrypoints are not allowed');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const entrypointHashedValues = await HashedValues.fromValues(call.args);
|
|
26
|
-
const txContext = new TxContext(this.chainId, this.protocolVersion, fee.gasSettings);
|
|
27
|
-
return Promise.resolve(
|
|
28
|
-
new TxExecutionRequest(
|
|
29
|
-
call.to,
|
|
30
|
-
call.selector,
|
|
31
|
-
entrypointHashedValues.hash,
|
|
32
|
-
txContext,
|
|
33
|
-
[...hashedArguments, entrypointHashedValues],
|
|
34
|
-
authWitnesses,
|
|
35
|
-
capsules,
|
|
36
|
-
),
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
3
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
4
|
-
import type { Capsule, HashedValues, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
5
|
-
|
|
6
|
-
import { EntrypointPayload, type FeeOptions, computeCombinedPayloadHash } from './payload.js';
|
|
7
|
-
|
|
8
|
-
export { EntrypointPayload, type FeeOptions, computeCombinedPayloadHash };
|
|
9
|
-
|
|
10
|
-
export { DefaultEntrypoint } from './default_entrypoint.js';
|
|
11
|
-
export { DefaultMultiCallEntrypoint } from './default_multi_call_entrypoint.js';
|
|
12
|
-
|
|
13
|
-
/** Encodes the calls to be done in a transaction. */
|
|
14
|
-
export type ExecutionRequestInit = {
|
|
15
|
-
/** The function calls to be executed. */
|
|
16
|
-
calls: FunctionCall[];
|
|
17
|
-
/** Any transient auth witnesses needed for this execution */
|
|
18
|
-
authWitnesses?: AuthWitness[];
|
|
19
|
-
/** Any transient hashed arguments for this execution */
|
|
20
|
-
hashedArguments?: HashedValues[];
|
|
21
|
-
/** Data passed through an oracle for this execution. */
|
|
22
|
-
capsules?: Capsule[];
|
|
23
|
-
/** How the fee is going to be payed */
|
|
24
|
-
fee: FeeOptions;
|
|
25
|
-
/** An optional nonce. Used to repeat a previous tx with a higher fee so that the first one is cancelled */
|
|
26
|
-
nonce?: Fr;
|
|
27
|
-
/** Whether the transaction can be cancelled. If true, an extra nullifier will be emitted: H(nonce, GENERATOR_INDEX__TX_NULLIFIER) */
|
|
28
|
-
cancellable?: boolean;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Merges an array of ExecutionRequestInits.
|
|
33
|
-
*/
|
|
34
|
-
export function mergeExecutionRequestInits(
|
|
35
|
-
requests: Pick<ExecutionRequestInit, 'calls' | 'authWitnesses' | 'hashedArguments' | 'capsules'>[],
|
|
36
|
-
{ nonce, cancellable }: Pick<ExecutionRequestInit, 'nonce' | 'cancellable'> = {},
|
|
37
|
-
): Omit<ExecutionRequestInit, 'fee'> {
|
|
38
|
-
const calls = requests.map(r => r.calls).flat();
|
|
39
|
-
const authWitnesses = requests.map(r => r.authWitnesses ?? []).flat();
|
|
40
|
-
const hashedArguments = requests.map(r => r.hashedArguments ?? []).flat();
|
|
41
|
-
const capsules = requests.map(r => r.capsules ?? []).flat();
|
|
42
|
-
return {
|
|
43
|
-
calls,
|
|
44
|
-
authWitnesses,
|
|
45
|
-
hashedArguments,
|
|
46
|
-
capsules,
|
|
47
|
-
nonce,
|
|
48
|
-
cancellable,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/** Creates transaction execution requests out of a set of function calls. */
|
|
53
|
-
export interface EntrypointInterface {
|
|
54
|
-
/**
|
|
55
|
-
* Generates an execution request out of set of function calls.
|
|
56
|
-
* @param execution - The execution intents to be run.
|
|
57
|
-
* @returns The authenticated transaction execution request.
|
|
58
|
-
*/
|
|
59
|
-
createTxExecutionRequest(execution: ExecutionRequestInit): Promise<TxExecutionRequest>;
|
|
60
|
-
}
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { GeneratorIndex } from '@aztec/constants';
|
|
2
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
-
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto';
|
|
4
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
-
import type { Tuple } from '@aztec/foundation/serialize';
|
|
6
|
-
import type { FieldsOf } from '@aztec/foundation/types';
|
|
7
|
-
import { FunctionCall, FunctionType } from '@aztec/stdlib/abi';
|
|
8
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
-
import type { GasSettings } from '@aztec/stdlib/gas';
|
|
10
|
-
import { HashedValues } from '@aztec/stdlib/tx';
|
|
11
|
-
|
|
12
|
-
import type { FeePaymentMethod } from '../fee/fee_payment_method.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Fee payment options for a transaction.
|
|
16
|
-
*/
|
|
17
|
-
export type FeeOptions = {
|
|
18
|
-
/** The fee payment method to use */
|
|
19
|
-
paymentMethod: FeePaymentMethod;
|
|
20
|
-
/** The gas settings */
|
|
21
|
-
gasSettings: GasSettings;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// docs:start:user_fee_options
|
|
25
|
-
/** Fee options as set by a user. */
|
|
26
|
-
export type UserFeeOptions = {
|
|
27
|
-
/** The fee payment method to use */
|
|
28
|
-
paymentMethod?: FeePaymentMethod;
|
|
29
|
-
/** The gas settings */
|
|
30
|
-
gasSettings?: Partial<FieldsOf<GasSettings>>;
|
|
31
|
-
/** Percentage to pad the base fee by, if empty, defaults to 0.5 */
|
|
32
|
-
baseFeePadding?: number;
|
|
33
|
-
/** Whether to run an initial simulation of the tx with high gas limit to figure out actual gas settings. */
|
|
34
|
-
estimateGas?: boolean;
|
|
35
|
-
/** Percentage to pad the estimated gas limits by, if empty, defaults to 0.1. Only relevant if estimateGas is set. */
|
|
36
|
-
estimatedGasPadding?: number;
|
|
37
|
-
};
|
|
38
|
-
// docs:end:user_fee_options
|
|
39
|
-
|
|
40
|
-
// These must match the values defined in:
|
|
41
|
-
// - noir-projects/aztec-nr/aztec/src/entrypoint/app.nr
|
|
42
|
-
const APP_MAX_CALLS = 4;
|
|
43
|
-
// - and noir-projects/aztec-nr/aztec/src/entrypoint/fee.nr
|
|
44
|
-
const FEE_MAX_CALLS = 2;
|
|
45
|
-
|
|
46
|
-
/* eslint-disable camelcase */
|
|
47
|
-
/** Encoded function call for account contract entrypoint */
|
|
48
|
-
type EncodedFunctionCall = {
|
|
49
|
-
/** Arguments hash for the call */
|
|
50
|
-
args_hash: Fr;
|
|
51
|
-
/** Selector of the function to call */
|
|
52
|
-
function_selector: Fr;
|
|
53
|
-
/** Address of the contract to call */
|
|
54
|
-
target_address: Fr;
|
|
55
|
-
/** Whether the function is public or private */
|
|
56
|
-
is_public: boolean;
|
|
57
|
-
/** Whether the function can alter state */
|
|
58
|
-
is_static: boolean;
|
|
59
|
-
};
|
|
60
|
-
/* eslint-enable camelcase */
|
|
61
|
-
|
|
62
|
-
/** Assembles an entrypoint payload */
|
|
63
|
-
export abstract class EntrypointPayload {
|
|
64
|
-
protected constructor(
|
|
65
|
-
private functionCalls: EncodedFunctionCall[],
|
|
66
|
-
private _hashedArguments: HashedValues[],
|
|
67
|
-
private generatorIndex: number,
|
|
68
|
-
private _nonce: Fr,
|
|
69
|
-
) {}
|
|
70
|
-
|
|
71
|
-
protected static async create(functionCalls: FunctionCall[]) {
|
|
72
|
-
const hashedArguments: HashedValues[] = [];
|
|
73
|
-
for (const call of functionCalls) {
|
|
74
|
-
hashedArguments.push(await HashedValues.fromValues(call.args));
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/* eslint-disable camelcase */
|
|
78
|
-
const encodedFunctionCalls = functionCalls.map((call, index) => ({
|
|
79
|
-
args_hash: hashedArguments[index].hash,
|
|
80
|
-
function_selector: call.selector.toField(),
|
|
81
|
-
target_address: call.to.toField(),
|
|
82
|
-
is_public: call.type == FunctionType.PUBLIC,
|
|
83
|
-
is_static: call.isStatic,
|
|
84
|
-
}));
|
|
85
|
-
/* eslint-enable camelcase */
|
|
86
|
-
|
|
87
|
-
return {
|
|
88
|
-
encodedFunctionCalls,
|
|
89
|
-
hashedArguments,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/* eslint-disable camelcase */
|
|
94
|
-
/**
|
|
95
|
-
* The function calls to execute. This uses snake_case naming so that it is compatible with Noir encoding
|
|
96
|
-
* @internal
|
|
97
|
-
*/
|
|
98
|
-
get function_calls() {
|
|
99
|
-
return this.functionCalls;
|
|
100
|
-
}
|
|
101
|
-
/* eslint-enable camelcase */
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* The nonce
|
|
105
|
-
* @internal
|
|
106
|
-
*/
|
|
107
|
-
get nonce() {
|
|
108
|
-
return this._nonce;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* The hashed arguments for the function calls
|
|
113
|
-
*/
|
|
114
|
-
get hashedArguments() {
|
|
115
|
-
return this._hashedArguments;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Serializes the payload to an array of fields
|
|
120
|
-
* @returns The fields of the payload
|
|
121
|
-
*/
|
|
122
|
-
abstract toFields(): Fr[];
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Hashes the payload
|
|
126
|
-
* @returns The hash of the payload
|
|
127
|
-
*/
|
|
128
|
-
hash() {
|
|
129
|
-
return poseidon2HashWithSeparator(this.toFields(), this.generatorIndex);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/** Serializes the function calls to an array of fields. */
|
|
133
|
-
protected functionCallsToFields() {
|
|
134
|
-
return this.functionCalls.flatMap(call => [
|
|
135
|
-
call.args_hash,
|
|
136
|
-
call.function_selector,
|
|
137
|
-
call.target_address,
|
|
138
|
-
new Fr(call.is_public),
|
|
139
|
-
new Fr(call.is_static),
|
|
140
|
-
]);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Creates an execution payload for a dapp from a set of function calls
|
|
145
|
-
* @param functionCalls - The function calls to execute
|
|
146
|
-
* @returns The execution payload
|
|
147
|
-
*/
|
|
148
|
-
static async fromFunctionCalls(functionCalls: FunctionCall[]) {
|
|
149
|
-
const { encodedFunctionCalls, hashedArguments } = await this.create(functionCalls);
|
|
150
|
-
return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, 0, Fr.random());
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Creates an execution payload for the app-portion of a transaction from a set of function calls
|
|
155
|
-
* @param functionCalls - The function calls to execute
|
|
156
|
-
* @param nonce - The nonce for the payload, used to emit a nullifier identifying the call
|
|
157
|
-
* @returns The execution payload
|
|
158
|
-
*/
|
|
159
|
-
static async fromAppExecution(functionCalls: FunctionCall[] | Tuple<FunctionCall, 4>, nonce = Fr.random()) {
|
|
160
|
-
if (functionCalls.length > APP_MAX_CALLS) {
|
|
161
|
-
throw new Error(`Expected at most ${APP_MAX_CALLS} function calls, got ${functionCalls.length}`);
|
|
162
|
-
}
|
|
163
|
-
const paddedCalls = padArrayEnd(functionCalls, FunctionCall.empty(), APP_MAX_CALLS);
|
|
164
|
-
const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
|
|
165
|
-
return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, GeneratorIndex.SIGNATURE_PAYLOAD, nonce);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Creates an execution payload to pay the fee for a transaction
|
|
170
|
-
* @param sender - The address sending this payload
|
|
171
|
-
* @param feeOpts - The fee payment options
|
|
172
|
-
* @returns The execution payload
|
|
173
|
-
*/
|
|
174
|
-
static async fromFeeOptions(sender: AztecAddress, feeOpts?: FeeOptions) {
|
|
175
|
-
const calls = (await feeOpts?.paymentMethod.getFunctionCalls(feeOpts?.gasSettings)) ?? [];
|
|
176
|
-
const feePayer = await feeOpts?.paymentMethod.getFeePayer(feeOpts?.gasSettings);
|
|
177
|
-
const isFeePayer = !!feePayer && feePayer.equals(sender);
|
|
178
|
-
const paddedCalls = padArrayEnd(calls, FunctionCall.empty(), FEE_MAX_CALLS);
|
|
179
|
-
const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
|
|
180
|
-
return new FeeEntrypointPayload(
|
|
181
|
-
encodedFunctionCalls,
|
|
182
|
-
hashedArguments,
|
|
183
|
-
GeneratorIndex.FEE_PAYLOAD,
|
|
184
|
-
Fr.random(),
|
|
185
|
-
isFeePayer,
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/** Entrypoint payload for app phase execution. */
|
|
191
|
-
class AppEntrypointPayload extends EntrypointPayload {
|
|
192
|
-
override toFields(): Fr[] {
|
|
193
|
-
return [...this.functionCallsToFields(), this.nonce];
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/** Entrypoint payload for fee payment to be run during setup phase. */
|
|
198
|
-
class FeeEntrypointPayload extends EntrypointPayload {
|
|
199
|
-
#isFeePayer: boolean;
|
|
200
|
-
|
|
201
|
-
constructor(
|
|
202
|
-
functionCalls: EncodedFunctionCall[],
|
|
203
|
-
hashedArguments: HashedValues[],
|
|
204
|
-
generatorIndex: number,
|
|
205
|
-
nonce: Fr,
|
|
206
|
-
isFeePayer: boolean,
|
|
207
|
-
) {
|
|
208
|
-
super(functionCalls, hashedArguments, generatorIndex, nonce);
|
|
209
|
-
this.#isFeePayer = isFeePayer;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
override toFields(): Fr[] {
|
|
213
|
-
return [...this.functionCallsToFields(), this.nonce, new Fr(this.#isFeePayer)];
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/* eslint-disable camelcase */
|
|
217
|
-
/** Whether the sender should be appointed as fee payer. */
|
|
218
|
-
get is_fee_payer() {
|
|
219
|
-
return this.#isFeePayer;
|
|
220
|
-
}
|
|
221
|
-
/* eslint-enable camelcase */
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Computes a hash of a combined payload.
|
|
226
|
-
* @param appPayload - An app payload.
|
|
227
|
-
* @param feePayload - A fee payload.
|
|
228
|
-
* @returns A hash of a combined payload.
|
|
229
|
-
*/
|
|
230
|
-
export async function computeCombinedPayloadHash(
|
|
231
|
-
appPayload: AppEntrypointPayload,
|
|
232
|
-
feePayload: FeeEntrypointPayload,
|
|
233
|
-
): Promise<Fr> {
|
|
234
|
-
return poseidon2HashWithSeparator(
|
|
235
|
-
[await appPayload.hash(), await feePayload.hash()],
|
|
236
|
-
GeneratorIndex.COMBINED_PAYLOAD,
|
|
237
|
-
);
|
|
238
|
-
}
|