@wonderland/aztec-fee-payment 4.2.0 → 5.0.0-rc.2
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/README.md +1 -1
- package/dist/src/artifacts/Counter.d.ts +5 -8
- package/dist/src/artifacts/Counter.d.ts.map +1 -1
- package/dist/src/artifacts/Counter.js +15 -11
- package/dist/src/artifacts/PrivateFPC.d.ts +5 -8
- package/dist/src/artifacts/PrivateFPC.d.ts.map +1 -1
- package/dist/src/artifacts/PrivateFPC.js +15 -11
- package/dist/src/ts/utils/deploy.d.ts +5 -5
- package/dist/src/ts/utils/deploy.d.ts.map +1 -1
- package/dist/src/ts/utils/deploy.js +10 -12
- package/dist/src/ts/utils/gas.d.ts +26 -8
- package/dist/src/ts/utils/gas.d.ts.map +1 -1
- package/dist/src/ts/utils/gas.js +42 -28
- package/dist/target/counter_contract-Counter.json +1343 -850
- package/dist/target/private_contract-PrivateFPC.json +1921 -1501
- package/package.json +2 -2
- package/target/counter_contract-Counter.json +1343 -850
- package/target/counter_contract-Counter.json.bak +1 -1
- package/target/private_contract-PrivateFPC.json +1921 -1501
- package/target/private_contract-PrivateFPC.json.bak +1 -1
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ A Fee Payment Contract (FPC) for Aztec that enables private transaction fee spon
|
|
|
29
29
|
|
|
30
30
|
### Prerequisites
|
|
31
31
|
|
|
32
|
-
- [Aztec CLI](https://docs.aztec.network/getting_started)
|
|
32
|
+
- [Aztec CLI](https://docs.aztec.network/getting_started) v5.0.0-rc.2
|
|
33
33
|
- Node.js 22+
|
|
34
34
|
- Yarn 1.22+
|
|
35
35
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { type AztecAddressLike, type ContractArtifact, type FieldLike, type OptionLike } from '@aztec/aztec.js/abi';
|
|
3
|
-
import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, DeployMethod } from '@aztec/aztec.js/contracts';
|
|
4
|
-
import { PublicKeys } from '@aztec/aztec.js/keys';
|
|
3
|
+
import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, type DeployInstantiationOptions, DeployMethod } from '@aztec/aztec.js/contracts';
|
|
5
4
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
6
5
|
export declare const CounterContractArtifact: ContractArtifact;
|
|
7
6
|
/**
|
|
@@ -18,19 +17,17 @@ export declare class CounterContract extends ContractBase {
|
|
|
18
17
|
static at(address: AztecAddress, wallet: Wallet): CounterContract;
|
|
19
18
|
/**
|
|
20
19
|
* Creates a tx to deploy a new instance of this contract.
|
|
20
|
+
* @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
|
|
21
|
+
* Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
|
|
21
22
|
*/
|
|
22
|
-
static deploy(wallet: Wallet): DeployMethod<CounterContract>;
|
|
23
|
-
/**
|
|
24
|
-
* Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address.
|
|
25
|
-
*/
|
|
26
|
-
static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet): DeployMethod<CounterContract>;
|
|
23
|
+
static deploy(wallet: Wallet, instantiation?: DeployInstantiationOptions): DeployMethod<CounterContract>;
|
|
27
24
|
/**
|
|
28
25
|
* Creates a tx to deploy a new instance of this contract using the specified constructor method.
|
|
29
26
|
*/
|
|
30
27
|
static deployWithOpts<M extends keyof CounterContract['methods']>(opts: {
|
|
31
|
-
publicKeys?: PublicKeys;
|
|
32
28
|
method?: M;
|
|
33
29
|
wallet: Wallet;
|
|
30
|
+
instantiation?: DeployInstantiationOptions;
|
|
34
31
|
}, ...args: Parameters<CounterContract['methods'][M]>): DeployMethod<CounterContract>;
|
|
35
32
|
/**
|
|
36
33
|
* Returns this contract's artifact.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Counter.d.ts","sourceRoot":"","sources":["../../../src/artifacts/Counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAqD,KAAK,SAAS,EAA6G,KAAK,UAAU,EAAwC,MAAM,qBAAqB,CAAC;AACtU,OAAO,EAAY,YAAY,EAAE,2BAA2B,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"Counter.d.ts","sourceRoot":"","sources":["../../../src/artifacts/Counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAqD,KAAK,SAAS,EAA6G,KAAK,UAAU,EAAwC,MAAM,qBAAqB,CAAC;AACtU,OAAO,EAAY,YAAY,EAAE,2BAA2B,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIhM,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,eAAO,MAAM,uBAAuB,kBAA4E,CAAC;AAIjH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAE/C,OAAO;IASP;;;;;OAKG;WACW,EAAE,CACd,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,GACb,eAAe;IAKlB;;;;OAIG;WACW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,0BAA0B;IAY/E;;OAEG;WACW,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,SAAS,CAAC,EACrE,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,0BAA0B,CAAA;KAAE,EAChF,GAAG,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAgBpD;;OAEG;IACH,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED;;OAEG;IACH,WAAkB,iBAAiB,IAAI,gBAAgB,CAEtD;IAGD,WAAkB,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAM1D;IAGH,yEAAyE;IAC1D,OAAO,EAAE;QAEtB,oBAAoB;QACpB,WAAW,EAAE,CAAC,MAAM,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAEpF,kBAAkB;QAClB,SAAS,EAAE,CAAC,MAAM,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAElF,yCAAyC;QACzC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE;YAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAAC,SAAS,EAAE,gBAAgB,CAAC;YAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;YAAC,sBAAsB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;SAAE,EAAE,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAExO,uCAAuC;QACvC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAE3G,gCAAgC;QAChC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KAC3G,CAAC;CAGH"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { loadContractArtifact, loadContractArtifactForPublic } from '@aztec/aztec.js/abi';
|
|
3
3
|
import { Contract, ContractBase, DeployMethod } from '@aztec/aztec.js/contracts';
|
|
4
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
-
import { PublicKeys } from '@aztec/aztec.js/keys';
|
|
6
5
|
import CounterContractArtifactJson from '../../target/counter_contract-Counter.json' with { type: 'json' };
|
|
7
6
|
export const CounterContractArtifact = loadContractArtifact(CounterContractArtifactJson);
|
|
8
7
|
/**
|
|
@@ -23,21 +22,26 @@ export class CounterContract extends ContractBase {
|
|
|
23
22
|
}
|
|
24
23
|
/**
|
|
25
24
|
* Creates a tx to deploy a new instance of this contract.
|
|
25
|
+
* @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
|
|
26
|
+
* Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
|
|
26
27
|
*/
|
|
27
|
-
static deploy(wallet) {
|
|
28
|
-
return
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
static deployWithPublicKeys(publicKeys, wallet) {
|
|
34
|
-
return new DeployMethod(publicKeys, wallet, CounterContractArtifact, (instance, wallet) => CounterContract.at(instance.address, wallet), Array.from(arguments).slice(2));
|
|
28
|
+
static deploy(wallet, instantiation) {
|
|
29
|
+
return DeployMethod.create(wallet, {
|
|
30
|
+
artifact: CounterContractArtifact,
|
|
31
|
+
postDeployCtor: (instance, wallet) => CounterContract.at(instance.address, wallet),
|
|
32
|
+
args: [],
|
|
33
|
+
}, instantiation);
|
|
35
34
|
}
|
|
36
35
|
/**
|
|
37
36
|
* Creates a tx to deploy a new instance of this contract using the specified constructor method.
|
|
38
37
|
*/
|
|
39
38
|
static deployWithOpts(opts, ...args) {
|
|
40
|
-
return
|
|
39
|
+
return DeployMethod.create(opts.wallet, {
|
|
40
|
+
artifact: CounterContractArtifact,
|
|
41
|
+
postDeployCtor: (instance, wallet) => CounterContract.at(instance.address, wallet),
|
|
42
|
+
args,
|
|
43
|
+
constructorNameOrArtifact: opts.method ?? 'constructor',
|
|
44
|
+
}, opts.instantiation);
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
43
47
|
* Returns this contract's artifact.
|
|
@@ -59,4 +63,4 @@ export class CounterContract extends ContractBase {
|
|
|
59
63
|
};
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ291bnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcnRpZmFjdHMvQ291bnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxzQ0FBc0M7QUFJdEMsT0FBTyxFQUE0SixvQkFBb0IsRUFBRSw2QkFBNkIsRUFBb0YsTUFBTSxxQkFBcUIsQ0FBQztBQUN0VSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBaUgsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaE0sT0FBTyxFQUFFLEVBQUUsRUFBUyxNQUFNLHdCQUF3QixDQUFDO0FBR25ELE9BQU8sMkJBQTJCLE1BQU0sNENBQTRDLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDM0csTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsb0JBQW9CLENBQUMsMkJBQW1ELENBQUMsQ0FBQztBQUlqSDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUFFL0MsWUFDRSxPQUFxQixFQUNyQixNQUFjO1FBRWQsS0FBSyxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBSUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUNkLE9BQXFCLEVBQ3JCLE1BQWM7UUFFZCxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFvQixDQUFDO0lBQ25GLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsYUFBMEM7UUFDN0UsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUN4QixNQUFNLEVBQ047WUFDRSxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7WUFDbEYsSUFBSSxFQUFFLEVBQUU7U0FDVCxFQUNELGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FDMUIsSUFBZ0YsRUFDaEYsR0FBRyxJQUErQztRQUVsRCxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQ1g7WUFDRSxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7WUFDbEYsSUFBSTtZQUNKLHlCQUF5QixFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYTtTQUN4RCxFQUNELElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7SUFDSixDQUFDO0lBSUQ7O09BRUc7SUFDSSxNQUFNLEtBQUssUUFBUTtRQUN4QixPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sS0FBSyxpQkFBaUI7UUFDakMsT0FBTyw2QkFBNkIsQ0FBQywyQkFBbUQsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFHTSxNQUFNLEtBQUssT0FBTztRQUNyQixPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNYLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDakI7U0FDc0MsQ0FBQztJQUN4QyxDQUFDO0NBdUJKIn0=
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { type AztecAddressLike, type ContractArtifact, type FieldLike, type OptionLike } from '@aztec/aztec.js/abi';
|
|
3
|
-
import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, DeployMethod } from '@aztec/aztec.js/contracts';
|
|
4
|
-
import { PublicKeys } from '@aztec/aztec.js/keys';
|
|
3
|
+
import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, type DeployInstantiationOptions, DeployMethod } from '@aztec/aztec.js/contracts';
|
|
5
4
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
6
5
|
export declare const PrivateFPCContractArtifact: ContractArtifact;
|
|
7
6
|
/**
|
|
@@ -18,19 +17,17 @@ export declare class PrivateFPCContract extends ContractBase {
|
|
|
18
17
|
static at(address: AztecAddress, wallet: Wallet): PrivateFPCContract;
|
|
19
18
|
/**
|
|
20
19
|
* Creates a tx to deploy a new instance of this contract.
|
|
20
|
+
* @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
|
|
21
|
+
* Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
|
|
21
22
|
*/
|
|
22
|
-
static deploy(wallet: Wallet): DeployMethod<PrivateFPCContract>;
|
|
23
|
-
/**
|
|
24
|
-
* Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address.
|
|
25
|
-
*/
|
|
26
|
-
static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet): DeployMethod<PrivateFPCContract>;
|
|
23
|
+
static deploy(wallet: Wallet, instantiation?: DeployInstantiationOptions): DeployMethod<PrivateFPCContract>;
|
|
27
24
|
/**
|
|
28
25
|
* Creates a tx to deploy a new instance of this contract using the specified constructor method.
|
|
29
26
|
*/
|
|
30
27
|
static deployWithOpts<M extends keyof PrivateFPCContract['methods']>(opts: {
|
|
31
|
-
publicKeys?: PublicKeys;
|
|
32
28
|
method?: M;
|
|
33
29
|
wallet: Wallet;
|
|
30
|
+
instantiation?: DeployInstantiationOptions;
|
|
34
31
|
}, ...args: Parameters<PrivateFPCContract['methods'][M]>): DeployMethod<PrivateFPCContract>;
|
|
35
32
|
/**
|
|
36
33
|
* Returns this contract's artifact.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivateFPC.d.ts","sourceRoot":"","sources":["../../../src/artifacts/PrivateFPC.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAqD,KAAK,SAAS,EAA6G,KAAK,UAAU,EAAwC,MAAM,qBAAqB,CAAC;AACtU,OAAO,EAAY,YAAY,EAAE,2BAA2B,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"PrivateFPC.d.ts","sourceRoot":"","sources":["../../../src/artifacts/PrivateFPC.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { loadContractArtifact, loadContractArtifactForPublic } from '@aztec/aztec.js/abi';
|
|
3
3
|
import { Contract, ContractBase, DeployMethod } from '@aztec/aztec.js/contracts';
|
|
4
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
-
import { PublicKeys } from '@aztec/aztec.js/keys';
|
|
6
5
|
import PrivateFPCContractArtifactJson from '../../target/private_contract-PrivateFPC.json' with { type: 'json' };
|
|
7
6
|
export const PrivateFPCContractArtifact = loadContractArtifact(PrivateFPCContractArtifactJson);
|
|
8
7
|
/**
|
|
@@ -23,21 +22,26 @@ export class PrivateFPCContract extends ContractBase {
|
|
|
23
22
|
}
|
|
24
23
|
/**
|
|
25
24
|
* Creates a tx to deploy a new instance of this contract.
|
|
25
|
+
* @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
|
|
26
|
+
* Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
|
|
26
27
|
*/
|
|
27
|
-
static deploy(wallet) {
|
|
28
|
-
return
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
static deployWithPublicKeys(publicKeys, wallet) {
|
|
34
|
-
return new DeployMethod(publicKeys, wallet, PrivateFPCContractArtifact, (instance, wallet) => PrivateFPCContract.at(instance.address, wallet), Array.from(arguments).slice(2));
|
|
28
|
+
static deploy(wallet, instantiation) {
|
|
29
|
+
return DeployMethod.create(wallet, {
|
|
30
|
+
artifact: PrivateFPCContractArtifact,
|
|
31
|
+
postDeployCtor: (instance, wallet) => PrivateFPCContract.at(instance.address, wallet),
|
|
32
|
+
args: [],
|
|
33
|
+
}, instantiation);
|
|
35
34
|
}
|
|
36
35
|
/**
|
|
37
36
|
* Creates a tx to deploy a new instance of this contract using the specified constructor method.
|
|
38
37
|
*/
|
|
39
38
|
static deployWithOpts(opts, ...args) {
|
|
40
|
-
return
|
|
39
|
+
return DeployMethod.create(opts.wallet, {
|
|
40
|
+
artifact: PrivateFPCContractArtifact,
|
|
41
|
+
postDeployCtor: (instance, wallet) => PrivateFPCContract.at(instance.address, wallet),
|
|
42
|
+
args,
|
|
43
|
+
constructorNameOrArtifact: opts.method ?? 'constructor',
|
|
44
|
+
}, opts.instantiation);
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
43
47
|
* Returns this contract's artifact.
|
|
@@ -59,4 +63,4 @@ export class PrivateFPCContract extends ContractBase {
|
|
|
59
63
|
};
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpdmF0ZUZQQy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcnRpZmFjdHMvUHJpdmF0ZUZQQy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxzQ0FBc0M7QUFJdEMsT0FBTyxFQUE0SixvQkFBb0IsRUFBRSw2QkFBNkIsRUFBb0YsTUFBTSxxQkFBcUIsQ0FBQztBQUN0VSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBaUgsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaE0sT0FBTyxFQUFFLEVBQUUsRUFBUyxNQUFNLHdCQUF3QixDQUFDO0FBR25ELE9BQU8sOEJBQThCLE1BQU0sK0NBQStDLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDakgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsb0JBQW9CLENBQUMsOEJBQXNELENBQUMsQ0FBQztBQUl2SDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBRWxELFlBQ0UsT0FBcUIsRUFDckIsTUFBYztRQUVkLEtBQUssQ0FBQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FDZCxPQUFxQixFQUNyQixNQUFjO1FBRWQsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUF1QixDQUFDO0lBQ3pGLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsYUFBMEM7UUFDN0UsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUN4QixNQUFNLEVBQ047WUFDRSxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztZQUNyRixJQUFJLEVBQUUsRUFBRTtTQUNULEVBQ0QsYUFBYSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUMxQixJQUFnRixFQUNoRixHQUFHLElBQWtEO1FBRXJELE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FDeEIsSUFBSSxDQUFDLE1BQU0sRUFDWDtZQUNFLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1lBQ3JGLElBQUk7WUFDSix5QkFBeUIsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLGFBQWE7U0FDeEQsRUFDRCxJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUlEOztPQUVHO0lBQ0ksTUFBTSxLQUFLLFFBQVE7UUFDeEIsT0FBTywwQkFBMEIsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLEtBQUssaUJBQWlCO1FBQ2pDLE9BQU8sNkJBQTZCLENBQUMsOEJBQXNELENBQUMsQ0FBQztJQUMvRixDQUFDO0lBR00sTUFBTSxLQUFLLE9BQU87UUFDckIsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDWixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2pCO1NBQ3VDLENBQUM7SUFDekMsQ0FBQztDQTZCSiJ9
|
|
@@ -8,11 +8,11 @@ import { PrivateFPCContract } from "../../artifacts/PrivateFPC.js";
|
|
|
8
8
|
* The Aztec protocol allows interacting with such contracts immediately once registered —
|
|
9
9
|
* no on-chain deployment transaction is required.
|
|
10
10
|
*
|
|
11
|
-
* The contract address is computed deterministically from its class hash and the provided salt
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* The contract address is computed deterministically from its class hash and the provided salt.
|
|
12
|
+
* `universalDeploy: true` zeroes the deployer in the address preimage, so the same salt always
|
|
13
|
+
* produces the same address regardless of who calls this function. (Aztec 4.3 moved salt /
|
|
14
|
+
* deployer / universalDeploy from per-call options into the `DeployMethod` instantiation
|
|
15
|
+
* argument, and the `register()` method no longer accepts options.)
|
|
16
16
|
*
|
|
17
17
|
* @param wallet The wallet used to register the contract with the PXE
|
|
18
18
|
* @param salt Salt used to derive the contract address
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,EAAE,GACP,OAAO,CAAC,kBAAkB,CAAC,CAK7B"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AztecAddress } from "@aztec/stdlib/aztec-address";
|
|
2
1
|
import { PrivateFPCContract } from "../../artifacts/PrivateFPC.js";
|
|
3
2
|
/**
|
|
4
3
|
* Registers the PrivateFPC contract with the PXE without sending any deployment transaction.
|
|
@@ -7,21 +6,20 @@ import { PrivateFPCContract } from "../../artifacts/PrivateFPC.js";
|
|
|
7
6
|
* The Aztec protocol allows interacting with such contracts immediately once registered —
|
|
8
7
|
* no on-chain deployment transaction is required.
|
|
9
8
|
*
|
|
10
|
-
* The contract address is computed deterministically from its class hash and the provided salt
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* The contract address is computed deterministically from its class hash and the provided salt.
|
|
10
|
+
* `universalDeploy: true` zeroes the deployer in the address preimage, so the same salt always
|
|
11
|
+
* produces the same address regardless of who calls this function. (Aztec 4.3 moved salt /
|
|
12
|
+
* deployer / universalDeploy from per-call options into the `DeployMethod` instantiation
|
|
13
|
+
* argument, and the `register()` method no longer accepts options.)
|
|
15
14
|
*
|
|
16
15
|
* @param wallet The wallet used to register the contract with the PXE
|
|
17
16
|
* @param salt Salt used to derive the contract address
|
|
18
17
|
* @returns The registered PrivateFPC contract instance
|
|
19
18
|
*/
|
|
20
19
|
export async function registerPrivateContract(wallet, salt) {
|
|
21
|
-
return PrivateFPCContract.deploy(wallet
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
});
|
|
20
|
+
return PrivateFPCContract.deploy(wallet, {
|
|
21
|
+
salt,
|
|
22
|
+
universalDeploy: true,
|
|
23
|
+
}).register();
|
|
26
24
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RzL3V0aWxzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLE1BQWMsRUFDZCxJQUFRO0lBRVIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ3ZDLElBQUk7UUFDSixlQUFlLEVBQUUsSUFBSTtLQUN0QixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsQ0FBQyJ9
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
import type { FeePaymentMethod } from "@aztec/aztec.js/fee";
|
|
2
2
|
import { AztecAddress } from "@aztec/stdlib/aztec-address";
|
|
3
3
|
import { Gas, GasFees, GasSettings } from "@aztec/stdlib/gas";
|
|
4
|
-
type
|
|
4
|
+
type GasEstimationNode = {
|
|
5
5
|
getCurrentMinFees(): Promise<GasFees>;
|
|
6
|
+
getNodeInfo(): Promise<{
|
|
7
|
+
txsLimits: {
|
|
8
|
+
gas: {
|
|
9
|
+
daGas: number;
|
|
10
|
+
l2Gas: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Raw gas consumed during simulation, returned by `simulate` when called with
|
|
17
|
+
* `includeMetadata: true`. Replaces the removed `estimatedGas` result field.
|
|
18
|
+
*/
|
|
19
|
+
type SimulatedGasUsage = {
|
|
20
|
+
totalGas: Gas;
|
|
21
|
+
teardownGas: Gas;
|
|
6
22
|
};
|
|
7
|
-
type SimulatedGasEstimate = Pick<GasSettings, "gasLimits" | "teardownGasLimits">;
|
|
8
23
|
type SimulatableInteraction = {
|
|
9
24
|
simulate(options: {
|
|
10
25
|
from: AztecAddress;
|
|
@@ -12,7 +27,6 @@ type SimulatableInteraction = {
|
|
|
12
27
|
includeMetadata?: boolean;
|
|
13
28
|
fee?: {
|
|
14
29
|
paymentMethod?: FeePaymentMethod;
|
|
15
|
-
estimatedGasPadding?: number;
|
|
16
30
|
gasSettings?: {
|
|
17
31
|
gasLimits?: Gas;
|
|
18
32
|
teardownGasLimits?: Gas;
|
|
@@ -21,7 +35,7 @@ type SimulatableInteraction = {
|
|
|
21
35
|
};
|
|
22
36
|
};
|
|
23
37
|
}): Promise<{
|
|
24
|
-
|
|
38
|
+
gasUsed?: SimulatedGasUsage;
|
|
25
39
|
}>;
|
|
26
40
|
};
|
|
27
41
|
export type FeeMultiplier = number | {
|
|
@@ -72,16 +86,20 @@ export declare function maxGasCostFor(maxFeesPerGas: GasFees, gasLimits: Gas): b
|
|
|
72
86
|
/**
|
|
73
87
|
* Simulate an interaction to derive tighter gas limits, then combine them with
|
|
74
88
|
* fee caps based on the node's current minimum fees.
|
|
89
|
+
*
|
|
90
|
+
* The network advertises the maximum gas a single tx may declare via
|
|
91
|
+
* `NodeInfo.txsLimits.gas` (the smaller of the per-tx maximum and the per-block
|
|
92
|
+
* allocation). The simulation runs within that ceiling and the simulated usage
|
|
93
|
+
* is padded and clamped back to it, so the wallet's gas-limit validation never
|
|
94
|
+
* rejects the resulting transaction for over-declaring gas.
|
|
75
95
|
*/
|
|
76
|
-
export declare function estimateGasSettings(interaction: SimulatableInteraction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier, estimatedGasPadding,
|
|
77
|
-
aztecNode:
|
|
96
|
+
export declare function estimateGasSettings(interaction: SimulatableInteraction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier, estimatedGasPadding, }: {
|
|
97
|
+
aztecNode: GasEstimationNode;
|
|
78
98
|
from: AztecAddress;
|
|
79
99
|
paymentMethod?: FeePaymentMethod;
|
|
80
100
|
additionalScopes?: AztecAddress[];
|
|
81
101
|
maxFeeMultiplier?: FeeMultiplier;
|
|
82
102
|
estimatedGasPadding?: number;
|
|
83
|
-
gasLimits?: Gas;
|
|
84
|
-
teardownGasLimits?: Gas;
|
|
85
103
|
}): Promise<GasSettings>;
|
|
86
104
|
export {};
|
|
87
105
|
//# sourceMappingURL=gas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,iBAAiB,GAAG;IACvB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,IAAI,OAAO,CAAC;QACrB,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;KACtD,CAAC,CAAC;CACJ,CAAC;AAEF;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,YAAY,CAAC;QACnB,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;QAClC,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,GAAG,CAAC,EAAE;YACJ,aAAa,CAAC,EAAE,gBAAgB,CAAC;YACjC,WAAW,CAAC,EAAE;gBACZ,SAAS,CAAC,EAAE,GAAG,CAAC;gBAChB,iBAAiB,CAAC,EAAE,GAAG,CAAC;gBACxB,aAAa,CAAC,EAAE,OAAO,CAAC;gBACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;aACjC,CAAC;SACH,CAAC;KACH,GAAG,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;CAC9C,CAAC;AAMF,MAAM,MAAM,aAAa,GACrB,MAAM,GACN;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAgCN;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAehD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE;IACR,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC,EACD,UAAU,GAAE,aAAsC,GACjD,OAAO,CAaT;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,OAAO,GACrB,OAAO,CAET;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM,CAK5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,sBAAsB,EACnC,EACE,SAAS,EACT,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAyC,EACzC,mBAAkD,GACnD,EAAE;IACD,SAAS,EAAE,iBAAiB,CAAC;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GACA,OAAO,CAAC,WAAW,CAAC,CA8DtB"}
|
package/dist/src/ts/utils/gas.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Gas, GasFees, GasSettings
|
|
2
|
-
import { MAX_PROCESSABLE_L2_GAS } from "@aztec/constants";
|
|
1
|
+
import { Gas, GasFees, GasSettings } from "@aztec/stdlib/gas";
|
|
3
2
|
const FEE_MULTIPLIER_SCALE = 10000n;
|
|
4
3
|
const DEFAULT_FEE_MULTIPLIER_NUMERATOR = 6n;
|
|
5
4
|
const DEFAULT_FEE_MULTIPLIER_DENOMINATOR = 5n;
|
|
@@ -35,25 +34,17 @@ export const DEFAULT_FEE_MULTIPLIER = {
|
|
|
35
34
|
*/
|
|
36
35
|
export const DEFAULT_GAS_ESTIMATE_PADDING = 0.1;
|
|
37
36
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* Pads each gas dimension by `pad` (e.g. 0.1 = +10%) and caps it at the
|
|
38
|
+
* network's per-tx admission limit, mirroring the framework's getGasLimits.
|
|
39
|
+
* The cap keeps the declared limits within what inbound validation accepts.
|
|
40
40
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
* them with simulation output.
|
|
49
|
-
*
|
|
50
|
-
* Teardown gas is already included in gasLimits by the protocol, so these must
|
|
51
|
-
* NOT be passed to maxGasCostFor (that would double-count teardown cost).
|
|
52
|
-
*/
|
|
53
|
-
const FALLBACK_TEARDOWN_GAS_LIMITS = Gas.from({
|
|
54
|
-
daGas: FALLBACK_TEARDOWN_DA_GAS_LIMIT,
|
|
55
|
-
l2Gas: FALLBACK_TEARDOWN_L2_GAS_LIMIT,
|
|
56
|
-
});
|
|
41
|
+
function padAndClampGas(gas, pad, max) {
|
|
42
|
+
const padded = gas.mul(1 + pad);
|
|
43
|
+
return Gas.from({
|
|
44
|
+
daGas: Math.min(padded.daGas, max.daGas),
|
|
45
|
+
l2Gas: Math.min(padded.l2Gas, max.l2Gas),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
57
48
|
/**
|
|
58
49
|
* Calculate max fees per gas from the node's minimum fees with a multiplier.
|
|
59
50
|
* @param baseFees - The current base fees from the node
|
|
@@ -90,28 +81,51 @@ export function maxGasCostFor(maxFeesPerGas, gasLimits) {
|
|
|
90
81
|
/**
|
|
91
82
|
* Simulate an interaction to derive tighter gas limits, then combine them with
|
|
92
83
|
* fee caps based on the node's current minimum fees.
|
|
84
|
+
*
|
|
85
|
+
* The network advertises the maximum gas a single tx may declare via
|
|
86
|
+
* `NodeInfo.txsLimits.gas` (the smaller of the per-tx maximum and the per-block
|
|
87
|
+
* allocation). The simulation runs within that ceiling and the simulated usage
|
|
88
|
+
* is padded and clamped back to it, so the wallet's gas-limit validation never
|
|
89
|
+
* rejects the resulting transaction for over-declaring gas.
|
|
93
90
|
*/
|
|
94
|
-
export async function estimateGasSettings(interaction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier = DEFAULT_FEE_MULTIPLIER, estimatedGasPadding = DEFAULT_GAS_ESTIMATE_PADDING,
|
|
91
|
+
export async function estimateGasSettings(interaction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier = DEFAULT_FEE_MULTIPLIER, estimatedGasPadding = DEFAULT_GAS_ESTIMATE_PADDING, }) {
|
|
92
|
+
// Validate the padding knob at the public boundary so we fail fast before the
|
|
93
|
+
// simulation round-trip, mirroring the maxFeeMultiplier validation in
|
|
94
|
+
// normalizeMultiplier. Zero is allowed (no margin); negatives would
|
|
95
|
+
// under-declare gas and NaN/Infinity would yield invalid limits the node rejects.
|
|
96
|
+
if (!Number.isFinite(estimatedGasPadding) || estimatedGasPadding < 0) {
|
|
97
|
+
throw new Error(`Gas estimate padding must be a non-negative finite number, got ${estimatedGasPadding}`);
|
|
98
|
+
}
|
|
95
99
|
const maxFeesPerGas = maxFeesPerGasFromBaseFees(await aztecNode.getCurrentMinFees(), maxFeeMultiplier);
|
|
96
100
|
const maxPriorityFeesPerGas = maxPriorityFeesPerGasFromMaxFees(maxFeesPerGas);
|
|
101
|
+
const { txsLimits: { gas }, } = await aztecNode.getNodeInfo();
|
|
102
|
+
const maxGasLimits = Gas.from({ daGas: gas.daGas, l2Gas: gas.l2Gas });
|
|
97
103
|
const simulation = await interaction.simulate({
|
|
98
104
|
from,
|
|
99
105
|
additionalScopes,
|
|
100
106
|
includeMetadata: true,
|
|
101
107
|
fee: {
|
|
102
108
|
paymentMethod,
|
|
103
|
-
estimatedGasPadding,
|
|
104
109
|
gasSettings: {
|
|
105
|
-
gasLimits,
|
|
106
|
-
teardownGasLimits,
|
|
110
|
+
gasLimits: maxGasLimits,
|
|
111
|
+
teardownGasLimits: maxGasLimits,
|
|
107
112
|
maxFeesPerGas,
|
|
108
113
|
maxPriorityFeesPerGas,
|
|
109
114
|
},
|
|
110
115
|
},
|
|
111
116
|
});
|
|
112
|
-
if (!simulation.
|
|
113
|
-
throw new Error("Gas
|
|
117
|
+
if (!simulation.gasUsed) {
|
|
118
|
+
throw new Error("Gas usage metadata was not returned by simulation.");
|
|
119
|
+
}
|
|
120
|
+
const { totalGas, teardownGas } = simulation.gasUsed;
|
|
121
|
+
// If simulated usage already exceeds the admission limit the tx can never be
|
|
122
|
+
// included, so fail fast rather than declaring a limit the node would reject.
|
|
123
|
+
if (totalGas.daGas > maxGasLimits.daGas ||
|
|
124
|
+
totalGas.l2Gas > maxGasLimits.l2Gas) {
|
|
125
|
+
throw new Error(`Transaction consumes more gas (DA ${totalGas.daGas}, L2 ${totalGas.l2Gas}) than the network admits per tx (DA ${maxGasLimits.daGas}, L2 ${maxGasLimits.l2Gas}).`);
|
|
114
126
|
}
|
|
115
|
-
|
|
127
|
+
// gasLimits is the padded total gas (teardown is part of the total); the
|
|
128
|
+
// teardown sub-limit is padded separately. Mirrors the framework's getGasLimits.
|
|
129
|
+
return new GasSettings(padAndClampGas(totalGas, estimatedGasPadding, maxGasLimits), padAndClampGas(teardownGas, estimatedGasPadding, maxGasLimits), maxFeesPerGas, maxPriorityFeesPerGas);
|
|
116
130
|
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RzL3V0aWxzL2dhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQW1DOUQsTUFBTSxvQkFBb0IsR0FBRyxNQUFPLENBQUM7QUFDckMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDNUMsTUFBTSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7QUFTOUMsU0FBUyxPQUFPLENBQUMsU0FBaUIsRUFBRSxXQUFtQjtJQUNyRCxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsVUFBeUI7SUFJcEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FDYix3REFBd0QsVUFBVSxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTztZQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUN2RSxXQUFXLEVBQUUsb0JBQW9CO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsV0FBVyxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQy9ELE1BQU0sSUFBSSxLQUFLLENBQ2IsbURBQW1ELFVBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUNwRyxDQUFDO0lBQ0os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
|