@aztec/aztec.js 0.1.0-alpha31 → 0.1.0-alpha33
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_multi_key_account_contract.json +147 -0
- package/dest/abis/schnorr_single_key_account_contract.json +6 -2
- package/dest/account/account.d.ts +60 -0
- package/dest/account/account.d.ts.map +1 -0
- package/dest/account/account.js +92 -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 +18 -0
- package/dest/account/entrypoint/entrypoint_collection.d.ts.map +1 -0
- package/dest/account/entrypoint/entrypoint_collection.js +25 -0
- package/dest/account/entrypoint/entrypoint_payload.d.ts.map +1 -0
- package/dest/account/entrypoint/entrypoint_payload.js +47 -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 +34 -0
- package/dest/account/index.d.ts.map +1 -0
- package/dest/account/index.js +37 -0
- package/dest/aztec_rpc_client/wallet.d.ts +4 -6
- package/dest/aztec_rpc_client/wallet.d.ts.map +1 -1
- package/dest/aztec_rpc_client/wallet.js +1 -4
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -4
- package/dest/main.js +1 -1
- package/dest/utils/account.d.ts.map +1 -1
- package/dest/utils/account.js +7 -6
- package/package.json +4 -4
- package/src/abis/ecdsa_account_contract.json +9 -3
- package/src/abis/schnorr_multi_key_account_contract.json +147 -0
- package/src/abis/schnorr_single_key_account_contract.json +6 -2
- package/src/account/account.ts +112 -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 +31 -0
- 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} +5 -9
- package/src/{account_impl/stored_key_account_contract.ts → account/entrypoint/stored_key_account_entrypoint.ts} +4 -8
- package/src/account/index.ts +67 -0
- package/src/aztec_rpc_client/wallet.ts +3 -7
- package/src/index.ts +1 -4
- package/src/utils/account.ts +6 -5
- 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
- /package/dest/{account_impl → account/entrypoint}/entrypoint_payload.d.ts +0 -0
- /package/src/{account_impl → account/entrypoint}/entrypoint_payload.ts +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Fr } from '@aztec/circuits.js';
|
|
2
|
+
import { AztecRPC, PrivateKey } from '@aztec/types';
|
|
3
|
+
import { WaitOpts, Wallet } from '../index.js';
|
|
4
|
+
import { CompleteAddress } from './complete_address.js';
|
|
5
|
+
import { DeployAccountSentTx } from './deploy_account_sent_tx.js';
|
|
6
|
+
import { AccountContract, Salt } from './index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Manages a user account. Provides methods for calculating the account's address, deploying the account contract,
|
|
9
|
+
* and creating and registering the user wallet in the RPC server.
|
|
10
|
+
*/
|
|
11
|
+
export declare class Account {
|
|
12
|
+
private rpc;
|
|
13
|
+
private encryptionPrivateKey;
|
|
14
|
+
private accountContract;
|
|
15
|
+
/** Deployment salt for the account contract. */
|
|
16
|
+
readonly salt?: Fr;
|
|
17
|
+
private completeAddress?;
|
|
18
|
+
private encryptionPublicKey?;
|
|
19
|
+
constructor(rpc: AztecRPC, encryptionPrivateKey: PrivateKey, accountContract: AccountContract, saltOrAddress?: Salt | CompleteAddress);
|
|
20
|
+
protected getEncryptionPublicKey(): Promise<import("@aztec/circuits.js").Point>;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the calculated complete address associated with this account.
|
|
23
|
+
* Does not require the account to be deployed or registered.
|
|
24
|
+
* @returns The address, partial address, and encryption public key.
|
|
25
|
+
*/
|
|
26
|
+
getCompleteAddress(): Promise<CompleteAddress>;
|
|
27
|
+
/**
|
|
28
|
+
* Returns a Wallet instance associated with this account. Use it to create Contract
|
|
29
|
+
* instances to be interacted with from this account.
|
|
30
|
+
* @returns A Wallet instance.
|
|
31
|
+
*/
|
|
32
|
+
getWallet(): Promise<Wallet>;
|
|
33
|
+
/**
|
|
34
|
+
* Registers this account in the RPC server and returns the associated wallet. Registering
|
|
35
|
+
* the account on the RPC server is required for managing private state associated with it.
|
|
36
|
+
* Use the returned wallet to create Contract instances to be interacted with from this account.
|
|
37
|
+
* @returns A Wallet instance.
|
|
38
|
+
*/
|
|
39
|
+
register(): Promise<Wallet>;
|
|
40
|
+
/**
|
|
41
|
+
* Deploys the account contract that backs this account.
|
|
42
|
+
* Uses the salt provided in the constructor or a randomly generated one.
|
|
43
|
+
* Note that if the Account is constructed with an explicit complete address
|
|
44
|
+
* it is assumed that the account contract has already been deployed and this method will throw.
|
|
45
|
+
* Registers the account in the RPC server before deploying the contract.
|
|
46
|
+
* @returns A SentTx object that can be waited to get the associated Wallet.
|
|
47
|
+
*/
|
|
48
|
+
deploy(): Promise<DeployAccountSentTx>;
|
|
49
|
+
/**
|
|
50
|
+
* Deploys the account contract that backs this account and awaits the tx to be mined.
|
|
51
|
+
* Uses the salt provided in the constructor or a randomly generated one.
|
|
52
|
+
* Note that if the Account is constructed with an explicit complete address
|
|
53
|
+
* it is assumed that the account contract has already been deployed and this method will throw.
|
|
54
|
+
* Registers the account in the RPC server before deploying the contract.
|
|
55
|
+
* @param opts - Options to wait for the tx to be mined.
|
|
56
|
+
* @returns A Wallet instance.
|
|
57
|
+
*/
|
|
58
|
+
waitDeploy(opts: WaitOpts): Promise<Wallet>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/account/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAwC,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAmC,QAAQ,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,eAAe,EAAqB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEnD;;;GAGG;AACH,qBAAa,OAAO;IAQhB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,eAAe;IATzB,gDAAgD;IAChD,SAAgB,IAAI,CAAC,EAAE,EAAE,CAAC;IAE1B,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,mBAAmB,CAAC,CAAY;gBAG9B,GAAG,EAAE,QAAQ,EACb,oBAAoB,EAAE,UAAU,EAChC,eAAe,EAAE,eAAe,EACxC,aAAa,CAAC,EAAE,IAAI,GAAG,eAAe;cASxB,sBAAsB;IAOtC;;;;OAIG;IACU,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAa3D;;;;OAIG;IACU,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOzC;;;;;OAKG;IACU,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAMxC;;;;;;;OAOG;IACU,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUnD;;;;;;;;OAQG;IACU,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAGzD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
* Gets the calculated complete address associated with this account.
|
|
29
|
+
* Does not require the account to be deployed or registered.
|
|
30
|
+
* @returns The address, partial address, and encryption public key.
|
|
31
|
+
*/
|
|
32
|
+
async getCompleteAddress() {
|
|
33
|
+
if (!this.completeAddress) {
|
|
34
|
+
const encryptionPublicKey = await generatePublicKey(this.encryptionPrivateKey);
|
|
35
|
+
this.completeAddress = await getContractDeploymentInfo(this.accountContract.getContractAbi(), await this.accountContract.getDeploymentArgs(), this.salt, encryptionPublicKey);
|
|
36
|
+
}
|
|
37
|
+
return this.completeAddress;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns a Wallet instance associated with this account. Use it to create Contract
|
|
41
|
+
* instances to be interacted with from this account.
|
|
42
|
+
* @returns A Wallet instance.
|
|
43
|
+
*/
|
|
44
|
+
async getWallet() {
|
|
45
|
+
const nodeInfo = await this.rpc.getNodeInfo();
|
|
46
|
+
const completeAddress = await this.getCompleteAddress();
|
|
47
|
+
const account = await this.accountContract.getEntrypoint(completeAddress, nodeInfo);
|
|
48
|
+
return new AccountWallet(this.rpc, account);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Registers this account in the RPC server and returns the associated wallet. Registering
|
|
52
|
+
* the account on the RPC server is required for managing private state associated with it.
|
|
53
|
+
* Use the returned wallet to create Contract instances to be interacted with from this account.
|
|
54
|
+
* @returns A Wallet instance.
|
|
55
|
+
*/
|
|
56
|
+
async register() {
|
|
57
|
+
const { address, partialAddress } = await this.getCompleteAddress();
|
|
58
|
+
await this.rpc.addAccount(this.encryptionPrivateKey, address, partialAddress);
|
|
59
|
+
return this.getWallet();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Deploys the account contract that backs this account.
|
|
63
|
+
* Uses the salt provided in the constructor or a randomly generated one.
|
|
64
|
+
* Note that if the Account is constructed with an explicit complete address
|
|
65
|
+
* it is assumed that the account contract has already been deployed and this method will throw.
|
|
66
|
+
* Registers the account in the RPC server before deploying the contract.
|
|
67
|
+
* @returns A SentTx object that can be waited to get the associated Wallet.
|
|
68
|
+
*/
|
|
69
|
+
async deploy() {
|
|
70
|
+
if (!this.salt)
|
|
71
|
+
throw new Error(`Cannot deploy account contract without known salt.`);
|
|
72
|
+
const wallet = await this.register();
|
|
73
|
+
const encryptionPublicKey = await this.getEncryptionPublicKey();
|
|
74
|
+
const deployer = new ContractDeployer(this.accountContract.getContractAbi(), this.rpc, encryptionPublicKey);
|
|
75
|
+
const args = await this.accountContract.getDeploymentArgs();
|
|
76
|
+
const sentTx = deployer.deploy(...args).send({ contractAddressSalt: this.salt });
|
|
77
|
+
return new DeployAccountSentTx(wallet, sentTx.getTxHash());
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Deploys the account contract that backs this account and awaits the tx to be mined.
|
|
81
|
+
* Uses the salt provided in the constructor or a randomly generated one.
|
|
82
|
+
* Note that if the Account is constructed with an explicit complete address
|
|
83
|
+
* it is assumed that the account contract has already been deployed and this method will throw.
|
|
84
|
+
* Registers the account in the RPC server before deploying the contract.
|
|
85
|
+
* @param opts - Options to wait for the tx to be mined.
|
|
86
|
+
* @returns A Wallet instance.
|
|
87
|
+
*/
|
|
88
|
+
async waitDeploy(opts) {
|
|
89
|
+
return (await this.deploy()).getWallet(opts);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY2NvdW50L2FjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBYSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQU9sQixZQUNVLEdBQWEsRUFDYixvQkFBZ0MsRUFDaEMsZUFBZ0MsRUFDeEMsYUFBc0M7UUFIOUIsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUNiLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBWTtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFHeEMsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQztTQUN0QzthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLHNCQUFzQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLGlCQUFpQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQy9FO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0seUJBQXlCLENBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLEVBQ3JDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxFQUM5QyxJQUFJLENBQUMsSUFBSyxFQUNWLG1CQUFtQixDQUNwQixDQUFDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsU0FBUztRQUNwQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwRixPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFFBQVE7UUFDbkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM5RSxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxNQUFNO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN0RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUM1RyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQWM7UUFDcEMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiJ9
|
|
@@ -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 SchnorrMultiKeyAccountContractAbi from '../../abis/schnorr_multi_key_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 SchnorrMultiKeyAccountContractAbi;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkxRCxPQUFPLGlDQUFpQyxNQUFNLG9EQUFvRCxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRTNILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRzVGOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsaUJBQTZCO1FBQTdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBWTtJQUFHLENBQUM7SUFFOUMsS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ25HLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFZO1FBQ3JGLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLGlDQUFnRCxDQUFDO0lBQzFELENBQUM7Q0FDRiJ9
|
|
@@ -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,18 @@
|
|
|
1
|
+
import { AztecAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { FunctionCall, TxExecutionRequest } from '@aztec/types';
|
|
3
|
+
import { CreateTxRequestOpts, Entrypoint } from './index.js';
|
|
4
|
+
/**
|
|
5
|
+
* An entrypoint that groups together multiple concrete entrypoints.
|
|
6
|
+
* Delegates to the registered entrypoints based on the requested origin.
|
|
7
|
+
*/
|
|
8
|
+
export declare class EntrypointCollection implements Entrypoint {
|
|
9
|
+
private entrypoints;
|
|
10
|
+
/**
|
|
11
|
+
* Registers an entrypoint against an aztec address
|
|
12
|
+
* @param addr - The aztec address agianst which to register the implementation.
|
|
13
|
+
* @param impl - The entrypoint to be registered.
|
|
14
|
+
*/
|
|
15
|
+
registerAccount(addr: AztecAddress, impl: Entrypoint): void;
|
|
16
|
+
createTxExecutionRequest(executions: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
17
|
+
}
|
|
18
|
+
//# 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,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,WAAW,CAAsC;IAEzD;;;;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,25 @@
|
|
|
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() {
|
|
7
|
+
this.entrypoints = new Map();
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Registers an entrypoint against an aztec address
|
|
11
|
+
* @param addr - The aztec address agianst which to register the implementation.
|
|
12
|
+
* @param impl - The entrypoint to be registered.
|
|
13
|
+
*/
|
|
14
|
+
registerAccount(addr, impl) {
|
|
15
|
+
this.entrypoints.set(addr.toString(), impl);
|
|
16
|
+
}
|
|
17
|
+
createTxExecutionRequest(executions, opts = {}) {
|
|
18
|
+
const defaultAccount = this.entrypoints.values().next().value;
|
|
19
|
+
const impl = opts.origin ? this.entrypoints.get(opts.origin.toString()) : defaultAccount;
|
|
20
|
+
if (!impl)
|
|
21
|
+
throw new Error(`No entrypoint registered for ${opts.origin}`);
|
|
22
|
+
return impl.createTxExecutionRequest(executions, opts);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludF9jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvZW50cnlwb2ludC9lbnRyeXBvaW50X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUFqQztRQUNVLGdCQUFXLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7SUFvQjNELENBQUM7SUFsQkM7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxJQUFrQixFQUFFLElBQWdCO1FBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sd0JBQXdCLENBQzdCLFVBQTBCLEVBQzFCLE9BQTRCLEVBQUU7UUFFOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFtQixDQUFDO1FBQzVFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRiJ9
|
|
@@ -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,EAAE,MAAM,oBAAoB,CAAC;AAGtD,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,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,OAAO,EAAE,iBAAiB,UAGrD;AAED,qCAAqC;AACrC,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,QAOxD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { CircuitsWasm, Fr } from '@aztec/circuits.js';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
+
import { sha256 } from '@aztec/foundation/crypto';
|
|
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
|
+
/** Hashes an entrypoint payload (useful for signing) */
|
|
34
|
+
export function hashPayload(payload) {
|
|
35
|
+
// TODO: Switch to keccak when avaiable in Noir
|
|
36
|
+
return sha256(Buffer.concat(flattenPayload(payload).map(fr => fr.toBuffer())));
|
|
37
|
+
}
|
|
38
|
+
/** Flattens an entrypoint payload */
|
|
39
|
+
export function flattenPayload(payload) {
|
|
40
|
+
return [
|
|
41
|
+
...payload.flattened_args_hashes,
|
|
42
|
+
...payload.flattened_selectors,
|
|
43
|
+
...payload.flattened_targets,
|
|
44
|
+
payload.nonce,
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludF9wYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvZW50cnlwb2ludC9lbnRyeXBvaW50X3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhGLDZGQUE2RjtBQUM3RixNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQWlCbkMsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxZQUE0QixFQUM1QixXQUEyQjtJQU8zQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFMUIsTUFBTSxLQUFLLEdBQUc7UUFDWixHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSx5QkFBeUIsQ0FBQztRQUM1RSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSx3QkFBd0IsQ0FBQztLQUMzRSxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRXRDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUN2RTtJQUVELE9BQU87UUFDTCxPQUFPLEVBQUU7WUFDUCxxQ0FBcUM7WUFDckMscUJBQXFCLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDN0QscUNBQXFDO1lBQ3JDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMvRixxQ0FBcUM7WUFDckMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkQsS0FBSztTQUNOO1FBQ0QsZUFBZTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVELHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQTBCO0lBQ3BELCtDQUErQztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVELHFDQUFxQztBQUNyQyxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQTBCO0lBQ3ZELE9BQU87UUFDTCxHQUFHLE9BQU8sQ0FBQyxxQkFBcUI7UUFDaEMsR0FBRyxPQUFPLENBQUMsbUJBQW1CO1FBQzlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQjtRQUM1QixPQUFPLENBQUMsS0FBSztLQUNkLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -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"}
|