@aztec/aztec.js 0.0.0-test.0
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 +44 -0
- package/dest/account/contract.d.ts +37 -0
- package/dest/account/contract.d.ts.map +1 -0
- package/dest/account/contract.js +16 -0
- package/dest/account/index.d.ts +15 -0
- package/dest/account/index.d.ts.map +1 -0
- package/dest/account/index.js +9 -0
- package/dest/account/interface.d.ts +31 -0
- package/dest/account/interface.d.ts.map +1 -0
- package/dest/account/interface.js +4 -0
- package/dest/account/wallet.d.ts +11 -0
- package/dest/account/wallet.d.ts.map +1 -0
- package/dest/account/wallet.js +3 -0
- package/dest/account_manager/deploy_account_method.d.ts +15 -0
- package/dest/account_manager/deploy_account_method.d.ts.map +1 -0
- package/dest/account_manager/deploy_account_method.js +43 -0
- package/dest/account_manager/deploy_account_sent_tx.d.ts +30 -0
- package/dest/account_manager/deploy_account_sent_tx.d.ts.map +1 -0
- package/dest/account_manager/deploy_account_sent_tx.js +29 -0
- package/dest/account_manager/index.d.ts +108 -0
- package/dest/account_manager/index.d.ts.map +1 -0
- package/dest/account_manager/index.js +159 -0
- package/dest/api/abi.d.ts +3 -0
- package/dest/api/abi.d.ts.map +1 -0
- package/dest/api/abi.js +1 -0
- package/dest/api/account.d.ts +3 -0
- package/dest/api/account.d.ts.map +1 -0
- package/dest/api/account.js +2 -0
- package/dest/api/addresses.d.ts +3 -0
- package/dest/api/addresses.d.ts.map +1 -0
- package/dest/api/addresses.js +2 -0
- package/dest/api/cheat_codes.d.ts +26 -0
- package/dest/api/cheat_codes.d.ts.map +1 -0
- package/dest/api/cheat_codes.js +25 -0
- package/dest/api/deployment.d.ts +4 -0
- package/dest/api/deployment.d.ts.map +1 -0
- package/dest/api/deployment.js +3 -0
- package/dest/api/entrypoint.d.ts +2 -0
- package/dest/api/entrypoint.d.ts.map +1 -0
- package/dest/api/entrypoint.js +1 -0
- package/dest/api/eth_address.d.ts +2 -0
- package/dest/api/eth_address.d.ts.map +1 -0
- package/dest/api/eth_address.js +1 -0
- package/dest/api/ethereum/anvil_test_watcher.d.ts +32 -0
- package/dest/api/ethereum/anvil_test_watcher.d.ts.map +1 -0
- package/dest/api/ethereum/anvil_test_watcher.js +133 -0
- package/dest/api/ethereum/chain_monitor.d.ts +25 -0
- package/dest/api/ethereum/chain_monitor.d.ts.map +1 -0
- package/dest/api/ethereum/chain_monitor.js +74 -0
- package/dest/api/ethereum/cheat_codes.d.ts +63 -0
- package/dest/api/ethereum/cheat_codes.d.ts.map +1 -0
- package/dest/api/ethereum/cheat_codes.js +162 -0
- package/dest/api/ethereum/index.d.ts +7 -0
- package/dest/api/ethereum/index.d.ts.map +1 -0
- package/dest/api/ethereum/index.js +6 -0
- package/dest/api/ethereum/l1_contracts.d.ts +3 -0
- package/dest/api/ethereum/l1_contracts.d.ts.map +1 -0
- package/dest/api/ethereum/l1_contracts.js +13 -0
- package/dest/api/ethereum/portal_manager.d.ts +136 -0
- package/dest/api/ethereum/portal_manager.d.ts.map +1 -0
- package/dest/api/ethereum/portal_manager.js +286 -0
- package/dest/api/fee.d.ts +6 -0
- package/dest/api/fee.d.ts.map +1 -0
- package/dest/api/fee.js +4 -0
- package/dest/api/fields.d.ts +2 -0
- package/dest/api/fields.d.ts.map +1 -0
- package/dest/api/fields.js +1 -0
- package/dest/api/interfaces/pxe.d.ts +2 -0
- package/dest/api/interfaces/pxe.d.ts.map +1 -0
- package/dest/api/interfaces/pxe.js +1 -0
- package/dest/api/log.d.ts +2 -0
- package/dest/api/log.d.ts.map +1 -0
- package/dest/api/log.js +1 -0
- package/dest/api/log_id.d.ts +2 -0
- package/dest/api/log_id.d.ts.map +1 -0
- package/dest/api/log_id.js +1 -0
- package/dest/api/tx_hash.d.ts +2 -0
- package/dest/api/tx_hash.d.ts.map +1 -0
- package/dest/api/tx_hash.js +1 -0
- package/dest/api/wallet.d.ts +2 -0
- package/dest/api/wallet.d.ts.map +1 -0
- package/dest/api/wallet.js +1 -0
- package/dest/contract/base_contract_interaction.d.ts +98 -0
- package/dest/contract/base_contract_interaction.d.ts.map +1 -0
- package/dest/contract/base_contract_interaction.js +149 -0
- package/dest/contract/batch_call.d.ts +28 -0
- package/dest/contract/batch_call.d.ts.map +1 -0
- package/dest/contract/batch_call.js +91 -0
- package/dest/contract/checker.d.ts +11 -0
- package/dest/contract/checker.d.ts.map +1 -0
- package/dest/contract/checker.js +107 -0
- package/dest/contract/contract.d.ts +41 -0
- package/dest/contract/contract.d.ts.map +1 -0
- package/dest/contract/contract.js +52 -0
- package/dest/contract/contract_base.d.ts +61 -0
- package/dest/contract/contract_base.d.ts.map +1 -0
- package/dest/contract/contract_base.js +45 -0
- package/dest/contract/contract_function_interaction.d.ts +68 -0
- package/dest/contract/contract_function_interaction.d.ts.map +1 -0
- package/dest/contract/contract_function_interaction.js +122 -0
- package/dest/contract/deploy_method.d.ts +113 -0
- package/dest/contract/deploy_method.d.ts.map +1 -0
- package/dest/contract/deploy_method.js +212 -0
- package/dest/contract/deploy_proven_tx.d.ts +21 -0
- package/dest/contract/deploy_proven_tx.d.ts.map +1 -0
- package/dest/contract/deploy_proven_tx.js +19 -0
- package/dest/contract/deploy_sent_tx.d.ts +45 -0
- package/dest/contract/deploy_sent_tx.d.ts.map +1 -0
- package/dest/contract/deploy_sent_tx.js +43 -0
- package/dest/contract/get_gas_limits.d.ts +18 -0
- package/dest/contract/get_gas_limits.d.ts.map +1 -0
- package/dest/contract/get_gas_limits.js +10 -0
- package/dest/contract/index.d.ts +45 -0
- package/dest/contract/index.d.ts.map +1 -0
- package/dest/contract/index.js +43 -0
- package/dest/contract/protocol_contracts.d.ts +9 -0
- package/dest/contract/protocol_contracts.d.ts.map +1 -0
- package/dest/contract/protocol_contracts.js +26 -0
- package/dest/contract/proven_tx.d.ts +17 -0
- package/dest/contract/proven_tx.d.ts.map +1 -0
- package/dest/contract/proven_tx.js +22 -0
- package/dest/contract/sent_tx.d.ts +61 -0
- package/dest/contract/sent_tx.d.ts.map +1 -0
- package/dest/contract/sent_tx.js +102 -0
- package/dest/contract/unsafe_contract.d.ts +15 -0
- package/dest/contract/unsafe_contract.d.ts.map +1 -0
- package/dest/contract/unsafe_contract.js +6 -0
- package/dest/deployment/broadcast_function.d.ts +24 -0
- package/dest/deployment/broadcast_function.d.ts.map +1 -0
- package/dest/deployment/broadcast_function.js +70 -0
- package/dest/deployment/contract_deployer.d.ts +27 -0
- package/dest/deployment/contract_deployer.d.ts.map +1 -0
- package/dest/deployment/contract_deployer.js +30 -0
- package/dest/deployment/deploy_instance.d.ts +10 -0
- package/dest/deployment/deploy_instance.d.ts.map +1 -0
- package/dest/deployment/deploy_instance.js +14 -0
- package/dest/deployment/index.d.ts +2 -0
- package/dest/deployment/index.d.ts.map +1 -0
- package/dest/deployment/index.js +1 -0
- package/dest/deployment/register_class.d.ts +6 -0
- package/dest/deployment/register_class.d.ts.map +1 -0
- package/dest/deployment/register_class.js +22 -0
- package/dest/entrypoint/default_entrypoint.d.ts +12 -0
- package/dest/entrypoint/default_entrypoint.d.ts.map +1 -0
- package/dest/entrypoint/default_entrypoint.js +28 -0
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts +15 -0
- package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +1 -0
- package/dest/entrypoint/default_multi_call_entrypoint.js +130 -0
- package/dest/entrypoint/entrypoint.d.ts +35 -0
- package/dest/entrypoint/entrypoint.d.ts.map +1 -0
- package/dest/entrypoint/entrypoint.js +4 -0
- package/dest/entrypoint/payload.d.ts +128 -0
- package/dest/entrypoint/payload.d.ts.map +1 -0
- package/dest/entrypoint/payload.js +143 -0
- package/dest/fee/fee_juice_payment_method.d.ts +14 -0
- package/dest/fee/fee_juice_payment_method.d.ts.map +1 -0
- package/dest/fee/fee_juice_payment_method.js +20 -0
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts +18 -0
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -0
- package/dest/fee/fee_juice_payment_method_with_claim.js +37 -0
- package/dest/fee/fee_payment_method.d.ts +22 -0
- package/dest/fee/fee_payment_method.d.ts.map +1 -0
- package/dest/fee/fee_payment_method.js +3 -0
- package/dest/fee/private_fee_payment_method.d.ts +51 -0
- package/dest/fee/private_fee_payment_method.d.ts.map +1 -0
- package/dest/fee/private_fee_payment_method.js +103 -0
- package/dest/fee/public_fee_payment_method.d.ts +41 -0
- package/dest/fee/public_fee_payment_method.d.ts.map +1 -0
- package/dest/fee/public_fee_payment_method.js +97 -0
- package/dest/index.d.ts +66 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +69 -0
- package/dest/rpc_clients/index.d.ts +3 -0
- package/dest/rpc_clients/index.d.ts.map +1 -0
- package/dest/rpc_clients/index.js +2 -0
- package/dest/rpc_clients/node/index.d.ts +12 -0
- package/dest/rpc_clients/node/index.d.ts.map +1 -0
- package/dest/rpc_clients/node/index.js +78 -0
- package/dest/rpc_clients/pxe_client.d.ts +10 -0
- package/dest/rpc_clients/pxe_client.d.ts.map +1 -0
- package/dest/rpc_clients/pxe_client.js +23 -0
- package/dest/utils/abi_types.d.ts +29 -0
- package/dest/utils/abi_types.d.ts.map +1 -0
- package/dest/utils/abi_types.js +1 -0
- package/dest/utils/authwit.d.ts +60 -0
- package/dest/utils/authwit.d.ts.map +1 -0
- package/dest/utils/authwit.js +74 -0
- package/dest/utils/aztec_cheatcodes.d.ts +59 -0
- package/dest/utils/aztec_cheatcodes.d.ts.map +1 -0
- package/dest/utils/aztec_cheatcodes.js +62 -0
- package/dest/utils/fee_juice.d.ts +7 -0
- package/dest/utils/fee_juice.d.ts.map +1 -0
- package/dest/utils/fee_juice.js +9 -0
- package/dest/utils/field_compressed_string.d.ts +17 -0
- package/dest/utils/field_compressed_string.d.ts.map +1 -0
- package/dest/utils/field_compressed_string.js +15 -0
- package/dest/utils/index.d.ts +8 -0
- package/dest/utils/index.d.ts.map +1 -0
- package/dest/utils/index.js +6 -0
- package/dest/utils/node.d.ts +5 -0
- package/dest/utils/node.d.ts.map +1 -0
- package/dest/utils/node.js +15 -0
- package/dest/utils/pub_key.d.ts +9 -0
- package/dest/utils/pub_key.d.ts.map +1 -0
- package/dest/utils/pub_key.js +9 -0
- package/dest/utils/pxe.d.ts +4 -0
- package/dest/utils/pxe.d.ts.map +1 -0
- package/dest/utils/pxe.js +14 -0
- package/dest/wallet/account_wallet.d.ts +76 -0
- package/dest/wallet/account_wallet.d.ts.map +1 -0
- package/dest/wallet/account_wallet.js +231 -0
- package/dest/wallet/account_wallet_with_private_key.d.ts +26 -0
- package/dest/wallet/account_wallet_with_private_key.d.ts.map +1 -0
- package/dest/wallet/account_wallet_with_private_key.js +22 -0
- package/dest/wallet/base_wallet.d.ts +73 -0
- package/dest/wallet/base_wallet.d.ts.map +1 -0
- package/dest/wallet/base_wallet.js +123 -0
- package/dest/wallet/index.d.ts +17 -0
- package/dest/wallet/index.d.ts.map +1 -0
- package/dest/wallet/index.js +20 -0
- package/dest/wallet/signerless_wallet.d.ts +25 -0
- package/dest/wallet/signerless_wallet.d.ts.map +1 -0
- package/dest/wallet/signerless_wallet.js +36 -0
- package/package.json +116 -0
- package/src/account/contract.ts +56 -0
- package/src/account/index.ts +16 -0
- package/src/account/interface.ts +36 -0
- package/src/account/wallet.ts +13 -0
- package/src/account_manager/deploy_account_method.ts +86 -0
- package/src/account_manager/deploy_account_sent_tx.ts +42 -0
- package/src/account_manager/index.ts +229 -0
- package/src/api/README.md +7 -0
- package/src/api/abi.ts +10 -0
- package/src/api/account.ts +10 -0
- package/src/api/addresses.ts +2 -0
- package/src/api/cheat_codes.ts +35 -0
- package/src/api/deployment.ts +3 -0
- package/src/api/entrypoint.ts +1 -0
- package/src/api/eth_address.ts +1 -0
- package/src/api/ethereum/anvil_test_watcher.ts +158 -0
- package/src/api/ethereum/chain_monitor.ts +88 -0
- package/src/api/ethereum/cheat_codes.ts +184 -0
- package/src/api/ethereum/index.ts +19 -0
- package/src/api/ethereum/l1_contracts.ts +21 -0
- package/src/api/ethereum/portal_manager.ts +410 -0
- package/src/api/fee.ts +5 -0
- package/src/api/fields.ts +1 -0
- package/src/api/interfaces/pxe.ts +1 -0
- package/src/api/log.ts +1 -0
- package/src/api/log_id.ts +1 -0
- package/src/api/tx_hash.ts +1 -0
- package/src/api/wallet.ts +7 -0
- package/src/contract/base_contract_interaction.ts +192 -0
- package/src/contract/batch_call.ts +95 -0
- package/src/contract/checker.ts +117 -0
- package/src/contract/contract.ts +69 -0
- package/src/contract/contract_base.ts +90 -0
- package/src/contract/contract_function_interaction.ts +173 -0
- package/src/contract/deploy_method.ts +271 -0
- package/src/contract/deploy_proven_tx.ts +34 -0
- package/src/contract/deploy_sent_tx.ts +74 -0
- package/src/contract/get_gas_limits.ts +26 -0
- package/src/contract/index.ts +48 -0
- package/src/contract/protocol_contracts.ts +35 -0
- package/src/contract/proven_tx.ts +42 -0
- package/src/contract/sent_tx.ts +141 -0
- package/src/contract/unsafe_contract.ts +19 -0
- package/src/deployment/broadcast_function.ts +148 -0
- package/src/deployment/contract_deployer.ts +41 -0
- package/src/deployment/deploy_instance.ts +31 -0
- package/src/deployment/index.ts +1 -0
- package/src/deployment/register_class.ts +44 -0
- package/src/entrypoint/default_entrypoint.ts +39 -0
- package/src/entrypoint/default_multi_call_entrypoint.ts +93 -0
- package/src/entrypoint/entrypoint.ts +39 -0
- package/src/entrypoint/payload.ts +238 -0
- package/src/fee/fee_juice_payment_method.ts +26 -0
- package/src/fee/fee_juice_payment_method_with_claim.ts +49 -0
- package/src/fee/fee_payment_method.ts +22 -0
- package/src/fee/private_fee_payment_method.ts +118 -0
- package/src/fee/public_fee_payment_method.ts +114 -0
- package/src/index.ts +106 -0
- package/src/rpc_clients/index.ts +2 -0
- package/src/rpc_clients/node/index.ts +77 -0
- package/src/rpc_clients/pxe_client.ts +25 -0
- package/src/utils/abi_types.ts +25 -0
- package/src/utils/authwit.ts +110 -0
- package/src/utils/aztec_cheatcodes.ts +77 -0
- package/src/utils/fee_juice.ts +14 -0
- package/src/utils/field_compressed_string.ts +27 -0
- package/src/utils/index.ts +21 -0
- package/src/utils/node.ts +19 -0
- package/src/utils/pub_key.ts +13 -0
- package/src/utils/pxe.ts +17 -0
- package/src/wallet/account_wallet.ts +242 -0
- package/src/wallet/account_wallet_with_private_key.ts +40 -0
- package/src/wallet/base_wallet.ts +198 -0
- package/src/wallet/index.ts +33 -0
- package/src/wallet/signerless_wallet.ts +52 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EthCheatCodes } from '@aztec/ethereum/eth-cheatcodes';
|
|
2
|
+
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
|
+
import type { PXE } from '@aztec/stdlib/interfaces/client';
|
|
4
|
+
import { AztecCheatCodes } from '../utils/aztec_cheatcodes.js';
|
|
5
|
+
import { RollupCheatCodes } from './ethereum/cheat_codes.js';
|
|
6
|
+
/**
|
|
7
|
+
* A class that provides utility functions for interacting with the chain.
|
|
8
|
+
*/
|
|
9
|
+
export declare class CheatCodes {
|
|
10
|
+
/** Cheat codes for L1.*/
|
|
11
|
+
eth: EthCheatCodes;
|
|
12
|
+
/** Cheat codes for Aztec L2. */
|
|
13
|
+
aztec: AztecCheatCodes;
|
|
14
|
+
/** Cheat codes for the Aztec Rollup contract on L1. */
|
|
15
|
+
rollup: RollupCheatCodes;
|
|
16
|
+
constructor(
|
|
17
|
+
/** Cheat codes for L1.*/
|
|
18
|
+
eth: EthCheatCodes,
|
|
19
|
+
/** Cheat codes for Aztec L2. */
|
|
20
|
+
aztec: AztecCheatCodes,
|
|
21
|
+
/** Cheat codes for the Aztec Rollup contract on L1. */
|
|
22
|
+
rollup: RollupCheatCodes);
|
|
23
|
+
static create(rpcUrls: string[], pxe: PXE): Promise<CheatCodes>;
|
|
24
|
+
static createRollup(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'>): RollupCheatCodes;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=cheat_codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cheat_codes.d.ts","sourceRoot":"","sources":["../../src/api/cheat_codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,qBAAa,UAAU;IAEnB,yBAAyB;IAClB,GAAG,EAAE,aAAa;IACzB,gCAAgC;IACzB,KAAK,EAAE,eAAe;IAC7B,uDAAuD;IAChD,MAAM,EAAE,gBAAgB;;IAL/B,yBAAyB;IAClB,GAAG,EAAE,aAAa;IACzB,gCAAgC;IACzB,KAAK,EAAE,eAAe;IAC7B,uDAAuD;IAChD,MAAM,EAAE,gBAAgB;WAGpB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAUrE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAAG,gBAAgB;CAIhH"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EthCheatCodes } from '@aztec/ethereum/eth-cheatcodes';
|
|
2
|
+
import { AztecCheatCodes } from '../utils/aztec_cheatcodes.js';
|
|
3
|
+
import { RollupCheatCodes } from './ethereum/cheat_codes.js';
|
|
4
|
+
/**
|
|
5
|
+
* A class that provides utility functions for interacting with the chain.
|
|
6
|
+
*/ export class CheatCodes {
|
|
7
|
+
eth;
|
|
8
|
+
aztec;
|
|
9
|
+
rollup;
|
|
10
|
+
constructor(/** Cheat codes for L1.*/ eth, /** Cheat codes for Aztec L2. */ aztec, /** Cheat codes for the Aztec Rollup contract on L1. */ rollup){
|
|
11
|
+
this.eth = eth;
|
|
12
|
+
this.aztec = aztec;
|
|
13
|
+
this.rollup = rollup;
|
|
14
|
+
}
|
|
15
|
+
static async create(rpcUrls, pxe) {
|
|
16
|
+
const ethCheatCodes = new EthCheatCodes(rpcUrls);
|
|
17
|
+
const aztecCheatCodes = new AztecCheatCodes(pxe);
|
|
18
|
+
const rollupCheatCodes = new RollupCheatCodes(ethCheatCodes, await pxe.getNodeInfo().then((n)=>n.l1ContractAddresses));
|
|
19
|
+
return new CheatCodes(ethCheatCodes, aztecCheatCodes, rollupCheatCodes);
|
|
20
|
+
}
|
|
21
|
+
static createRollup(rpcUrls, addresses) {
|
|
22
|
+
const ethCheatCodes = new EthCheatCodes(rpcUrls);
|
|
23
|
+
return new RollupCheatCodes(ethCheatCodes, addresses);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { registerContractClass } from '../deployment/register_class.js';
|
|
2
|
+
export { broadcastPrivateFunction, broadcastUnconstrainedFunction } from '../deployment/broadcast_function.js';
|
|
3
|
+
export { deployInstance } from '../deployment/deploy_instance.js';
|
|
4
|
+
//# sourceMappingURL=deployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/api/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/api/entrypoint.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../entrypoint/entrypoint.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_address.d.ts","sourceRoot":"","sources":["../../src/api/eth_address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EthAddress } from '@aztec/foundation/eth-address';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ViemPublicClient } from '@aztec/ethereum';
|
|
2
|
+
import type { EthCheatCodes } from '@aztec/ethereum/eth-cheatcodes';
|
|
3
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
+
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
5
|
+
/**
|
|
6
|
+
* Represents a watcher for a rollup contract.
|
|
7
|
+
*
|
|
8
|
+
* It started on a network like anvil where time traveling is allowed, and auto-mine is turned on
|
|
9
|
+
* it will periodically check if the current slot have already been filled, e.g., there was an L2
|
|
10
|
+
* block within the slot. And if so, it will time travel into the next slot.
|
|
11
|
+
*/
|
|
12
|
+
export declare class AnvilTestWatcher {
|
|
13
|
+
private cheatcodes;
|
|
14
|
+
private dateProvider?;
|
|
15
|
+
private isSandbox;
|
|
16
|
+
private rollup;
|
|
17
|
+
private rollupCheatCodes;
|
|
18
|
+
private filledRunningPromise?;
|
|
19
|
+
private mineIfOutdatedPromise?;
|
|
20
|
+
private markingAsProvenRunningPromise?;
|
|
21
|
+
private logger;
|
|
22
|
+
private isMarkingAsProven;
|
|
23
|
+
constructor(cheatcodes: EthCheatCodes, rollupAddress: EthAddress, publicClient: ViemPublicClient, dateProvider?: TestDateProvider | undefined);
|
|
24
|
+
setIsMarkingAsProven(isMarkingAsProven: boolean): void;
|
|
25
|
+
setIsSandbox(isSandbox: boolean): void;
|
|
26
|
+
start(): Promise<void>;
|
|
27
|
+
stop(): Promise<void>;
|
|
28
|
+
markAsProven(): Promise<void>;
|
|
29
|
+
mineIfOutdated(): Promise<void>;
|
|
30
|
+
warpTimeIfNeeded(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=anvil_test_watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvil_test_watcher.d.ts","sourceRoot":"","sources":["../../../src/api/ethereum/anvil_test_watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOhE;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAezB,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,YAAY,CAAC;IAjBvB,OAAO,CAAC,SAAS,CAAkB;IAEnC,OAAO,CAAC,MAAM,CAA4D;IAC1E,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAC9C,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAC/C,OAAO,CAAC,6BAA6B,CAAC,CAAiB;IAEvD,OAAO,CAAC,MAAM,CAAiD;IAE/D,OAAO,CAAC,iBAAiB,CAAQ;gBAGvB,UAAU,EAAE,aAAa,EACjC,aAAa,EAAE,UAAU,EACzB,YAAY,EAAE,gBAAgB,EACtB,YAAY,CAAC,8BAAkB;IAezC,oBAAoB,CAAC,iBAAiB,EAAE,OAAO;IAI/C,YAAY,CAAC,SAAS,EAAE,OAAO;IAIzB,KAAK;IAwBL,IAAI;IAMJ,YAAY;IAOZ,cAAc;IAoBd,gBAAgB;CAwCvB"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
3
|
+
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
4
|
+
import { getAddress, getContract } from 'viem';
|
|
5
|
+
import { RollupCheatCodes } from './cheat_codes.js';
|
|
6
|
+
/**
|
|
7
|
+
* Represents a watcher for a rollup contract.
|
|
8
|
+
*
|
|
9
|
+
* It started on a network like anvil where time traveling is allowed, and auto-mine is turned on
|
|
10
|
+
* it will periodically check if the current slot have already been filled, e.g., there was an L2
|
|
11
|
+
* block within the slot. And if so, it will time travel into the next slot.
|
|
12
|
+
*/ export class AnvilTestWatcher {
|
|
13
|
+
cheatcodes;
|
|
14
|
+
dateProvider;
|
|
15
|
+
isSandbox;
|
|
16
|
+
rollup;
|
|
17
|
+
rollupCheatCodes;
|
|
18
|
+
filledRunningPromise;
|
|
19
|
+
mineIfOutdatedPromise;
|
|
20
|
+
markingAsProvenRunningPromise;
|
|
21
|
+
logger;
|
|
22
|
+
isMarkingAsProven;
|
|
23
|
+
constructor(cheatcodes, rollupAddress, publicClient, dateProvider){
|
|
24
|
+
this.cheatcodes = cheatcodes;
|
|
25
|
+
this.dateProvider = dateProvider;
|
|
26
|
+
this.isSandbox = false;
|
|
27
|
+
this.logger = createLogger(`aztecjs:utils:watcher`);
|
|
28
|
+
this.isMarkingAsProven = true;
|
|
29
|
+
this.rollup = getContract({
|
|
30
|
+
address: getAddress(rollupAddress.toString()),
|
|
31
|
+
abi: RollupAbi,
|
|
32
|
+
client: publicClient
|
|
33
|
+
});
|
|
34
|
+
this.rollupCheatCodes = new RollupCheatCodes(this.cheatcodes, {
|
|
35
|
+
rollupAddress
|
|
36
|
+
});
|
|
37
|
+
this.logger.debug(`Watcher created for rollup at ${rollupAddress}`);
|
|
38
|
+
}
|
|
39
|
+
setIsMarkingAsProven(isMarkingAsProven) {
|
|
40
|
+
this.isMarkingAsProven = isMarkingAsProven;
|
|
41
|
+
}
|
|
42
|
+
setIsSandbox(isSandbox) {
|
|
43
|
+
this.isSandbox = isSandbox;
|
|
44
|
+
}
|
|
45
|
+
async start() {
|
|
46
|
+
if (this.filledRunningPromise) {
|
|
47
|
+
throw new Error('Watcher already watching for filled slot');
|
|
48
|
+
}
|
|
49
|
+
// If auto mining is not supported (e.g., we are on a real network), then we
|
|
50
|
+
// will simple do nothing. But if on an anvil or the like, this make sure that
|
|
51
|
+
// the sandbox and tests don't break because time is frozen and we never get to
|
|
52
|
+
// the next slot.
|
|
53
|
+
const isAutoMining = await this.cheatcodes.isAutoMining();
|
|
54
|
+
if (isAutoMining) {
|
|
55
|
+
this.filledRunningPromise = new RunningPromise(()=>this.warpTimeIfNeeded(), this.logger, 1000);
|
|
56
|
+
this.filledRunningPromise.start();
|
|
57
|
+
this.mineIfOutdatedPromise = new RunningPromise(()=>this.mineIfOutdated(), this.logger, 1000);
|
|
58
|
+
this.mineIfOutdatedPromise.start();
|
|
59
|
+
this.markingAsProvenRunningPromise = new RunningPromise(()=>this.markAsProven(), this.logger, 1000);
|
|
60
|
+
this.markingAsProvenRunningPromise.start();
|
|
61
|
+
this.logger.info(`Watcher started for rollup at ${this.rollup.address}`);
|
|
62
|
+
} else {
|
|
63
|
+
this.logger.info(`Watcher not started because not auto mining`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async stop() {
|
|
67
|
+
await this.filledRunningPromise?.stop();
|
|
68
|
+
await this.mineIfOutdatedPromise?.stop();
|
|
69
|
+
await this.markingAsProvenRunningPromise?.stop();
|
|
70
|
+
}
|
|
71
|
+
async markAsProven() {
|
|
72
|
+
if (!this.isMarkingAsProven) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
await this.rollupCheatCodes.markAsProven();
|
|
76
|
+
}
|
|
77
|
+
async mineIfOutdated() {
|
|
78
|
+
// this doesn't apply to the sandbox, because we don't have a date provider in the sandbox
|
|
79
|
+
if (!this.dateProvider) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const l1Time = await this.cheatcodes.timestamp() * 1000;
|
|
83
|
+
const wallTime = this.dateProvider.now();
|
|
84
|
+
// If the wall time is more than 24 seconds away from L1 time,
|
|
85
|
+
// mine a block and sync the clocks
|
|
86
|
+
if (Math.abs(wallTime - l1Time) > 24 * 1000) {
|
|
87
|
+
this.logger.warn(`Wall time is more than 24 seconds away from L1 time, mining a block and syncing clocks`);
|
|
88
|
+
await this.cheatcodes.evmMine();
|
|
89
|
+
const newL1Time = await this.cheatcodes.timestamp();
|
|
90
|
+
this.logger.info(`New L1 time: ${newL1Time}`);
|
|
91
|
+
this.dateProvider.setTime(newL1Time * 1000);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async warpTimeIfNeeded() {
|
|
95
|
+
try {
|
|
96
|
+
const currentSlot = await this.rollup.read.getCurrentSlot();
|
|
97
|
+
const pendingBlockNumber = BigInt(await this.rollup.read.getPendingBlockNumber());
|
|
98
|
+
const blockLog = await this.rollup.read.getBlock([
|
|
99
|
+
pendingBlockNumber
|
|
100
|
+
]);
|
|
101
|
+
const nextSlotTimestamp = Number(await this.rollup.read.getTimestampForSlot([
|
|
102
|
+
currentSlot + 1n
|
|
103
|
+
]));
|
|
104
|
+
if (currentSlot === blockLog.slotNumber) {
|
|
105
|
+
// We should jump to the next slot
|
|
106
|
+
try {
|
|
107
|
+
await this.cheatcodes.warp(nextSlotTimestamp);
|
|
108
|
+
this.dateProvider?.setTime(nextSlotTimestamp * 1000);
|
|
109
|
+
} catch (e) {
|
|
110
|
+
this.logger.error(`Failed to warp to timestamp ${nextSlotTimestamp}: ${e}`);
|
|
111
|
+
}
|
|
112
|
+
this.logger.info(`Slot ${currentSlot} was filled, jumped to next slot`);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// If we are not in sandbox, we don't need to warp time
|
|
116
|
+
if (!this.isSandbox) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const currentTimestamp = this.dateProvider?.now() ?? Date.now();
|
|
120
|
+
if (currentTimestamp > nextSlotTimestamp * 1000) {
|
|
121
|
+
try {
|
|
122
|
+
await this.cheatcodes.warp(nextSlotTimestamp);
|
|
123
|
+
this.dateProvider?.setTime(nextSlotTimestamp * 1000);
|
|
124
|
+
} catch (e) {
|
|
125
|
+
this.logger.error(`Failed to warp to timestamp ${nextSlotTimestamp}: ${e}`);
|
|
126
|
+
}
|
|
127
|
+
this.logger.info(`Slot ${currentSlot} was missed, jumped to next slot`);
|
|
128
|
+
}
|
|
129
|
+
} catch (err) {
|
|
130
|
+
this.logger.error('mineIfSlotFilled failed');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
2
|
+
/** Utility class that polls the chain on quick intervals and logs new L1 blocks, L2 blocks, and L2 proofs. */
|
|
3
|
+
export declare class ChainMonitor {
|
|
4
|
+
private readonly rollup;
|
|
5
|
+
private logger;
|
|
6
|
+
private readonly intervalMs;
|
|
7
|
+
private readonly l1Client;
|
|
8
|
+
private handle;
|
|
9
|
+
/** Current L1 block number */
|
|
10
|
+
l1BlockNumber: number;
|
|
11
|
+
/** Current L2 block number */
|
|
12
|
+
l2BlockNumber: number;
|
|
13
|
+
/** Current L2 proven block number */
|
|
14
|
+
l2ProvenBlockNumber: number;
|
|
15
|
+
/** L1 timestamp for the current L2 block */
|
|
16
|
+
l2BlockTimestamp: bigint;
|
|
17
|
+
/** L1 timestamp for the proven L2 block */
|
|
18
|
+
l2ProvenBlockTimestamp: bigint;
|
|
19
|
+
constructor(rollup: RollupContract, logger?: import("@aztec/foundation/log").Logger, intervalMs?: number);
|
|
20
|
+
start(): this;
|
|
21
|
+
stop(): void;
|
|
22
|
+
private safeRun;
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=chain_monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain_monitor.d.ts","sourceRoot":"","sources":["../../../src/api/ethereum/chain_monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,8GAA8G;AAC9G,qBAAa,YAAY;IAgBrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,UAAU;IAjB7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,MAAM,CAA6B;IAE3C,8BAA8B;IACvB,aAAa,EAAG,MAAM,CAAC;IAC9B,8BAA8B;IACvB,aAAa,EAAG,MAAM,CAAC;IAC9B,qCAAqC;IAC9B,mBAAmB,EAAG,MAAM,CAAC;IACpC,4CAA4C;IACrC,gBAAgB,EAAG,MAAM,CAAC;IACjC,2CAA2C;IACpC,sBAAsB,EAAG,MAAM,CAAC;gBAGpB,MAAM,EAAE,cAAc,EAC/B,MAAM,yCAA8C,EAC3C,UAAU,SAAM;IAKnC,KAAK;IAQL,IAAI;IAOJ,OAAO,CAAC,OAAO;IAMT,GAAG;CAqCV"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
/** Utility class that polls the chain on quick intervals and logs new L1 blocks, L2 blocks, and L2 proofs. */ export class ChainMonitor {
|
|
3
|
+
rollup;
|
|
4
|
+
logger;
|
|
5
|
+
intervalMs;
|
|
6
|
+
l1Client;
|
|
7
|
+
handle;
|
|
8
|
+
/** Current L1 block number */ l1BlockNumber;
|
|
9
|
+
/** Current L2 block number */ l2BlockNumber;
|
|
10
|
+
/** Current L2 proven block number */ l2ProvenBlockNumber;
|
|
11
|
+
/** L1 timestamp for the current L2 block */ l2BlockTimestamp;
|
|
12
|
+
/** L1 timestamp for the proven L2 block */ l2ProvenBlockTimestamp;
|
|
13
|
+
constructor(rollup, logger = createLogger('aztecjs:utils:chain_monitor'), intervalMs = 200){
|
|
14
|
+
this.rollup = rollup;
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
this.intervalMs = intervalMs;
|
|
17
|
+
this.l1Client = rollup.client;
|
|
18
|
+
}
|
|
19
|
+
start() {
|
|
20
|
+
if (this.handle) {
|
|
21
|
+
throw new Error('Chain monitor already started');
|
|
22
|
+
}
|
|
23
|
+
this.handle = setInterval(this.safeRun.bind(this), this.intervalMs);
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
stop() {
|
|
27
|
+
if (this.handle) {
|
|
28
|
+
clearInterval(this.handle);
|
|
29
|
+
this.handle = undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
safeRun() {
|
|
33
|
+
void this.run().catch((error)=>{
|
|
34
|
+
this.logger.error('Error in chain monitor loop', error);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async run() {
|
|
38
|
+
const newL1BlockNumber = Number(await this.l1Client.getBlockNumber({
|
|
39
|
+
cacheTime: 0
|
|
40
|
+
}));
|
|
41
|
+
if (this.l1BlockNumber === newL1BlockNumber) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.l1BlockNumber = newL1BlockNumber;
|
|
45
|
+
const block = await this.l1Client.getBlock({
|
|
46
|
+
blockNumber: BigInt(newL1BlockNumber),
|
|
47
|
+
includeTransactions: false
|
|
48
|
+
});
|
|
49
|
+
const timestamp = block.timestamp;
|
|
50
|
+
const timestampString = new Date(Number(timestamp) * 1000).toTimeString().split(' ')[0];
|
|
51
|
+
let msg = `L1 block ${newL1BlockNumber} mined at ${timestampString}`;
|
|
52
|
+
const newL2BlockNumber = Number(await this.rollup.getBlockNumber());
|
|
53
|
+
if (this.l2BlockNumber !== newL2BlockNumber) {
|
|
54
|
+
const epochNumber = await this.rollup.getEpochNumber(BigInt(newL2BlockNumber));
|
|
55
|
+
msg += ` with new L2 block ${newL2BlockNumber} for epoch ${epochNumber}`;
|
|
56
|
+
this.l2BlockNumber = newL2BlockNumber;
|
|
57
|
+
this.l2BlockTimestamp = timestamp;
|
|
58
|
+
}
|
|
59
|
+
const newL2ProvenBlockNumber = Number(await this.rollup.getProvenBlockNumber());
|
|
60
|
+
if (this.l2ProvenBlockNumber !== newL2ProvenBlockNumber) {
|
|
61
|
+
const epochNumber = await this.rollup.getEpochNumber(BigInt(newL2ProvenBlockNumber));
|
|
62
|
+
msg += ` with proof up to L2 block ${newL2ProvenBlockNumber} for epoch ${epochNumber}`;
|
|
63
|
+
this.l2ProvenBlockNumber = newL2ProvenBlockNumber;
|
|
64
|
+
this.l2ProvenBlockTimestamp = timestamp;
|
|
65
|
+
}
|
|
66
|
+
this.logger.info(msg, {
|
|
67
|
+
l1Timestamp: timestamp,
|
|
68
|
+
l1BlockNumber: this.l1BlockNumber,
|
|
69
|
+
l2SlotNumber: await this.rollup.getSlotNumber(),
|
|
70
|
+
l2BlockNumber: this.l2BlockNumber,
|
|
71
|
+
l2ProvenBlockNumber: this.l2ProvenBlockNumber
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { ViemPublicClient } from '@aztec/ethereum';
|
|
2
|
+
import { EthCheatCodes } from '@aztec/ethereum/eth-cheatcodes';
|
|
3
|
+
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
4
|
+
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
5
|
+
import { type GetContractReturnType, type Hex } from 'viem';
|
|
6
|
+
export { EthCheatCodes };
|
|
7
|
+
/** Cheat codes for the L1 rollup contract. */
|
|
8
|
+
export declare class RollupCheatCodes {
|
|
9
|
+
private ethCheatCodes;
|
|
10
|
+
private client;
|
|
11
|
+
private rollup;
|
|
12
|
+
private logger;
|
|
13
|
+
constructor(ethCheatCodes: EthCheatCodes, addresses: Pick<L1ContractAddresses, 'rollupAddress'>);
|
|
14
|
+
/** Returns the current slot */
|
|
15
|
+
getSlot(): Promise<bigint>;
|
|
16
|
+
/** Returns the current epoch */
|
|
17
|
+
getEpoch(): Promise<bigint>;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the pending and proven chain tips
|
|
20
|
+
* @returns The pending and proven chain tips
|
|
21
|
+
*/
|
|
22
|
+
getTips(): Promise<{
|
|
23
|
+
/** The pending chain tip */ pending: bigint;
|
|
24
|
+
/** The proven chain tip */ proven: bigint;
|
|
25
|
+
}>;
|
|
26
|
+
/** Fetches the epoch and slot duration config from the rollup contract */
|
|
27
|
+
getConfig(): Promise<{
|
|
28
|
+
/** Epoch duration */ epochDuration: bigint;
|
|
29
|
+
/** Slot duration */ slotDuration: bigint;
|
|
30
|
+
}>;
|
|
31
|
+
/** Warps time in L1 until the next epoch */
|
|
32
|
+
advanceToNextEpoch(): Promise<void>;
|
|
33
|
+
/** Warps time in L1 until the beginning of the next slot. */
|
|
34
|
+
advanceToNextSlot(): Promise<bigint[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Warps time in L1 equivalent to however many slots.
|
|
37
|
+
* @param howMany - The number of slots to advance.
|
|
38
|
+
*/
|
|
39
|
+
advanceSlots(howMany: number): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Marks the specified block (or latest if none) as proven
|
|
42
|
+
* @param maybeBlockNumber - The block number to mark as proven (defaults to latest pending)
|
|
43
|
+
*/
|
|
44
|
+
markAsProven(maybeBlockNumber?: number | bigint): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Executes an action impersonated as the owner of the Rollup contract.
|
|
47
|
+
* @param action - The action to execute
|
|
48
|
+
*/
|
|
49
|
+
asOwner(action: (owner: Hex, rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>) => Promise<void>): Promise<void>;
|
|
50
|
+
/** Directly calls the L1 gas fee oracle. */
|
|
51
|
+
updateL1GasFeeOracle(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Bumps proving cost per mana.
|
|
54
|
+
* @param bumper - Callback to calculate the new proving cost per mana based on current value.
|
|
55
|
+
*/
|
|
56
|
+
bumpProvingCostPerMana(bumper: (before: bigint) => bigint): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Directly updates proving cost per mana.
|
|
59
|
+
* @param ethValue - The new proving cost per mana in ETH
|
|
60
|
+
*/
|
|
61
|
+
setProvingCostPerMana(ethValue: bigint): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=cheat_codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cheat_codes.d.ts","sourceRoot":"","sources":["../../../src/api/ethereum/cheat_codes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAGjF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,GAAG,EAA8D,MAAM,MAAM,CAAC;AAGxH,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,8CAA8C;AAC9C,qBAAa,gBAAgB;IAMf,OAAO,CAAC,aAAa;IALjC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAA4D;IAE1E,OAAO,CAAC,MAAM,CAAuC;gBAEjC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC;IAYvG,+BAA+B;IAClB,OAAO;IAKpB,gCAAgC;IACnB,QAAQ;IAKrB;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC;QAC9B,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7C,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC;KAC5C,CAAC;IAQF,0EAA0E;IAC7D,SAAS,IAAI,OAAO,CAAC;QAChC,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC;QAC5C,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC;KAC3C,CAAC;IAQF,4CAA4C;IAC/B,kBAAkB;IAU/B,6DAA6D;IAChD,iBAAiB;IAQ9B;;;OAGG;IACU,YAAY,CAAC,OAAO,EAAE,MAAM;IASzC;;;OAGG;IACU,YAAY,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAiC5D;;;OAGG;IACU,OAAO,CAClB,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAQ1G,4CAA4C;IAC/B,oBAAoB;IAQjC;;;OAGG;IACU,sBAAsB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM;IAMtE;;;OAGG;IACU,qBAAqB,CAAC,QAAQ,EAAE,MAAM;CAOpD"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { EthCheatCodes } from '@aztec/ethereum/eth-cheatcodes';
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
5
|
+
import { createPublicClient, fallback, getContract, http, keccak256 } from 'viem';
|
|
6
|
+
import { foundry } from 'viem/chains';
|
|
7
|
+
export { EthCheatCodes };
|
|
8
|
+
/** Cheat codes for the L1 rollup contract. */ export class RollupCheatCodes {
|
|
9
|
+
ethCheatCodes;
|
|
10
|
+
client;
|
|
11
|
+
rollup;
|
|
12
|
+
logger;
|
|
13
|
+
constructor(ethCheatCodes, addresses){
|
|
14
|
+
this.ethCheatCodes = ethCheatCodes;
|
|
15
|
+
this.logger = createLogger('aztecjs:cheat_codes');
|
|
16
|
+
this.client = createPublicClient({
|
|
17
|
+
chain: foundry,
|
|
18
|
+
transport: fallback(ethCheatCodes.rpcUrls.map((url)=>http(url)))
|
|
19
|
+
});
|
|
20
|
+
this.rollup = getContract({
|
|
21
|
+
abi: RollupAbi,
|
|
22
|
+
address: addresses.rollupAddress.toString(),
|
|
23
|
+
client: this.client
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/** Returns the current slot */ async getSlot() {
|
|
27
|
+
const ts = BigInt((await this.client.getBlock()).timestamp);
|
|
28
|
+
return await this.rollup.read.getSlotAt([
|
|
29
|
+
ts
|
|
30
|
+
]);
|
|
31
|
+
}
|
|
32
|
+
/** Returns the current epoch */ async getEpoch() {
|
|
33
|
+
const slotNumber = await this.getSlot();
|
|
34
|
+
return await this.rollup.read.getEpochAtSlot([
|
|
35
|
+
slotNumber
|
|
36
|
+
]);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns the pending and proven chain tips
|
|
40
|
+
* @returns The pending and proven chain tips
|
|
41
|
+
*/ async getTips() {
|
|
42
|
+
const res = await this.rollup.read.getTips();
|
|
43
|
+
return {
|
|
44
|
+
pending: res.pendingBlockNumber,
|
|
45
|
+
proven: res.provenBlockNumber
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Fetches the epoch and slot duration config from the rollup contract */ async getConfig() {
|
|
49
|
+
const [epochDuration, slotDuration] = await Promise.all([
|
|
50
|
+
this.rollup.read.getEpochDuration(),
|
|
51
|
+
this.rollup.read.getSlotDuration()
|
|
52
|
+
]);
|
|
53
|
+
return {
|
|
54
|
+
epochDuration,
|
|
55
|
+
slotDuration
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Warps time in L1 until the next epoch */ async advanceToNextEpoch() {
|
|
59
|
+
const slot = await this.getSlot();
|
|
60
|
+
const { epochDuration, slotDuration } = await this.getConfig();
|
|
61
|
+
const slotsUntilNextEpoch = epochDuration - slot % epochDuration + 1n;
|
|
62
|
+
const timeToNextEpoch = slotsUntilNextEpoch * slotDuration;
|
|
63
|
+
const l1Timestamp = BigInt((await this.client.getBlock()).timestamp);
|
|
64
|
+
await this.ethCheatCodes.warp(Number(l1Timestamp + timeToNextEpoch), true);
|
|
65
|
+
this.logger.warn(`Advanced to next epoch`);
|
|
66
|
+
}
|
|
67
|
+
/** Warps time in L1 until the beginning of the next slot. */ async advanceToNextSlot() {
|
|
68
|
+
const currentSlot = await this.getSlot();
|
|
69
|
+
const timestamp = await this.rollup.read.getTimestampForSlot([
|
|
70
|
+
currentSlot + 1n
|
|
71
|
+
]);
|
|
72
|
+
await this.ethCheatCodes.warp(Number(timestamp));
|
|
73
|
+
this.logger.warn(`Advanced to slot ${currentSlot + 1n}`);
|
|
74
|
+
return [
|
|
75
|
+
timestamp,
|
|
76
|
+
currentSlot + 1n
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Warps time in L1 equivalent to however many slots.
|
|
81
|
+
* @param howMany - The number of slots to advance.
|
|
82
|
+
*/ async advanceSlots(howMany) {
|
|
83
|
+
const l1Timestamp = (await this.client.getBlock()).timestamp;
|
|
84
|
+
const slotDuration = await this.rollup.read.getSlotDuration();
|
|
85
|
+
const timeToWarp = BigInt(howMany) * slotDuration;
|
|
86
|
+
await this.ethCheatCodes.warp(l1Timestamp + timeToWarp, true);
|
|
87
|
+
const [slot, epoch] = await Promise.all([
|
|
88
|
+
this.getSlot(),
|
|
89
|
+
this.getEpoch()
|
|
90
|
+
]);
|
|
91
|
+
this.logger.warn(`Advanced ${howMany} slots up to slot ${slot} in epoch ${epoch}`);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Marks the specified block (or latest if none) as proven
|
|
95
|
+
* @param maybeBlockNumber - The block number to mark as proven (defaults to latest pending)
|
|
96
|
+
*/ async markAsProven(maybeBlockNumber) {
|
|
97
|
+
const { pending, proven } = await this.getTips();
|
|
98
|
+
let blockNumber = maybeBlockNumber;
|
|
99
|
+
if (blockNumber === undefined || blockNumber > pending) {
|
|
100
|
+
blockNumber = pending;
|
|
101
|
+
}
|
|
102
|
+
if (blockNumber <= proven) {
|
|
103
|
+
this.logger.warn(`Block ${blockNumber} is already proven`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// @note @LHerskind this is heavily dependent on the storage layout and size of values
|
|
107
|
+
// The rollupStore is a struct and if the size of elements or the struct changes, this can break
|
|
108
|
+
// Convert string to bytes and then compute keccak256
|
|
109
|
+
const storageSlot = keccak256(Buffer.from('aztec.stf.storage', 'utf-8'));
|
|
110
|
+
const provenBlockNumberSlot = BigInt(storageSlot) + 1n;
|
|
111
|
+
const tipsBefore = await this.getTips();
|
|
112
|
+
await this.ethCheatCodes.store(EthAddress.fromString(this.rollup.address), provenBlockNumberSlot, BigInt(blockNumber));
|
|
113
|
+
const tipsAfter = await this.getTips();
|
|
114
|
+
this.logger.info(`Proven tip moved: ${tipsBefore.proven} -> ${tipsAfter.proven}. Pending tip: ${tipsAfter.pending}.`);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Executes an action impersonated as the owner of the Rollup contract.
|
|
118
|
+
* @param action - The action to execute
|
|
119
|
+
*/ async asOwner(action) {
|
|
120
|
+
const owner = await this.rollup.read.owner();
|
|
121
|
+
await this.ethCheatCodes.startImpersonating(owner);
|
|
122
|
+
await action(owner, this.rollup);
|
|
123
|
+
await this.ethCheatCodes.stopImpersonating(owner);
|
|
124
|
+
}
|
|
125
|
+
/** Directly calls the L1 gas fee oracle. */ async updateL1GasFeeOracle() {
|
|
126
|
+
await this.asOwner(async (account, rollup)=>{
|
|
127
|
+
const hash = await rollup.write.updateL1GasFeeOracle({
|
|
128
|
+
account,
|
|
129
|
+
chain: this.client.chain
|
|
130
|
+
});
|
|
131
|
+
await this.client.waitForTransactionReceipt({
|
|
132
|
+
hash
|
|
133
|
+
});
|
|
134
|
+
this.logger.warn(`Updated L1 gas fee oracle`);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Bumps proving cost per mana.
|
|
139
|
+
* @param bumper - Callback to calculate the new proving cost per mana based on current value.
|
|
140
|
+
*/ async bumpProvingCostPerMana(bumper) {
|
|
141
|
+
const currentCost = await this.rollup.read.getProvingCostPerManaInEth();
|
|
142
|
+
const newCost = bumper(currentCost);
|
|
143
|
+
await this.setProvingCostPerMana(newCost);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Directly updates proving cost per mana.
|
|
147
|
+
* @param ethValue - The new proving cost per mana in ETH
|
|
148
|
+
*/ async setProvingCostPerMana(ethValue) {
|
|
149
|
+
await this.asOwner(async (account, rollup)=>{
|
|
150
|
+
const hash = await rollup.write.setProvingCostPerMana([
|
|
151
|
+
ethValue
|
|
152
|
+
], {
|
|
153
|
+
account,
|
|
154
|
+
chain: this.client.chain
|
|
155
|
+
});
|
|
156
|
+
await this.client.waitForTransactionReceipt({
|
|
157
|
+
hash
|
|
158
|
+
});
|
|
159
|
+
this.logger.warn(`Updated proving cost per mana to ${ethValue}`);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { L1FeeJuicePortalManager, L1ToL2TokenPortalManager, L1TokenManager, L1TokenPortalManager, type L2AmountClaim, type L2AmountClaimWithRecipient, type L2Claim, generateClaimSecret, } from './portal_manager.js';
|
|
2
|
+
export { getL1ContractAddresses } from './l1_contracts.js';
|
|
3
|
+
export { RollupCheatCodes, EthCheatCodes } from './cheat_codes.js';
|
|
4
|
+
export { ChainMonitor } from './chain_monitor.js';
|
|
5
|
+
export { AnvilTestWatcher } from './anvil_test_watcher.js';
|
|
6
|
+
export { deployL1Contract, deployL1Contracts, type DeployL1ContractsReturnType, } from '@aztec/ethereum/deploy-l1-contracts';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/ethereum/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,KAAK,OAAO,EACZ,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,2BAA2B,GACjC,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { L1FeeJuicePortalManager, L1ToL2TokenPortalManager, L1TokenManager, L1TokenPortalManager, generateClaimSecret } from './portal_manager.js';
|
|
2
|
+
export { getL1ContractAddresses } from './l1_contracts.js';
|
|
3
|
+
export { RollupCheatCodes, EthCheatCodes } from './cheat_codes.js';
|
|
4
|
+
export { ChainMonitor } from './chain_monitor.js';
|
|
5
|
+
export { AnvilTestWatcher } from './anvil_test_watcher.js';
|
|
6
|
+
export { deployL1Contract, deployL1Contracts } from '@aztec/ethereum/deploy-l1-contracts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l1_contracts.d.ts","sourceRoot":"","sources":["../../../src/api/ethereum/l1_contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAKjF,eAAO,MAAM,sBAAsB,QAAe,MAAM,KAAG,QAAQ,mBAAmB,CAerF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
2
|
+
import { createPXEClient } from '../../rpc_clients/index.js';
|
|
3
|
+
export const getL1ContractAddresses = async (url)=>{
|
|
4
|
+
const pxeClient = createPXEClient(url, {});
|
|
5
|
+
const response = await retryUntil(async ()=>{
|
|
6
|
+
try {
|
|
7
|
+
return (await pxeClient.getNodeInfo()).l1ContractAddresses;
|
|
8
|
+
} catch (err) {
|
|
9
|
+
// do nothing
|
|
10
|
+
}
|
|
11
|
+
}, 'isNodeReady', 120, 1);
|
|
12
|
+
return response;
|
|
13
|
+
};
|