@aztec/cli-wallet 0.0.1-commit.381b1a9 → 0.0.1-commit.3a4ae741b
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/cmds/check_tx.d.ts +1 -1
- package/dest/cmds/check_tx.d.ts.map +1 -1
- package/dest/cmds/check_tx.js +34 -8
- package/dest/cmds/create_account.d.ts +1 -1
- package/dest/cmds/create_account.d.ts.map +1 -1
- package/dest/cmds/create_account.js +2 -2
- package/dest/cmds/deploy.d.ts +1 -1
- package/dest/cmds/deploy.d.ts.map +1 -1
- package/dest/cmds/deploy.js +2 -2
- package/dest/cmds/deploy_account.d.ts +1 -1
- package/dest/cmds/deploy_account.d.ts.map +1 -1
- package/dest/cmds/deploy_account.js +2 -2
- package/dest/cmds/index.js +1 -1
- package/dest/utils/wallet.d.ts +5 -5
- package/dest/utils/wallet.d.ts.map +1 -1
- package/dest/utils/wallet.js +30 -29
- package/package.json +14 -14
- package/src/cmds/check_tx.ts +40 -9
- package/src/cmds/create_account.ts +2 -1
- package/src/cmds/deploy.ts +2 -1
- package/src/cmds/deploy_account.ts +2 -1
- package/src/cmds/index.ts +1 -1
- package/src/utils/wallet.ts +39 -49
package/dest/cmds/check_tx.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ import type { TxHash } from '@aztec/aztec.js/tx';
|
|
|
3
3
|
import type { LogFn } from '@aztec/foundation/log';
|
|
4
4
|
import type { CLIWallet } from '../utils/wallet.js';
|
|
5
5
|
export declare function checkTx(wallet: CLIWallet, aztecNode: AztecNode, txHash: TxHash, statusOnly: boolean, log: LogFn): Promise<import("@aztec/aztec.js/tx").TxStatus | undefined>;
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tfdHguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2NoZWNrX3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUW5ELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELHdCQUFzQixPQUFPLENBQzNCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsVUFBVSxFQUFFLE9BQU8sRUFDbkIsR0FBRyxFQUFFLEtBQUssOERBUVgifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check_tx.d.ts","sourceRoot":"","sources":["../../src/cmds/check_tx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"check_tx.d.ts","sourceRoot":"","sources":["../../src/cmds/check_tx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAQnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,EACnB,GAAG,EAAE,KAAK,8DAQX"}
|
package/dest/cmds/check_tx.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ProtocolContractAddress } from '@aztec/aztec.js/protocol';
|
|
2
|
-
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
2
|
+
import { computeSiloedPrivateInitializationNullifier, computeSiloedPublicInitializationNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
3
3
|
export async function checkTx(wallet, aztecNode, txHash, statusOnly, log) {
|
|
4
4
|
if (statusOnly) {
|
|
5
5
|
const receipt = await aztecNode.getTxReceipt(txHash);
|
|
@@ -112,17 +112,22 @@ function toFriendlyAddress(address, artifactMap) {
|
|
|
112
112
|
}
|
|
113
113
|
async function getKnownNullifiers(wallet, artifactMap) {
|
|
114
114
|
const knownContracts = await wallet.getContracts();
|
|
115
|
-
const
|
|
116
|
-
|
|
115
|
+
const [contractResults, classResults] = await Promise.all([
|
|
116
|
+
Promise.all(knownContracts.map((contract)=>getContractNullifiers(wallet, contract))),
|
|
117
|
+
Promise.all(Object.values(artifactMap).map((artifact)=>getClassNullifier(artifact)))
|
|
118
|
+
]);
|
|
117
119
|
const initNullifiers = {};
|
|
118
120
|
const deployNullifiers = {};
|
|
119
121
|
const classNullifiers = {};
|
|
120
|
-
for (const contract of
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
for (const { contract, deployNullifier, privateInitNullifier, publicInitNullifier } of contractResults){
|
|
123
|
+
deployNullifiers[deployNullifier.toString()] = contract;
|
|
124
|
+
if (privateInitNullifier) {
|
|
125
|
+
initNullifiers[privateInitNullifier.toString()] = contract;
|
|
126
|
+
}
|
|
127
|
+
initNullifiers[publicInitNullifier.toString()] = contract;
|
|
123
128
|
}
|
|
124
|
-
for (const
|
|
125
|
-
classNullifiers[
|
|
129
|
+
for (const { nullifier, label } of classResults){
|
|
130
|
+
classNullifiers[nullifier.toString()] = label;
|
|
126
131
|
}
|
|
127
132
|
return {
|
|
128
133
|
initNullifiers,
|
|
@@ -130,6 +135,27 @@ async function getKnownNullifiers(wallet, artifactMap) {
|
|
|
130
135
|
classNullifiers
|
|
131
136
|
};
|
|
132
137
|
}
|
|
138
|
+
async function getContractNullifiers(wallet, contract) {
|
|
139
|
+
const deployerAddress = ProtocolContractAddress.ContractInstanceRegistry;
|
|
140
|
+
const deployNullifier = await siloNullifier(deployerAddress, contract.toField());
|
|
141
|
+
const metadata = await wallet.getContractMetadata(contract);
|
|
142
|
+
const privateInitNullifier = metadata.instance ? await computeSiloedPrivateInitializationNullifier(contract, metadata.instance.initializationHash) : undefined;
|
|
143
|
+
const publicInitNullifier = await computeSiloedPublicInitializationNullifier(contract);
|
|
144
|
+
return {
|
|
145
|
+
contract,
|
|
146
|
+
deployNullifier,
|
|
147
|
+
privateInitNullifier,
|
|
148
|
+
publicInitNullifier
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
async function getClassNullifier(artifact) {
|
|
152
|
+
const classRegistryAddress = ProtocolContractAddress.ContractClassRegistry;
|
|
153
|
+
const nullifier = await siloNullifier(classRegistryAddress, artifact.classId);
|
|
154
|
+
return {
|
|
155
|
+
nullifier,
|
|
156
|
+
label: `${artifact.name}Class<${artifact.classId}>`
|
|
157
|
+
};
|
|
158
|
+
}
|
|
133
159
|
async function getKnownArtifacts(wallet) {
|
|
134
160
|
const knownContractAddresses = await wallet.getContracts();
|
|
135
161
|
const knownContracts = (await Promise.all(knownContractAddresses.map((contractAddress)=>wallet.getContractMetadata(contractAddress)))).map((contractMetadata)=>contractMetadata.instance);
|
|
@@ -11,4 +11,4 @@ export declare function createAccount(wallet: CLIWallet, aztecNode: AztecNode, a
|
|
|
11
11
|
secretKey: Fr;
|
|
12
12
|
salt: Fr;
|
|
13
13
|
}>;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FjY291bnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2NyZWF0ZV9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTNELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0Msd0JBQXNCLGFBQWEsQ0FDakMsTUFBTSxFQUFFLFNBQVMsRUFDakIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsU0FBUyxFQUFFLEVBQUUsR0FBRyxTQUFTLEVBQ3pCLFNBQVMsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM3QixLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDekIsUUFBUSxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQ2xDLFlBQVksRUFBRSxPQUFPLEVBQ3JCLGtCQUFrQixFQUFFLE9BQU8sRUFDM0IsWUFBWSxFQUFFLE9BQU8sRUFDckIsYUFBYSxFQUFFLE9BQU8sRUFDdEIsSUFBSSxFQUFFLE9BQU8sRUFDYixPQUFPLEVBQUUsVUFBVSxFQUNuQixJQUFJLEVBQUUsT0FBTyxFQUNiLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLEdBQUcsRUFBRSxLQUFLOzs7OztHQTBIWCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_account.d.ts","sourceRoot":"","sources":["../../src/cmds/create_account.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create_account.d.ts","sourceRoot":"","sources":["../../src/cmds/create_account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,YAAY,EAAE,OAAO,EACrB,kBAAkB,EAAE,OAAO,EAC3B,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,OAAO,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK;;;;;GA0HX"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
2
2
|
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
3
|
import { prettyPrintJSON } from '@aztec/cli/cli-utils';
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
@@ -35,7 +35,7 @@ export async function createAccount(wallet, aztecNode, accountType, secretKey, p
|
|
|
35
35
|
if (!registerOnly) {
|
|
36
36
|
const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(aztecNode, wallet, address);
|
|
37
37
|
const delegatedDeployment = deployer && !account.address.equals(deployer);
|
|
38
|
-
const from = delegatedDeployment ? deployer :
|
|
38
|
+
const from = delegatedDeployment ? deployer : NO_FROM;
|
|
39
39
|
const deployAccountOpts = {
|
|
40
40
|
skipClassPublication: !registerClass,
|
|
41
41
|
skipInstancePublication: !publicDeploy,
|
package/dest/cmds/deploy.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ import { PublicKeys } from '@aztec/stdlib/keys';
|
|
|
6
6
|
import { CLIFeeArgs } from '../utils/options/fees.js';
|
|
7
7
|
import type { CLIWallet } from '../utils/wallet.js';
|
|
8
8
|
export declare function deploy(wallet: CLIWallet, node: AztecNode, deployer: AztecAddress, artifactPath: string, json: boolean, publicKeys: PublicKeys | undefined, rawArgs: any[], salt: Fr | undefined, initializer: string | undefined, skipInstancePublication: boolean, skipClassPublication: boolean, skipInitialization: boolean | undefined, wait: boolean, feeOpts: CLIFeeArgs, verbose: boolean, timeout: number | undefined, debugLogger: Logger, log: LogFn): Promise<AztecAddress | undefined>;
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY21kcy9kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCx3QkFBc0IsTUFBTSxDQUMxQixNQUFNLEVBQUUsU0FBUyxFQUNqQixJQUFJLEVBQUUsU0FBUyxFQUNmLFFBQVEsRUFBRSxZQUFZLEVBQ3RCLFlBQVksRUFBRSxNQUFNLEVBQ3BCLElBQUksRUFBRSxPQUFPLEVBQ2IsVUFBVSxFQUFFLFVBQVUsR0FBRyxTQUFTLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFDZCxJQUFJLEVBQUUsRUFBRSxHQUFHLFNBQVMsRUFDcEIsV0FBVyxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQy9CLHVCQUF1QixFQUFFLE9BQU8sRUFDaEMsb0JBQW9CLEVBQUUsT0FBTyxFQUM3QixrQkFBa0IsRUFBRSxPQUFPLEdBQUcsU0FBUyxFQUN2QyxJQUFJLEVBQUUsT0FBTyxFQUNiLE9BQU8sRUFBRSxVQUFVLEVBQ25CLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLE9BQU8sb0JBQStCLEVBQ3RDLFdBQVcsRUFBRSxNQUFNLEVBQ25CLEdBQUcsRUFBRSxLQUFLLHFDQXFIWCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,MAAM,CAC1B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,OAAO,EAAE,GAAG,EAAE,EACd,IAAI,EAAE,EAAE,GAAG,SAAS,EACpB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,uBAAuB,EAAE,OAAO,EAChC,oBAAoB,EAAE,OAAO,EAC7B,kBAAkB,EAAE,OAAO,GAAG,SAAS,EACvC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,OAAO,EAChB,OAAO,oBAA+B,EACtC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK,qCAqHX"}
|
package/dest/cmds/deploy.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
2
2
|
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
3
|
import { ContractDeployer } from '@aztec/aztec.js/deployment';
|
|
4
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
@@ -31,7 +31,7 @@ export async function deploy(wallet, node, deployer, artifactPath, json, publicK
|
|
|
31
31
|
gasSettings,
|
|
32
32
|
paymentMethod
|
|
33
33
|
},
|
|
34
|
-
from: deployer ??
|
|
34
|
+
from: deployer ?? NO_FROM,
|
|
35
35
|
contractAddressSalt: salt,
|
|
36
36
|
universalDeploy: !deployer,
|
|
37
37
|
skipClassPublication,
|
|
@@ -4,4 +4,4 @@ import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
|
4
4
|
import type { CLIFeeArgs } from '../utils/options/fees.js';
|
|
5
5
|
import type { CLIWallet } from '../utils/wallet.js';
|
|
6
6
|
export declare function deployAccount(wallet: CLIWallet, aztecNode: AztecNode, address: AztecAddress, wait: boolean, deployer: AztecAddress | undefined, registerClass: boolean, publicDeploy: boolean, skipInitialization: boolean, feeOpts: CLIFeeArgs, json: boolean, verbose: boolean, debugLogger: Logger, log: LogFn): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2FjY291bnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbWRzL2RlcGxveV9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJM0QsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsd0JBQXNCLGFBQWEsQ0FDakMsTUFBTSxFQUFFLFNBQVMsRUFDakIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsT0FBTyxFQUFFLFlBQVksRUFDckIsSUFBSSxFQUFFLE9BQU8sRUFDYixRQUFRLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFDbEMsYUFBYSxFQUFFLE9BQU8sRUFDdEIsWUFBWSxFQUFFLE9BQU8sRUFDckIsa0JBQWtCLEVBQUUsT0FBTyxFQUMzQixPQUFPLEVBQUUsVUFBVSxFQUNuQixJQUFJLEVBQUUsT0FBTyxFQUNiLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLEdBQUcsRUFBRSxLQUFLLGlCQXlHWCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_account.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy_account.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy_account.d.ts","sourceRoot":"","sources":["../../src/cmds/deploy_account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,EACrB,kBAAkB,EAAE,OAAO,EAC3B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,KAAK,iBAyGX"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
2
2
|
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
3
|
import { prettyPrintJSON } from '@aztec/cli/cli-utils';
|
|
4
4
|
import { DEFAULT_TX_TIMEOUT_S } from '../utils/cli_wallet_and_node_wrapper.js';
|
|
@@ -26,7 +26,7 @@ export async function deployAccount(wallet, aztecNode, address, wait, deployer,
|
|
|
26
26
|
let txReceipt;
|
|
27
27
|
const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(aztecNode, wallet, address);
|
|
28
28
|
const delegatedDeployment = deployer && !account.address.equals(deployer);
|
|
29
|
-
const from = delegatedDeployment ? deployer :
|
|
29
|
+
const from = delegatedDeployment ? deployer : NO_FROM;
|
|
30
30
|
const deployAccountOpts = {
|
|
31
31
|
skipClassPublication: !registerClass,
|
|
32
32
|
skipInstancePublication: !publicDeploy,
|
package/dest/cmds/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export function injectCommands(program, log, debugLogger, walletAndNodeWrapper,
|
|
|
13
13
|
const { importTestAccounts } = await import('./import_test_accounts.js');
|
|
14
14
|
await importTestAccounts(wallet, db, json, log);
|
|
15
15
|
});
|
|
16
|
-
const createAccountCommand = program.command('create-account').description('Creates an aztec account that can be used for sending transactions. Registers the account on the PXE and deploys an account contract. Uses a Schnorr
|
|
16
|
+
const createAccountCommand = program.command('create-account').description('Creates an aztec account that can be used for sending transactions. Registers the account on the PXE and deploys an account contract. Uses a Schnorr account which uses an immutable key for authentication.').summary('Creates an aztec account that can be used for sending transactions.').addOption(createAccountOption('Alias or address of the account performing the deployment', !db, db)).option('--skip-initialization', 'Skip initializing the account contract. Useful for publicly deploying an existing account.').option('--public-deploy', 'Publishes the account contract instance (and the class, if needed). Needed if the contract contains public functions.').option('--register-class', 'Register the contract class (useful for when the contract class has not been deployed yet).').option('-p, --public-key <string>', 'Public key that identifies a private signing key stored outside of the wallet. Used for ECDSA SSH accounts over the secp256r1 curve.').addOption(createSecretKeyOption('Secret key for account. Uses random by default.', false, (sk)=>aliasedSecretKeyParser(sk, db)).conflicts('public-key')).addOption(createAliasOption('Alias for the account. Used for easy reference in subsequent commands.', !db)).addOption(createTypeOption(true)).option('--register-only', 'Just register the account on the Wallet. Do not deploy or initialize the account contract.').option('--json', 'Emit output as json')// `options.wait` is default true. Passing `--no-wait` will set it to false.
|
|
17
17
|
// https://github.com/tj/commander.js#other-option-types-negatable-boolean-and-booleanvalue
|
|
18
18
|
.option('--no-wait', 'Skip waiting for the contract to be deployed. Print the hash of deployment transaction').addOption(createVerboseOption());
|
|
19
19
|
addOptions(createAccountCommand, CLIFeeArgs.getOptions()).action(async (_options, command)=>{
|
package/dest/utils/wallet.d.ts
CHANGED
|
@@ -4,14 +4,14 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
4
4
|
import { AccountManager, type Aliased, type SimulateOptions } from '@aztec/aztec.js/wallet';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import type { LogFn } from '@aztec/foundation/log';
|
|
7
|
-
import type {
|
|
7
|
+
import type { NotesFilter } from '@aztec/pxe/client/lazy';
|
|
8
8
|
import type { PXEConfig } from '@aztec/pxe/config';
|
|
9
9
|
import type { PXE } from '@aztec/pxe/server';
|
|
10
10
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
11
11
|
import { NoteDao } from '@aztec/stdlib/note';
|
|
12
12
|
import type { TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
|
|
13
13
|
import { ExecutionPayload } from '@aztec/stdlib/tx';
|
|
14
|
-
import { BaseWallet, type
|
|
14
|
+
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
15
15
|
import type { WalletDB } from '../storage/wallet_db.js';
|
|
16
16
|
import type { AccountType } from './constants.js';
|
|
17
17
|
export declare class CLIWallet extends BaseWallet {
|
|
@@ -30,11 +30,11 @@ export declare class CLIWallet extends BaseWallet {
|
|
|
30
30
|
simulateTx(executionPayload: ExecutionPayload, opts: SimulateOptions): Promise<TxSimulationResult>;
|
|
31
31
|
/**
|
|
32
32
|
* Uses a stub account for kernelless simulation, bypassing real account authorization.
|
|
33
|
-
*
|
|
33
|
+
* Uses DefaultEntrypoint directly for NO_FROM transactions.
|
|
34
34
|
*/
|
|
35
|
-
protected simulateViaEntrypoint(executionPayload: ExecutionPayload,
|
|
35
|
+
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions): Promise<TxSimulationResult>;
|
|
36
36
|
getContracts(): Promise<AztecAddress[]>;
|
|
37
37
|
getNotes(filter: NotesFilter): Promise<NoteDao[]>;
|
|
38
38
|
getContractArtifact(id: Fr): Promise<import("@aztec/stdlib/abi").ContractArtifact | undefined>;
|
|
39
39
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBaUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RixPQUFPLEVBQ0wsS0FBSyxxQkFBcUIsRUFHM0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxLQUFLLEVBQTJDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlsRCxxQkFBYSxTQUFVLFNBQVEsVUFBVTtJQU1yQyxPQUFPLENBQUMsT0FBTztJQUNmLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFOYixPQUFPLENBQUMsWUFBWSxDQUE4QjtJQUVsRCxZQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsSUFBSSxFQUFFLFNBQVMsRUFDUCxPQUFPLEVBQUUsS0FBSyxFQUNkLEVBQUUsQ0FBQyxzQkFBVSxFQUl0QjtJQUVELE9BQWEsTUFBTSxDQUNqQixJQUFJLEVBQUUsU0FBUyxFQUNmLEdBQUcsRUFBRSxLQUFLLEVBQ1YsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUNiLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUNyQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBSXBCO0lBRWMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUc3RDtZQUVhLG9DQUFvQztJQXdCNUMsbUJBQW1CLENBQ3ZCLElBQUksRUFBRSxZQUFZLEVBQ2xCLE9BQU8sRUFBRSxFQUFFLEVBQ1gsWUFBWSxFQUFFLHFCQUFxQixHQUNsQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBRzFCO0lBRWMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVksb0JBYXpEO1lBRWEsYUFBYTtJQVdyQix1QkFBdUIsQ0FDM0IsT0FBTyxDQUFDLEVBQUUsWUFBWSxFQUN0QixTQUFTLENBQUMsRUFBRSxFQUFFLEVBQ2QsSUFBSSxHQUFFLFdBQXVCLEVBQzdCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFDVCxTQUFTLENBQUMsRUFBRSxNQUFNLEdBQ2pCLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FtRHpCO1lBUWEscUJBQXFCO0lBa0JwQixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FTaEg7SUFFRDs7O09BR0c7SUFDSCxVQUF5QixxQkFBcUIsQ0FDNUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksRUFBRSw0QkFBNEIsR0FDakMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBdUM3QjtJQUlELFlBQVksSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FFdEM7SUFJRCxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FFaEQ7SUFJRCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxxRUFFekI7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/utils/wallet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/utils/wallet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAiC,MAAM,yBAAyB,CAAC;AACtF,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG5F,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAA2C,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,qBAAa,SAAU,SAAQ,UAAU;IAMrC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,EAAE,CAAC;IANb,OAAO,CAAC,YAAY,CAA8B;IAElD,YACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACP,OAAO,EAAE,KAAK,EACd,EAAE,CAAC,sBAAU,EAItB;IAED,OAAa,MAAM,CACjB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,KAAK,EACV,EAAE,CAAC,EAAE,QAAQ,EACb,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,SAAS,CAAC,CAIpB;IAEc,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAG7D;YAEa,oCAAoC;IAwB5C,mBAAmB,CACvB,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,EAAE,EACX,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,eAAe,CAAC,CAG1B;IAEc,qBAAqB,CAAC,OAAO,EAAE,YAAY,oBAazD;YAEa,aAAa;IAWrB,uBAAuB,CAC3B,OAAO,CAAC,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,EAAE,EACd,IAAI,GAAE,WAAuB,EAC7B,IAAI,CAAC,EAAE,EAAE,EACT,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAmDzB;YAQa,qBAAqB;IAkBpB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAShH;IAED;;;OAGG;IACH,UAAyB,qBAAqB,CAC5C,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAuC7B;IAID,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEtC;IAID,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEhD;IAID,mBAAmB,CAAC,EAAE,EAAE,EAAE,qEAEzB;CACF"}
|
package/dest/utils/wallet.js
CHANGED
|
@@ -2,9 +2,10 @@ import { EcdsaRAccountContract, EcdsaRSSHAccountContract } from '@aztec/accounts
|
|
|
2
2
|
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
3
3
|
import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
|
|
4
4
|
import { getIdentities } from '@aztec/accounts/utils';
|
|
5
|
-
import {
|
|
5
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
6
6
|
import { getContractInstanceFromInstantiationParams, getGasLimits } from '@aztec/aztec.js/contracts';
|
|
7
7
|
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
8
|
+
import { DefaultEntrypoint } from '@aztec/entrypoints/default';
|
|
8
9
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
9
10
|
import { createPXE, getPXEConfig } from '@aztec/pxe/server';
|
|
10
11
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -42,19 +43,18 @@ export class CLIWallet extends BaseWallet {
|
|
|
42
43
|
const executionOptions = {
|
|
43
44
|
txNonce,
|
|
44
45
|
cancellable: this.cancellableTransactions,
|
|
46
|
+
// If from is an address, feeOptions include the way the account contract should handle the fee payment
|
|
45
47
|
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
|
|
46
48
|
};
|
|
47
49
|
return await fromAccount.createTxExecutionRequest(feeExecutionPayload ?? executionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
|
|
48
50
|
}
|
|
49
51
|
async proveCancellationTx(from, txNonce, increasedFee) {
|
|
50
52
|
const cancellationTxRequest = await this.createCancellationTxExecutionRequest(from, txNonce, increasedFee);
|
|
51
|
-
return await this.pxe.proveTx(cancellationTxRequest, this.
|
|
53
|
+
return await this.pxe.proveTx(cancellationTxRequest, this.scopesFrom(from));
|
|
52
54
|
}
|
|
53
55
|
async getAccountFromAddress(address) {
|
|
54
56
|
let account;
|
|
55
|
-
if (address.
|
|
56
|
-
account = new SignerlessAccount();
|
|
57
|
-
} else if (this.accountCache.has(address.toString())) {
|
|
57
|
+
if (this.accountCache.has(address.toString())) {
|
|
58
58
|
return this.accountCache.get(address.toString());
|
|
59
59
|
} else {
|
|
60
60
|
const accountManager = await this.createOrRetrieveAccount(address);
|
|
@@ -125,12 +125,6 @@ export class CLIWallet extends BaseWallet {
|
|
|
125
125
|
* @returns The stub account, contract instance, and artifact for simulation
|
|
126
126
|
*/ async getFakeAccountDataFor(address) {
|
|
127
127
|
const originalAccount = await this.getAccountFromAddress(address);
|
|
128
|
-
// Account contracts can only be overridden if they have an associated address
|
|
129
|
-
// Overwriting SignerlessAccount is not supported, and does not really make sense
|
|
130
|
-
// since it has no authorization mechanism.
|
|
131
|
-
if (originalAccount instanceof SignerlessAccount) {
|
|
132
|
-
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
133
|
-
}
|
|
134
128
|
const originalAddress = originalAccount.getCompleteAddress();
|
|
135
129
|
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
136
130
|
if (!contractInstance) {
|
|
@@ -157,36 +151,43 @@ export class CLIWallet extends BaseWallet {
|
|
|
157
151
|
}
|
|
158
152
|
/**
|
|
159
153
|
* Uses a stub account for kernelless simulation, bypassing real account authorization.
|
|
160
|
-
*
|
|
161
|
-
*/ async simulateViaEntrypoint(executionPayload,
|
|
162
|
-
|
|
163
|
-
return super.simulateViaEntrypoint(executionPayload, from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement);
|
|
164
|
-
}
|
|
154
|
+
* Uses DefaultEntrypoint directly for NO_FROM transactions.
|
|
155
|
+
*/ async simulateViaEntrypoint(executionPayload, opts) {
|
|
156
|
+
const { from, feeOptions, scopes } = opts;
|
|
165
157
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
166
|
-
const executionOptions = {
|
|
167
|
-
txNonce: Fr.random(),
|
|
168
|
-
cancellable: this.cancellableTransactions,
|
|
169
|
-
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
|
|
170
|
-
};
|
|
171
158
|
const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
|
|
172
159
|
feeExecutionPayload,
|
|
173
160
|
executionPayload
|
|
174
161
|
]) : executionPayload;
|
|
175
|
-
const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
176
162
|
const chainInfo = await this.getChainInfo();
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
163
|
+
let overrides;
|
|
164
|
+
let txRequest;
|
|
165
|
+
if (from === NO_FROM) {
|
|
166
|
+
const entrypoint = new DefaultEntrypoint();
|
|
167
|
+
txRequest = await entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
|
|
168
|
+
} else {
|
|
169
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
170
|
+
overrides = {
|
|
183
171
|
contracts: {
|
|
184
172
|
[from.toString()]: {
|
|
185
173
|
instance,
|
|
186
174
|
artifact
|
|
187
175
|
}
|
|
188
176
|
}
|
|
189
|
-
}
|
|
177
|
+
};
|
|
178
|
+
const executionOptions = {
|
|
179
|
+
txNonce: Fr.random(),
|
|
180
|
+
cancellable: this.cancellableTransactions,
|
|
181
|
+
// If from is an address, feeOptions include the way the account contract should handle the fee payment
|
|
182
|
+
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
|
|
183
|
+
};
|
|
184
|
+
txRequest = await account.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
|
|
185
|
+
}
|
|
186
|
+
return this.pxe.simulateTx(txRequest, {
|
|
187
|
+
simulatePublic: true,
|
|
188
|
+
skipFeeEnforcement: true,
|
|
189
|
+
skipTxValidation: true,
|
|
190
|
+
overrides,
|
|
190
191
|
scopes
|
|
191
192
|
});
|
|
192
193
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/cli-wallet",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.3a4ae741b",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/cmds/index.js",
|
|
@@ -67,19 +67,19 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/accounts": "0.0.1-commit.
|
|
71
|
-
"@aztec/aztec.js": "0.0.1-commit.
|
|
72
|
-
"@aztec/bb.js": "0.0.1-commit.
|
|
73
|
-
"@aztec/cli": "0.0.1-commit.
|
|
74
|
-
"@aztec/entrypoints": "0.0.1-commit.
|
|
75
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
76
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
77
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
78
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
79
|
-
"@aztec/noir-noirc_abi": "0.0.1-commit.
|
|
80
|
-
"@aztec/pxe": "0.0.1-commit.
|
|
81
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
82
|
-
"@aztec/wallet-sdk": "0.0.1-commit.
|
|
70
|
+
"@aztec/accounts": "0.0.1-commit.3a4ae741b",
|
|
71
|
+
"@aztec/aztec.js": "0.0.1-commit.3a4ae741b",
|
|
72
|
+
"@aztec/bb.js": "0.0.1-commit.3a4ae741b",
|
|
73
|
+
"@aztec/cli": "0.0.1-commit.3a4ae741b",
|
|
74
|
+
"@aztec/entrypoints": "0.0.1-commit.3a4ae741b",
|
|
75
|
+
"@aztec/ethereum": "0.0.1-commit.3a4ae741b",
|
|
76
|
+
"@aztec/foundation": "0.0.1-commit.3a4ae741b",
|
|
77
|
+
"@aztec/kv-store": "0.0.1-commit.3a4ae741b",
|
|
78
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.3a4ae741b",
|
|
79
|
+
"@aztec/noir-noirc_abi": "0.0.1-commit.3a4ae741b",
|
|
80
|
+
"@aztec/pxe": "0.0.1-commit.3a4ae741b",
|
|
81
|
+
"@aztec/stdlib": "0.0.1-commit.3a4ae741b",
|
|
82
|
+
"@aztec/wallet-sdk": "0.0.1-commit.3a4ae741b",
|
|
83
83
|
"commander": "^12.1.0",
|
|
84
84
|
"inquirer": "^10.1.8",
|
|
85
85
|
"source-map-support": "^0.5.21",
|
package/src/cmds/check_tx.ts
CHANGED
|
@@ -5,7 +5,11 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
5
5
|
import { ProtocolContractAddress } from '@aztec/aztec.js/protocol';
|
|
6
6
|
import type { TxHash } from '@aztec/aztec.js/tx';
|
|
7
7
|
import type { LogFn } from '@aztec/foundation/log';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
computeSiloedPrivateInitializationNullifier,
|
|
10
|
+
computeSiloedPublicInitializationNullifier,
|
|
11
|
+
siloNullifier,
|
|
12
|
+
} from '@aztec/stdlib/hash';
|
|
9
13
|
import { NoteDao } from '@aztec/stdlib/note';
|
|
10
14
|
|
|
11
15
|
import type { CLIWallet } from '../utils/wallet.js';
|
|
@@ -144,22 +148,49 @@ function toFriendlyAddress(address: AztecAddress, artifactMap: ArtifactMap) {
|
|
|
144
148
|
|
|
145
149
|
async function getKnownNullifiers(wallet: CLIWallet, artifactMap: ArtifactMap) {
|
|
146
150
|
const knownContracts = await wallet.getContracts();
|
|
147
|
-
|
|
148
|
-
const
|
|
151
|
+
|
|
152
|
+
const [contractResults, classResults] = await Promise.all([
|
|
153
|
+
Promise.all(knownContracts.map(contract => getContractNullifiers(wallet, contract))),
|
|
154
|
+
Promise.all(Object.values(artifactMap).map(artifact => getClassNullifier(artifact))),
|
|
155
|
+
]);
|
|
156
|
+
|
|
149
157
|
const initNullifiers: Record<string, AztecAddress> = {};
|
|
150
158
|
const deployNullifiers: Record<string, AztecAddress> = {};
|
|
151
159
|
const classNullifiers: Record<string, string> = {};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
deployNullifiers[
|
|
160
|
+
|
|
161
|
+
for (const { contract, deployNullifier, privateInitNullifier, publicInitNullifier } of contractResults) {
|
|
162
|
+
deployNullifiers[deployNullifier.toString()] = contract;
|
|
163
|
+
if (privateInitNullifier) {
|
|
164
|
+
initNullifiers[privateInitNullifier.toString()] = contract;
|
|
165
|
+
}
|
|
166
|
+
initNullifiers[publicInitNullifier.toString()] = contract;
|
|
155
167
|
}
|
|
156
|
-
for (const
|
|
157
|
-
classNullifiers[
|
|
158
|
-
`${artifact.name}Class<${artifact.classId}>`;
|
|
168
|
+
for (const { nullifier, label } of classResults) {
|
|
169
|
+
classNullifiers[nullifier.toString()] = label;
|
|
159
170
|
}
|
|
171
|
+
|
|
160
172
|
return { initNullifiers, deployNullifiers, classNullifiers };
|
|
161
173
|
}
|
|
162
174
|
|
|
175
|
+
async function getContractNullifiers(wallet: CLIWallet, contract: AztecAddress) {
|
|
176
|
+
const deployerAddress = ProtocolContractAddress.ContractInstanceRegistry;
|
|
177
|
+
const deployNullifier = await siloNullifier(deployerAddress, contract.toField());
|
|
178
|
+
|
|
179
|
+
const metadata = await wallet.getContractMetadata(contract);
|
|
180
|
+
const privateInitNullifier = metadata.instance
|
|
181
|
+
? await computeSiloedPrivateInitializationNullifier(contract, metadata.instance.initializationHash)
|
|
182
|
+
: undefined;
|
|
183
|
+
const publicInitNullifier = await computeSiloedPublicInitializationNullifier(contract);
|
|
184
|
+
|
|
185
|
+
return { contract, deployNullifier, privateInitNullifier, publicInitNullifier };
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
async function getClassNullifier(artifact: ContractArtifactWithClassId) {
|
|
189
|
+
const classRegistryAddress = ProtocolContractAddress.ContractClassRegistry;
|
|
190
|
+
const nullifier = await siloNullifier(classRegistryAddress, artifact.classId);
|
|
191
|
+
return { nullifier, label: `${artifact.name}Class<${artifact.classId}>` };
|
|
192
|
+
}
|
|
193
|
+
|
|
163
194
|
type ArtifactMap = Record<string, ContractArtifactWithClassId>;
|
|
164
195
|
type ContractArtifactWithClassId = ContractArtifact & { classId: Fr };
|
|
165
196
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
1
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
3
|
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
@@ -72,7 +73,7 @@ export async function createAccount(
|
|
|
72
73
|
const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(aztecNode, wallet, address);
|
|
73
74
|
|
|
74
75
|
const delegatedDeployment = deployer && !account.address.equals(deployer);
|
|
75
|
-
const from = delegatedDeployment ? deployer :
|
|
76
|
+
const from = delegatedDeployment ? deployer : NO_FROM;
|
|
76
77
|
|
|
77
78
|
const deployAccountOpts: DeployAccountOptions = {
|
|
78
79
|
skipClassPublication: !registerClass,
|
package/src/cmds/deploy.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
1
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
3
|
import type { DeployOptions } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
@@ -63,7 +64,7 @@ export async function deploy(
|
|
|
63
64
|
const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(node, wallet, deployer);
|
|
64
65
|
const deployOpts: DeployOptions = {
|
|
65
66
|
fee: { gasSettings, paymentMethod },
|
|
66
|
-
from: deployer ??
|
|
67
|
+
from: deployer ?? NO_FROM,
|
|
67
68
|
contractAddressSalt: salt,
|
|
68
69
|
universalDeploy: !deployer,
|
|
69
70
|
skipClassPublication,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
1
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
3
|
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
@@ -52,7 +53,7 @@ export async function deployAccount(
|
|
|
52
53
|
const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(aztecNode, wallet, address);
|
|
53
54
|
|
|
54
55
|
const delegatedDeployment = deployer && !account.address.equals(deployer);
|
|
55
|
-
const from = delegatedDeployment ? deployer :
|
|
56
|
+
const from = delegatedDeployment ? deployer : NO_FROM;
|
|
56
57
|
|
|
57
58
|
const deployAccountOpts: DeployAccountOptions = {
|
|
58
59
|
skipClassPublication: !registerClass,
|
package/src/cmds/index.ts
CHANGED
|
@@ -63,7 +63,7 @@ export function injectCommands(
|
|
|
63
63
|
const createAccountCommand = program
|
|
64
64
|
.command('create-account')
|
|
65
65
|
.description(
|
|
66
|
-
'Creates an aztec account that can be used for sending transactions. Registers the account on the PXE and deploys an account contract. Uses a Schnorr
|
|
66
|
+
'Creates an aztec account that can be used for sending transactions. Registers the account on the PXE and deploys an account contract. Uses a Schnorr account which uses an immutable key for authentication.',
|
|
67
67
|
)
|
|
68
68
|
.summary('Creates an aztec account that can be used for sending transactions.')
|
|
69
69
|
.addOption(createAccountOption('Alias or address of the account performing the deployment', !db, db))
|
package/src/utils/wallet.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { EcdsaRAccountContract, EcdsaRSSHAccountContract } from '@aztec/accounts
|
|
|
2
2
|
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
3
3
|
import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
|
|
4
4
|
import { getIdentities } from '@aztec/accounts/utils';
|
|
5
|
-
import { type Account, type AccountContract,
|
|
5
|
+
import { type Account, type AccountContract, NO_FROM } from '@aztec/aztec.js/account';
|
|
6
6
|
import {
|
|
7
7
|
type InteractionFeeOptions,
|
|
8
8
|
getContractInstanceFromInstantiationParams,
|
|
@@ -11,18 +11,19 @@ import {
|
|
|
11
11
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
12
12
|
import { AccountManager, type Aliased, type SimulateOptions } from '@aztec/aztec.js/wallet';
|
|
13
13
|
import type { DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
|
|
14
|
+
import { DefaultEntrypoint } from '@aztec/entrypoints/default';
|
|
14
15
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
15
16
|
import type { LogFn } from '@aztec/foundation/log';
|
|
16
|
-
import type {
|
|
17
|
+
import type { NotesFilter } from '@aztec/pxe/client/lazy';
|
|
17
18
|
import type { PXEConfig } from '@aztec/pxe/config';
|
|
18
19
|
import type { PXE } from '@aztec/pxe/server';
|
|
19
20
|
import { createPXE, getPXEConfig } from '@aztec/pxe/server';
|
|
20
21
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
21
22
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
22
23
|
import { NoteDao } from '@aztec/stdlib/note';
|
|
23
|
-
import type { TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
|
|
24
|
+
import type { SimulationOverrides, TxExecutionRequest, TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
|
|
24
25
|
import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
25
|
-
import { BaseWallet, type
|
|
26
|
+
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
26
27
|
|
|
27
28
|
import type { WalletDB } from '../storage/wallet_db.js';
|
|
28
29
|
import type { AccountType } from './constants.js';
|
|
@@ -71,7 +72,8 @@ export class CLIWallet extends BaseWallet {
|
|
|
71
72
|
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
72
73
|
txNonce,
|
|
73
74
|
cancellable: this.cancellableTransactions,
|
|
74
|
-
|
|
75
|
+
// If from is an address, feeOptions include the way the account contract should handle the fee payment
|
|
76
|
+
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
|
|
75
77
|
};
|
|
76
78
|
return await fromAccount.createTxExecutionRequest(
|
|
77
79
|
feeExecutionPayload ?? executionPayload,
|
|
@@ -87,14 +89,12 @@ export class CLIWallet extends BaseWallet {
|
|
|
87
89
|
increasedFee: InteractionFeeOptions,
|
|
88
90
|
): Promise<TxProvingResult> {
|
|
89
91
|
const cancellationTxRequest = await this.createCancellationTxExecutionRequest(from, txNonce, increasedFee);
|
|
90
|
-
return await this.pxe.proveTx(cancellationTxRequest, this.
|
|
92
|
+
return await this.pxe.proveTx(cancellationTxRequest, this.scopesFrom(from));
|
|
91
93
|
}
|
|
92
94
|
|
|
93
95
|
override async getAccountFromAddress(address: AztecAddress) {
|
|
94
96
|
let account: Account | undefined;
|
|
95
|
-
if (address.
|
|
96
|
-
account = new SignerlessAccount();
|
|
97
|
-
} else if (this.accountCache.has(address.toString())) {
|
|
97
|
+
if (this.accountCache.has(address.toString())) {
|
|
98
98
|
return this.accountCache.get(address.toString())!;
|
|
99
99
|
} else {
|
|
100
100
|
const accountManager = await this.createOrRetrieveAccount(address);
|
|
@@ -185,13 +185,7 @@ export class CLIWallet extends BaseWallet {
|
|
|
185
185
|
*/
|
|
186
186
|
private async getFakeAccountDataFor(address: AztecAddress) {
|
|
187
187
|
const originalAccount = await this.getAccountFromAddress(address);
|
|
188
|
-
|
|
189
|
-
// Overwriting SignerlessAccount is not supported, and does not really make sense
|
|
190
|
-
// since it has no authorization mechanism.
|
|
191
|
-
if (originalAccount instanceof SignerlessAccount) {
|
|
192
|
-
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
193
|
-
}
|
|
194
|
-
const originalAddress = (originalAccount as Account).getCompleteAddress();
|
|
188
|
+
const originalAddress = originalAccount.getCompleteAddress();
|
|
195
189
|
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
196
190
|
if (!contractInstance) {
|
|
197
191
|
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
@@ -220,52 +214,48 @@ export class CLIWallet extends BaseWallet {
|
|
|
220
214
|
|
|
221
215
|
/**
|
|
222
216
|
* Uses a stub account for kernelless simulation, bypassing real account authorization.
|
|
223
|
-
*
|
|
217
|
+
* Uses DefaultEntrypoint directly for NO_FROM transactions.
|
|
224
218
|
*/
|
|
225
219
|
protected override async simulateViaEntrypoint(
|
|
226
220
|
executionPayload: ExecutionPayload,
|
|
227
|
-
|
|
228
|
-
feeOptions: FeeOptions,
|
|
229
|
-
scopes: AccessScopes,
|
|
230
|
-
skipTxValidation?: boolean,
|
|
231
|
-
skipFeeEnforcement?: boolean,
|
|
221
|
+
opts: SimulateViaEntrypointOptions,
|
|
232
222
|
): Promise<TxSimulationResult> {
|
|
233
|
-
|
|
234
|
-
return super.simulateViaEntrypoint(
|
|
235
|
-
executionPayload,
|
|
236
|
-
from,
|
|
237
|
-
feeOptions,
|
|
238
|
-
scopes,
|
|
239
|
-
skipTxValidation,
|
|
240
|
-
skipFeeEnforcement,
|
|
241
|
-
);
|
|
242
|
-
}
|
|
243
|
-
|
|
223
|
+
const { from, feeOptions, scopes } = opts;
|
|
244
224
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
245
|
-
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
246
|
-
txNonce: Fr.random(),
|
|
247
|
-
cancellable: this.cancellableTransactions,
|
|
248
|
-
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions,
|
|
249
|
-
};
|
|
250
225
|
const finalExecutionPayload = feeExecutionPayload
|
|
251
226
|
? mergeExecutionPayloads([feeExecutionPayload, executionPayload])
|
|
252
227
|
: executionPayload;
|
|
253
|
-
|
|
254
|
-
const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
255
228
|
const chainInfo = await this.getChainInfo();
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
229
|
+
|
|
230
|
+
let overrides: SimulationOverrides | undefined;
|
|
231
|
+
let txRequest: TxExecutionRequest;
|
|
232
|
+
if (from === NO_FROM) {
|
|
233
|
+
const entrypoint = new DefaultEntrypoint();
|
|
234
|
+
txRequest = await entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
|
|
235
|
+
} else {
|
|
236
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
237
|
+
overrides = {
|
|
238
|
+
contracts: { [from.toString()]: { instance, artifact } },
|
|
239
|
+
};
|
|
240
|
+
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
241
|
+
txNonce: Fr.random(),
|
|
242
|
+
cancellable: this.cancellableTransactions,
|
|
243
|
+
// If from is an address, feeOptions include the way the account contract should handle the fee payment
|
|
244
|
+
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
|
|
245
|
+
};
|
|
246
|
+
txRequest = await account.createTxExecutionRequest(
|
|
247
|
+
finalExecutionPayload,
|
|
248
|
+
feeOptions.gasSettings,
|
|
249
|
+
chainInfo,
|
|
250
|
+
executionOptions,
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
262
254
|
return this.pxe.simulateTx(txRequest, {
|
|
263
255
|
simulatePublic: true,
|
|
264
256
|
skipFeeEnforcement: true,
|
|
265
257
|
skipTxValidation: true,
|
|
266
|
-
overrides
|
|
267
|
-
contracts: { [from.toString()]: { instance, artifact } },
|
|
268
|
-
},
|
|
258
|
+
overrides,
|
|
269
259
|
scopes,
|
|
270
260
|
});
|
|
271
261
|
}
|