@aztec/aztec.js 0.0.0-test.1 → 0.0.1-commit.b655e406
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/account.d.ts +60 -0
- package/dest/account/account.d.ts.map +1 -0
- package/dest/account/account.js +59 -0
- package/dest/account/{contract.d.ts → account_contract.d.ts} +16 -10
- package/dest/account/account_contract.d.ts.map +1 -0
- package/dest/account/{contract.js → account_contract.js} +7 -4
- package/dest/{wallet/account_wallet_with_private_key.d.ts → account/account_with_secret_key.d.ts} +7 -8
- package/dest/account/account_with_secret_key.d.ts.map +1 -0
- package/dest/{wallet/account_wallet_with_private_key.js → account/account_with_secret_key.js} +5 -5
- package/dest/account/index.d.ts +3 -7
- package/dest/account/index.d.ts.map +1 -1
- package/dest/account/index.js +2 -6
- package/dest/account/interface.d.ts +1 -13
- package/dest/account/interface.d.ts.map +1 -1
- package/dest/account/interface.js +1 -0
- package/dest/account/signerless_account.d.ts +24 -0
- package/dest/account/signerless_account.d.ts.map +1 -0
- package/dest/account/signerless_account.js +27 -0
- package/dest/api/abi.d.ts +2 -1
- package/dest/api/abi.d.ts.map +1 -1
- package/dest/api/abi.js +1 -1
- package/dest/api/account.d.ts +5 -2
- package/dest/api/account.d.ts.map +1 -1
- package/dest/api/account.js +3 -1
- package/dest/api/addresses.d.ts +1 -0
- package/dest/api/addresses.d.ts.map +1 -1
- package/dest/api/addresses.js +1 -0
- package/dest/api/authorization.d.ts +5 -0
- package/dest/api/authorization.d.ts.map +1 -0
- package/dest/api/authorization.js +4 -0
- package/dest/api/block.d.ts +3 -0
- package/dest/api/block.d.ts.map +1 -0
- package/dest/api/block.js +2 -0
- package/dest/{contract/index.d.ts → api/contract.d.ts} +15 -11
- package/dest/api/contract.d.ts.map +1 -0
- package/dest/{contract/index.js → api/contract.js} +14 -10
- package/dest/api/crypto.d.ts +2 -0
- package/dest/api/crypto.d.ts.map +1 -0
- package/dest/api/crypto.js +1 -0
- package/dest/api/deployment.d.ts +4 -3
- package/dest/api/deployment.d.ts.map +1 -1
- package/dest/api/deployment.js +4 -3
- package/dest/api/ethereum.d.ts +2 -0
- package/dest/api/ethereum.d.ts.map +1 -0
- package/dest/api/ethereum.js +1 -0
- package/dest/api/events.d.ts +12 -0
- package/dest/api/events.d.ts.map +1 -0
- package/dest/api/events.js +30 -0
- package/dest/api/fee.d.ts +1 -1
- package/dest/api/fee.d.ts.map +1 -1
- package/dest/api/fee.js +1 -1
- package/dest/api/fee_testing.d.ts +2 -0
- package/dest/api/fee_testing.d.ts.map +1 -0
- package/dest/api/fee_testing.js +1 -0
- package/dest/api/keys.d.ts +4 -0
- package/dest/api/keys.d.ts.map +1 -0
- package/dest/api/keys.js +3 -0
- package/dest/api/log.d.ts +1 -0
- package/dest/api/log.d.ts.map +1 -1
- package/dest/api/log.js +1 -0
- package/dest/api/messaging.d.ts +3 -0
- package/dest/api/messaging.d.ts.map +1 -0
- package/dest/api/messaging.js +2 -0
- package/dest/api/node.d.ts +21 -0
- package/dest/api/node.d.ts.map +1 -0
- package/dest/api/node.js +18 -0
- package/dest/api/note.d.ts +2 -0
- package/dest/api/note.d.ts.map +1 -0
- package/dest/api/note.js +1 -0
- package/dest/api/protocol.d.ts +3 -0
- package/dest/api/protocol.d.ts.map +1 -0
- package/dest/api/protocol.js +2 -0
- package/dest/api/trees.d.ts +3 -0
- package/dest/api/trees.d.ts.map +1 -0
- package/dest/api/trees.js +2 -0
- package/dest/api/tx.d.ts +2 -0
- package/dest/api/tx.d.ts.map +1 -0
- package/dest/api/tx.js +1 -0
- package/dest/api/utils.d.ts +13 -0
- package/dest/api/utils.d.ts.map +1 -0
- package/dest/api/utils.js +12 -0
- package/dest/api/wallet.d.ts +4 -1
- package/dest/api/wallet.d.ts.map +1 -1
- package/dest/api/wallet.js +4 -1
- package/dest/authorization/call_authorization_request.d.ts +67 -0
- package/dest/authorization/call_authorization_request.d.ts.map +1 -0
- package/dest/authorization/call_authorization_request.js +49 -0
- package/dest/contract/base_contract_interaction.d.ts +16 -79
- package/dest/contract/base_contract_interaction.d.ts.map +1 -1
- package/dest/contract/base_contract_interaction.js +15 -128
- package/dest/contract/batch_call.d.ts +13 -14
- package/dest/contract/batch_call.d.ts.map +1 -1
- package/dest/contract/batch_call.js +60 -60
- package/dest/contract/checker.d.ts +1 -1
- package/dest/contract/checker.d.ts.map +1 -1
- package/dest/contract/checker.js +2 -2
- package/dest/contract/contract.d.ts +7 -6
- package/dest/contract/contract.d.ts.map +1 -1
- package/dest/contract/contract.js +7 -16
- package/dest/contract/contract_base.d.ts +3 -9
- package/dest/contract/contract_base.d.ts.map +1 -1
- package/dest/contract/contract_base.js +2 -2
- package/dest/contract/contract_function_interaction.d.ts +52 -44
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +75 -74
- package/dest/contract/deploy_method.d.ts +102 -57
- package/dest/contract/deploy_method.d.ts.map +1 -1
- package/dest/contract/deploy_method.js +122 -132
- package/dest/contract/deploy_sent_tx.d.ts +3 -5
- package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
- package/dest/contract/deploy_sent_tx.js +10 -13
- package/dest/contract/get_gas_limits.d.ts +5 -6
- package/dest/contract/get_gas_limits.d.ts.map +1 -1
- package/dest/contract/get_gas_limits.js +9 -3
- package/dest/contract/interaction_options.d.ts +114 -0
- package/dest/contract/interaction_options.d.ts.map +1 -0
- package/dest/contract/interaction_options.js +52 -0
- package/dest/contract/protocol_contracts.d.ts +6 -6
- package/dest/contract/protocol_contracts.d.ts.map +1 -1
- package/dest/contract/protocol_contracts.js +7 -7
- package/dest/contract/sent_tx.d.ts +8 -18
- package/dest/contract/sent_tx.d.ts.map +1 -1
- package/dest/contract/sent_tx.js +30 -42
- package/dest/contract/unsafe_contract.d.ts +1 -1
- package/dest/contract/unsafe_contract.d.ts.map +1 -1
- package/dest/contract/wait_for_proven.d.ts +17 -0
- package/dest/contract/wait_for_proven.d.ts.map +1 -0
- package/dest/contract/wait_for_proven.js +17 -0
- package/dest/deployment/broadcast_function.d.ts +3 -3
- package/dest/deployment/broadcast_function.d.ts.map +1 -1
- package/dest/deployment/broadcast_function.js +27 -23
- package/dest/deployment/contract_deployer.d.ts +1 -1
- package/dest/deployment/contract_deployer.d.ts.map +1 -1
- package/dest/deployment/publish_class.d.ts +6 -0
- package/dest/deployment/publish_class.d.ts.map +1 -0
- package/dest/deployment/publish_class.js +17 -0
- package/dest/deployment/publish_instance.d.ts +10 -0
- package/dest/deployment/publish_instance.d.ts.map +1 -0
- package/dest/deployment/publish_instance.js +11 -0
- package/dest/{api/ethereum → ethereum}/portal_manager.d.ts +29 -25
- package/dest/ethereum/portal_manager.d.ts.map +1 -0
- package/dest/{api/ethereum → ethereum}/portal_manager.js +106 -73
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts +16 -11
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
- package/dest/fee/fee_juice_payment_method_with_claim.js +26 -16
- package/dest/fee/fee_payment_method.d.ts +11 -7
- package/dest/fee/fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.d.ts +25 -8
- package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.js +43 -21
- package/dest/fee/public_fee_payment_method.d.ts +26 -9
- package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/public_fee_payment_method.js +45 -23
- package/dest/fee/sponsored_fee_payment.d.ts +17 -0
- package/dest/fee/sponsored_fee_payment.d.ts.map +1 -0
- package/dest/fee/sponsored_fee_payment.js +34 -0
- package/dest/utils/abi_types.d.ts +0 -2
- package/dest/utils/abi_types.d.ts.map +1 -1
- package/dest/utils/authwit.d.ts +81 -24
- package/dest/utils/authwit.d.ts.map +1 -1
- package/dest/utils/authwit.js +226 -40
- package/dest/utils/cross_chain.d.ts +24 -0
- package/dest/utils/cross_chain.d.ts.map +1 -0
- package/dest/utils/cross_chain.js +30 -0
- package/dest/utils/fee_juice.d.ts +3 -2
- package/dest/utils/fee_juice.d.ts.map +1 -1
- package/dest/utils/fee_juice.js +3 -2
- package/dest/utils/field_compressed_string.d.ts.map +1 -1
- package/dest/utils/node.d.ts.map +1 -1
- package/dest/utils/node.js +1 -1
- package/dest/utils/pub_key.d.ts.map +1 -1
- package/dest/utils/pub_key.js +1 -2
- package/dest/wallet/account_entrypoint_meta_payment_method.d.ts +34 -0
- package/dest/wallet/account_entrypoint_meta_payment_method.d.ts.map +1 -0
- package/dest/wallet/account_entrypoint_meta_payment_method.js +76 -0
- package/dest/wallet/account_manager.d.ts +69 -0
- package/dest/wallet/account_manager.d.ts.map +1 -0
- package/dest/wallet/account_manager.js +113 -0
- package/dest/wallet/base_wallet.d.ts +81 -63
- package/dest/wallet/base_wallet.d.ts.map +1 -1
- package/dest/wallet/base_wallet.js +221 -106
- package/dest/wallet/deploy_account_method.d.ts +52 -0
- package/dest/wallet/deploy_account_method.d.ts.map +1 -0
- package/dest/wallet/deploy_account_method.js +77 -0
- package/dest/wallet/index.d.ts +3 -16
- package/dest/wallet/index.d.ts.map +1 -1
- package/dest/wallet/index.js +3 -20
- package/dest/wallet/wallet.d.ts +2478 -0
- package/dest/wallet/wallet.d.ts.map +1 -0
- package/dest/wallet/wallet.js +202 -0
- package/package.json +40 -32
- package/src/account/account.ts +97 -0
- package/src/account/{contract.ts → account_contract.ts} +24 -13
- package/src/{wallet/account_wallet_with_private_key.ts → account/account_with_secret_key.ts} +6 -8
- package/src/account/index.ts +3 -7
- package/src/account/interface.ts +1 -12
- package/src/account/signerless_account.ts +46 -0
- package/src/api/abi.ts +26 -0
- package/src/api/account.ts +5 -9
- package/src/api/addresses.ts +1 -0
- package/src/api/authorization.ts +14 -0
- package/src/api/block.ts +2 -0
- package/src/{contract/index.ts → api/contract.ts} +37 -13
- package/src/api/crypto.ts +1 -0
- package/src/api/deployment.ts +4 -3
- package/src/api/ethereum.ts +10 -0
- package/src/api/events.ts +44 -0
- package/src/api/fee.ts +1 -1
- package/src/api/fee_testing.ts +1 -0
- package/src/api/keys.ts +8 -0
- package/src/api/log.ts +1 -0
- package/src/api/messaging.ts +2 -0
- package/src/api/node.ts +20 -0
- package/src/api/note.ts +1 -0
- package/src/api/protocol.ts +2 -0
- package/src/api/trees.ts +2 -0
- package/src/api/tx.ts +11 -0
- package/src/api/utils.ts +14 -0
- package/src/api/wallet.ts +33 -5
- package/src/authorization/call_authorization_request.ts +63 -0
- package/src/contract/base_contract_interaction.ts +24 -166
- package/src/contract/batch_call.ts +81 -49
- package/src/contract/checker.ts +8 -3
- package/src/contract/contract.ts +8 -17
- package/src/contract/contract_base.ts +4 -11
- package/src/contract/contract_function_interaction.ts +136 -106
- package/src/contract/deploy_method.ts +199 -129
- package/src/contract/deploy_sent_tx.ts +9 -15
- package/src/contract/get_gas_limits.ts +15 -8
- package/src/contract/interaction_options.ts +169 -0
- package/src/contract/protocol_contracts.ts +10 -10
- package/src/contract/sent_tx.ts +40 -51
- package/src/contract/unsafe_contract.ts +1 -1
- package/src/contract/wait_for_proven.ts +38 -0
- package/src/deployment/broadcast_function.ts +57 -57
- package/src/deployment/contract_deployer.ts +1 -1
- package/src/deployment/publish_class.ts +34 -0
- package/src/deployment/publish_instance.ts +26 -0
- package/src/{api/ethereum → ethereum}/portal_manager.ts +120 -74
- package/src/fee/fee_juice_payment_method_with_claim.ts +46 -33
- package/src/fee/fee_payment_method.ts +11 -7
- package/src/fee/private_fee_payment_method.ts +77 -57
- package/src/fee/public_fee_payment_method.ts +91 -67
- package/src/fee/sponsored_fee_payment.ts +44 -0
- package/src/utils/authwit.ts +255 -53
- package/src/utils/cross_chain.ts +53 -0
- package/src/utils/fee_juice.ts +4 -4
- package/src/utils/node.ts +1 -1
- package/src/utils/pub_key.ts +1 -2
- package/src/wallet/account_entrypoint_meta_payment_method.ts +105 -0
- package/src/wallet/account_manager.ts +154 -0
- package/src/wallet/base_wallet.ts +295 -143
- package/src/wallet/deploy_account_method.ts +125 -0
- package/src/wallet/index.ts +3 -33
- package/src/wallet/wallet.ts +362 -0
- package/dest/account/contract.d.ts.map +0 -1
- package/dest/account/wallet.d.ts +0 -11
- package/dest/account/wallet.d.ts.map +0 -1
- package/dest/account/wallet.js +0 -3
- 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_method.js +0 -43
- package/dest/account_manager/deploy_account_sent_tx.d.ts +0 -30
- package/dest/account_manager/deploy_account_sent_tx.d.ts.map +0 -1
- package/dest/account_manager/deploy_account_sent_tx.js +0 -29
- package/dest/account_manager/index.d.ts +0 -108
- package/dest/account_manager/index.d.ts.map +0 -1
- package/dest/account_manager/index.js +0 -159
- package/dest/api/cheat_codes.d.ts +0 -26
- package/dest/api/cheat_codes.d.ts.map +0 -1
- package/dest/api/cheat_codes.js +0 -25
- package/dest/api/entrypoint.d.ts +0 -2
- package/dest/api/entrypoint.d.ts.map +0 -1
- package/dest/api/entrypoint.js +0 -1
- package/dest/api/ethereum/anvil_test_watcher.d.ts +0 -32
- package/dest/api/ethereum/anvil_test_watcher.d.ts.map +0 -1
- package/dest/api/ethereum/anvil_test_watcher.js +0 -133
- package/dest/api/ethereum/chain_monitor.d.ts +0 -25
- package/dest/api/ethereum/chain_monitor.d.ts.map +0 -1
- package/dest/api/ethereum/chain_monitor.js +0 -74
- package/dest/api/ethereum/cheat_codes.d.ts +0 -63
- package/dest/api/ethereum/cheat_codes.d.ts.map +0 -1
- package/dest/api/ethereum/cheat_codes.js +0 -162
- package/dest/api/ethereum/index.d.ts +0 -7
- package/dest/api/ethereum/index.d.ts.map +0 -1
- package/dest/api/ethereum/index.js +0 -6
- package/dest/api/ethereum/l1_contracts.d.ts +0 -3
- package/dest/api/ethereum/l1_contracts.d.ts.map +0 -1
- package/dest/api/ethereum/l1_contracts.js +0 -13
- package/dest/api/ethereum/portal_manager.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/interfaces/pxe.js +0 -1
- package/dest/api/log_id.d.ts +0 -2
- package/dest/api/log_id.d.ts.map +0 -1
- package/dest/api/log_id.js +0 -1
- package/dest/api/tx_hash.d.ts +0 -2
- package/dest/api/tx_hash.d.ts.map +0 -1
- package/dest/api/tx_hash.js +0 -1
- package/dest/contract/deploy_proven_tx.d.ts +0 -21
- package/dest/contract/deploy_proven_tx.d.ts.map +0 -1
- package/dest/contract/deploy_proven_tx.js +0 -19
- package/dest/contract/index.d.ts.map +0 -1
- package/dest/contract/proven_tx.d.ts +0 -17
- package/dest/contract/proven_tx.d.ts.map +0 -1
- package/dest/contract/proven_tx.js +0 -22
- package/dest/deployment/deploy_instance.d.ts +0 -10
- package/dest/deployment/deploy_instance.d.ts.map +0 -1
- package/dest/deployment/deploy_instance.js +0 -14
- package/dest/deployment/index.d.ts +0 -2
- package/dest/deployment/index.d.ts.map +0 -1
- package/dest/deployment/index.js +0 -1
- package/dest/deployment/register_class.d.ts +0 -6
- package/dest/deployment/register_class.d.ts.map +0 -1
- package/dest/deployment/register_class.js +0 -22
- package/dest/entrypoint/default_entrypoint.d.ts +0 -12
- package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/default_entrypoint.js +0 -28
- 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/default_multi_call_entrypoint.js +0 -130
- package/dest/entrypoint/entrypoint.d.ts +0 -35
- package/dest/entrypoint/entrypoint.d.ts.map +0 -1
- package/dest/entrypoint/entrypoint.js +0 -4
- package/dest/entrypoint/payload.d.ts +0 -128
- package/dest/entrypoint/payload.d.ts.map +0 -1
- package/dest/entrypoint/payload.js +0 -143
- 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.js +0 -20
- package/dest/index.d.ts +0 -66
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -69
- package/dest/rpc_clients/index.d.ts +0 -3
- package/dest/rpc_clients/index.d.ts.map +0 -1
- package/dest/rpc_clients/index.js +0 -2
- package/dest/rpc_clients/node/index.d.ts +0 -12
- package/dest/rpc_clients/node/index.d.ts.map +0 -1
- package/dest/rpc_clients/node/index.js +0 -78
- package/dest/rpc_clients/pxe_client.d.ts +0 -10
- package/dest/rpc_clients/pxe_client.d.ts.map +0 -1
- package/dest/rpc_clients/pxe_client.js +0 -23
- package/dest/utils/aztec_cheatcodes.d.ts +0 -59
- package/dest/utils/aztec_cheatcodes.d.ts.map +0 -1
- package/dest/utils/aztec_cheatcodes.js +0 -62
- package/dest/utils/index.d.ts +0 -8
- package/dest/utils/index.d.ts.map +0 -1
- package/dest/utils/index.js +0 -6
- package/dest/utils/pxe.d.ts +0 -4
- package/dest/utils/pxe.d.ts.map +0 -1
- package/dest/utils/pxe.js +0 -14
- package/dest/wallet/account_wallet.d.ts +0 -76
- package/dest/wallet/account_wallet.d.ts.map +0 -1
- package/dest/wallet/account_wallet.js +0 -231
- package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
- package/dest/wallet/signerless_wallet.d.ts +0 -25
- package/dest/wallet/signerless_wallet.d.ts.map +0 -1
- package/dest/wallet/signerless_wallet.js +0 -36
- package/src/account/wallet.ts +0 -13
- package/src/account_manager/deploy_account_method.ts +0 -86
- package/src/account_manager/deploy_account_sent_tx.ts +0 -42
- package/src/account_manager/index.ts +0 -229
- package/src/api/cheat_codes.ts +0 -35
- package/src/api/entrypoint.ts +0 -1
- package/src/api/ethereum/anvil_test_watcher.ts +0 -158
- package/src/api/ethereum/chain_monitor.ts +0 -88
- package/src/api/ethereum/cheat_codes.ts +0 -184
- package/src/api/ethereum/index.ts +0 -19
- package/src/api/ethereum/l1_contracts.ts +0 -21
- package/src/api/interfaces/pxe.ts +0 -1
- package/src/api/log_id.ts +0 -1
- package/src/api/tx_hash.ts +0 -1
- package/src/contract/deploy_proven_tx.ts +0 -34
- package/src/contract/proven_tx.ts +0 -42
- package/src/deployment/deploy_instance.ts +0 -31
- package/src/deployment/index.ts +0 -1
- package/src/deployment/register_class.ts +0 -44
- package/src/entrypoint/default_entrypoint.ts +0 -39
- package/src/entrypoint/default_multi_call_entrypoint.ts +0 -93
- package/src/entrypoint/entrypoint.ts +0 -39
- package/src/entrypoint/payload.ts +0 -238
- package/src/fee/fee_juice_payment_method.ts +0 -26
- package/src/index.ts +0 -106
- package/src/rpc_clients/index.ts +0 -2
- package/src/rpc_clients/node/index.ts +0 -77
- package/src/rpc_clients/pxe_client.ts +0 -25
- package/src/utils/aztec_cheatcodes.ts +0 -77
- package/src/utils/index.ts +0 -21
- package/src/utils/pxe.ts +0 -17
- package/src/wallet/account_wallet.ts +0 -242
- package/src/wallet/signerless_wallet.ts +0 -52
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
|
|
4
|
-
import type { PublicClient } from 'viem';
|
|
5
|
-
|
|
6
|
-
/** Utility class that polls the chain on quick intervals and logs new L1 blocks, L2 blocks, and L2 proofs. */
|
|
7
|
-
export class ChainMonitor {
|
|
8
|
-
private readonly l1Client: PublicClient;
|
|
9
|
-
private handle: NodeJS.Timeout | undefined;
|
|
10
|
-
|
|
11
|
-
/** Current L1 block number */
|
|
12
|
-
public l1BlockNumber!: number;
|
|
13
|
-
/** Current L2 block number */
|
|
14
|
-
public l2BlockNumber!: number;
|
|
15
|
-
/** Current L2 proven block number */
|
|
16
|
-
public l2ProvenBlockNumber!: number;
|
|
17
|
-
/** L1 timestamp for the current L2 block */
|
|
18
|
-
public l2BlockTimestamp!: bigint;
|
|
19
|
-
/** L1 timestamp for the proven L2 block */
|
|
20
|
-
public l2ProvenBlockTimestamp!: bigint;
|
|
21
|
-
|
|
22
|
-
constructor(
|
|
23
|
-
private readonly rollup: RollupContract,
|
|
24
|
-
private logger = createLogger('aztecjs:utils:chain_monitor'),
|
|
25
|
-
private readonly intervalMs = 200,
|
|
26
|
-
) {
|
|
27
|
-
this.l1Client = rollup.client;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
start() {
|
|
31
|
-
if (this.handle) {
|
|
32
|
-
throw new Error('Chain monitor already started');
|
|
33
|
-
}
|
|
34
|
-
this.handle = setInterval(this.safeRun.bind(this), this.intervalMs);
|
|
35
|
-
return this;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
stop() {
|
|
39
|
-
if (this.handle) {
|
|
40
|
-
clearInterval(this.handle!);
|
|
41
|
-
this.handle = undefined;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
private safeRun() {
|
|
46
|
-
void this.run().catch(error => {
|
|
47
|
-
this.logger.error('Error in chain monitor loop', error);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async run() {
|
|
52
|
-
const newL1BlockNumber = Number(await this.l1Client.getBlockNumber({ cacheTime: 0 }));
|
|
53
|
-
if (this.l1BlockNumber === newL1BlockNumber) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
this.l1BlockNumber = newL1BlockNumber;
|
|
57
|
-
|
|
58
|
-
const block = await this.l1Client.getBlock({ blockNumber: BigInt(newL1BlockNumber), includeTransactions: false });
|
|
59
|
-
const timestamp = block.timestamp;
|
|
60
|
-
const timestampString = new Date(Number(timestamp) * 1000).toTimeString().split(' ')[0];
|
|
61
|
-
|
|
62
|
-
let msg = `L1 block ${newL1BlockNumber} mined at ${timestampString}`;
|
|
63
|
-
|
|
64
|
-
const newL2BlockNumber = Number(await this.rollup.getBlockNumber());
|
|
65
|
-
if (this.l2BlockNumber !== newL2BlockNumber) {
|
|
66
|
-
const epochNumber = await this.rollup.getEpochNumber(BigInt(newL2BlockNumber));
|
|
67
|
-
msg += ` with new L2 block ${newL2BlockNumber} for epoch ${epochNumber}`;
|
|
68
|
-
this.l2BlockNumber = newL2BlockNumber;
|
|
69
|
-
this.l2BlockTimestamp = timestamp;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const newL2ProvenBlockNumber = Number(await this.rollup.getProvenBlockNumber());
|
|
73
|
-
if (this.l2ProvenBlockNumber !== newL2ProvenBlockNumber) {
|
|
74
|
-
const epochNumber = await this.rollup.getEpochNumber(BigInt(newL2ProvenBlockNumber));
|
|
75
|
-
msg += ` with proof up to L2 block ${newL2ProvenBlockNumber} for epoch ${epochNumber}`;
|
|
76
|
-
this.l2ProvenBlockNumber = newL2ProvenBlockNumber;
|
|
77
|
-
this.l2ProvenBlockTimestamp = timestamp;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
this.logger.info(msg, {
|
|
81
|
-
l1Timestamp: timestamp,
|
|
82
|
-
l1BlockNumber: this.l1BlockNumber,
|
|
83
|
-
l2SlotNumber: await this.rollup.getSlotNumber(),
|
|
84
|
-
l2BlockNumber: this.l2BlockNumber,
|
|
85
|
-
l2ProvenBlockNumber: this.l2ProvenBlockNumber,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
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 { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
6
|
-
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
7
|
-
|
|
8
|
-
import { type GetContractReturnType, type Hex, createPublicClient, fallback, getContract, http, keccak256 } from 'viem';
|
|
9
|
-
import { foundry } from 'viem/chains';
|
|
10
|
-
|
|
11
|
-
export { EthCheatCodes };
|
|
12
|
-
|
|
13
|
-
/** Cheat codes for the L1 rollup contract. */
|
|
14
|
-
export class RollupCheatCodes {
|
|
15
|
-
private client: ViemPublicClient;
|
|
16
|
-
private rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>;
|
|
17
|
-
|
|
18
|
-
private logger = createLogger('aztecjs:cheat_codes');
|
|
19
|
-
|
|
20
|
-
constructor(private ethCheatCodes: EthCheatCodes, addresses: Pick<L1ContractAddresses, 'rollupAddress'>) {
|
|
21
|
-
this.client = createPublicClient({
|
|
22
|
-
chain: foundry,
|
|
23
|
-
transport: fallback(ethCheatCodes.rpcUrls.map(url => http(url))),
|
|
24
|
-
});
|
|
25
|
-
this.rollup = getContract({
|
|
26
|
-
abi: RollupAbi,
|
|
27
|
-
address: addresses.rollupAddress.toString(),
|
|
28
|
-
client: this.client,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** Returns the current slot */
|
|
33
|
-
public async getSlot() {
|
|
34
|
-
const ts = BigInt((await this.client.getBlock()).timestamp);
|
|
35
|
-
return await this.rollup.read.getSlotAt([ts]);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/** Returns the current epoch */
|
|
39
|
-
public async getEpoch() {
|
|
40
|
-
const slotNumber = await this.getSlot();
|
|
41
|
-
return await this.rollup.read.getEpochAtSlot([slotNumber]);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Returns the pending and proven chain tips
|
|
46
|
-
* @returns The pending and proven chain tips
|
|
47
|
-
*/
|
|
48
|
-
public async getTips(): Promise<{
|
|
49
|
-
/** The pending chain tip */ pending: bigint;
|
|
50
|
-
/** The proven chain tip */ proven: bigint;
|
|
51
|
-
}> {
|
|
52
|
-
const res = await this.rollup.read.getTips();
|
|
53
|
-
return {
|
|
54
|
-
pending: res.pendingBlockNumber,
|
|
55
|
-
proven: res.provenBlockNumber,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/** Fetches the epoch and slot duration config from the rollup contract */
|
|
60
|
-
public async getConfig(): Promise<{
|
|
61
|
-
/** Epoch duration */ epochDuration: bigint;
|
|
62
|
-
/** Slot duration */ slotDuration: bigint;
|
|
63
|
-
}> {
|
|
64
|
-
const [epochDuration, slotDuration] = await Promise.all([
|
|
65
|
-
this.rollup.read.getEpochDuration(),
|
|
66
|
-
this.rollup.read.getSlotDuration(),
|
|
67
|
-
]);
|
|
68
|
-
return { epochDuration, slotDuration };
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/** Warps time in L1 until the next epoch */
|
|
72
|
-
public async advanceToNextEpoch() {
|
|
73
|
-
const slot = await this.getSlot();
|
|
74
|
-
const { epochDuration, slotDuration } = await this.getConfig();
|
|
75
|
-
const slotsUntilNextEpoch = epochDuration - (slot % epochDuration) + 1n;
|
|
76
|
-
const timeToNextEpoch = slotsUntilNextEpoch * slotDuration;
|
|
77
|
-
const l1Timestamp = BigInt((await this.client.getBlock()).timestamp);
|
|
78
|
-
await this.ethCheatCodes.warp(Number(l1Timestamp + timeToNextEpoch), true);
|
|
79
|
-
this.logger.warn(`Advanced to next epoch`);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/** Warps time in L1 until the beginning of the next slot. */
|
|
83
|
-
public async advanceToNextSlot() {
|
|
84
|
-
const currentSlot = await this.getSlot();
|
|
85
|
-
const timestamp = await this.rollup.read.getTimestampForSlot([currentSlot + 1n]);
|
|
86
|
-
await this.ethCheatCodes.warp(Number(timestamp));
|
|
87
|
-
this.logger.warn(`Advanced to slot ${currentSlot + 1n}`);
|
|
88
|
-
return [timestamp, currentSlot + 1n];
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Warps time in L1 equivalent to however many slots.
|
|
93
|
-
* @param howMany - The number of slots to advance.
|
|
94
|
-
*/
|
|
95
|
-
public async advanceSlots(howMany: number) {
|
|
96
|
-
const l1Timestamp = (await this.client.getBlock()).timestamp;
|
|
97
|
-
const slotDuration = await this.rollup.read.getSlotDuration();
|
|
98
|
-
const timeToWarp = BigInt(howMany) * slotDuration;
|
|
99
|
-
await this.ethCheatCodes.warp(l1Timestamp + timeToWarp, true);
|
|
100
|
-
const [slot, epoch] = await Promise.all([this.getSlot(), this.getEpoch()]);
|
|
101
|
-
this.logger.warn(`Advanced ${howMany} slots up to slot ${slot} in epoch ${epoch}`);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Marks the specified block (or latest if none) as proven
|
|
106
|
-
* @param maybeBlockNumber - The block number to mark as proven (defaults to latest pending)
|
|
107
|
-
*/
|
|
108
|
-
public async markAsProven(maybeBlockNumber?: number | bigint) {
|
|
109
|
-
const { pending, proven } = await this.getTips();
|
|
110
|
-
|
|
111
|
-
let blockNumber = maybeBlockNumber;
|
|
112
|
-
if (blockNumber === undefined || blockNumber > pending) {
|
|
113
|
-
blockNumber = pending;
|
|
114
|
-
}
|
|
115
|
-
if (blockNumber <= proven) {
|
|
116
|
-
this.logger.warn(`Block ${blockNumber} is already proven`);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// @note @LHerskind this is heavily dependent on the storage layout and size of values
|
|
121
|
-
// The rollupStore is a struct and if the size of elements or the struct changes, this can break
|
|
122
|
-
|
|
123
|
-
// Convert string to bytes and then compute keccak256
|
|
124
|
-
const storageSlot = keccak256(Buffer.from('aztec.stf.storage', 'utf-8'));
|
|
125
|
-
const provenBlockNumberSlot = BigInt(storageSlot) + 1n;
|
|
126
|
-
|
|
127
|
-
const tipsBefore = await this.getTips();
|
|
128
|
-
|
|
129
|
-
await this.ethCheatCodes.store(
|
|
130
|
-
EthAddress.fromString(this.rollup.address),
|
|
131
|
-
provenBlockNumberSlot,
|
|
132
|
-
BigInt(blockNumber),
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
const tipsAfter = await this.getTips();
|
|
136
|
-
this.logger.info(
|
|
137
|
-
`Proven tip moved: ${tipsBefore.proven} -> ${tipsAfter.proven}. Pending tip: ${tipsAfter.pending}.`,
|
|
138
|
-
);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Executes an action impersonated as the owner of the Rollup contract.
|
|
143
|
-
* @param action - The action to execute
|
|
144
|
-
*/
|
|
145
|
-
public async asOwner(
|
|
146
|
-
action: (owner: Hex, rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>) => Promise<void>,
|
|
147
|
-
) {
|
|
148
|
-
const owner = await this.rollup.read.owner();
|
|
149
|
-
await this.ethCheatCodes.startImpersonating(owner);
|
|
150
|
-
await action(owner, this.rollup);
|
|
151
|
-
await this.ethCheatCodes.stopImpersonating(owner);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/** Directly calls the L1 gas fee oracle. */
|
|
155
|
-
public async updateL1GasFeeOracle() {
|
|
156
|
-
await this.asOwner(async (account, rollup) => {
|
|
157
|
-
const hash = await rollup.write.updateL1GasFeeOracle({ account, chain: this.client.chain });
|
|
158
|
-
await this.client.waitForTransactionReceipt({ hash });
|
|
159
|
-
this.logger.warn(`Updated L1 gas fee oracle`);
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Bumps proving cost per mana.
|
|
165
|
-
* @param bumper - Callback to calculate the new proving cost per mana based on current value.
|
|
166
|
-
*/
|
|
167
|
-
public async bumpProvingCostPerMana(bumper: (before: bigint) => bigint) {
|
|
168
|
-
const currentCost = await this.rollup.read.getProvingCostPerManaInEth();
|
|
169
|
-
const newCost = bumper(currentCost);
|
|
170
|
-
await this.setProvingCostPerMana(newCost);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Directly updates proving cost per mana.
|
|
175
|
-
* @param ethValue - The new proving cost per mana in ETH
|
|
176
|
-
*/
|
|
177
|
-
public async setProvingCostPerMana(ethValue: bigint) {
|
|
178
|
-
await this.asOwner(async (account, rollup) => {
|
|
179
|
-
const hash = await rollup.write.setProvingCostPerMana([ethValue], { account, chain: this.client.chain });
|
|
180
|
-
await this.client.waitForTransactionReceipt({ hash });
|
|
181
|
-
this.logger.warn(`Updated proving cost per mana to ${ethValue}`);
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
L1FeeJuicePortalManager,
|
|
3
|
-
L1ToL2TokenPortalManager,
|
|
4
|
-
L1TokenManager,
|
|
5
|
-
L1TokenPortalManager,
|
|
6
|
-
type L2AmountClaim,
|
|
7
|
-
type L2AmountClaimWithRecipient,
|
|
8
|
-
type L2Claim,
|
|
9
|
-
generateClaimSecret,
|
|
10
|
-
} from './portal_manager.js';
|
|
11
|
-
export { getL1ContractAddresses } from './l1_contracts.js';
|
|
12
|
-
export { RollupCheatCodes, EthCheatCodes } from './cheat_codes.js';
|
|
13
|
-
export { ChainMonitor } from './chain_monitor.js';
|
|
14
|
-
export { AnvilTestWatcher } from './anvil_test_watcher.js';
|
|
15
|
-
export {
|
|
16
|
-
deployL1Contract,
|
|
17
|
-
deployL1Contracts,
|
|
18
|
-
type DeployL1ContractsReturnType,
|
|
19
|
-
} from '@aztec/ethereum/deploy-l1-contracts';
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
2
|
-
import { retryUntil } from '@aztec/foundation/retry';
|
|
3
|
-
|
|
4
|
-
import { createPXEClient } from '../../rpc_clients/index.js';
|
|
5
|
-
|
|
6
|
-
export const getL1ContractAddresses = async (url: string): Promise<L1ContractAddresses> => {
|
|
7
|
-
const pxeClient = createPXEClient(url, {});
|
|
8
|
-
const response = await retryUntil(
|
|
9
|
-
async () => {
|
|
10
|
-
try {
|
|
11
|
-
return (await pxeClient.getNodeInfo()).l1ContractAddresses;
|
|
12
|
-
} catch (err) {
|
|
13
|
-
// do nothing
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
'isNodeReady',
|
|
17
|
-
120,
|
|
18
|
-
1,
|
|
19
|
-
);
|
|
20
|
-
return response;
|
|
21
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { PXE } from '@aztec/stdlib/interfaces/client';
|
package/src/api/log_id.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { LogId } from '@aztec/stdlib/logs';
|
package/src/api/tx_hash.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { TxHash } from '@aztec/stdlib/tx';
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
2
|
-
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
3
|
-
import type { PXE } from '@aztec/stdlib/interfaces/client';
|
|
4
|
-
import type { Tx } from '@aztec/stdlib/tx';
|
|
5
|
-
|
|
6
|
-
import type { Wallet } from '../account/index.js';
|
|
7
|
-
import type { Contract } from './contract.js';
|
|
8
|
-
import { DeploySentTx } from './deploy_sent_tx.js';
|
|
9
|
-
import { ProvenTx } from './proven_tx.js';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* A proven transaction that can be sent to the network. Returned by the `prove` method of a contract deployment.
|
|
13
|
-
*/
|
|
14
|
-
export class DeployProvenTx<TContract extends Contract = Contract> extends ProvenTx {
|
|
15
|
-
constructor(
|
|
16
|
-
wallet: PXE | Wallet,
|
|
17
|
-
tx: Tx,
|
|
18
|
-
private postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>,
|
|
19
|
-
private instanceGetter: () => Promise<ContractInstanceWithAddress>,
|
|
20
|
-
) {
|
|
21
|
-
super(wallet, tx);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Sends the transaction to the network via the provided wallet.
|
|
26
|
-
*/
|
|
27
|
-
public override send(): DeploySentTx<TContract> {
|
|
28
|
-
const promise = (() => {
|
|
29
|
-
return this.wallet.sendTx(this.getPlainDataTx());
|
|
30
|
-
})();
|
|
31
|
-
|
|
32
|
-
return new DeploySentTx(this.wallet, promise, this.postDeployCtor, this.instanceGetter);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { PXE } from '@aztec/stdlib/interfaces/client';
|
|
2
|
-
import { Tx } from '@aztec/stdlib/tx';
|
|
3
|
-
|
|
4
|
-
import type { Wallet } from '../account/index.js';
|
|
5
|
-
import { SentTx } from './sent_tx.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* A proven transaction that can be sent to the network. Returned by the `prove` method of a contract interaction.
|
|
9
|
-
*/
|
|
10
|
-
export class ProvenTx extends Tx {
|
|
11
|
-
constructor(protected wallet: PXE | Wallet, tx: Tx) {
|
|
12
|
-
super(
|
|
13
|
-
tx.data,
|
|
14
|
-
tx.clientIvcProof,
|
|
15
|
-
tx.contractClassLogs,
|
|
16
|
-
tx.enqueuedPublicFunctionCalls,
|
|
17
|
-
tx.publicTeardownFunctionCall,
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Clone the TX data to get a serializable object.
|
|
22
|
-
protected getPlainDataTx(): Tx {
|
|
23
|
-
return new Tx(
|
|
24
|
-
this.data,
|
|
25
|
-
this.clientIvcProof,
|
|
26
|
-
this.contractClassLogs,
|
|
27
|
-
this.enqueuedPublicFunctionCalls,
|
|
28
|
-
this.publicTeardownFunctionCall,
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Sends the transaction to the network via the provided wallet.
|
|
34
|
-
*/
|
|
35
|
-
public send(): SentTx {
|
|
36
|
-
const promise = (() => {
|
|
37
|
-
return this.wallet.sendTx(this.getPlainDataTx());
|
|
38
|
-
})();
|
|
39
|
-
|
|
40
|
-
return new SentTx(this.wallet, promise);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
2
|
-
|
|
3
|
-
import type { ContractFunctionInteraction } from '../contract/contract_function_interaction.js';
|
|
4
|
-
import { getDeployerContract } from '../contract/protocol_contracts.js';
|
|
5
|
-
import type { Wallet } from '../wallet/index.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Sets up a call to the canonical deployer contract to publicly deploy a contract instance.
|
|
9
|
-
* @param wallet - The wallet to use for the deployment.
|
|
10
|
-
* @param instance - The instance to deploy.
|
|
11
|
-
*/
|
|
12
|
-
export async function deployInstance(
|
|
13
|
-
wallet: Wallet,
|
|
14
|
-
instance: ContractInstanceWithAddress,
|
|
15
|
-
): Promise<ContractFunctionInteraction> {
|
|
16
|
-
const deployerContract = await getDeployerContract(wallet);
|
|
17
|
-
const { salt, currentContractClassId: contractClassId, publicKeys, deployer } = instance;
|
|
18
|
-
const isUniversalDeploy = deployer.isZero();
|
|
19
|
-
if (!isUniversalDeploy && !wallet.getAddress().equals(deployer)) {
|
|
20
|
-
throw new Error(
|
|
21
|
-
`Expected deployer ${deployer.toString()} does not match sender wallet ${wallet.getAddress().toString()}`,
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
return deployerContract.methods.deploy(
|
|
25
|
-
salt,
|
|
26
|
-
contractClassId,
|
|
27
|
-
instance.initializationHash,
|
|
28
|
-
publicKeys,
|
|
29
|
-
isUniversalDeploy,
|
|
30
|
-
);
|
|
31
|
-
}
|
package/src/deployment/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './contract_deployer.js';
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_BYTECODE_CAPSULE_SLOT } from '@aztec/constants';
|
|
2
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
4
|
-
import { type ContractArtifact, bufferAsFields } from '@aztec/stdlib/abi';
|
|
5
|
-
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
6
|
-
import { Capsule } from '@aztec/stdlib/tx';
|
|
7
|
-
|
|
8
|
-
import type { ContractFunctionInteraction } from '../contract/contract_function_interaction.js';
|
|
9
|
-
import { getRegistererContract } from '../contract/protocol_contracts.js';
|
|
10
|
-
import type { Wallet } from '../wallet/index.js';
|
|
11
|
-
|
|
12
|
-
const defaultEmitPublicBytecode =
|
|
13
|
-
// guard against `process` not being defined (e.g. in the browser)
|
|
14
|
-
typeof process === 'object' && typeof process.env === 'object'
|
|
15
|
-
? ['1', 'true', 'yes', ''].includes(process.env.AZTEC_EMIT_PUBLIC_BYTECODE ?? '')
|
|
16
|
-
: true;
|
|
17
|
-
|
|
18
|
-
/** Sets up a call to register a contract class given its artifact. */
|
|
19
|
-
export async function registerContractClass(
|
|
20
|
-
wallet: Wallet,
|
|
21
|
-
artifact: ContractArtifact,
|
|
22
|
-
emitPublicBytecode = defaultEmitPublicBytecode,
|
|
23
|
-
): Promise<ContractFunctionInteraction> {
|
|
24
|
-
const { artifactHash, privateFunctionsRoot, publicBytecodeCommitment, packedBytecode } =
|
|
25
|
-
await getContractClassFromArtifact(artifact);
|
|
26
|
-
const registerer = await getRegistererContract(wallet);
|
|
27
|
-
const fn = registerer.methods.register(
|
|
28
|
-
artifactHash,
|
|
29
|
-
privateFunctionsRoot,
|
|
30
|
-
publicBytecodeCommitment,
|
|
31
|
-
emitPublicBytecode,
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
const encodedBytecode = bufferAsFields(packedBytecode, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);
|
|
35
|
-
fn.addCapsule(
|
|
36
|
-
new Capsule(
|
|
37
|
-
ProtocolContractAddress.ContractClassRegisterer,
|
|
38
|
-
new Fr(REGISTERER_CONTRACT_BYTECODE_CAPSULE_SLOT),
|
|
39
|
-
encodedBytecode,
|
|
40
|
-
),
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
return fn;
|
|
44
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { FunctionType } from '@aztec/stdlib/abi';
|
|
2
|
-
import { HashedValues, TxContext, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
3
|
-
|
|
4
|
-
import type { EntrypointInterface, ExecutionRequestInit } from './entrypoint.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Default implementation of the entrypoint interface. It calls a function on a contract directly
|
|
8
|
-
*/
|
|
9
|
-
export class DefaultEntrypoint implements EntrypointInterface {
|
|
10
|
-
constructor(private chainId: number, private protocolVersion: number) {}
|
|
11
|
-
|
|
12
|
-
async createTxExecutionRequest(exec: ExecutionRequestInit): Promise<TxExecutionRequest> {
|
|
13
|
-
const { fee, calls, authWitnesses = [], hashedArguments = [], capsules = [] } = exec;
|
|
14
|
-
|
|
15
|
-
if (calls.length > 1) {
|
|
16
|
-
throw new Error(`Expected a single call, got ${calls.length}`);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const call = calls[0];
|
|
20
|
-
|
|
21
|
-
if (call.type !== FunctionType.PRIVATE) {
|
|
22
|
-
throw new Error('Public entrypoints are not allowed');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const entrypointHashedValues = await HashedValues.fromValues(call.args);
|
|
26
|
-
const txContext = new TxContext(this.chainId, this.protocolVersion, fee.gasSettings);
|
|
27
|
-
return Promise.resolve(
|
|
28
|
-
new TxExecutionRequest(
|
|
29
|
-
call.to,
|
|
30
|
-
call.selector,
|
|
31
|
-
entrypointHashedValues.hash,
|
|
32
|
-
txContext,
|
|
33
|
-
[...hashedArguments, entrypointHashedValues],
|
|
34
|
-
authWitnesses,
|
|
35
|
-
capsules,
|
|
36
|
-
),
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
2
|
-
import { type FunctionAbi, FunctionSelector, encodeArguments } from '@aztec/stdlib/abi';
|
|
3
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import { HashedValues, TxContext, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
5
|
-
|
|
6
|
-
import { type EntrypointInterface, EntrypointPayload, type ExecutionRequestInit } from './entrypoint.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Implementation for an entrypoint interface that can execute multiple function calls in a single transaction
|
|
10
|
-
*/
|
|
11
|
-
export class DefaultMultiCallEntrypoint implements EntrypointInterface {
|
|
12
|
-
constructor(
|
|
13
|
-
private chainId: number,
|
|
14
|
-
private version: number,
|
|
15
|
-
private address: AztecAddress = ProtocolContractAddress.MultiCallEntrypoint,
|
|
16
|
-
) {}
|
|
17
|
-
|
|
18
|
-
async createTxExecutionRequest(executions: ExecutionRequestInit): Promise<TxExecutionRequest> {
|
|
19
|
-
const { fee, calls, authWitnesses = [], hashedArguments = [], capsules = [] } = executions;
|
|
20
|
-
const payload = await EntrypointPayload.fromAppExecution(calls);
|
|
21
|
-
const abi = this.getEntrypointAbi();
|
|
22
|
-
const entrypointHashedArgs = await HashedValues.fromValues(encodeArguments(abi, [payload]));
|
|
23
|
-
|
|
24
|
-
const txRequest = TxExecutionRequest.from({
|
|
25
|
-
firstCallArgsHash: entrypointHashedArgs.hash,
|
|
26
|
-
origin: this.address,
|
|
27
|
-
functionSelector: await FunctionSelector.fromNameAndParameters(abi.name, abi.parameters),
|
|
28
|
-
txContext: new TxContext(this.chainId, this.version, fee.gasSettings),
|
|
29
|
-
argsOfCalls: [...payload.hashedArguments, ...hashedArguments, entrypointHashedArgs],
|
|
30
|
-
authWitnesses,
|
|
31
|
-
capsules,
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
return Promise.resolve(txRequest);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
private getEntrypointAbi() {
|
|
38
|
-
return {
|
|
39
|
-
name: 'entrypoint',
|
|
40
|
-
isInitializer: false,
|
|
41
|
-
functionType: 'private',
|
|
42
|
-
isInternal: false,
|
|
43
|
-
isStatic: false,
|
|
44
|
-
parameters: [
|
|
45
|
-
{
|
|
46
|
-
name: 'app_payload',
|
|
47
|
-
type: {
|
|
48
|
-
kind: 'struct',
|
|
49
|
-
path: 'authwit::entrypoint::app::AppPayload',
|
|
50
|
-
fields: [
|
|
51
|
-
{
|
|
52
|
-
name: 'function_calls',
|
|
53
|
-
type: {
|
|
54
|
-
kind: 'array',
|
|
55
|
-
length: 4,
|
|
56
|
-
type: {
|
|
57
|
-
kind: 'struct',
|
|
58
|
-
path: 'authwit::entrypoint::function_call::FunctionCall',
|
|
59
|
-
fields: [
|
|
60
|
-
{ name: 'args_hash', type: { kind: 'field' } },
|
|
61
|
-
{
|
|
62
|
-
name: 'function_selector',
|
|
63
|
-
type: {
|
|
64
|
-
kind: 'struct',
|
|
65
|
-
path: 'authwit::aztec::protocol_types::abis::function_selector::FunctionSelector',
|
|
66
|
-
fields: [{ name: 'inner', type: { kind: 'integer', sign: 'unsigned', width: 32 } }],
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: 'target_address',
|
|
71
|
-
type: {
|
|
72
|
-
kind: 'struct',
|
|
73
|
-
path: 'authwit::aztec::protocol_types::address::AztecAddress',
|
|
74
|
-
fields: [{ name: 'inner', type: { kind: 'field' } }],
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
{ name: 'is_public', type: { kind: 'boolean' } },
|
|
78
|
-
{ name: 'is_static', type: { kind: 'boolean' } },
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
{ name: 'nonce', type: { kind: 'field' } },
|
|
84
|
-
],
|
|
85
|
-
},
|
|
86
|
-
visibility: 'public',
|
|
87
|
-
},
|
|
88
|
-
],
|
|
89
|
-
returnTypes: [],
|
|
90
|
-
errorTypes: {},
|
|
91
|
-
} as FunctionAbi;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
3
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
4
|
-
import type { Capsule, HashedValues, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
5
|
-
|
|
6
|
-
import { EntrypointPayload, type FeeOptions, computeCombinedPayloadHash } from './payload.js';
|
|
7
|
-
|
|
8
|
-
export { EntrypointPayload, type FeeOptions, computeCombinedPayloadHash };
|
|
9
|
-
|
|
10
|
-
export { DefaultEntrypoint } from './default_entrypoint.js';
|
|
11
|
-
export { DefaultMultiCallEntrypoint } from './default_multi_call_entrypoint.js';
|
|
12
|
-
|
|
13
|
-
/** Encodes the calls to be done in a transaction. */
|
|
14
|
-
export type ExecutionRequestInit = {
|
|
15
|
-
/** The function calls to be executed. */
|
|
16
|
-
calls: FunctionCall[];
|
|
17
|
-
/** Any transient auth witnesses needed for this execution */
|
|
18
|
-
authWitnesses?: AuthWitness[];
|
|
19
|
-
/** Any transient hashed arguments for this execution */
|
|
20
|
-
hashedArguments?: HashedValues[];
|
|
21
|
-
/** Data passed through an oracle for this execution. */
|
|
22
|
-
capsules?: Capsule[];
|
|
23
|
-
/** How the fee is going to be payed */
|
|
24
|
-
fee: FeeOptions;
|
|
25
|
-
/** An optional nonce. Used to repeat a previous tx with a higher fee so that the first one is cancelled */
|
|
26
|
-
nonce?: Fr;
|
|
27
|
-
/** Whether the transaction can be cancelled. If true, an extra nullifier will be emitted: H(nonce, GENERATOR_INDEX__TX_NULLIFIER) */
|
|
28
|
-
cancellable?: boolean;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
/** Creates transaction execution requests out of a set of function calls. */
|
|
32
|
-
export interface EntrypointInterface {
|
|
33
|
-
/**
|
|
34
|
-
* Generates an execution request out of set of function calls.
|
|
35
|
-
* @param execution - The execution intents to be run.
|
|
36
|
-
* @returns The authenticated transaction execution request.
|
|
37
|
-
*/
|
|
38
|
-
createTxExecutionRequest(execution: ExecutionRequestInit): Promise<TxExecutionRequest>;
|
|
39
|
-
}
|