@aztec/test-wallet 0.0.1-commit.0208eb9
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/bundle.d.ts +4 -0
- package/dest/bundle.d.ts.map +1 -0
- package/dest/bundle.js +2 -0
- package/dest/lazy.d.ts +4 -0
- package/dest/lazy.d.ts.map +1 -0
- package/dest/lazy.js +2 -0
- package/dest/server.d.ts +4 -0
- package/dest/server.d.ts.map +1 -0
- package/dest/server.js +2 -0
- package/dest/utils.d.ts +64 -0
- package/dest/utils.d.ts.map +1 -0
- package/dest/utils.js +83 -0
- package/dest/wallet/bundle.d.ts +29 -0
- package/dest/wallet/bundle.d.ts.map +1 -0
- package/dest/wallet/bundle.js +78 -0
- package/dest/wallet/lazy.d.ts +29 -0
- package/dest/wallet/lazy.d.ts.map +1 -0
- package/dest/wallet/lazy.js +79 -0
- package/dest/wallet/server.d.ts +29 -0
- package/dest/wallet/server.d.ts.map +1 -0
- package/dest/wallet/server.js +78 -0
- package/dest/wallet/test_wallet.d.ts +163 -0
- package/dest/wallet/test_wallet.d.ts.map +1 -0
- package/dest/wallet/test_wallet.js +202 -0
- package/package.json +97 -0
- package/src/bundle.ts +8 -0
- package/src/lazy.ts +8 -0
- package/src/server.ts +8 -0
- package/src/utils.ts +146 -0
- package/src/wallet/bundle.ts +91 -0
- package/src/wallet/lazy.ts +92 -0
- package/src/wallet/server.ts +91 -0
- package/src/wallet/test_wallet.ts +306 -0
package/dest/bundle.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { TestWallet } from './wallet/bundle.js';
|
|
2
|
+
export { type AccountData } from './wallet/test_wallet.js';
|
|
3
|
+
export { deployFundedSchnorrAccounts, registerInitialLocalNetworkAccountsInWallet, ProvenTx, proveInteraction, } from './utils.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVuZGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDJDQUEyQyxFQUMzQyxRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sWUFBWSxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,2BAA2B,EAC3B,2CAA2C,EAC3C,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dest/bundle.js
ADDED
package/dest/lazy.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { TestWallet } from './wallet/lazy.js';
|
|
2
|
+
export { type AccountData } from './wallet/test_wallet.js';
|
|
3
|
+
export { deployFundedSchnorrAccounts, registerInitialLocalNetworkAccountsInWallet, ProvenTx, proveInteraction, } from './utils.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsMkNBQTJDLEVBQzNDLFFBQVEsRUFDUixnQkFBZ0IsR0FDakIsTUFBTSxZQUFZLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,2BAA2B,EAC3B,2CAA2C,EAC3C,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dest/lazy.js
ADDED
package/dest/server.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { TestWallet } from './wallet/server.js';
|
|
2
|
+
export { type AccountData } from './wallet/test_wallet.js';
|
|
3
|
+
export { deployFundedSchnorrAccounts, registerInitialLocalNetworkAccountsInWallet, ProvenTx, proveInteraction, } from './utils.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDJDQUEyQyxFQUMzQyxRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sWUFBWSxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,2BAA2B,EAC3B,2CAA2C,EAC3C,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dest/server.js
ADDED
package/dest/utils.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
2
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { ContractFunctionInteraction, DeployMethod, type DeployOptions, type NoWait, type SendInteractionOptions, type WaitOpts } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { type AztecNode } from '@aztec/aztec.js/node';
|
|
5
|
+
import { type OffchainEffect, type ProvingStats, Tx, TxHash, type TxReceipt } from '@aztec/stdlib/tx';
|
|
6
|
+
import type { BaseTestWallet } from './wallet/test_wallet.js';
|
|
7
|
+
/**
|
|
8
|
+
* Options for sending a proven transaction.
|
|
9
|
+
*/
|
|
10
|
+
export type ProvenTxSendOpts = {
|
|
11
|
+
/**
|
|
12
|
+
* Whether to wait for the transaction to be mined.
|
|
13
|
+
* - undefined (default): wait with default options and return TxReceipt
|
|
14
|
+
* - WaitOpts object: wait with custom options and return TxReceipt
|
|
15
|
+
* - NO_WAIT: return txHash immediately without waiting
|
|
16
|
+
*/
|
|
17
|
+
wait?: NoWait | WaitOpts;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Return type for ProvenTx.send based on wait option.
|
|
21
|
+
*/
|
|
22
|
+
export type ProvenTxSendReturn<T extends NoWait | WaitOpts | undefined> = T extends NoWait ? TxHash : TxReceipt;
|
|
23
|
+
/**
|
|
24
|
+
* Deploys the SchnorrAccount contracts backed by prefunded addresses
|
|
25
|
+
* at genesis. This can be directly used to pay for transactions in FeeJuice.
|
|
26
|
+
*/
|
|
27
|
+
export declare function deployFundedSchnorrAccounts(wallet: BaseTestWallet, accountsData: InitialAccountData[], waitOptions?: WaitOpts): Promise<import("@aztec/aztec.js/wallet").AccountManager[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Registers the initial local network accounts in the wallet.
|
|
30
|
+
* @param wallet - Test wallet to use to register the accounts.
|
|
31
|
+
* @returns Addresses of the registered accounts.
|
|
32
|
+
*/
|
|
33
|
+
export declare function registerInitialLocalNetworkAccountsInWallet(wallet: BaseTestWallet): Promise<AztecAddress[]>;
|
|
34
|
+
/**
|
|
35
|
+
* A proven transaction that can be sent to the network. Returned by the `prove` method of the test wallet
|
|
36
|
+
*/
|
|
37
|
+
export declare class ProvenTx extends Tx {
|
|
38
|
+
private node;
|
|
39
|
+
/** The offchain effects emitted during the execution of the transaction. */
|
|
40
|
+
offchainEffects: OffchainEffect[];
|
|
41
|
+
stats?: ProvingStats | undefined;
|
|
42
|
+
constructor(node: AztecNode, tx: Tx,
|
|
43
|
+
/** The offchain effects emitted during the execution of the transaction. */
|
|
44
|
+
offchainEffects: OffchainEffect[], stats?: ProvingStats | undefined);
|
|
45
|
+
/**
|
|
46
|
+
* Sends the transaction to the network.
|
|
47
|
+
* @param options - Send options including whether to wait.
|
|
48
|
+
* @returns The transaction receipt if waiting, or the transaction hash if not.
|
|
49
|
+
*/
|
|
50
|
+
send(options?: Omit<ProvenTxSendOpts, 'wait'>): Promise<TxReceipt>;
|
|
51
|
+
send<W extends ProvenTxSendOpts['wait']>(options: ProvenTxSendOpts & {
|
|
52
|
+
wait: W;
|
|
53
|
+
}): Promise<ProvenTxSendReturn<W>>;
|
|
54
|
+
private contextualizeError;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Helper function to prove an interaction via a TestWallet
|
|
58
|
+
* @param wallet - The TestWallet to use
|
|
59
|
+
* @param interaction - The interaction to prove
|
|
60
|
+
* @param options - Either SendInteractionOptions (for ContractFunctionInteraction) or DeployOptions (for DeployMethod)
|
|
61
|
+
* @returns - A proven transaction ready do be sent to the network
|
|
62
|
+
*/
|
|
63
|
+
export declare function proveInteraction(wallet: BaseTestWallet, interaction: ContractFunctionInteraction | DeployMethod, options: SendInteractionOptions | DeployOptions): Promise<ProvenTx>;
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFFbEIsS0FBSyxNQUFNLEVBQ1gsS0FBSyxzQkFBc0IsRUFDM0IsS0FBSyxRQUFRLEVBRWQsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXRHLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUFDLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FBQztDQUMxQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLE1BQU0sa0JBQWtCLENBQUMsQ0FBQyxTQUFTLE1BQU0sR0FBRyxRQUFRLEdBQUcsU0FBUyxJQUFJLENBQUMsU0FBUyxNQUFNLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUVoSDs7O0dBR0c7QUFDSCx3QkFBc0IsMkJBQTJCLENBQy9DLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxFQUNsQyxXQUFXLENBQUMsRUFBRSxRQUFRLDhEQWdCdkI7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQXNCLDJDQUEyQyxDQUFDLE1BQU0sRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBT2pIO0FBQ0Q7O0dBRUc7QUFDSCxxQkFBYSxRQUFTLFNBQVEsRUFBRTtJQUU1QixPQUFPLENBQUMsSUFBSTtJQUVaLDRFQUE0RTtJQUNyRSxlQUFlLEVBQUUsY0FBYyxFQUFFO0lBRWpDLEtBQUssQ0FBQztJQU5mLFlBQ1UsSUFBSSxFQUFFLFNBQVMsRUFDdkIsRUFBRSxFQUFFLEVBQUU7SUFDTiw0RUFBNEU7SUFDckUsZUFBZSxFQUFFLGNBQWMsRUFBRSxFQUVqQyxLQUFLLENBQUMsMEJBQWMsRUFHNUI7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFbkUsSUFBSSxDQUFDLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEdBQUc7UUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQWVsSCxPQUFPLENBQUMsa0JBQWtCO0NBVTNCO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQXNCLGdCQUFnQixDQUNwQyxNQUFNLEVBQUUsY0FBYyxFQUN0QixXQUFXLEVBQUUsMkJBQTJCLEdBQUcsWUFBWSxFQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEdBQUcsYUFBYSxxQkFTaEQifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,KAAK,aAAa,EAElB,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EAEd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAItG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,QAAQ,GAAG,SAAS,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhH;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,kBAAkB,EAAE,EAClC,WAAW,CAAC,EAAE,QAAQ,8DAgBvB;AAED;;;;GAIG;AACH,wBAAsB,2CAA2C,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAOjH;AACD;;GAEG;AACH,qBAAa,QAAS,SAAQ,EAAE;IAE5B,OAAO,CAAC,IAAI;IAEZ,4EAA4E;IACrE,eAAe,EAAE,cAAc,EAAE;IAEjC,KAAK,CAAC;IANf,YACU,IAAI,EAAE,SAAS,EACvB,EAAE,EAAE,EAAE;IACN,4EAA4E;IACrE,eAAe,EAAE,cAAc,EAAE,EAEjC,KAAK,CAAC,0BAAc,EAG5B;IAED;;;;OAIG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnE,IAAI,CAAC,CAAC,SAAS,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAelH,OAAO,CAAC,kBAAkB;CAU3B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,2BAA2B,GAAG,YAAY,EACvD,OAAO,EAAE,sBAAsB,GAAG,aAAa,qBAShD"}
|
package/dest/utils.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { getInitialTestAccountsData } from '@aztec/accounts/testing/lazy';
|
|
2
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { DeployMethod, NO_WAIT, toSendOptions } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { waitForTx } from '@aztec/aztec.js/node';
|
|
5
|
+
import { SimulationError } from '@aztec/stdlib/errors';
|
|
6
|
+
import { Tx } from '@aztec/stdlib/tx';
|
|
7
|
+
import { inspect } from 'util';
|
|
8
|
+
/**
|
|
9
|
+
* Deploys the SchnorrAccount contracts backed by prefunded addresses
|
|
10
|
+
* at genesis. This can be directly used to pay for transactions in FeeJuice.
|
|
11
|
+
*/ export async function deployFundedSchnorrAccounts(wallet, accountsData, waitOptions) {
|
|
12
|
+
const accountManagers = [];
|
|
13
|
+
// Serial due to https://github.com/AztecProtocol/aztec-packages/issues/12045
|
|
14
|
+
for(let i = 0; i < accountsData.length; i++){
|
|
15
|
+
const { secret, salt, signingKey } = accountsData[i];
|
|
16
|
+
const accountManager = await wallet.createSchnorrAccount(secret, salt, signingKey);
|
|
17
|
+
const deployMethod = await accountManager.getDeployMethod();
|
|
18
|
+
await deployMethod.send({
|
|
19
|
+
from: AztecAddress.ZERO,
|
|
20
|
+
skipClassPublication: i !== 0,
|
|
21
|
+
wait: waitOptions
|
|
22
|
+
});
|
|
23
|
+
accountManagers.push(accountManager);
|
|
24
|
+
}
|
|
25
|
+
return accountManagers;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Registers the initial local network accounts in the wallet.
|
|
29
|
+
* @param wallet - Test wallet to use to register the accounts.
|
|
30
|
+
* @returns Addresses of the registered accounts.
|
|
31
|
+
*/ export async function registerInitialLocalNetworkAccountsInWallet(wallet) {
|
|
32
|
+
const testAccounts = await getInitialTestAccountsData();
|
|
33
|
+
return Promise.all(testAccounts.map(async (account)=>{
|
|
34
|
+
return (await wallet.createSchnorrAccount(account.secret, account.salt, account.signingKey)).address;
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A proven transaction that can be sent to the network. Returned by the `prove` method of the test wallet
|
|
39
|
+
*/ export class ProvenTx extends Tx {
|
|
40
|
+
node;
|
|
41
|
+
offchainEffects;
|
|
42
|
+
stats;
|
|
43
|
+
constructor(node, tx, /** The offchain effects emitted during the execution of the transaction. */ offchainEffects, // eslint-disable-next-line jsdoc/require-jsdoc
|
|
44
|
+
stats){
|
|
45
|
+
super(tx.getTxHash(), tx.data, tx.chonkProof, tx.contractClassLogFields, tx.publicFunctionCalldata), this.node = node, this.offchainEffects = offchainEffects, this.stats = stats;
|
|
46
|
+
}
|
|
47
|
+
async send(options) {
|
|
48
|
+
const txHash = this.getTxHash();
|
|
49
|
+
await this.node.sendTx(this).catch((err)=>{
|
|
50
|
+
throw this.contextualizeError(err, inspect(this));
|
|
51
|
+
});
|
|
52
|
+
if (options?.wait === NO_WAIT) {
|
|
53
|
+
return txHash;
|
|
54
|
+
}
|
|
55
|
+
const waitOpts = typeof options?.wait === 'object' ? options.wait : undefined;
|
|
56
|
+
return await waitForTx(this.node, txHash, waitOpts);
|
|
57
|
+
}
|
|
58
|
+
contextualizeError(err, ...context) {
|
|
59
|
+
let contextStr = '';
|
|
60
|
+
if (context.length > 0) {
|
|
61
|
+
contextStr = `\nContext:\n${context.join('\n')}`;
|
|
62
|
+
}
|
|
63
|
+
if (err instanceof SimulationError) {
|
|
64
|
+
err.setAztecContext(contextStr);
|
|
65
|
+
}
|
|
66
|
+
return err;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Helper function to prove an interaction via a TestWallet
|
|
71
|
+
* @param wallet - The TestWallet to use
|
|
72
|
+
* @param interaction - The interaction to prove
|
|
73
|
+
* @param options - Either SendInteractionOptions (for ContractFunctionInteraction) or DeployOptions (for DeployMethod)
|
|
74
|
+
* @returns - A proven transaction ready do be sent to the network
|
|
75
|
+
*/ export async function proveInteraction(wallet, interaction, options) {
|
|
76
|
+
let execPayload;
|
|
77
|
+
if (interaction instanceof DeployMethod) {
|
|
78
|
+
execPayload = await interaction.request(interaction.convertDeployOptionsToRequestOptions(options));
|
|
79
|
+
} else {
|
|
80
|
+
execPayload = await interaction.request(options);
|
|
81
|
+
}
|
|
82
|
+
return wallet.proveTx(execPayload, toSendOptions(options));
|
|
83
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { Fq, Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
4
|
+
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
5
|
+
import { type PXEConfig, type PXECreationOptions } from '@aztec/pxe/client/bundle';
|
|
6
|
+
import { BaseTestWallet } from './test_wallet.js';
|
|
7
|
+
/**
|
|
8
|
+
* A TestWallet implementation that loads the account contract artifacts eagerly
|
|
9
|
+
* Note that the only difference from `lazy` and `server` test wallets is that it uses the `createPXE` function
|
|
10
|
+
* from the `pxe/client/bundle` package.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TestWallet extends BaseTestWallet {
|
|
13
|
+
static create(node: AztecNode, overridePXEConfig?: Partial<PXEConfig>, options?: PXECreationOptions): Promise<TestWallet>;
|
|
14
|
+
createSchnorrAccount(secret: Fr, salt: Fr, signingKey?: Fq): Promise<AccountManager>;
|
|
15
|
+
createECDSARAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
16
|
+
createECDSAKAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a stub account that impersonates the given address, allowing kernelless simulations
|
|
19
|
+
* to bypass the account's authorization mechanisms via contract overrides.
|
|
20
|
+
* @param address - The address of the account to impersonate
|
|
21
|
+
* @returns The stub account, contract instance, and artifact for simulation
|
|
22
|
+
*/
|
|
23
|
+
getFakeAccountDataFor(address: AztecAddress): Promise<{
|
|
24
|
+
account: import("@aztec/aztec.js/account").BaseAccount;
|
|
25
|
+
instance: import("@aztec/aztec.js/contracts").ContractInstanceWithAddress;
|
|
26
|
+
artifact: import("@aztec/stdlib/abi").ContractArtifact;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2FsbGV0L2J1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxrQkFBa0IsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUc1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNILHFCQUFhLFVBQVcsU0FBUSxjQUFjO0lBQzVDLE9BQWEsTUFBTSxDQUNqQixJQUFJLEVBQUUsU0FBUyxFQUNmLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUN0QyxPQUFPLEdBQUUsa0JBQW9DLEdBQzVDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FPckI7SUFFRCxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FRbkY7SUFFRCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBT3JGO0lBRUQsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQU9yRjtJQUVEOzs7OztPQUtHO0lBQ0cscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVk7Ozs7T0FzQmhEO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/wallet/bundle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAA2B,MAAM,0BAA0B,CAAC;AAG5G,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAC5C,OAAa,MAAM,CACjB,IAAI,EAAE,SAAS,EACf,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EACtC,OAAO,GAAE,kBAAoC,GAC5C,OAAO,CAAC,UAAU,CAAC,CAOrB;IAED,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAQnF;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOrF;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOrF;IAED;;;;;OAKG;IACG,qBAAqB,CAAC,OAAO,EAAE,YAAY;;;;OAsBhD;CACF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { EcdsaKAccountContract, EcdsaRAccountContract } from '@aztec/accounts/ecdsa';
|
|
2
|
+
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
3
|
+
import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
|
|
4
|
+
import { SignerlessAccount } from '@aztec/aztec.js/account';
|
|
5
|
+
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
6
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
7
|
+
import { createPXE, getPXEConfig } from '@aztec/pxe/client/bundle';
|
|
8
|
+
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
9
|
+
import { BaseTestWallet } from './test_wallet.js';
|
|
10
|
+
/**
|
|
11
|
+
* A TestWallet implementation that loads the account contract artifacts eagerly
|
|
12
|
+
* Note that the only difference from `lazy` and `server` test wallets is that it uses the `createPXE` function
|
|
13
|
+
* from the `pxe/client/bundle` package.
|
|
14
|
+
*/ export class TestWallet extends BaseTestWallet {
|
|
15
|
+
static async create(node, overridePXEConfig, options = {
|
|
16
|
+
loggers: {}
|
|
17
|
+
}) {
|
|
18
|
+
const pxeConfig = Object.assign(getPXEConfig(), {
|
|
19
|
+
proverEnabled: overridePXEConfig?.proverEnabled ?? false,
|
|
20
|
+
...overridePXEConfig
|
|
21
|
+
});
|
|
22
|
+
const pxe = await createPXE(node, pxeConfig, options);
|
|
23
|
+
return new TestWallet(pxe, node);
|
|
24
|
+
}
|
|
25
|
+
createSchnorrAccount(secret, salt, signingKey) {
|
|
26
|
+
signingKey = signingKey ?? deriveSigningKey(secret);
|
|
27
|
+
const accountData = {
|
|
28
|
+
secret,
|
|
29
|
+
salt,
|
|
30
|
+
contract: new SchnorrAccountContract(signingKey)
|
|
31
|
+
};
|
|
32
|
+
return this.createAccount(accountData);
|
|
33
|
+
}
|
|
34
|
+
createECDSARAccount(secret, salt, signingKey) {
|
|
35
|
+
const accountData = {
|
|
36
|
+
secret,
|
|
37
|
+
salt,
|
|
38
|
+
contract: new EcdsaRAccountContract(signingKey)
|
|
39
|
+
};
|
|
40
|
+
return this.createAccount(accountData);
|
|
41
|
+
}
|
|
42
|
+
createECDSAKAccount(secret, salt, signingKey) {
|
|
43
|
+
const accountData = {
|
|
44
|
+
secret,
|
|
45
|
+
salt,
|
|
46
|
+
contract: new EcdsaKAccountContract(signingKey)
|
|
47
|
+
};
|
|
48
|
+
return this.createAccount(accountData);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a stub account that impersonates the given address, allowing kernelless simulations
|
|
52
|
+
* to bypass the account's authorization mechanisms via contract overrides.
|
|
53
|
+
* @param address - The address of the account to impersonate
|
|
54
|
+
* @returns The stub account, contract instance, and artifact for simulation
|
|
55
|
+
*/ async getFakeAccountDataFor(address) {
|
|
56
|
+
const originalAccount = await this.getAccountFromAddress(address);
|
|
57
|
+
// Account contracts can only be overridden if they have an associated address
|
|
58
|
+
// Overwriting SignerlessAccount is not supported, and does not really make sense
|
|
59
|
+
// since it has no authorization mechanism.
|
|
60
|
+
if (originalAccount instanceof SignerlessAccount) {
|
|
61
|
+
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
62
|
+
}
|
|
63
|
+
const originalAddress = originalAccount.getCompleteAddress();
|
|
64
|
+
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
65
|
+
if (!contractInstance) {
|
|
66
|
+
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
67
|
+
}
|
|
68
|
+
const stubAccount = createStubAccount(originalAddress);
|
|
69
|
+
const instance = await getContractInstanceFromInstantiationParams(StubAccountContractArtifact, {
|
|
70
|
+
salt: Fr.random()
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
account: stubAccount,
|
|
74
|
+
instance,
|
|
75
|
+
artifact: StubAccountContractArtifact
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { Fq, Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
4
|
+
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
5
|
+
import { type PXEConfig, type PXECreationOptions } from '@aztec/pxe/client/lazy';
|
|
6
|
+
import { BaseTestWallet } from './test_wallet.js';
|
|
7
|
+
/**
|
|
8
|
+
* A TestWallet implementation that loads the account contract artifacts lazily
|
|
9
|
+
* Note that the only difference from `server` and `bundle` test wallets is that it uses the `createPXE` function
|
|
10
|
+
* from the `pxe/client/lazy` package.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TestWallet extends BaseTestWallet {
|
|
13
|
+
static create(node: AztecNode, overridePXEConfig?: Partial<PXEConfig>, options?: PXECreationOptions): Promise<TestWallet>;
|
|
14
|
+
createSchnorrAccount(secret: Fr, salt: Fr, signingKey?: Fq): Promise<AccountManager>;
|
|
15
|
+
createECDSARAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
16
|
+
createECDSAKAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a stub account that impersonates the given address, allowing kernelless simulations
|
|
19
|
+
* to bypass the account's authorization mechanisms via contract overrides.
|
|
20
|
+
* @param address - The address of the account to impersonate
|
|
21
|
+
* @returns The stub account, contract instance, and artifact for simulation
|
|
22
|
+
*/
|
|
23
|
+
getFakeAccountDataFor(address: AztecAddress): Promise<{
|
|
24
|
+
account: import("@aztec/aztec.js/account").BaseAccount;
|
|
25
|
+
instance: import("@aztec/aztec.js/contracts").ContractInstanceWithAddress;
|
|
26
|
+
artifact: import("@aztec/stdlib/abi").ContractArtifact;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dhbGxldC9sYXp5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLGtCQUFrQixFQUEyQixNQUFNLHdCQUF3QixDQUFDO0FBRzFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRDs7OztHQUlHO0FBQ0gscUJBQWEsVUFBVyxTQUFRLGNBQWM7SUFDNUMsT0FBYSxNQUFNLENBQ2pCLElBQUksRUFBRSxTQUFTLEVBQ2YsaUJBQWlCLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQ3RDLE9BQU8sR0FBRSxrQkFBb0MsR0FDNUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQU9yQjtJQUVELG9CQUFvQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQVFuRjtJQUVELG1CQUFtQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FPckY7SUFFRCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBT3JGO0lBRUQ7Ozs7O09BS0c7SUFDRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsWUFBWTs7OztPQXVCaEQ7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/wallet/lazy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAA2B,MAAM,wBAAwB,CAAC;AAG1G,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAC5C,OAAa,MAAM,CACjB,IAAI,EAAE,SAAS,EACf,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EACtC,OAAO,GAAE,kBAAoC,GAC5C,OAAO,CAAC,UAAU,CAAC,CAOrB;IAED,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAQnF;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOrF;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOrF;IAED;;;;;OAKG;IACG,qBAAqB,CAAC,OAAO,EAAE,YAAY;;;;OAuBhD;CACF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { EcdsaKAccountContract, EcdsaRAccountContract } from '@aztec/accounts/ecdsa/lazy';
|
|
2
|
+
import { SchnorrAccountContract } from '@aztec/accounts/schnorr/lazy';
|
|
3
|
+
import { createStubAccount, getStubAccountContractArtifact } from '@aztec/accounts/stub/lazy';
|
|
4
|
+
import { SignerlessAccount } from '@aztec/aztec.js/account';
|
|
5
|
+
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
6
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
7
|
+
import { createPXE, getPXEConfig } from '@aztec/pxe/client/lazy';
|
|
8
|
+
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
9
|
+
import { BaseTestWallet } from './test_wallet.js';
|
|
10
|
+
/**
|
|
11
|
+
* A TestWallet implementation that loads the account contract artifacts lazily
|
|
12
|
+
* Note that the only difference from `server` and `bundle` test wallets is that it uses the `createPXE` function
|
|
13
|
+
* from the `pxe/client/lazy` package.
|
|
14
|
+
*/ export class TestWallet extends BaseTestWallet {
|
|
15
|
+
static async create(node, overridePXEConfig, options = {
|
|
16
|
+
loggers: {}
|
|
17
|
+
}) {
|
|
18
|
+
const pxeConfig = Object.assign(getPXEConfig(), {
|
|
19
|
+
proverEnabled: overridePXEConfig?.proverEnabled ?? false,
|
|
20
|
+
...overridePXEConfig
|
|
21
|
+
});
|
|
22
|
+
const pxe = await createPXE(node, pxeConfig, options);
|
|
23
|
+
return new TestWallet(pxe, node);
|
|
24
|
+
}
|
|
25
|
+
createSchnorrAccount(secret, salt, signingKey) {
|
|
26
|
+
signingKey = signingKey ?? deriveSigningKey(secret);
|
|
27
|
+
const accountData = {
|
|
28
|
+
secret,
|
|
29
|
+
salt,
|
|
30
|
+
contract: new SchnorrAccountContract(signingKey)
|
|
31
|
+
};
|
|
32
|
+
return this.createAccount(accountData);
|
|
33
|
+
}
|
|
34
|
+
createECDSARAccount(secret, salt, signingKey) {
|
|
35
|
+
const accountData = {
|
|
36
|
+
secret,
|
|
37
|
+
salt,
|
|
38
|
+
contract: new EcdsaRAccountContract(signingKey)
|
|
39
|
+
};
|
|
40
|
+
return this.createAccount(accountData);
|
|
41
|
+
}
|
|
42
|
+
createECDSAKAccount(secret, salt, signingKey) {
|
|
43
|
+
const accountData = {
|
|
44
|
+
secret,
|
|
45
|
+
salt,
|
|
46
|
+
contract: new EcdsaKAccountContract(signingKey)
|
|
47
|
+
};
|
|
48
|
+
return this.createAccount(accountData);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a stub account that impersonates the given address, allowing kernelless simulations
|
|
52
|
+
* to bypass the account's authorization mechanisms via contract overrides.
|
|
53
|
+
* @param address - The address of the account to impersonate
|
|
54
|
+
* @returns The stub account, contract instance, and artifact for simulation
|
|
55
|
+
*/ async getFakeAccountDataFor(address) {
|
|
56
|
+
const originalAccount = await this.getAccountFromAddress(address);
|
|
57
|
+
// Account contracts can only be overridden if they have an associated address
|
|
58
|
+
// Overwriting SignerlessAccount is not supported, and does not really make sense
|
|
59
|
+
// since it has no authorization mechanism.
|
|
60
|
+
if (originalAccount instanceof SignerlessAccount) {
|
|
61
|
+
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
62
|
+
}
|
|
63
|
+
const originalAddress = originalAccount.getCompleteAddress();
|
|
64
|
+
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
65
|
+
if (!contractInstance) {
|
|
66
|
+
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
67
|
+
}
|
|
68
|
+
const stubAccount = createStubAccount(originalAddress);
|
|
69
|
+
const StubAccountContractArtifact = await getStubAccountContractArtifact();
|
|
70
|
+
const instance = await getContractInstanceFromInstantiationParams(StubAccountContractArtifact, {
|
|
71
|
+
salt: Fr.random()
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
account: stubAccount,
|
|
75
|
+
instance,
|
|
76
|
+
artifact: StubAccountContractArtifact
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { Fq, Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
4
|
+
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
5
|
+
import { type PXEConfig, type PXECreationOptions } from '@aztec/pxe/server';
|
|
6
|
+
import { BaseTestWallet } from './test_wallet.js';
|
|
7
|
+
/**
|
|
8
|
+
* A TestWallet implementation to be used in server settings (e.g. e2e tests).
|
|
9
|
+
* Note that the only difference from `lazy` and `bundle` test wallets is that it uses the `createPXE` function
|
|
10
|
+
* from the `pxe/server` package.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TestWallet extends BaseTestWallet {
|
|
13
|
+
static create(node: AztecNode, overridePXEConfig?: Partial<PXEConfig>, options?: PXECreationOptions): Promise<TestWallet>;
|
|
14
|
+
createSchnorrAccount(secret: Fr, salt: Fr, signingKey?: Fq): Promise<AccountManager>;
|
|
15
|
+
createECDSARAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
16
|
+
createECDSAKAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a stub account that impersonates the given address, allowing kernelless simulations
|
|
19
|
+
* to bypass the account's authorization mechanisms via contract overrides.
|
|
20
|
+
* @param address - The address of the account to impersonate
|
|
21
|
+
* @returns The stub account, contract instance, and artifact for simulation
|
|
22
|
+
*/
|
|
23
|
+
getFakeAccountDataFor(address: AztecAddress): Promise<{
|
|
24
|
+
account: import("@aztec/aztec.js/account").BaseAccount;
|
|
25
|
+
instance: import("@aztec/aztec.js/contracts").ContractInstanceWithAddress;
|
|
26
|
+
artifact: import("@aztec/stdlib/abi").ContractArtifact;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2FsbGV0L3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxrQkFBa0IsRUFBMkIsTUFBTSxtQkFBbUIsQ0FBQztBQUdyRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNILHFCQUFhLFVBQVcsU0FBUSxjQUFjO0lBQzVDLE9BQWEsTUFBTSxDQUNqQixJQUFJLEVBQUUsU0FBUyxFQUNmLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUN0QyxPQUFPLEdBQUUsa0JBQW9DLEdBQzVDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FPckI7SUFFRCxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FRbkY7SUFFRCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBT3JGO0lBRUQsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQU9yRjtJQUVEOzs7OztPQUtHO0lBQ0cscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVk7Ozs7T0FzQmhEO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/wallet/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAA2B,MAAM,mBAAmB,CAAC;AAGrG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAC5C,OAAa,MAAM,CACjB,IAAI,EAAE,SAAS,EACf,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EACtC,OAAO,GAAE,kBAAoC,GAC5C,OAAO,CAAC,UAAU,CAAC,CAOrB;IAED,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAQnF;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOrF;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOrF;IAED;;;;;OAKG;IACG,qBAAqB,CAAC,OAAO,EAAE,YAAY;;;;OAsBhD;CACF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { EcdsaKAccountContract, EcdsaRAccountContract } from '@aztec/accounts/ecdsa';
|
|
2
|
+
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
3
|
+
import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
|
|
4
|
+
import { SignerlessAccount } from '@aztec/aztec.js/account';
|
|
5
|
+
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
6
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
7
|
+
import { createPXE, getPXEConfig } from '@aztec/pxe/server';
|
|
8
|
+
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
9
|
+
import { BaseTestWallet } from './test_wallet.js';
|
|
10
|
+
/**
|
|
11
|
+
* A TestWallet implementation to be used in server settings (e.g. e2e tests).
|
|
12
|
+
* Note that the only difference from `lazy` and `bundle` test wallets is that it uses the `createPXE` function
|
|
13
|
+
* from the `pxe/server` package.
|
|
14
|
+
*/ export class TestWallet extends BaseTestWallet {
|
|
15
|
+
static async create(node, overridePXEConfig, options = {
|
|
16
|
+
loggers: {}
|
|
17
|
+
}) {
|
|
18
|
+
const pxeConfig = Object.assign(getPXEConfig(), {
|
|
19
|
+
proverEnabled: overridePXEConfig?.proverEnabled ?? false,
|
|
20
|
+
...overridePXEConfig
|
|
21
|
+
});
|
|
22
|
+
const pxe = await createPXE(node, pxeConfig, options);
|
|
23
|
+
return new TestWallet(pxe, node);
|
|
24
|
+
}
|
|
25
|
+
createSchnorrAccount(secret, salt, signingKey) {
|
|
26
|
+
signingKey = signingKey ?? deriveSigningKey(secret);
|
|
27
|
+
const accountData = {
|
|
28
|
+
secret,
|
|
29
|
+
salt,
|
|
30
|
+
contract: new SchnorrAccountContract(signingKey)
|
|
31
|
+
};
|
|
32
|
+
return this.createAccount(accountData);
|
|
33
|
+
}
|
|
34
|
+
createECDSARAccount(secret, salt, signingKey) {
|
|
35
|
+
const accountData = {
|
|
36
|
+
secret,
|
|
37
|
+
salt,
|
|
38
|
+
contract: new EcdsaRAccountContract(signingKey)
|
|
39
|
+
};
|
|
40
|
+
return this.createAccount(accountData);
|
|
41
|
+
}
|
|
42
|
+
createECDSAKAccount(secret, salt, signingKey) {
|
|
43
|
+
const accountData = {
|
|
44
|
+
secret,
|
|
45
|
+
salt,
|
|
46
|
+
contract: new EcdsaKAccountContract(signingKey)
|
|
47
|
+
};
|
|
48
|
+
return this.createAccount(accountData);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a stub account that impersonates the given address, allowing kernelless simulations
|
|
52
|
+
* to bypass the account's authorization mechanisms via contract overrides.
|
|
53
|
+
* @param address - The address of the account to impersonate
|
|
54
|
+
* @returns The stub account, contract instance, and artifact for simulation
|
|
55
|
+
*/ async getFakeAccountDataFor(address) {
|
|
56
|
+
const originalAccount = await this.getAccountFromAddress(address);
|
|
57
|
+
// Account contracts can only be overridden if they have an associated address
|
|
58
|
+
// Overwriting SignerlessAccount is not supported, and does not really make sense
|
|
59
|
+
// since it has no authorization mechanism.
|
|
60
|
+
if (originalAccount instanceof SignerlessAccount) {
|
|
61
|
+
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
62
|
+
}
|
|
63
|
+
const originalAddress = originalAccount.getCompleteAddress();
|
|
64
|
+
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
65
|
+
if (!contractInstance) {
|
|
66
|
+
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
67
|
+
}
|
|
68
|
+
const stubAccount = createStubAccount(originalAddress);
|
|
69
|
+
const instance = await getContractInstanceFromInstantiationParams(StubAccountContractArtifact, {
|
|
70
|
+
salt: Fr.random()
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
account: stubAccount,
|
|
74
|
+
instance,
|
|
75
|
+
artifact: StubAccountContractArtifact
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|