@aztec/aztec.js 0.1.0-alpha32 → 0.1.0-alpha34
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/.tsbuildinfo +1 -1
- package/dest/abis/ecdsa_account_contract.json +9 -3
- package/dest/abis/schnorr_account_contract.json +147 -0
- package/dest/abis/schnorr_single_key_account_contract.json +6 -2
- package/dest/account/account.d.ts +73 -0
- package/dest/account/account.d.ts.map +1 -0
- package/dest/account/account.js +114 -0
- package/dest/account/complete_address.d.ts +13 -0
- package/dest/account/complete_address.d.ts.map +1 -0
- package/dest/account/complete_address.js +8 -0
- package/dest/account/contract/ecdsa_account_contract.d.ts +17 -0
- package/dest/account/contract/ecdsa_account_contract.d.ts.map +1 -0
- package/dest/account/contract/ecdsa_account_contract.js +22 -0
- package/dest/account/contract/index.d.ts +24 -0
- package/dest/account/contract/index.d.ts.map +1 -0
- package/dest/account/contract/index.js +4 -0
- package/dest/account/contract/schnorr_account_contract.d.ts +17 -0
- package/dest/account/contract/schnorr_account_contract.d.ts.map +1 -0
- package/dest/account/contract/schnorr_account_contract.js +23 -0
- package/dest/account/contract/single_key_account_contract.d.ts +17 -0
- package/dest/account/contract/single_key_account_contract.d.ts.map +1 -0
- package/dest/account/contract/single_key_account_contract.js +22 -0
- package/dest/account/deploy_account_sent_tx.d.ts +28 -0
- package/dest/account/deploy_account_sent_tx.d.ts.map +1 -0
- package/dest/account/deploy_account_sent_tx.js +29 -0
- package/dest/account/entrypoint/entrypoint_collection.d.ts +26 -0
- package/dest/account/entrypoint/entrypoint_collection.d.ts.map +1 -0
- package/dest/account/entrypoint/entrypoint_collection.js +40 -0
- package/dest/{account_impl → account/entrypoint}/entrypoint_payload.d.ts +3 -2
- package/dest/account/entrypoint/entrypoint_payload.d.ts.map +1 -0
- package/dest/account/entrypoint/entrypoint_payload.js +46 -0
- package/dest/{account_impl → account/entrypoint}/index.d.ts +8 -10
- package/dest/account/entrypoint/index.d.ts.map +1 -0
- package/dest/account/entrypoint/index.js +4 -0
- package/dest/{account_impl/single_key_account_contract.d.ts → account/entrypoint/single_key_account_entrypoint.d.ts} +3 -4
- package/dest/account/entrypoint/single_key_account_entrypoint.d.ts.map +1 -0
- package/dest/account/entrypoint/single_key_account_entrypoint.js +55 -0
- package/dest/{account_impl/stored_key_account_contract.d.ts → account/entrypoint/stored_key_account_entrypoint.d.ts} +3 -4
- package/dest/account/entrypoint/stored_key_account_entrypoint.d.ts.map +1 -0
- package/dest/account/entrypoint/stored_key_account_entrypoint.js +54 -0
- package/dest/account/index.d.ts +50 -0
- package/dest/account/index.d.ts.map +1 -0
- package/dest/account/index.js +62 -0
- package/dest/aztec_rpc_client/aztec_rpc_client.d.ts.map +1 -1
- package/dest/aztec_rpc_client/aztec_rpc_client.js +3 -3
- package/dest/aztec_rpc_client/wallet.d.ts +17 -8
- package/dest/aztec_rpc_client/wallet.d.ts.map +1 -1
- package/dest/aztec_rpc_client/wallet.js +17 -6
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -2
- package/dest/main.js +1 -1
- package/dest/utils/account.d.ts +2 -2
- package/dest/utils/account.d.ts.map +1 -1
- package/dest/utils/account.js +10 -9
- package/package.json +4 -4
- package/src/abis/ecdsa_account_contract.json +9 -3
- package/src/abis/schnorr_account_contract.json +147 -0
- package/src/abis/schnorr_single_key_account_contract.json +6 -2
- package/src/account/account.ts +137 -0
- package/src/account/complete_address.ts +18 -0
- package/src/account/contract/ecdsa_account_contract.ts +28 -0
- package/src/account/contract/index.ts +26 -0
- package/src/account/contract/schnorr_account_contract.ts +29 -0
- package/src/account/contract/single_key_account_contract.ts +35 -0
- package/src/account/deploy_account_sent_tx.ts +39 -0
- package/src/account/entrypoint/entrypoint_collection.ts +51 -0
- package/src/{account_impl → account/entrypoint}/entrypoint_payload.ts +10 -6
- package/src/{account_impl → account/entrypoint}/index.ts +8 -11
- package/src/{account_impl/single_key_account_contract.ts → account/entrypoint/single_key_account_entrypoint.ts} +7 -11
- package/src/{account_impl/stored_key_account_contract.ts → account/entrypoint/stored_key_account_entrypoint.ts} +7 -11
- package/src/account/index.ts +101 -0
- package/src/aztec_rpc_client/aztec_rpc_client.ts +2 -1
- package/src/aztec_rpc_client/wallet.ts +20 -9
- package/src/index.ts +1 -1
- package/src/utils/account.ts +9 -8
- package/dest/account_impl/account_collection.d.ts +0 -18
- package/dest/account_impl/account_collection.d.ts.map +0 -1
- package/dest/account_impl/account_collection.js +0 -30
- package/dest/account_impl/entrypoint_payload.d.ts.map +0 -1
- package/dest/account_impl/entrypoint_payload.js +0 -47
- package/dest/account_impl/index.d.ts.map +0 -1
- package/dest/account_impl/index.js +0 -4
- package/dest/account_impl/single_key_account_contract.d.ts.map +0 -1
- package/dest/account_impl/single_key_account_contract.js +0 -58
- package/dest/account_impl/stored_key_account_contract.d.ts.map +0 -1
- package/dest/account_impl/stored_key_account_contract.js +0 -57
- package/src/account_impl/account_collection.ts +0 -35
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Fr, getContractDeploymentInfo } from '@aztec/circuits.js';
|
|
2
|
+
import { AccountWallet, ContractDeployer, generatePublicKey } from '../index.js';
|
|
3
|
+
import { isCompleteAddress } from './complete_address.js';
|
|
4
|
+
import { DeployAccountSentTx } from './deploy_account_sent_tx.js';
|
|
5
|
+
/**
|
|
6
|
+
* Manages a user account. Provides methods for calculating the account's address, deploying the account contract,
|
|
7
|
+
* and creating and registering the user wallet in the RPC server.
|
|
8
|
+
*/
|
|
9
|
+
export class Account {
|
|
10
|
+
constructor(rpc, encryptionPrivateKey, accountContract, saltOrAddress) {
|
|
11
|
+
this.rpc = rpc;
|
|
12
|
+
this.encryptionPrivateKey = encryptionPrivateKey;
|
|
13
|
+
this.accountContract = accountContract;
|
|
14
|
+
if (isCompleteAddress(saltOrAddress)) {
|
|
15
|
+
this.completeAddress = saltOrAddress;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.salt = saltOrAddress ? new Fr(saltOrAddress) : Fr.random();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async getEncryptionPublicKey() {
|
|
22
|
+
if (!this.encryptionPublicKey) {
|
|
23
|
+
this.encryptionPublicKey = await generatePublicKey(this.encryptionPrivateKey);
|
|
24
|
+
}
|
|
25
|
+
return this.encryptionPublicKey;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns the entrypoint for this account as defined by its account contract.
|
|
29
|
+
* @returns An entrypoint.
|
|
30
|
+
*/
|
|
31
|
+
async getEntrypoint() {
|
|
32
|
+
const nodeInfo = await this.rpc.getNodeInfo();
|
|
33
|
+
const completeAddress = await this.getCompleteAddress();
|
|
34
|
+
return this.accountContract.getEntrypoint(completeAddress, nodeInfo);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gets the calculated complete address associated with this account.
|
|
38
|
+
* Does not require the account to be deployed or registered.
|
|
39
|
+
* @returns The address, partial address, and encryption public key.
|
|
40
|
+
*/
|
|
41
|
+
async getCompleteAddress() {
|
|
42
|
+
if (!this.completeAddress) {
|
|
43
|
+
const encryptionPublicKey = await generatePublicKey(this.encryptionPrivateKey);
|
|
44
|
+
this.completeAddress = await getContractDeploymentInfo(this.accountContract.getContractAbi(), await this.accountContract.getDeploymentArgs(), this.salt, encryptionPublicKey);
|
|
45
|
+
}
|
|
46
|
+
return this.completeAddress;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns a Wallet instance associated with this account. Use it to create Contract
|
|
50
|
+
* instances to be interacted with from this account.
|
|
51
|
+
* @returns A Wallet instance.
|
|
52
|
+
*/
|
|
53
|
+
async getWallet() {
|
|
54
|
+
const entrypoint = await this.getEntrypoint();
|
|
55
|
+
return new AccountWallet(this.rpc, entrypoint, await this.getCompleteAddress());
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Registers this account in the RPC server and returns the associated wallet. Registering
|
|
59
|
+
* the account on the RPC server is required for managing private state associated with it.
|
|
60
|
+
* Use the returned wallet to create Contract instances to be interacted with from this account.
|
|
61
|
+
* @returns A Wallet instance.
|
|
62
|
+
*/
|
|
63
|
+
async register() {
|
|
64
|
+
const { address, partialAddress } = await this.getCompleteAddress();
|
|
65
|
+
await this.rpc.addAccount(this.encryptionPrivateKey, address, partialAddress);
|
|
66
|
+
return this.getWallet();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Returns the pre-populated deployment method to deploy the account contract that backs this account.
|
|
70
|
+
* Typically you will not need this method and can call `deploy` directly. Use this for having finer
|
|
71
|
+
* grained control on when to create, simulate, and send the deployment tx.
|
|
72
|
+
* @returns A DeployMethod instance that deploys this account contract.
|
|
73
|
+
*/
|
|
74
|
+
async getDeployMethod() {
|
|
75
|
+
if (!this.deployMethod) {
|
|
76
|
+
if (!this.salt)
|
|
77
|
+
throw new Error(`Cannot deploy account contract without known salt.`);
|
|
78
|
+
await this.register();
|
|
79
|
+
const encryptionPublicKey = await this.getEncryptionPublicKey();
|
|
80
|
+
const deployer = new ContractDeployer(this.accountContract.getContractAbi(), this.rpc, encryptionPublicKey);
|
|
81
|
+
const args = await this.accountContract.getDeploymentArgs();
|
|
82
|
+
this.deployMethod = deployer.deploy(...args);
|
|
83
|
+
}
|
|
84
|
+
return this.deployMethod;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Deploys the account contract that backs this account.
|
|
88
|
+
* Uses the salt provided in the constructor or a randomly generated one.
|
|
89
|
+
* Note that if the Account is constructed with an explicit complete address
|
|
90
|
+
* it is assumed that the account contract has already been deployed and this method will throw.
|
|
91
|
+
* Registers the account in the RPC server before deploying the contract.
|
|
92
|
+
* @returns A SentTx object that can be waited to get the associated Wallet.
|
|
93
|
+
*/
|
|
94
|
+
async deploy() {
|
|
95
|
+
const deployMethod = await this.getDeployMethod();
|
|
96
|
+
const wallet = await this.getWallet();
|
|
97
|
+
const sentTx = deployMethod.send({ contractAddressSalt: this.salt });
|
|
98
|
+
return new DeployAccountSentTx(wallet, sentTx.getTxHash());
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Deploys the account contract that backs this account and awaits the tx to be mined.
|
|
102
|
+
* Uses the salt provided in the constructor or a randomly generated one.
|
|
103
|
+
* Note that if the Account is constructed with an explicit complete address
|
|
104
|
+
* it is assumed that the account contract has already been deployed and this method will throw.
|
|
105
|
+
* Registers the account in the RPC server before deploying the contract.
|
|
106
|
+
* @param opts - Options to wait for the tx to be mined.
|
|
107
|
+
* @returns A Wallet instance.
|
|
108
|
+
*/
|
|
109
|
+
async waitDeploy(opts = {}) {
|
|
110
|
+
await this.deploy().then(tx => tx.wait(opts));
|
|
111
|
+
return this.getWallet();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY2NvdW50L2FjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBYSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pHLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQVFsQixZQUNVLEdBQWEsRUFDYixvQkFBZ0MsRUFDaEMsZUFBZ0MsRUFDeEMsYUFBc0M7UUFIOUIsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUNiLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBWTtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFHeEMsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQztTQUN0QzthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLHNCQUFzQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLGlCQUFpQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQy9FO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJ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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AztecAddress, PartialContractAddress, PublicKey } from '@aztec/circuits.js';
|
|
2
|
+
/** Address and preimages associated with an account. */
|
|
3
|
+
export type CompleteAddress = {
|
|
4
|
+
/** Address of an account. Derived from the partial address and public key. */
|
|
5
|
+
address: AztecAddress;
|
|
6
|
+
/** Partial address of the account. Required for deriving the address from the encryption public key. */
|
|
7
|
+
partialAddress: PartialContractAddress;
|
|
8
|
+
/** Encryption public key associated with this address. */
|
|
9
|
+
publicKey: PublicKey;
|
|
10
|
+
};
|
|
11
|
+
/** Returns whether the argument looks like a CompleteAddress. */
|
|
12
|
+
export declare function isCompleteAddress(obj: any): obj is CompleteAddress;
|
|
13
|
+
//# sourceMappingURL=complete_address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complete_address.d.ts","sourceRoot":"","sources":["../../src/account/complete_address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAErF,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG;IAC5B,8EAA8E;IAC9E,OAAO,EAAE,YAAY,CAAC;IACtB,wGAAwG;IACxG,cAAc,EAAE,sBAAsB,CAAC;IACvC,0DAA0D;IAC1D,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,eAAe,CAIlE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Returns whether the argument looks like a CompleteAddress. */
|
|
2
|
+
export function isCompleteAddress(obj) {
|
|
3
|
+
if (!obj)
|
|
4
|
+
return false;
|
|
5
|
+
const maybe = obj;
|
|
6
|
+
return !!maybe.address && !!maybe.partialAddress && !!maybe.publicKey;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGVfYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY2NvdW50L2NvbXBsZXRlX2FkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFRO0lBQ3hDLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBc0IsQ0FBQztJQUNyQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0FBQ3hFLENBQUMifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { ContractAbi } from '@aztec/foundation/abi';
|
|
3
|
+
import { NodeInfo, PrivateKey } from '@aztec/types';
|
|
4
|
+
import { CompleteAddress } from '../complete_address.js';
|
|
5
|
+
import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
|
|
6
|
+
import { AccountContract } from './index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Account contract that authenticates transactions using ECDSA signatures
|
|
9
|
+
* verified against a secp256k1 public key stored in an immutable encrypted note.
|
|
10
|
+
*/ export declare class EcdsaAccountContract implements AccountContract {
|
|
11
|
+
private signingPrivateKey;
|
|
12
|
+
constructor(signingPrivateKey: PrivateKey);
|
|
13
|
+
getDeploymentArgs(): Promise<Buffer[]>;
|
|
14
|
+
getEntrypoint({ address }: CompleteAddress, { chainId, version }: NodeInfo): Promise<StoredKeyAccountEntrypoint>;
|
|
15
|
+
getContractAbi(): ContractAbi;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ecdsa_account_contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecdsa_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/ecdsa_account_contract.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG,CAAC,qBAAa,oBAAqB,YAAW,eAAe;IAClD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,UAAU;IAEpC,iBAAiB;IAKjB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAIhF,cAAc,IAAI,WAAW;CAGrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Ecdsa } from '@aztec/circuits.js/barretenberg';
|
|
2
|
+
import EcdsaAccountContractAbi from '../../abis/ecdsa_account_contract.json' assert { type: 'json' };
|
|
3
|
+
import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
|
|
4
|
+
/**
|
|
5
|
+
* Account contract that authenticates transactions using ECDSA signatures
|
|
6
|
+
* verified against a secp256k1 public key stored in an immutable encrypted note.
|
|
7
|
+
*/ export class EcdsaAccountContract {
|
|
8
|
+
constructor(signingPrivateKey) {
|
|
9
|
+
this.signingPrivateKey = signingPrivateKey;
|
|
10
|
+
}
|
|
11
|
+
async getDeploymentArgs() {
|
|
12
|
+
const signingPublicKey = await Ecdsa.new().then(e => e.computePublicKey(this.signingPrivateKey));
|
|
13
|
+
return [signingPublicKey.subarray(0, 32), signingPublicKey.subarray(32, 64)];
|
|
14
|
+
}
|
|
15
|
+
async getEntrypoint({ address }, { chainId, version }) {
|
|
16
|
+
return new StoredKeyAccountEntrypoint(address, this.signingPrivateKey, await Ecdsa.new(), chainId, version);
|
|
17
|
+
}
|
|
18
|
+
getContractAbi() {
|
|
19
|
+
return EcdsaAccountContractAbi;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FfYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY2NvdW50L2NvbnRyYWN0L2VjZHNhX2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXhELE9BQU8sdUJBQXVCLE1BQU0sd0NBQXdDLENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFFckcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHNUY7OztHQUdHLENBQUMsTUFBTSxPQUFPLG9CQUFvQjtJQUNuQyxZQUFvQixpQkFBNkI7UUFBN0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFZO0lBQUcsQ0FBQztJQUU5QyxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDakcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBWTtRQUNyRixPQUFPLElBQUksMEJBQTBCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyx1QkFBc0MsQ0FBQztJQUNoRCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ContractAbi } from '@aztec/foundation/abi';
|
|
2
|
+
import { NodeInfo } from '@aztec/types';
|
|
3
|
+
import { Entrypoint } from '../index.js';
|
|
4
|
+
import { CompleteAddress } from './../complete_address.js';
|
|
5
|
+
export * from './ecdsa_account_contract.js';
|
|
6
|
+
export * from './schnorr_account_contract.js';
|
|
7
|
+
export * from './single_key_account_contract.js';
|
|
8
|
+
/**
|
|
9
|
+
* An account contract instance. Knows its ABI, deployment arguments, and to create transaction execution
|
|
10
|
+
* requests out of function calls through an entrypoint.
|
|
11
|
+
*/
|
|
12
|
+
export interface AccountContract {
|
|
13
|
+
/** Returns the ABI of this account contract. */
|
|
14
|
+
getContractAbi(): ContractAbi;
|
|
15
|
+
/** Returns the deployment arguments for this instance. */
|
|
16
|
+
getDeploymentArgs(): Promise<any[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Creates an entrypoint for creating transaction execution requests for this account contract.
|
|
19
|
+
* @param address - Complete address of the deployed account contract.
|
|
20
|
+
* @param nodeInfo - Chain id and protocol version where the account contract is deployed.
|
|
21
|
+
*/
|
|
22
|
+
getEntrypoint(address: CompleteAddress, nodeInfo: NodeInfo): Promise<Entrypoint>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,cAAc,IAAI,WAAW,CAAC;IAC9B,0DAA0D;IAC1D,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAClF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './ecdsa_account_contract.js';
|
|
2
|
+
export * from './schnorr_account_contract.js';
|
|
3
|
+
export * from './single_key_account_contract.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9jb250cmFjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ContractAbi } from '@aztec/foundation/abi';
|
|
2
|
+
import { NodeInfo, PrivateKey } from '@aztec/types';
|
|
3
|
+
import { CompleteAddress } from '../complete_address.js';
|
|
4
|
+
import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
|
|
5
|
+
import { AccountContract } from './index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Account contract that authenticates transactions using Schnorr signatures
|
|
8
|
+
* verified against a Grumpkin public key stored in an immutable encrypted note.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SchnorrAccountContract implements AccountContract {
|
|
11
|
+
private signingPrivateKey;
|
|
12
|
+
constructor(signingPrivateKey: PrivateKey);
|
|
13
|
+
getDeploymentArgs(): Promise<import("@aztec/circuits.js").Fr[]>;
|
|
14
|
+
getEntrypoint({ address }: CompleteAddress, { chainId, version }: NodeInfo): Promise<StoredKeyAccountEntrypoint>;
|
|
15
|
+
getContractAbi(): ContractAbi;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=schnorr_account_contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schnorr_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/schnorr_account_contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,UAAU;IAEpC,iBAAiB;IAKjB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAIhF,cAAc,IAAI,WAAW;CAGrC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Schnorr } from '@aztec/circuits.js/barretenberg';
|
|
2
|
+
import SchnorrAccountContractAbi from '../../abis/schnorr_account_contract.json' assert { type: 'json' };
|
|
3
|
+
import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
|
|
4
|
+
/**
|
|
5
|
+
* Account contract that authenticates transactions using Schnorr signatures
|
|
6
|
+
* verified against a Grumpkin public key stored in an immutable encrypted note.
|
|
7
|
+
*/
|
|
8
|
+
export class SchnorrAccountContract {
|
|
9
|
+
constructor(signingPrivateKey) {
|
|
10
|
+
this.signingPrivateKey = signingPrivateKey;
|
|
11
|
+
}
|
|
12
|
+
async getDeploymentArgs() {
|
|
13
|
+
const signingPublicKey = await Schnorr.new().then(e => e.computePublicKey(this.signingPrivateKey));
|
|
14
|
+
return [signingPublicKey.x, signingPublicKey.y];
|
|
15
|
+
}
|
|
16
|
+
async getEntrypoint({ address }, { chainId, version }) {
|
|
17
|
+
return new StoredKeyAccountEntrypoint(address, this.signingPrivateKey, await Schnorr.new(), chainId, version);
|
|
18
|
+
}
|
|
19
|
+
getContractAbi() {
|
|
20
|
+
return SchnorrAccountContractAbi;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkxRCxPQUFPLHlCQUF5QixNQUFNLDBDQUEwQyxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRXpHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRzVGOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsaUJBQTZCO1FBQTdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBWTtJQUFHLENBQUM7SUFFOUMsS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ25HLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFZO1FBQ3JGLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLHlCQUF3QyxDQUFDO0lBQ2xELENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ContractAbi } from '@aztec/foundation/abi';
|
|
2
|
+
import { NodeInfo, PrivateKey } from '@aztec/types';
|
|
3
|
+
import { CompleteAddress } from '../complete_address.js';
|
|
4
|
+
import { SingleKeyAccountEntrypoint } from '../entrypoint/single_key_account_entrypoint.js';
|
|
5
|
+
import { AccountContract } from './index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Account contract that authenticates transactions using Schnorr signatures verified against
|
|
8
|
+
* the note encryption key, relying on a single private key for both encryption and authentication.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SingleKeyAccountContract implements AccountContract {
|
|
11
|
+
private encryptionPrivateKey;
|
|
12
|
+
constructor(encryptionPrivateKey: PrivateKey);
|
|
13
|
+
getDeploymentArgs(): Promise<never[]>;
|
|
14
|
+
getEntrypoint({ address, partialAddress }: CompleteAddress, { chainId, version }: NodeInfo): Promise<SingleKeyAccountEntrypoint>;
|
|
15
|
+
getContractAbi(): ContractAbi;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=single_key_account_contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single_key_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/single_key_account_contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAClD,OAAO,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,UAAU;IAE7C,iBAAiB;IAIX,aAAa,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAWhG,cAAc,IAAI,WAAW;CAGrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Schnorr } from '@aztec/circuits.js/barretenberg';
|
|
2
|
+
import SchnorrSingleKeyAccountContractAbi from '../../abis/schnorr_single_key_account_contract.json' assert { type: 'json' };
|
|
3
|
+
import { SingleKeyAccountEntrypoint } from '../entrypoint/single_key_account_entrypoint.js';
|
|
4
|
+
/**
|
|
5
|
+
* Account contract that authenticates transactions using Schnorr signatures verified against
|
|
6
|
+
* the note encryption key, relying on a single private key for both encryption and authentication.
|
|
7
|
+
*/
|
|
8
|
+
export class SingleKeyAccountContract {
|
|
9
|
+
constructor(encryptionPrivateKey) {
|
|
10
|
+
this.encryptionPrivateKey = encryptionPrivateKey;
|
|
11
|
+
}
|
|
12
|
+
getDeploymentArgs() {
|
|
13
|
+
return Promise.resolve([]);
|
|
14
|
+
}
|
|
15
|
+
async getEntrypoint({ address, partialAddress }, { chainId, version }) {
|
|
16
|
+
return new SingleKeyAccountEntrypoint(address, partialAddress, this.encryptionPrivateKey, await Schnorr.new(), chainId, version);
|
|
17
|
+
}
|
|
18
|
+
getContractAbi() {
|
|
19
|
+
return SchnorrSingleKeyAccountContractAbi;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkxRCxPQUFPLGtDQUFrQyxNQUFNLHFEQUFxRCxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRTdILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRzVGOzs7R0FHRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFBb0Isb0JBQWdDO1FBQWhDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBWTtJQUFHLENBQUM7SUFFakQsaUJBQWlCO1FBQ3RCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFZO1FBQ3JHLE9BQU8sSUFBSSwwQkFBMEIsQ0FDbkMsT0FBTyxFQUNQLGNBQWMsRUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUNuQixPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLGtDQUFpRCxDQUFDO0lBQzNELENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FieldsOf } from '@aztec/circuits.js';
|
|
2
|
+
import { TxHash, TxReceipt } from '@aztec/types';
|
|
3
|
+
import { SentTx, WaitOpts, Wallet } from '../index.js';
|
|
4
|
+
/** Extends a transaction receipt with a wallet instance for the newly deployed contract. */
|
|
5
|
+
export type DeployAccountTxReceipt = FieldsOf<TxReceipt> & {
|
|
6
|
+
/** Wallet that corresponds to the newly deployed account contract. */
|
|
7
|
+
wallet: Wallet;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* A deployment transaction for an account contract sent to the network, extending SentTx with methods to get the resulting wallet.
|
|
11
|
+
*/
|
|
12
|
+
export declare class DeployAccountSentTx extends SentTx {
|
|
13
|
+
private wallet;
|
|
14
|
+
constructor(wallet: Wallet, txHashPromise: Promise<TxHash>);
|
|
15
|
+
/**
|
|
16
|
+
* Awaits for the tx to be mined and returns the contract instance. Throws if tx is not mined.
|
|
17
|
+
* @param opts - Options for configuring the waiting for the tx to be mined.
|
|
18
|
+
* @returns The deployed contract instance.
|
|
19
|
+
*/
|
|
20
|
+
getWallet(opts?: WaitOpts): Promise<Wallet>;
|
|
21
|
+
/**
|
|
22
|
+
* Awaits for the tx to be mined and returns the receipt along with a wallet instance. Throws if tx is not mined.
|
|
23
|
+
* @param opts - Options for configuring the waiting for the tx to be mined.
|
|
24
|
+
* @returns The transaction receipt with the wallet for the deployed account contract.
|
|
25
|
+
*/
|
|
26
|
+
wait(opts?: WaitOpts): Promise<DeployAccountTxReceipt>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=deploy_account_sent_tx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy_account_sent_tx.d.ts","sourceRoot":"","sources":["../../src/account/deploy_account_sent_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEvD,4FAA4F;AAC5F,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG;IACzD,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,MAAM;IACjC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC;IAIlE;;;;OAIG;IACU,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAKxD;;;;OAIG;IACU,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAIpE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SentTx } from '../index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A deployment transaction for an account contract sent to the network, extending SentTx with methods to get the resulting wallet.
|
|
4
|
+
*/
|
|
5
|
+
export class DeployAccountSentTx extends SentTx {
|
|
6
|
+
constructor(wallet, txHashPromise) {
|
|
7
|
+
super(wallet, txHashPromise);
|
|
8
|
+
this.wallet = wallet;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Awaits for the tx to be mined and returns the contract instance. Throws if tx is not mined.
|
|
12
|
+
* @param opts - Options for configuring the waiting for the tx to be mined.
|
|
13
|
+
* @returns The deployed contract instance.
|
|
14
|
+
*/
|
|
15
|
+
async getWallet(opts) {
|
|
16
|
+
const receipt = await this.wait(opts);
|
|
17
|
+
return receipt.wallet;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Awaits for the tx to be mined and returns the receipt along with a wallet instance. Throws if tx is not mined.
|
|
21
|
+
* @param opts - Options for configuring the waiting for the tx to be mined.
|
|
22
|
+
* @returns The transaction receipt with the wallet for the deployed account contract.
|
|
23
|
+
*/
|
|
24
|
+
async wait(opts) {
|
|
25
|
+
const receipt = await super.wait(opts);
|
|
26
|
+
return { ...receipt, wallet: this.wallet };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2FjY291bnRfc2VudF90eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY2NvdW50L2RlcGxveV9hY2NvdW50X3NlbnRfdHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFRdkQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsTUFBTTtJQUM3QyxZQUFvQixNQUFjLEVBQUUsYUFBOEI7UUFDaEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQURYLFdBQU0sR0FBTixNQUFNLENBQVE7SUFFbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQWU7UUFDcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBZTtRQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0MsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AztecAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { FunctionCall, TxExecutionRequest } from '@aztec/types';
|
|
3
|
+
import { Account } from '../account.js';
|
|
4
|
+
import { CreateTxRequestOpts, Entrypoint } from './index.js';
|
|
5
|
+
/**
|
|
6
|
+
* An entrypoint that groups together multiple concrete entrypoints.
|
|
7
|
+
* Delegates to the registered entrypoints based on the requested origin.
|
|
8
|
+
*/
|
|
9
|
+
export declare class EntrypointCollection implements Entrypoint {
|
|
10
|
+
private entrypoints;
|
|
11
|
+
constructor(entrypoints?: [AztecAddress, Entrypoint][]);
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new instance out of a set of Accounts.
|
|
14
|
+
* @param accounts - Accounts to register in this entrypoint.
|
|
15
|
+
* @returns A new instance.
|
|
16
|
+
*/
|
|
17
|
+
static fromAccounts(accounts: Account[]): Promise<EntrypointCollection>;
|
|
18
|
+
/**
|
|
19
|
+
* Registers an entrypoint against an aztec address
|
|
20
|
+
* @param addr - The aztec address agianst which to register the implementation.
|
|
21
|
+
* @param impl - The entrypoint to be registered.
|
|
22
|
+
*/
|
|
23
|
+
registerAccount(addr: AztecAddress, impl: Entrypoint): void;
|
|
24
|
+
createTxExecutionRequest(executions: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=entrypoint_collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoint_collection.d.ts","sourceRoot":"","sources":["../../../src/account/entrypoint/entrypoint_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,WAAW,CAAsC;gBAE7C,WAAW,GAAE,CAAC,YAAY,EAAE,UAAU,CAAC,EAAO;IAM1D;;;;OAIG;WACU,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE;IAQ7C;;;;OAIG;IACI,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU;IAIpD,wBAAwB,CAC7B,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;CAM/B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An entrypoint that groups together multiple concrete entrypoints.
|
|
3
|
+
* Delegates to the registered entrypoints based on the requested origin.
|
|
4
|
+
*/
|
|
5
|
+
export class EntrypointCollection {
|
|
6
|
+
constructor(entrypoints = []) {
|
|
7
|
+
this.entrypoints = new Map();
|
|
8
|
+
for (const [key, value] of entrypoints) {
|
|
9
|
+
this.registerAccount(key, value);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new instance out of a set of Accounts.
|
|
14
|
+
* @param accounts - Accounts to register in this entrypoint.
|
|
15
|
+
* @returns A new instance.
|
|
16
|
+
*/
|
|
17
|
+
static async fromAccounts(accounts) {
|
|
18
|
+
const collection = new EntrypointCollection();
|
|
19
|
+
for (const account of accounts) {
|
|
20
|
+
collection.registerAccount((await account.getCompleteAddress()).address, await account.getEntrypoint());
|
|
21
|
+
}
|
|
22
|
+
return collection;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Registers an entrypoint against an aztec address
|
|
26
|
+
* @param addr - The aztec address agianst which to register the implementation.
|
|
27
|
+
* @param impl - The entrypoint to be registered.
|
|
28
|
+
*/
|
|
29
|
+
registerAccount(addr, impl) {
|
|
30
|
+
this.entrypoints.set(addr.toString(), impl);
|
|
31
|
+
}
|
|
32
|
+
createTxExecutionRequest(executions, opts = {}) {
|
|
33
|
+
const defaultAccount = this.entrypoints.values().next().value;
|
|
34
|
+
const impl = opts.origin ? this.entrypoints.get(opts.origin.toString()) : defaultAccount;
|
|
35
|
+
if (!impl)
|
|
36
|
+
throw new Error(`No entrypoint registered for ${opts.origin}`);
|
|
37
|
+
return impl.createTxExecutionRequest(executions, opts);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludF9jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvZW50cnlwb2ludC9lbnRyeXBvaW50X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFZLGNBQTRDLEVBQUU7UUFGbEQsZ0JBQVcsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUd2RCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksV0FBVyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFtQjtRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUN6RztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLElBQWtCLEVBQUUsSUFBZ0I7UUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSx3QkFBd0IsQ0FDN0IsVUFBMEIsRUFDMUIsT0FBNEIsRUFBRTtRQUU5QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQW1CLENBQUM7UUFDNUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDekYsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { Fr } from '@aztec/circuits.js';
|
|
3
|
+
import { IWasmModule } from '@aztec/foundation/wasm';
|
|
3
4
|
import { FunctionCall, PackedArguments } from '@aztec/types';
|
|
4
5
|
/** Encoded payload for the account contract entrypoint */
|
|
5
6
|
export type EntrypointPayload = {
|
|
@@ -19,8 +20,8 @@ export declare function buildPayload(privateCalls: FunctionCall[], publicCalls:
|
|
|
19
20
|
/** The packed arguments of functions called */
|
|
20
21
|
packedArguments: PackedArguments[];
|
|
21
22
|
}>;
|
|
22
|
-
/**
|
|
23
|
-
export declare function hashPayload(payload: EntrypointPayload): Buffer;
|
|
23
|
+
/** Compresses an entrypoint payload to a 32-byte buffer (useful for signing) */
|
|
24
|
+
export declare function hashPayload(payload: EntrypointPayload, wasm: IWasmModule): Buffer;
|
|
24
25
|
/** Flattens an entrypoint payload */
|
|
25
26
|
export declare function flattenPayload(payload: EntrypointPayload): Fr[];
|
|
26
27
|
//# sourceMappingURL=entrypoint_payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoint_payload.d.ts","sourceRoot":"","sources":["../../../src/account/entrypoint/entrypoint_payload.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgB,EAAE,EAAkB,MAAM,oBAAoB,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAMhF,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAE9B,4CAA4C;IAC5C,qBAAqB,EAAE,EAAE,EAAE,CAAC;IAE5B,4CAA4C;IAC5C,mBAAmB,EAAE,EAAE,EAAE,CAAC;IAE1B,mDAAmD;IACnD,iBAAiB,EAAE,EAAE,EAAE,CAAC;IACxB,oCAAoC;IACpC,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AAEF,sFAAsF;AACtF,wBAAsB,YAAY,CAChC,YAAY,EAAE,YAAY,EAAE,EAC5B,WAAW,EAAE,YAAY,EAAE,GAC1B,OAAO,CAAC;IACT,8CAA8C;IAC9C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,+CAA+C;IAC/C,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC,CAAC,CA2BD;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,UAMxE;AAED,qCAAqC;AACrC,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,QAOxD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CircuitsWasm, Fr, GeneratorIndex } from '@aztec/circuits.js';
|
|
2
|
+
import { pedersenPlookupCompressWithHashIndex } from '@aztec/circuits.js/barretenberg';
|
|
3
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
|
+
import { PackedArguments, emptyFunctionCall } from '@aztec/types';
|
|
5
|
+
// These must match the values defined in yarn-project/noir-libs/noir-aztec/src/entrypoint.nr
|
|
6
|
+
const ACCOUNT_MAX_PRIVATE_CALLS = 2;
|
|
7
|
+
const ACCOUNT_MAX_PUBLIC_CALLS = 2;
|
|
8
|
+
/** Assembles an entrypoint payload from a set of private and public function calls */
|
|
9
|
+
export async function buildPayload(privateCalls, publicCalls) {
|
|
10
|
+
const nonce = Fr.random();
|
|
11
|
+
const calls = [
|
|
12
|
+
...padArrayEnd(privateCalls, emptyFunctionCall(), ACCOUNT_MAX_PRIVATE_CALLS),
|
|
13
|
+
...padArrayEnd(publicCalls, emptyFunctionCall(), ACCOUNT_MAX_PUBLIC_CALLS),
|
|
14
|
+
];
|
|
15
|
+
const packedArguments = [];
|
|
16
|
+
const wasm = await CircuitsWasm.get();
|
|
17
|
+
for (const call of calls) {
|
|
18
|
+
packedArguments.push(await PackedArguments.fromArgs(call.args, wasm));
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
payload: {
|
|
22
|
+
// eslint-disable-next-line camelcase
|
|
23
|
+
flattened_args_hashes: packedArguments.map(args => args.hash),
|
|
24
|
+
// eslint-disable-next-line camelcase
|
|
25
|
+
flattened_selectors: calls.map(call => Fr.fromBuffer(call.functionData.functionSelectorBuffer)),
|
|
26
|
+
// eslint-disable-next-line camelcase
|
|
27
|
+
flattened_targets: calls.map(call => call.to.toField()),
|
|
28
|
+
nonce,
|
|
29
|
+
},
|
|
30
|
+
packedArguments,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Compresses an entrypoint payload to a 32-byte buffer (useful for signing) */
|
|
34
|
+
export function hashPayload(payload, wasm) {
|
|
35
|
+
return pedersenPlookupCompressWithHashIndex(wasm, flattenPayload(payload).map(fr => fr.toBuffer()), GeneratorIndex.SIGNATURE_PAYLOAD);
|
|
36
|
+
}
|
|
37
|
+
/** Flattens an entrypoint payload */
|
|
38
|
+
export function flattenPayload(payload) {
|
|
39
|
+
return [
|
|
40
|
+
...payload.flattened_args_hashes,
|
|
41
|
+
...payload.flattened_selectors,
|
|
42
|
+
...payload.flattened_targets,
|
|
43
|
+
payload.nonce,
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludF9wYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvZW50cnlwb2ludC9lbnRyeXBvaW50X3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhGLDZGQUE2RjtBQUM3RixNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQWlCbkMsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxZQUE0QixFQUM1QixXQUEyQjtJQU8zQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFMUIsTUFBTSxLQUFLLEdBQUc7UUFDWixHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSx5QkFBeUIsQ0FBQztRQUM1RSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSx3QkFBd0IsQ0FBQztLQUMzRSxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRXRDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUN2RTtJQUVELE9BQU87UUFDTCxPQUFPLEVBQUU7WUFDUCxxQ0FBcUM7WUFDckMscUJBQXFCLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDN0QscUNBQXFDO1lBQ3JDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMvRixxQ0FBcUM7WUFDckMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkQsS0FBSztTQUNOO1FBQ0QsZUFBZTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVELGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQTBCLEVBQUUsSUFBaUI7SUFDdkUsT0FBTyxvQ0FBb0MsQ0FDekMsSUFBSSxFQUNKLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDaEQsY0FBYyxDQUFDLGlCQUFpQixDQUNqQyxDQUFDO0FBQ0osQ0FBQztBQUVELHFDQUFxQztBQUNyQyxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQTBCO0lBQ3ZELE9BQU87UUFDTCxHQUFHLE9BQU8sQ0FBQyxxQkFBcUI7UUFDaEMsR0FBRyxPQUFPLENBQUMsbUJBQW1CO1FBQzlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQjtRQUM1QixPQUFPLENBQUMsS0FBSztLQUNkLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/circuits.js';
|
|
2
2
|
import { FunctionCall, TxExecutionRequest } from '@aztec/types';
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
3
|
+
export * from './entrypoint_collection.js';
|
|
4
|
+
export * from './single_key_account_entrypoint.js';
|
|
5
|
+
export * from './stored_key_account_entrypoint.js';
|
|
6
6
|
/** Options for creating a tx request out of a set of function calls. */
|
|
7
7
|
export type CreateTxRequestOpts = {
|
|
8
8
|
/** Origin of the tx. Needs to be an address managed by this account. */
|
|
9
9
|
origin?: AztecAddress;
|
|
10
10
|
};
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
getAddress(): AztecAddress;
|
|
11
|
+
/**
|
|
12
|
+
* Represents a transaction entrypoint in an account contract.
|
|
13
|
+
* Knows how to assemble a transaction execution request given a set of function calls.
|
|
14
|
+
*/
|
|
15
|
+
export interface Entrypoint {
|
|
18
16
|
/**
|
|
19
17
|
* Generates an authenticated request out of set of intents
|
|
20
18
|
* @param executions - The execution intents to be run.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/entrypoint/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AAEnD,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAAG;IAChC,wEAAwE;IACxE,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC/G"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './entrypoint_collection.js';
|
|
2
|
+
export * from './single_key_account_entrypoint.js';
|
|
3
|
+
export * from './stored_key_account_entrypoint.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9lbnRyeXBvaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDIn0=
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { AztecAddress, PartialContractAddress, PrivateKey } from '@aztec/circuits.js';
|
|
2
2
|
import { Signer } from '@aztec/circuits.js/barretenberg';
|
|
3
3
|
import { FunctionCall, TxExecutionRequest } from '@aztec/types';
|
|
4
|
-
import {
|
|
4
|
+
import { CreateTxRequestOpts, Entrypoint } from './index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Account contract implementation that uses a single key for signing and encryption. This public key is not
|
|
7
7
|
* stored in the contract, but rather verified against the contract address. Note that this approach is not
|
|
8
8
|
* secure and should not be used in real use cases.
|
|
9
9
|
*/
|
|
10
|
-
export declare class
|
|
10
|
+
export declare class SingleKeyAccountEntrypoint implements Entrypoint {
|
|
11
11
|
private address;
|
|
12
12
|
private partialContractAddress;
|
|
13
13
|
private privateKey;
|
|
@@ -15,8 +15,7 @@ export declare class SingleKeyAccountContract implements AccountImplementation {
|
|
|
15
15
|
private chainId;
|
|
16
16
|
private version;
|
|
17
17
|
constructor(address: AztecAddress, partialContractAddress: PartialContractAddress, privateKey: PrivateKey, signer: Signer, chainId?: number, version?: number);
|
|
18
|
-
getAddress(): AztecAddress;
|
|
19
18
|
createTxExecutionRequest(executions: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
20
19
|
private getEntrypointAbi;
|
|
21
20
|
}
|
|
22
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=single_key_account_entrypoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single_key_account_entrypoint.d.ts","sourceRoot":"","sources":["../../../src/account/entrypoint/single_key_account_entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,sBAAsB,EACtB,UAAU,EAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAmB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQjF,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,0BAA2B,YAAW,UAAU;IAEzD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;gBALP,OAAO,EAAE,YAAY,EACrB,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAyB,EAClC,OAAO,GAAE,MAAwB;IAGrC,wBAAwB,CAC5B,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IA0B9B,OAAO,CAAC,gBAAgB;CAQzB"}
|