@aztec/aztec.js 0.73.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dest/account/contract.js +5 -3
- package/dest/account/index.js +8 -2
- package/dest/account/interface.js +4 -3
- package/dest/account/wallet.js +3 -2
- package/dest/account_manager/deploy_account_method.js +22 -25
- package/dest/account_manager/deploy_account_sent_tx.js +16 -17
- package/dest/account_manager/index.js +67 -78
- package/dest/api/abi.js +0 -1
- package/dest/api/account.js +0 -1
- package/dest/api/addresses.js +0 -1
- package/dest/api/cheat_codes.js +25 -0
- package/dest/api/deployment.js +0 -1
- package/dest/api/entrypoint.js +0 -1
- package/dest/api/eth_address.js +0 -1
- package/dest/api/ethereum/anvil_test_watcher.js +113 -0
- package/dest/api/ethereum/chain_monitor.js +69 -0
- package/dest/api/ethereum/cheat_codes.js +142 -0
- package/dest/api/ethereum/index.js +6 -0
- package/dest/api/ethereum/l1_contracts.js +13 -0
- package/dest/api/ethereum/portal_manager.js +284 -0
- package/dest/api/fee.js +0 -1
- package/dest/api/fields.js +0 -1
- package/dest/api/interfaces/pxe.js +1 -2
- package/dest/api/log.js +1 -0
- package/dest/api/log_id.js +0 -1
- package/dest/api/tx_hash.js +0 -1
- package/dest/api/wallet.js +1 -2
- package/dest/contract/base_contract_interaction.js +75 -52
- package/dest/contract/batch_call.js +57 -39
- package/dest/contract/checker.js +29 -20
- package/dest/contract/contract.js +22 -27
- package/dest/contract/contract_base.js +21 -30
- package/dest/contract/contract_function_interaction.js +48 -48
- package/dest/contract/deploy_method.js +99 -84
- package/dest/contract/deploy_proven_tx.js +8 -11
- package/dest/contract/deploy_sent_tx.js +19 -22
- package/dest/contract/get_gas_limits.js +2 -4
- package/dest/contract/index.js +4 -6
- package/dest/contract/proven_tx.js +7 -10
- package/dest/contract/sent_tx.js +32 -34
- package/dest/contract/unsafe_contract.js +2 -10
- package/dest/deployment/broadcast_function.js +28 -26
- package/dest/deployment/contract_deployer.js +15 -14
- package/dest/deployment/deploy_instance.js +1 -3
- package/dest/deployment/index.js +0 -1
- package/dest/deployment/protocol_contracts.js +2 -5
- package/dest/deployment/register_class.js +8 -8
- package/dest/entrypoint/default_entrypoint.js +8 -5
- package/dest/entrypoint/default_multi_call_entrypoint.js +66 -23
- package/dest/entrypoint/entrypoint.js +0 -1
- package/dest/entrypoint/payload.js +73 -82
- package/dest/fee/fee_juice_payment_method.js +3 -4
- package/dest/fee/fee_juice_payment_method_with_claim.js +11 -14
- package/dest/fee/fee_payment_method.js +3 -2
- package/dest/fee/no_fee_payment_method.js +2 -4
- package/dest/fee/private_fee_payment_method.js +36 -34
- package/dest/fee/public_fee_payment_method.js +34 -31
- package/dest/index.js +8 -9
- package/dest/rpc_clients/index.js +0 -1
- package/dest/rpc_clients/node/index.js +30 -16
- package/dest/rpc_clients/pxe_client.js +5 -3
- package/dest/utils/abi_types.js +1 -2
- package/dest/utils/authwit.js +15 -15
- package/dest/utils/aztec_cheatcodes.js +62 -0
- package/dest/utils/field_compressed_string.js +2 -4
- package/dest/utils/index.js +5 -12
- package/dest/utils/node.js +4 -5
- package/dest/utils/pub_key.js +1 -3
- package/dest/utils/pxe.js +3 -5
- package/dest/wallet/account_wallet.js +118 -81
- package/dest/wallet/account_wallet_with_private_key.js +9 -15
- package/dest/wallet/base_wallet.js +7 -5
- package/dest/wallet/index.js +2 -4
- package/dest/wallet/signerless_wallet.js +4 -6
- package/package.json +14 -17
- package/src/api/account.ts +7 -1
- package/src/api/cheat_codes.ts +35 -0
- package/src/{utils → api/ethereum}/anvil_test_watcher.ts +2 -1
- package/src/{utils → api/ethereum}/cheat_codes.ts +6 -109
- package/src/api/ethereum/index.ts +15 -0
- package/src/{utils → api/ethereum}/l1_contracts.ts +1 -1
- package/src/{utils → api/ethereum}/portal_manager.ts +4 -9
- package/src/api/interfaces/pxe.ts +1 -1
- package/src/api/log.ts +1 -0
- package/src/api/wallet.ts +1 -1
- package/src/contract/contract_function_interaction.ts +1 -1
- package/src/contract/index.ts +2 -2
- package/src/entrypoint/default_multi_call_entrypoint.ts +2 -1
- package/src/entrypoint/entrypoint.ts +1 -1
- package/src/fee/fee_juice_payment_method_with_claim.ts +1 -1
- package/src/index.ts +7 -35
- package/src/utils/aztec_cheatcodes.ts +75 -0
- package/src/utils/index.ts +19 -11
- package/src/utils/node.ts +2 -0
- package/src/wallet/index.ts +1 -1
- package/dest/account/contract.d.ts +0 -33
- package/dest/account/contract.d.ts.map +0 -1
- package/dest/account/index.d.ts +0 -15
- package/dest/account/index.d.ts.map +0 -1
- package/dest/account/interface.d.ts +0 -30
- package/dest/account/interface.d.ts.map +0 -1
- package/dest/account/wallet.d.ts +0 -10
- package/dest/account/wallet.d.ts.map +0 -1
- package/dest/account_manager/deploy_account_method.d.ts +0 -15
- package/dest/account_manager/deploy_account_method.d.ts.map +0 -1
- package/dest/account_manager/deploy_account_sent_tx.d.ts +0 -29
- package/dest/account_manager/deploy_account_sent_tx.d.ts.map +0 -1
- package/dest/account_manager/index.d.ts +0 -99
- package/dest/account_manager/index.d.ts.map +0 -1
- package/dest/api/abi.d.ts +0 -4
- package/dest/api/abi.d.ts.map +0 -1
- package/dest/api/account.d.ts +0 -4
- package/dest/api/account.d.ts.map +0 -1
- package/dest/api/addresses.d.ts +0 -3
- package/dest/api/addresses.d.ts.map +0 -1
- package/dest/api/deployment.d.ts +0 -4
- package/dest/api/deployment.d.ts.map +0 -1
- package/dest/api/entrypoint.d.ts +0 -2
- package/dest/api/entrypoint.d.ts.map +0 -1
- package/dest/api/eth_address.d.ts +0 -2
- package/dest/api/eth_address.d.ts.map +0 -1
- package/dest/api/ethereum.d.ts +0 -3
- package/dest/api/ethereum.d.ts.map +0 -1
- package/dest/api/ethereum.js +0 -3
- package/dest/api/fee.d.ts +0 -7
- package/dest/api/fee.d.ts.map +0 -1
- package/dest/api/fields.d.ts +0 -2
- package/dest/api/fields.d.ts.map +0 -1
- package/dest/api/interfaces/pxe.d.ts +0 -2
- package/dest/api/interfaces/pxe.d.ts.map +0 -1
- package/dest/api/log_id.d.ts +0 -2
- package/dest/api/log_id.d.ts.map +0 -1
- package/dest/api/tx_hash.d.ts +0 -2
- package/dest/api/tx_hash.d.ts.map +0 -1
- package/dest/api/wallet.d.ts +0 -2
- package/dest/api/wallet.d.ts.map +0 -1
- package/dest/barretenberg-threads.wasm.gz +0 -0
- package/dest/barretenberg.wasm.gz +0 -0
- package/dest/contract/base_contract_interaction.d.ts +0 -82
- package/dest/contract/base_contract_interaction.d.ts.map +0 -1
- package/dest/contract/batch_call.d.ts +0 -27
- package/dest/contract/batch_call.d.ts.map +0 -1
- package/dest/contract/checker.d.ts +0 -11
- package/dest/contract/checker.d.ts.map +0 -1
- package/dest/contract/contract.d.ts +0 -41
- package/dest/contract/contract.d.ts.map +0 -1
- package/dest/contract/contract_base.d.ts +0 -61
- package/dest/contract/contract_base.d.ts.map +0 -1
- package/dest/contract/contract_function_interaction.d.ts +0 -67
- package/dest/contract/contract_function_interaction.d.ts.map +0 -1
- package/dest/contract/deploy_method.d.ts +0 -110
- package/dest/contract/deploy_method.d.ts.map +0 -1
- package/dest/contract/deploy_proven_tx.d.ts +0 -19
- package/dest/contract/deploy_proven_tx.d.ts.map +0 -1
- package/dest/contract/deploy_sent_tx.d.ts +0 -43
- package/dest/contract/deploy_sent_tx.d.ts.map +0 -1
- package/dest/contract/get_gas_limits.d.ts +0 -18
- package/dest/contract/get_gas_limits.d.ts.map +0 -1
- package/dest/contract/index.d.ts +0 -45
- package/dest/contract/index.d.ts.map +0 -1
- package/dest/contract/proven_tx.d.ts +0 -16
- package/dest/contract/proven_tx.d.ts.map +0 -1
- package/dest/contract/sent_tx.d.ts +0 -60
- package/dest/contract/sent_tx.d.ts.map +0 -1
- package/dest/contract/unsafe_contract.d.ts +0 -15
- package/dest/contract/unsafe_contract.d.ts.map +0 -1
- package/dest/deployment/broadcast_function.d.ts +0 -24
- package/dest/deployment/broadcast_function.d.ts.map +0 -1
- package/dest/deployment/contract_deployer.d.ts +0 -27
- package/dest/deployment/contract_deployer.d.ts.map +0 -1
- package/dest/deployment/deploy_instance.d.ts +0 -10
- package/dest/deployment/deploy_instance.d.ts.map +0 -1
- package/dest/deployment/index.d.ts +0 -2
- package/dest/deployment/index.d.ts.map +0 -1
- package/dest/deployment/protocol_contracts.d.ts +0 -7
- package/dest/deployment/protocol_contracts.d.ts.map +0 -1
- package/dest/deployment/register_class.d.ts +0 -6
- package/dest/deployment/register_class.d.ts.map +0 -1
- package/dest/entrypoint/default_entrypoint.d.ts +0 -12
- package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts +0 -15
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/entrypoint.d.ts +0 -31
- package/dest/entrypoint/entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/payload.d.ts +0 -125
- package/dest/entrypoint/payload.d.ts.map +0 -1
- package/dest/fee/fee_juice_payment_method.d.ts +0 -14
- package/dest/fee/fee_juice_payment_method.d.ts.map +0 -1
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts +0 -17
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +0 -1
- package/dest/fee/fee_payment_method.d.ts +0 -22
- package/dest/fee/fee_payment_method.d.ts.map +0 -1
- package/dest/fee/no_fee_payment_method.d.ts +0 -13
- package/dest/fee/no_fee_payment_method.d.ts.map +0 -1
- package/dest/fee/private_fee_payment_method.d.ts +0 -51
- package/dest/fee/private_fee_payment_method.d.ts.map +0 -1
- package/dest/fee/public_fee_payment_method.d.ts +0 -41
- package/dest/fee/public_fee_payment_method.d.ts.map +0 -1
- package/dest/index.d.ts +0 -51
- package/dest/index.d.ts.map +0 -1
- package/dest/main.js +0 -2
- package/dest/main.js.LICENSE.txt +0 -25
- package/dest/rpc_clients/index.d.ts +0 -3
- package/dest/rpc_clients/index.d.ts.map +0 -1
- package/dest/rpc_clients/node/index.d.ts +0 -11
- package/dest/rpc_clients/node/index.d.ts.map +0 -1
- package/dest/rpc_clients/pxe_client.d.ts +0 -9
- package/dest/rpc_clients/pxe_client.d.ts.map +0 -1
- package/dest/utils/abi_types.d.ts +0 -26
- package/dest/utils/abi_types.d.ts.map +0 -1
- package/dest/utils/anvil_test_watcher.d.ts +0 -28
- package/dest/utils/anvil_test_watcher.d.ts.map +0 -1
- package/dest/utils/anvil_test_watcher.js +0 -108
- package/dest/utils/authwit.d.ts +0 -59
- package/dest/utils/authwit.d.ts.map +0 -1
- package/dest/utils/chain_monitor.d.ts +0 -21
- package/dest/utils/chain_monitor.d.ts.map +0 -1
- package/dest/utils/chain_monitor.js +0 -58
- package/dest/utils/cheat_codes.d.ts +0 -137
- package/dest/utils/cheat_codes.d.ts.map +0 -1
- package/dest/utils/cheat_codes.js +0 -225
- package/dest/utils/field_compressed_string.d.ts +0 -17
- package/dest/utils/field_compressed_string.d.ts.map +0 -1
- package/dest/utils/index.d.ts +0 -12
- package/dest/utils/index.d.ts.map +0 -1
- package/dest/utils/l1_contracts.d.ts +0 -3
- package/dest/utils/l1_contracts.d.ts.map +0 -1
- package/dest/utils/l1_contracts.js +0 -15
- package/dest/utils/node.d.ts +0 -4
- package/dest/utils/node.d.ts.map +0 -1
- package/dest/utils/portal_manager.d.ts +0 -130
- package/dest/utils/portal_manager.d.ts.map +0 -1
- package/dest/utils/portal_manager.js +0 -265
- package/dest/utils/pub_key.d.ts +0 -8
- package/dest/utils/pub_key.d.ts.map +0 -1
- package/dest/utils/pxe.d.ts +0 -4
- package/dest/utils/pxe.d.ts.map +0 -1
- package/dest/wallet/account_wallet.d.ts +0 -73
- package/dest/wallet/account_wallet.d.ts.map +0 -1
- package/dest/wallet/account_wallet_with_private_key.d.ts +0 -26
- package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
- package/dest/wallet/base_wallet.d.ts +0 -64
- package/dest/wallet/base_wallet.d.ts.map +0 -1
- package/dest/wallet/index.d.ts +0 -17
- package/dest/wallet/index.d.ts.map +0 -1
- package/dest/wallet/signerless_wallet.d.ts +0 -22
- package/dest/wallet/signerless_wallet.d.ts.map +0 -1
- package/src/api/ethereum.ts +0 -2
- /package/src/{utils → api/ethereum}/chain_monitor.ts +0 -0
package/dest/contract/sent_tx.js
CHANGED
|
@@ -5,44 +5,42 @@ export const DefaultWaitOpts = {
|
|
|
5
5
|
timeout: 60,
|
|
6
6
|
provenTimeout: 600,
|
|
7
7
|
interval: 1,
|
|
8
|
-
debug: false
|
|
8
|
+
debug: false
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* The SentTx class represents a sent transaction through the PXE, providing methods to fetch
|
|
12
12
|
* its hash, receipt, and mining status.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
*/ export class SentTx {
|
|
14
|
+
pxe;
|
|
15
|
+
txHashPromise;
|
|
16
|
+
constructor(pxe, txHashPromise){
|
|
16
17
|
this.pxe = pxe;
|
|
17
18
|
this.txHashPromise = txHashPromise;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
getTxHash() {
|
|
21
|
+
* Retrieves the transaction hash of the SentTx instance.
|
|
22
|
+
* The function internally awaits for the 'txHashPromise' to resolve, and then returns the resolved transaction hash.
|
|
23
|
+
*
|
|
24
|
+
* @returns A promise that resolves to the transaction hash of the SentTx instance.
|
|
25
|
+
* TODO(#7717): Don't throw here.
|
|
26
|
+
*/ getTxHash() {
|
|
27
27
|
return this.txHashPromise;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
async getReceipt() {
|
|
30
|
+
* Retrieve the transaction receipt associated with the current SentTx instance.
|
|
31
|
+
* The function fetches the transaction hash using 'getTxHash' and then queries
|
|
32
|
+
* the PXE to get the corresponding transaction receipt.
|
|
33
|
+
*
|
|
34
|
+
* @returns A promise that resolves to a TxReceipt object representing the fetched transaction receipt.
|
|
35
|
+
*/ async getReceipt() {
|
|
37
36
|
const txHash = await this.getTxHash();
|
|
38
37
|
return await this.pxe.getTxReceipt(txHash);
|
|
39
38
|
}
|
|
40
39
|
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
async wait(opts) {
|
|
40
|
+
* Awaits for a tx to be mined and returns the receipt. Throws if tx is not mined.
|
|
41
|
+
* @param opts - Options for configuring the waiting for the tx to be mined.
|
|
42
|
+
* @returns The transaction receipt.
|
|
43
|
+
*/ async wait(opts) {
|
|
46
44
|
const receipt = await this.waitForReceipt(opts);
|
|
47
45
|
if (receipt.status !== TxStatus.SUCCESS && !opts?.dontThrowOnRevert) {
|
|
48
46
|
throw new Error(`Transaction ${await this.getTxHash()} was ${receipt.status}. Reason: ${receipt.error ?? 'unknown'}`);
|
|
@@ -52,30 +50,31 @@ export class SentTx {
|
|
|
52
50
|
}
|
|
53
51
|
if (opts?.debug) {
|
|
54
52
|
const txHash = await this.getTxHash();
|
|
55
|
-
const { data: tx } =
|
|
53
|
+
const { data: tx } = await this.pxe.getTxEffect(txHash);
|
|
56
54
|
receipt.debugInfo = {
|
|
57
55
|
noteHashes: tx.noteHashes,
|
|
58
56
|
nullifiers: tx.nullifiers,
|
|
59
57
|
publicDataWrites: tx.publicDataWrites,
|
|
60
|
-
l2ToL1Msgs: tx.l2ToL1Msgs
|
|
58
|
+
l2ToL1Msgs: tx.l2ToL1Msgs
|
|
61
59
|
};
|
|
62
60
|
}
|
|
63
61
|
return receipt;
|
|
64
62
|
}
|
|
65
63
|
/**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
async getPublicLogs() {
|
|
64
|
+
* Gets public logs emitted by this tx.
|
|
65
|
+
* @remarks This function will wait for the tx to be mined if it hasn't been already.
|
|
66
|
+
* @returns The requested logs.
|
|
67
|
+
*/ async getPublicLogs() {
|
|
71
68
|
await this.wait();
|
|
72
|
-
return this.pxe.getPublicLogs({
|
|
69
|
+
return this.pxe.getPublicLogs({
|
|
70
|
+
txHash: await this.getTxHash()
|
|
71
|
+
});
|
|
73
72
|
}
|
|
74
73
|
async waitForReceipt(opts) {
|
|
75
74
|
const txHash = await this.getTxHash();
|
|
76
75
|
const startTime = Date.now();
|
|
77
76
|
const ignoreDroppedReceiptsFor = opts?.ignoreDroppedReceiptsFor ?? DefaultWaitOpts.ignoreDroppedReceiptsFor;
|
|
78
|
-
return await retryUntil(async ()
|
|
77
|
+
return await retryUntil(async ()=>{
|
|
79
78
|
const txReceipt = await this.pxe.getTxReceipt(txHash);
|
|
80
79
|
// If receipt is not yet available, try again
|
|
81
80
|
if (txReceipt.status === TxStatus.PENDING) {
|
|
@@ -95,10 +94,9 @@ export class SentTx {
|
|
|
95
94
|
}, 'isMined', opts?.timeout ?? DefaultWaitOpts.timeout, opts?.interval ?? DefaultWaitOpts.interval);
|
|
96
95
|
}
|
|
97
96
|
async waitForProven(minedBlock, opts) {
|
|
98
|
-
return await retryUntil(async ()
|
|
97
|
+
return await retryUntil(async ()=>{
|
|
99
98
|
const provenBlock = await this.pxe.getProvenBlockNumber();
|
|
100
99
|
return provenBlock >= minedBlock ? provenBlock : undefined;
|
|
101
100
|
}, 'isProven', opts?.provenTimeout ?? DefaultWaitOpts.provenTimeout, opts?.interval ?? DefaultWaitOpts.interval);
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudF90eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9zZW50X3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBcUJyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWE7SUFDdkMsd0JBQXdCLEVBQUUsQ0FBQztJQUMzQixPQUFPLEVBQUUsRUFBRTtJQUNYLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLFFBQVEsRUFBRSxDQUFDO0lBQ1gsS0FBSyxFQUFFLEtBQUs7Q0FDYixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFDakIsWUFBc0IsR0FBUSxFQUFZLGFBQThCO1FBQWxELFFBQUcsR0FBSCxHQUFHLENBQUs7UUFBWSxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7SUFBRyxDQUFDO0lBRTVFOzs7Ozs7T0FNRztJQUNJLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBZTtRQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUks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
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import { ContractBase } from './contract_base.js';
|
|
2
|
-
/** Unsafe constructor for ContractBase that bypasses the check that the instance is registered in the wallet. */
|
|
3
|
-
|
|
4
|
-
constructor(
|
|
5
|
-
/** The deployed contract instance definition. */
|
|
6
|
-
instance,
|
|
7
|
-
/** The Application Binary Interface for the contract. */
|
|
8
|
-
artifact,
|
|
9
|
-
/** The wallet used for interacting with this contract. */
|
|
10
|
-
wallet) {
|
|
2
|
+
/** Unsafe constructor for ContractBase that bypasses the check that the instance is registered in the wallet. */ export class UnsafeContract extends ContractBase {
|
|
3
|
+
constructor(/** The deployed contract instance definition. */ instance, /** The Application Binary Interface for the contract. */ artifact, /** The wallet used for interacting with this contract. */ wallet){
|
|
11
4
|
super(instance, artifact, wallet);
|
|
12
5
|
}
|
|
13
6
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zYWZlX2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L3Vuc2FmZV9jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsaUhBQWlIO0FBQ2pILE1BQU0sT0FBTyxjQUFlLFNBQVEsWUFBWTtJQUM5QztJQUNFLGlEQUFpRDtJQUNqRCxRQUFxQztJQUNyQyx5REFBeUQ7SUFDekQsUUFBMEI7SUFDMUIsMERBQTBEO0lBQzFELE1BQWM7UUFFZCxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS, computeVerificationKeyHash, createPrivateFunctionMembershipProof, createUnconstrainedFunctionMembershipProof, getContractClassFromArtifact
|
|
1
|
+
import { ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS, computeVerificationKeyHash, createPrivateFunctionMembershipProof, createUnconstrainedFunctionMembershipProof, getContractClassFromArtifact } from '@aztec/circuits.js';
|
|
2
2
|
import { FunctionSelector, FunctionType, bufferAsFields } from '@aztec/foundation/abi';
|
|
3
3
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -11,26 +11,28 @@ import { getRegistererContract } from './protocol_contracts.js';
|
|
|
11
11
|
* @param artifact - Contract artifact that contains the function to be broadcast.
|
|
12
12
|
* @param selector - Selector of the function to be broadcast.
|
|
13
13
|
* @returns A ContractFunctionInteraction object that can be used to send the transaction.
|
|
14
|
-
*/
|
|
15
|
-
export async function broadcastPrivateFunction(wallet, artifact, selector) {
|
|
14
|
+
*/ export async function broadcastPrivateFunction(wallet, artifact, selector) {
|
|
16
15
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
17
|
-
const privateFunctions = artifact.functions.filter(fn
|
|
18
|
-
const functionsAndSelectors = await Promise.all(privateFunctions.map(async (fn)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const privateFunctionArtifact = functionsAndSelectors.find(fn
|
|
16
|
+
const privateFunctions = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PRIVATE);
|
|
17
|
+
const functionsAndSelectors = await Promise.all(privateFunctions.map(async (fn)=>({
|
|
18
|
+
f: fn,
|
|
19
|
+
selector: await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters)
|
|
20
|
+
})));
|
|
21
|
+
const privateFunctionArtifact = functionsAndSelectors.find((fn)=>selector.equals(fn.selector))?.f;
|
|
23
22
|
if (!privateFunctionArtifact) {
|
|
24
23
|
throw new Error(`Private function with selector ${selector.toString()} not found`);
|
|
25
24
|
}
|
|
26
|
-
const { artifactTreeSiblingPath, artifactTreeLeafIndex, artifactMetadataHash, functionMetadataHash, unconstrainedFunctionsArtifactTreeRoot, privateFunctionTreeSiblingPath, privateFunctionTreeLeafIndex
|
|
25
|
+
const { artifactTreeSiblingPath, artifactTreeLeafIndex, artifactMetadataHash, functionMetadataHash, unconstrainedFunctionsArtifactTreeRoot, privateFunctionTreeSiblingPath, privateFunctionTreeLeafIndex } = await createPrivateFunctionMembershipProof(selector, artifact);
|
|
27
26
|
const vkHash = await computeVerificationKeyHash(privateFunctionArtifact);
|
|
28
27
|
const bytecode = bufferAsFields(privateFunctionArtifact.bytecode, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS);
|
|
29
28
|
await wallet.addCapsule(bytecode);
|
|
30
29
|
const registerer = await getRegistererContract(wallet);
|
|
31
|
-
return Promise.resolve(registerer.methods.broadcast_private_function(contractClass.id, artifactMetadataHash, unconstrainedFunctionsArtifactTreeRoot, privateFunctionTreeSiblingPath, privateFunctionTreeLeafIndex, padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT), artifactTreeLeafIndex,
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
return Promise.resolve(registerer.methods.broadcast_private_function(contractClass.id, artifactMetadataHash, unconstrainedFunctionsArtifactTreeRoot, privateFunctionTreeSiblingPath, privateFunctionTreeLeafIndex, padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT), artifactTreeLeafIndex, // eslint-disable-next-line camelcase
|
|
31
|
+
{
|
|
32
|
+
selector,
|
|
33
|
+
metadata_hash: functionMetadataHash,
|
|
34
|
+
vk_hash: vkHash
|
|
35
|
+
}));
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Sets up a call to broadcast an unconstrained function's bytecode via the ClassRegisterer contract.
|
|
@@ -40,24 +42,24 @@ export async function broadcastPrivateFunction(wallet, artifact, selector) {
|
|
|
40
42
|
* @param artifact - Contract artifact that contains the function to be broadcast.
|
|
41
43
|
* @param selector - Selector of the function to be broadcast.
|
|
42
44
|
* @returns A ContractFunctionInteraction object that can be used to send the transaction.
|
|
43
|
-
*/
|
|
44
|
-
export async function broadcastUnconstrainedFunction(wallet, artifact, selector) {
|
|
45
|
+
*/ export async function broadcastUnconstrainedFunction(wallet, artifact, selector) {
|
|
45
46
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
46
|
-
const unconstrainedFunctions = artifact.functions.filter(fn
|
|
47
|
-
const unconstrainedFunctionsAndSelectors = await Promise.all(unconstrainedFunctions.map(async (fn)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const unconstrainedFunctionArtifact = unconstrainedFunctionsAndSelectors.find(fn
|
|
47
|
+
const unconstrainedFunctions = artifact.functions.filter((fn)=>fn.functionType === FunctionType.UNCONSTRAINED);
|
|
48
|
+
const unconstrainedFunctionsAndSelectors = await Promise.all(unconstrainedFunctions.map(async (fn)=>({
|
|
49
|
+
f: fn,
|
|
50
|
+
selector: await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters)
|
|
51
|
+
})));
|
|
52
|
+
const unconstrainedFunctionArtifact = unconstrainedFunctionsAndSelectors.find((fn)=>selector.equals(fn.selector))?.f;
|
|
52
53
|
if (!unconstrainedFunctionArtifact) {
|
|
53
54
|
throw new Error(`Unconstrained function with selector ${selector.toString()} not found`);
|
|
54
55
|
}
|
|
55
|
-
const { artifactMetadataHash, artifactTreeLeafIndex, artifactTreeSiblingPath, functionMetadataHash, privateFunctionsArtifactTreeRoot
|
|
56
|
+
const { artifactMetadataHash, artifactTreeLeafIndex, artifactTreeSiblingPath, functionMetadataHash, privateFunctionsArtifactTreeRoot } = await createUnconstrainedFunctionMembershipProof(selector, artifact);
|
|
56
57
|
const bytecode = bufferAsFields(unconstrainedFunctionArtifact.bytecode, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS);
|
|
57
58
|
await wallet.addCapsule(bytecode);
|
|
58
59
|
const registerer = await getRegistererContract(wallet);
|
|
59
|
-
return registerer.methods.broadcast_unconstrained_function(contractClass.id, artifactMetadataHash, privateFunctionsArtifactTreeRoot, padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT), artifactTreeLeafIndex,
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
return registerer.methods.broadcast_unconstrained_function(contractClass.id, artifactMetadataHash, privateFunctionsArtifactTreeRoot, padArrayEnd(artifactTreeSiblingPath, Fr.ZERO, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT), artifactTreeLeafIndex, // eslint-disable-next-line camelcase
|
|
61
|
+
{
|
|
62
|
+
selector,
|
|
63
|
+
metadata_hash: functionMetadataHash
|
|
64
|
+
});
|
|
62
65
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0X2Z1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlcGxveW1lbnQvYnJvYWRjYXN0X2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsdURBQXVELEVBQ3ZELDBCQUEwQixFQUMxQixvQ0FBb0MsRUFDcEMsMENBQTBDLEVBQzFDLDRCQUE0QixHQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBeUIsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHdCQUF3QixDQUM1QyxNQUFjLEVBQ2QsUUFBMEIsRUFDMUIsUUFBMEI7SUFFMUIsTUFBTSxhQUFhLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRSxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkcsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQzdDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsRUFBRSxFQUFFO1FBQ0wsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENB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
|
|
@@ -4,26 +4,27 @@ import { DeployMethod } from '../contract/deploy_method.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* A class for deploying contract.
|
|
6
6
|
* @remarks Keeping this around even though we have Aztec.nr contract types because it can be useful for non-TS users.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
*/ export class ContractDeployer {
|
|
8
|
+
artifact;
|
|
9
|
+
wallet;
|
|
10
|
+
publicKeys;
|
|
11
|
+
constructorName;
|
|
12
|
+
constructor(artifact, wallet, publicKeys, constructorName){
|
|
10
13
|
this.artifact = artifact;
|
|
11
14
|
this.wallet = wallet;
|
|
12
15
|
this.publicKeys = publicKeys;
|
|
13
16
|
this.constructorName = constructorName;
|
|
14
17
|
}
|
|
15
18
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const postDeployCtor = (address, wallet) => Contract.at(address, this.artifact, wallet);
|
|
19
|
+
* Deploy a contract using the provided ABI and constructor arguments.
|
|
20
|
+
* This function creates a new DeployMethod instance that can be used to send deployment transactions
|
|
21
|
+
* and query deployment status. The method accepts any number of constructor arguments, which will
|
|
22
|
+
* be passed to the contract's constructor during deployment.
|
|
23
|
+
*
|
|
24
|
+
* @param args - The constructor arguments for the contract being deployed.
|
|
25
|
+
* @returns A DeployMethod instance configured with the ABI, PXE, and constructor arguments.
|
|
26
|
+
*/ deploy(...args) {
|
|
27
|
+
const postDeployCtor = (address, wallet)=>Contract.at(address, this.artifact, wallet);
|
|
26
28
|
return new DeployMethod(this.publicKeys ?? PublicKeys.default(), this.wallet, this.artifact, postDeployCtor, args, this.constructorName);
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZGVwbG95ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVwbG95bWVudC9jb250cmFjdF9kZXBsb3llci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSW5FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUNVLFFBQTBCLEVBQzFCLE1BQWMsRUFDZCxVQUF1QixFQUN2QixlQUF3QjtRQUh4QixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBYTtRQUN2QixvQkFBZSxHQUFmLGVBQWUsQ0FBUztJQUMvQixDQUFDO0lBRUo7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsR0FBRyxJQUFXO1FBQzFCLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBcUIsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUcsT0FBTyxJQUFJLFlBQVksQ0FDckIsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFFBQVEsRUFDYixjQUFjLEVBQ2QsSUFBSSxFQUNKLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -3,8 +3,7 @@ import { getDeployerContract } from './protocol_contracts.js';
|
|
|
3
3
|
* Sets up a call to the canonical deployer contract to publicly deploy a contract instance.
|
|
4
4
|
* @param wallet - The wallet to use for the deployment.
|
|
5
5
|
* @param instance - The instance to deploy.
|
|
6
|
-
*/
|
|
7
|
-
export async function deployInstance(wallet, instance) {
|
|
6
|
+
*/ export async function deployInstance(wallet, instance) {
|
|
8
7
|
const deployerContract = await getDeployerContract(wallet);
|
|
9
8
|
const { salt, contractClassId, publicKeys, deployer } = instance;
|
|
10
9
|
const isUniversalDeploy = deployer.isZero();
|
|
@@ -13,4 +12,3 @@ export async function deployInstance(wallet, instance) {
|
|
|
13
12
|
}
|
|
14
13
|
return deployerContract.methods.deploy(salt, contractClassId, instance.initializationHash, publicKeys, isUniversalDeploy);
|
|
15
14
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2luc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlcGxveW1lbnQvZGVwbG95X2luc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsTUFBYyxFQUNkLFFBQXFDO0lBRXJDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ2pFLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxNQUFNLElBQUksS0FBSyxDQUNiLHFCQUFxQixRQUFRLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDMUcsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3BDLElBQUksRUFDSixlQUFlLEVBQ2YsUUFBUSxDQUFDLGtCQUFrQixFQUMzQixVQUFVLEVBQ1YsaUJBQWlCLENBQ2xCLENBQUM7QUFDSixDQUFDIn0=
|
package/dest/deployment/index.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { getCanonicalClassRegisterer } from '@aztec/protocol-contracts/class-registerer';
|
|
2
2
|
import { getCanonicalInstanceDeployer } from '@aztec/protocol-contracts/instance-deployer';
|
|
3
3
|
import { UnsafeContract } from '../contract/unsafe_contract.js';
|
|
4
|
-
/** Returns a Contract wrapper for the class registerer. */
|
|
5
|
-
export async function getRegistererContract(wallet) {
|
|
4
|
+
/** Returns a Contract wrapper for the class registerer. */ export async function getRegistererContract(wallet) {
|
|
6
5
|
const { artifact, instance } = await getCanonicalClassRegisterer();
|
|
7
6
|
return new UnsafeContract(instance, artifact, wallet);
|
|
8
7
|
}
|
|
9
|
-
/** Returns a Contract wrapper for the instance deployer. */
|
|
10
|
-
export async function getDeployerContract(wallet) {
|
|
8
|
+
/** Returns a Contract wrapper for the instance deployer. */ export async function getDeployerContract(wallet) {
|
|
11
9
|
const { artifact, instance } = await getCanonicalInstanceDeployer();
|
|
12
10
|
return new UnsafeContract(instance, artifact, wallet);
|
|
13
11
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlcGxveW1lbnQvcHJvdG9jb2xfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdoRSwyREFBMkQ7QUFDM0QsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxNQUFjO0lBQ3hELE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSwyQkFBMkIsRUFBRSxDQUFDO0lBQ25FLE9BQU8sSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsTUFBYztJQUN0RCxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sNEJBQTRCLEVBQUUsQ0FBQztJQUNwRSxPQUFPLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEQsQ0FBQyJ9
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, getContractClassFromArtifact } from '@aztec/circuits.js';
|
|
2
2
|
import { bufferAsFields } from '@aztec/foundation/abi';
|
|
3
3
|
import { getRegistererContract } from './protocol_contracts.js';
|
|
4
|
-
const defaultEmitPublicBytecode =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
const defaultEmitPublicBytecode = // guard against `process` not being defined (e.g. in the browser)
|
|
5
|
+
typeof process === 'object' && typeof process.env === 'object' ? [
|
|
6
|
+
'1',
|
|
7
|
+
'true',
|
|
8
|
+
'yes',
|
|
9
|
+
''
|
|
10
|
+
].includes(process.env.AZTEC_EMIT_PUBLIC_BYTECODE ?? '') : true;
|
|
11
|
+
/** Sets up a call to register a contract class given its artifact. */ export async function registerContractClass(wallet, artifact, emitPublicBytecode = defaultEmitPublicBytecode) {
|
|
11
12
|
const { artifactHash, privateFunctionsRoot, publicBytecodeCommitment, packedBytecode } = await getContractClassFromArtifact(artifact);
|
|
12
13
|
const encodedBytecode = bufferAsFields(packedBytecode, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);
|
|
13
14
|
const registerer = await getRegistererContract(wallet);
|
|
14
15
|
await wallet.addCapsule(encodedBytecode);
|
|
15
16
|
return registerer.methods.register(artifactHash, privateFunctionsRoot, publicBytecodeCommitment, emitPublicBytecode);
|
|
16
17
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXJfY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVwbG95bWVudC9yZWdpc3Rlcl9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUNBQXlDLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RyxPQUFPLEVBQXlCLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE1BQU0seUJBQXlCO0FBQzdCLGtFQUFrRTtBQUNsRSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsR0FBRyxLQUFLLFFBQVE7SUFDNUQsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLElBQUksRUFBRSxDQUFDO0lBQ2pGLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFWCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FDekMsTUFBYyxFQUNkLFFBQTBCLEVBQzFCLGtCQUFrQixHQUFHLHlCQUF5QjtJQUU5QyxNQUFNLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxHQUNwRixNQUFNLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxjQUFjLEVBQUUseUNBQXlDLENBQUMsQ0FBQztJQUNsRyxNQUFNLFVBQVUsR0FBRyxNQUFNLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QyxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3ZILENBQUMifQ==
|
|
@@ -3,9 +3,10 @@ import { TxContext } from '@aztec/circuits.js';
|
|
|
3
3
|
import { FunctionType } from '@aztec/foundation/abi';
|
|
4
4
|
/**
|
|
5
5
|
* Default implementation of the entrypoint interface. It calls a function on a contract directly
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
*/ export class DefaultEntrypoint {
|
|
7
|
+
chainId;
|
|
8
|
+
protocolVersion;
|
|
9
|
+
constructor(chainId, protocolVersion){
|
|
9
10
|
this.chainId = chainId;
|
|
10
11
|
this.protocolVersion = protocolVersion;
|
|
11
12
|
}
|
|
@@ -20,7 +21,9 @@ export class DefaultEntrypoint {
|
|
|
20
21
|
}
|
|
21
22
|
const entrypointHashedValues = await HashedValues.fromValues(call.args);
|
|
22
23
|
const txContext = new TxContext(this.chainId, this.protocolVersion, fee.gasSettings);
|
|
23
|
-
return Promise.resolve(new TxExecutionRequest(call.to, call.selector, entrypointHashedValues.hash, txContext, [
|
|
24
|
+
return Promise.resolve(new TxExecutionRequest(call.to, call.selector, entrypointHashedValues.hash, txContext, [
|
|
25
|
+
...hashedArguments,
|
|
26
|
+
entrypointHashedValues
|
|
27
|
+
], authWitnesses));
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9lbnRyeXBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudHJ5cG9pbnQvZGVmYXVsdF9lbnRyeXBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXJEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFvQixPQUFlLEVBQVUsZUFBdUI7UUFBaEQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFRO0lBQUcsQ0FBQztJQUV4RSxLQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBMEI7UUFDdkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxHQUFHLEVBQUUsRUFBRSxlQUFlLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXRFLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLElBQUksa0JBQWtCLENBQ3BCLElBQUksQ0FBQyxFQUFFLEVBQ1AsSUFBSSxDQUFDLFFBQVEsRUFDYixzQkFBc0IsQ0FBQyxJQUFJLEVBQzNCLFNBQVMsRUFDVCxDQUFDLEdBQUcsZUFBZSxFQUFFLHNCQUFzQixDQUFDLEVBQzVDLGFBQWEsQ0FDZCxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { EntrypointPayload } from '@aztec/aztec.js/entrypoint';
|
|
2
1
|
import { HashedValues, TxExecutionRequest } from '@aztec/circuit-types';
|
|
3
2
|
import { TxContext } from '@aztec/circuits.js';
|
|
4
3
|
import { FunctionSelector, encodeArguments } from '@aztec/foundation/abi';
|
|
5
4
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
5
|
+
import { EntrypointPayload } from './entrypoint.js';
|
|
6
6
|
/**
|
|
7
7
|
* Implementation for an entrypoint interface that can execute multiple function calls in a single transaction
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
*/ export class DefaultMultiCallEntrypoint {
|
|
9
|
+
chainId;
|
|
10
|
+
version;
|
|
11
|
+
address;
|
|
12
|
+
constructor(chainId, version, address = ProtocolContractAddress.MultiCallEntrypoint){
|
|
11
13
|
this.chainId = chainId;
|
|
12
14
|
this.version = version;
|
|
13
15
|
this.address = address;
|
|
@@ -16,14 +18,20 @@ export class DefaultMultiCallEntrypoint {
|
|
|
16
18
|
const { fee, calls, authWitnesses = [], hashedArguments = [] } = executions;
|
|
17
19
|
const payload = await EntrypointPayload.fromAppExecution(calls);
|
|
18
20
|
const abi = this.getEntrypointAbi();
|
|
19
|
-
const entrypointHashedArgs = await HashedValues.fromValues(encodeArguments(abi, [
|
|
21
|
+
const entrypointHashedArgs = await HashedValues.fromValues(encodeArguments(abi, [
|
|
22
|
+
payload
|
|
23
|
+
]));
|
|
20
24
|
const txRequest = TxExecutionRequest.from({
|
|
21
25
|
firstCallArgsHash: entrypointHashedArgs.hash,
|
|
22
26
|
origin: this.address,
|
|
23
27
|
functionSelector: await FunctionSelector.fromNameAndParameters(abi.name, abi.parameters),
|
|
24
28
|
txContext: new TxContext(this.chainId, this.version, fee.gasSettings),
|
|
25
|
-
argsOfCalls: [
|
|
26
|
-
|
|
29
|
+
argsOfCalls: [
|
|
30
|
+
...payload.hashedArguments,
|
|
31
|
+
...hashedArguments,
|
|
32
|
+
entrypointHashedArgs
|
|
33
|
+
],
|
|
34
|
+
authWitnesses
|
|
27
35
|
});
|
|
28
36
|
return Promise.resolve(txRequest);
|
|
29
37
|
}
|
|
@@ -50,38 +58,73 @@ export class DefaultMultiCallEntrypoint {
|
|
|
50
58
|
kind: 'struct',
|
|
51
59
|
path: 'authwit::entrypoint::function_call::FunctionCall',
|
|
52
60
|
fields: [
|
|
53
|
-
{
|
|
61
|
+
{
|
|
62
|
+
name: 'args_hash',
|
|
63
|
+
type: {
|
|
64
|
+
kind: 'field'
|
|
65
|
+
}
|
|
66
|
+
},
|
|
54
67
|
{
|
|
55
68
|
name: 'function_selector',
|
|
56
69
|
type: {
|
|
57
70
|
kind: 'struct',
|
|
58
71
|
path: 'authwit::aztec::protocol_types::abis::function_selector::FunctionSelector',
|
|
59
|
-
fields: [
|
|
60
|
-
|
|
72
|
+
fields: [
|
|
73
|
+
{
|
|
74
|
+
name: 'inner',
|
|
75
|
+
type: {
|
|
76
|
+
kind: 'integer',
|
|
77
|
+
sign: 'unsigned',
|
|
78
|
+
width: 32
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
61
83
|
},
|
|
62
84
|
{
|
|
63
85
|
name: 'target_address',
|
|
64
86
|
type: {
|
|
65
87
|
kind: 'struct',
|
|
66
88
|
path: 'authwit::aztec::protocol_types::address::AztecAddress',
|
|
67
|
-
fields: [
|
|
68
|
-
|
|
89
|
+
fields: [
|
|
90
|
+
{
|
|
91
|
+
name: 'inner',
|
|
92
|
+
type: {
|
|
93
|
+
kind: 'field'
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
69
98
|
},
|
|
70
|
-
{
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
99
|
+
{
|
|
100
|
+
name: 'is_public',
|
|
101
|
+
type: {
|
|
102
|
+
kind: 'boolean'
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'is_static',
|
|
107
|
+
type: {
|
|
108
|
+
kind: 'boolean'
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
75
114
|
},
|
|
76
|
-
{
|
|
77
|
-
|
|
115
|
+
{
|
|
116
|
+
name: 'nonce',
|
|
117
|
+
type: {
|
|
118
|
+
kind: 'field'
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
]
|
|
78
122
|
},
|
|
79
|
-
visibility: 'public'
|
|
80
|
-
}
|
|
123
|
+
visibility: 'public'
|
|
124
|
+
}
|
|
81
125
|
],
|
|
82
126
|
returnTypes: [],
|
|
83
|
-
errorTypes: {}
|
|
127
|
+
errorTypes: {}
|
|
84
128
|
};
|
|
85
129
|
}
|
|
86
130
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9tdWx0aV9jYWxsX2VudHJ5cG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50cnlwb2ludC9kZWZhdWx0X211bHRpX2NhbGxfZW50cnlwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLGlCQUFpQixFQUE2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BILE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQ1UsT0FBZSxFQUNmLE9BQWUsRUFDZixVQUF3Qix1QkFBdUIsQ0FBQyxtQkFBbUI7UUFGbkUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUE0RDtJQUMxRSxDQUFDO0lBRUosS0FBSyxDQUFDLHdCQUF3QixDQUFDLFVBQWdDO1FBQzdELE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWEsR0FBRyxFQUFFLEVBQUUsZUFBZSxHQUFHLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUM1RSxNQUFNLE9BQU8sR0FBRyxNQUFNLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFP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
|
|
@@ -2,4 +2,3 @@ import { EntrypointPayload, computeCombinedPayloadHash } from './payload.js';
|
|
|
2
2
|
export { EntrypointPayload, computeCombinedPayloadHash };
|
|
3
3
|
export { DefaultEntrypoint } from './default_entrypoint.js';
|
|
4
4
|
export { DefaultMultiCallEntrypoint } from './default_multi_call_entrypoint.js';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRyeXBvaW50L2VudHJ5cG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGlCQUFpQixFQUFtQiwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RixPQUFPLEVBQUUsaUJBQWlCLEVBQWMsMEJBQTBCLEVBQUUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQyJ9
|