@aztec/aztec.js 0.0.0-test.1 → 0.0.1-commit.5daedc8
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 +59 -0
- package/dest/account/account.d.ts.map +1 -0
- package/dest/account/account.js +59 -0
- package/dest/account/account_contract.d.ts +43 -0
- package/dest/account/account_contract.d.ts.map +1 -0
- package/dest/account/{contract.js → account_contract.js} +7 -4
- package/dest/account/account_with_secret_key.d.ts +24 -0
- 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 +4 -8
- package/dest/account/index.d.ts.map +1 -1
- package/dest/account/index.js +2 -6
- package/dest/account/interface.d.ts +2 -14
- package/dest/account/interface.d.ts.map +1 -1
- package/dest/account/interface.js +1 -0
- package/dest/account/signerless_account.d.ts +23 -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 +3 -2
- package/dest/api/abi.d.ts.map +1 -1
- package/dest/api/abi.js +1 -1
- package/dest/api/account.d.ts +7 -3
- package/dest/api/account.d.ts.map +1 -1
- package/dest/api/account.js +4 -1
- package/dest/api/addresses.d.ts +2 -1
- 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/api/contract.d.ts +49 -0
- package/dest/api/contract.d.ts.map +1 -0
- package/dest/{contract/index.js → api/contract.js} +15 -11
- 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 +5 -4
- package/dest/api/deployment.d.ts.map +1 -1
- package/dest/api/deployment.js +4 -3
- package/dest/api/eth_address.d.ts +1 -1
- 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 +2 -2
- 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/fields.d.ts +1 -1
- 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 +2 -1
- 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 -2
- package/dest/api/wallet.d.ts.map +1 -1
- package/dest/api/wallet.js +3 -1
- package/dest/authorization/call_authorization_request.d.ts +46 -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 -80
- 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 +19 -21
- package/dest/contract/batch_call.d.ts.map +1 -1
- package/dest/contract/batch_call.js +86 -68
- package/dest/contract/checker.d.ts +2 -2
- package/dest/contract/checker.d.ts.map +1 -1
- package/dest/contract/checker.js +2 -2
- package/dest/contract/contract.d.ts +9 -8
- package/dest/contract/contract.d.ts.map +1 -1
- package/dest/contract/contract.js +10 -20
- package/dest/contract/contract_base.d.ts +7 -20
- package/dest/contract/contract_base.d.ts.map +1 -1
- package/dest/contract/contract_base.js +7 -14
- package/dest/contract/contract_function_interaction.d.ts +53 -45
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +78 -74
- package/dest/contract/deploy_method.d.ts +106 -60
- package/dest/contract/deploy_method.d.ts.map +1 -1
- package/dest/contract/deploy_method.js +125 -133
- package/dest/contract/deploy_sent_tx.d.ts +14 -11
- package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
- package/dest/contract/deploy_sent_tx.js +18 -15
- package/dest/contract/get_gas_limits.d.ts +6 -7
- 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 +46 -0
- package/dest/contract/protocol_contracts.d.ts +7 -7
- 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 +9 -19
- package/dest/contract/sent_tx.d.ts.map +1 -1
- package/dest/contract/sent_tx.js +31 -43
- package/dest/contract/unsafe_contract.d.ts +2 -2
- package/dest/contract/unsafe_contract.d.ts.map +1 -1
- package/dest/contract/unsafe_contract.js +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 +4 -4
- 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 +2 -2
- package/dest/deployment/contract_deployer.d.ts.map +1 -1
- package/dest/deployment/contract_deployer.js +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/ethereum/portal_manager.d.ts +138 -0
- package/dest/ethereum/portal_manager.d.ts.map +1 -0
- package/dest/{api/ethereum → ethereum}/portal_manager.js +136 -76
- package/dest/fee/fee_juice_payment_method_with_claim.d.ts +17 -12
- 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 +12 -8
- package/dest/fee/fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.d.ts +26 -9
- package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/private_fee_payment_method.js +44 -22
- package/dest/fee/public_fee_payment_method.d.ts +27 -10
- package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
- package/dest/fee/public_fee_payment_method.js +46 -24
- 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 +1 -3
- package/dest/utils/abi_types.d.ts.map +1 -1
- package/dest/utils/authwit.d.ts +82 -25
- package/dest/utils/authwit.d.ts.map +1 -1
- package/dest/utils/authwit.js +237 -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 +4 -3
- 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 +1 -1
- package/dest/utils/field_compressed_string.d.ts.map +1 -1
- package/dest/utils/node.d.ts +2 -2
- package/dest/utils/node.d.ts.map +1 -1
- package/dest/utils/node.js +1 -1
- package/dest/utils/pub_key.d.ts +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 +66 -0
- package/dest/wallet/account_manager.d.ts.map +1 -0
- package/dest/wallet/account_manager.js +113 -0
- 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 -17
- package/dest/wallet/index.d.ts.map +1 -1
- package/dest/wallet/index.js +2 -20
- package/dest/wallet/wallet.d.ts +1965 -0
- package/dest/wallet/wallet.d.ts.map +1 -0
- package/dest/wallet/wallet.js +186 -0
- package/package.json +44 -35
- package/src/account/account.ts +96 -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 +45 -0
- package/src/api/abi.ts +26 -0
- package/src/api/account.ts +6 -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} +39 -14
- 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 +13 -0
- package/src/api/utils.ts +14 -0
- package/src/api/wallet.ts +27 -5
- package/src/authorization/call_authorization_request.ts +63 -0
- package/src/contract/base_contract_interaction.ts +23 -166
- package/src/contract/batch_call.ts +106 -57
- package/src/contract/checker.ts +8 -3
- package/src/contract/contract.ts +14 -21
- package/src/contract/contract_base.ts +9 -26
- package/src/contract/contract_function_interaction.ts +135 -106
- package/src/contract/deploy_method.ts +205 -134
- package/src/contract/deploy_sent_tx.ts +24 -23
- package/src/contract/get_gas_limits.ts +15 -8
- package/src/contract/interaction_options.ts +163 -0
- package/src/contract/protocol_contracts.ts +10 -10
- package/src/contract/sent_tx.ts +41 -52
- package/src/contract/unsafe_contract.ts +2 -2
- package/src/contract/wait_for_proven.ts +38 -0
- package/src/deployment/broadcast_function.ts +57 -57
- package/src/deployment/contract_deployer.ts +4 -3
- package/src/deployment/publish_class.ts +34 -0
- package/src/deployment/publish_instance.ts +26 -0
- package/src/{api/ethereum → ethereum}/portal_manager.ts +164 -83
- package/src/fee/fee_juice_payment_method_with_claim.ts +48 -33
- package/src/fee/fee_payment_method.ts +11 -7
- package/src/fee/private_fee_payment_method.ts +79 -57
- package/src/fee/public_fee_payment_method.ts +93 -67
- package/src/fee/sponsored_fee_payment.ts +46 -0
- package/src/utils/authwit.ts +261 -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 +106 -0
- package/src/wallet/account_manager.ts +154 -0
- package/src/wallet/deploy_account_method.ts +126 -0
- package/src/wallet/index.ts +2 -33
- package/src/wallet/wallet.ts +318 -0
- package/dest/account/contract.d.ts +0 -37
- 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 +0 -136
- 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 +0 -45
- 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 +0 -26
- package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
- package/dest/wallet/base_wallet.d.ts +0 -73
- package/dest/wallet/base_wallet.d.ts.map +0 -1
- package/dest/wallet/base_wallet.js +0 -123
- 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/base_wallet.ts +0 -198
- package/src/wallet/signerless_wallet.ts +0 -52
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
2
|
+
|
|
3
|
+
import type { ContractFunctionInteraction } from '../contract/contract_function_interaction.js';
|
|
4
|
+
import { getInstanceRegistryContract } from '../contract/protocol_contracts.js';
|
|
5
|
+
import type { Wallet } from '../wallet/wallet.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Sets up a call to the canonical contract instance registry to publish a contract instance.
|
|
9
|
+
* @param wallet - The wallet to use for the publication (setup) tx.
|
|
10
|
+
* @param instance - The instance to publish.
|
|
11
|
+
*/
|
|
12
|
+
export async function publishInstance(
|
|
13
|
+
wallet: Wallet,
|
|
14
|
+
instance: ContractInstanceWithAddress,
|
|
15
|
+
): Promise<ContractFunctionInteraction> {
|
|
16
|
+
const contractInstanceRegistry = await getInstanceRegistryContract(wallet);
|
|
17
|
+
const { salt, currentContractClassId: contractClassId, publicKeys, deployer: instanceDeployer } = instance;
|
|
18
|
+
const isUniversalDeploy = instanceDeployer.isZero();
|
|
19
|
+
return contractInstanceRegistry.methods.publish_for_public_execution(
|
|
20
|
+
salt,
|
|
21
|
+
contractClassId,
|
|
22
|
+
instance.initializationHash,
|
|
23
|
+
publicKeys,
|
|
24
|
+
isUniversalDeploy,
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ExtendedViemWalletClient, ViemContract } from '@aztec/ethereum';
|
|
2
2
|
import { extractEvent } from '@aztec/ethereum/utils';
|
|
3
3
|
import { sha256ToField } from '@aztec/foundation/crypto';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
6
|
import type { Logger } from '@aztec/foundation/log';
|
|
7
7
|
import type { SiblingPath } from '@aztec/foundation/trees';
|
|
8
|
-
import {
|
|
8
|
+
import { FeeAssetHandlerAbi } from '@aztec/l1-artifacts/FeeAssetHandlerAbi';
|
|
9
|
+
import { FeeJuicePortalAbi } from '@aztec/l1-artifacts/FeeJuicePortalAbi';
|
|
10
|
+
import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
|
|
11
|
+
import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
|
|
12
|
+
import { TokenPortalAbi } from '@aztec/l1-artifacts/TokenPortalAbi';
|
|
9
13
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
|
-
import { computeSecretHash } from '@aztec/stdlib/hash';
|
|
11
|
-
import type {
|
|
14
|
+
import { computeL2ToL1MessageHash, computeSecretHash } from '@aztec/stdlib/hash';
|
|
15
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
16
|
+
import { getL2ToL1MessageLeafId } from '@aztec/stdlib/messaging';
|
|
12
17
|
|
|
13
|
-
import { type
|
|
18
|
+
import { type Hex, getContract, toFunctionSelector } from 'viem';
|
|
14
19
|
|
|
15
|
-
// docs:start:claim_type
|
|
16
|
-
// docs:start:claim_type_amount
|
|
17
20
|
/** L1 to L2 message info to claim it on L2. */
|
|
18
21
|
export type L2Claim = {
|
|
19
22
|
/** Secret for claiming. */
|
|
@@ -25,11 +28,9 @@ export type L2Claim = {
|
|
|
25
28
|
/** Leaf index in the L1 to L2 message tree. */
|
|
26
29
|
messageLeafIndex: bigint;
|
|
27
30
|
};
|
|
28
|
-
// docs:end:claim_type
|
|
29
31
|
|
|
30
32
|
/** L1 to L2 message info that corresponds to an amount to claim. */
|
|
31
33
|
export type L2AmountClaim = L2Claim & { /** Amount to claim */ claimAmount: bigint };
|
|
32
|
-
// docs:end:claim_type_amount
|
|
33
34
|
|
|
34
35
|
/** L1 to L2 message info that corresponds to an amount to claim with associated recipient. */
|
|
35
36
|
export type L2AmountClaimWithRecipient = L2AmountClaim & {
|
|
@@ -51,20 +52,39 @@ export async function generateClaimSecret(logger?: Logger): Promise<[Fr, Fr]> {
|
|
|
51
52
|
|
|
52
53
|
/** Helper for managing an ERC20 on L1. */
|
|
53
54
|
export class L1TokenManager {
|
|
54
|
-
private contract:
|
|
55
|
+
private contract: ViemContract<typeof TestERC20Abi>;
|
|
56
|
+
private handler: ViemContract<typeof FeeAssetHandlerAbi> | undefined;
|
|
55
57
|
|
|
56
58
|
public constructor(
|
|
57
59
|
/** Address of the ERC20 contract. */
|
|
58
|
-
public readonly
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
public readonly tokenAddress: EthAddress,
|
|
61
|
+
/** Address of the handler/faucet contract. */
|
|
62
|
+
public readonly handlerAddress: EthAddress | undefined,
|
|
63
|
+
private readonly extendedClient: ExtendedViemWalletClient,
|
|
61
64
|
private logger: Logger,
|
|
62
65
|
) {
|
|
63
66
|
this.contract = getContract({
|
|
64
|
-
address: this.
|
|
67
|
+
address: this.tokenAddress.toString(),
|
|
65
68
|
abi: TestERC20Abi,
|
|
66
|
-
client: this.
|
|
69
|
+
client: this.extendedClient,
|
|
67
70
|
});
|
|
71
|
+
if (this.handlerAddress) {
|
|
72
|
+
this.handler = getContract({
|
|
73
|
+
address: this.handlerAddress.toString(),
|
|
74
|
+
abi: FeeAssetHandlerAbi,
|
|
75
|
+
client: this.extendedClient,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** Returns the amount of tokens available to mint via the handler.
|
|
81
|
+
* @throws if the handler is not provided.
|
|
82
|
+
*/
|
|
83
|
+
public async getMintAmount() {
|
|
84
|
+
if (!this.handler) {
|
|
85
|
+
throw new Error('Minting handler was not provided');
|
|
86
|
+
}
|
|
87
|
+
return await this.handler.read.mintAmount();
|
|
68
88
|
}
|
|
69
89
|
|
|
70
90
|
/**
|
|
@@ -76,16 +96,18 @@ export class L1TokenManager {
|
|
|
76
96
|
}
|
|
77
97
|
|
|
78
98
|
/**
|
|
79
|
-
* Mints tokens for the given address. Returns once the tx has been mined.
|
|
80
|
-
* @param amount - Amount to mint.
|
|
99
|
+
* Mints a fixed amount of tokens for the given address. Returns once the tx has been mined.
|
|
81
100
|
* @param address - Address to mint the tokens for.
|
|
82
101
|
* @param addressName - Optional name of the address for logging.
|
|
83
102
|
*/
|
|
84
|
-
public async mint(
|
|
85
|
-
this.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
103
|
+
public async mint(address: Hex, addressName?: string) {
|
|
104
|
+
if (!this.handler) {
|
|
105
|
+
throw new Error('Minting handler was not provided');
|
|
106
|
+
}
|
|
107
|
+
const mintAmount = await this.getMintAmount();
|
|
108
|
+
this.logger.info(`Minting ${mintAmount} tokens for ${stringifyEthAddress(address, addressName)}`);
|
|
109
|
+
// NOTE: the handler mints a fixed amount.
|
|
110
|
+
await this.handler.write.mint([address]);
|
|
89
111
|
}
|
|
90
112
|
|
|
91
113
|
/**
|
|
@@ -96,7 +118,7 @@ export class L1TokenManager {
|
|
|
96
118
|
*/
|
|
97
119
|
public async approve(amount: bigint, address: Hex, addressName = '') {
|
|
98
120
|
this.logger.info(`Approving ${amount} tokens for ${stringifyEthAddress(address, addressName)}`);
|
|
99
|
-
await this.
|
|
121
|
+
await this.extendedClient.waitForTransactionReceipt({
|
|
100
122
|
hash: await this.contract.write.approve([address, amount]),
|
|
101
123
|
});
|
|
102
124
|
}
|
|
@@ -105,20 +127,20 @@ export class L1TokenManager {
|
|
|
105
127
|
/** Helper for interacting with the FeeJuicePortal on L1. */
|
|
106
128
|
export class L1FeeJuicePortalManager {
|
|
107
129
|
private readonly tokenManager: L1TokenManager;
|
|
108
|
-
private readonly contract:
|
|
130
|
+
private readonly contract: ViemContract<typeof FeeJuicePortalAbi>;
|
|
109
131
|
|
|
110
132
|
constructor(
|
|
111
133
|
portalAddress: EthAddress,
|
|
112
134
|
tokenAddress: EthAddress,
|
|
113
|
-
|
|
114
|
-
private readonly
|
|
135
|
+
handlerAddress: EthAddress,
|
|
136
|
+
private readonly extendedClient: ExtendedViemWalletClient,
|
|
115
137
|
private readonly logger: Logger,
|
|
116
138
|
) {
|
|
117
|
-
this.tokenManager = new L1TokenManager(tokenAddress,
|
|
139
|
+
this.tokenManager = new L1TokenManager(tokenAddress, handlerAddress, extendedClient, logger);
|
|
118
140
|
this.contract = getContract({
|
|
119
141
|
address: portalAddress.toString(),
|
|
120
142
|
abi: FeeJuicePortalAbi,
|
|
121
|
-
client:
|
|
143
|
+
client: extendedClient,
|
|
122
144
|
});
|
|
123
145
|
}
|
|
124
146
|
|
|
@@ -133,39 +155,59 @@ export class L1FeeJuicePortalManager {
|
|
|
133
155
|
* @param amount - Amount of tokens to send.
|
|
134
156
|
* @param mint - Whether to mint the tokens before sending (only during testing).
|
|
135
157
|
*/
|
|
136
|
-
public async bridgeTokensPublic(to: AztecAddress, amount: bigint, mint = false): Promise<L2AmountClaim> {
|
|
158
|
+
public async bridgeTokensPublic(to: AztecAddress, amount: bigint | undefined, mint = false): Promise<L2AmountClaim> {
|
|
137
159
|
const [claimSecret, claimSecretHash] = await generateClaimSecret();
|
|
160
|
+
const mintableAmount = await this.tokenManager.getMintAmount();
|
|
161
|
+
const amountToBridge = amount ?? mintableAmount;
|
|
138
162
|
if (mint) {
|
|
139
|
-
|
|
163
|
+
if (amountToBridge !== mintableAmount) {
|
|
164
|
+
throw new Error(`Minting amount must be ${mintableAmount}`);
|
|
165
|
+
}
|
|
166
|
+
await this.tokenManager.mint(this.extendedClient.account.address);
|
|
140
167
|
}
|
|
141
168
|
|
|
142
|
-
await this.tokenManager.approve(
|
|
169
|
+
await this.tokenManager.approve(amountToBridge, this.contract.address, 'FeeJuice Portal');
|
|
143
170
|
|
|
144
171
|
this.logger.info('Sending L1 Fee Juice to L2 to be claimed publicly');
|
|
145
|
-
const args = [to.toString(),
|
|
172
|
+
const args = [to.toString(), amountToBridge, claimSecretHash.toString()] as const;
|
|
146
173
|
|
|
147
174
|
await this.contract.simulate.depositToAztecPublic(args);
|
|
148
175
|
|
|
149
|
-
const txReceipt = await this.
|
|
176
|
+
const txReceipt = await this.extendedClient.waitForTransactionReceipt({
|
|
150
177
|
hash: await this.contract.write.depositToAztecPublic(args),
|
|
151
178
|
});
|
|
152
179
|
|
|
153
|
-
this.logger.info('Deposited to Aztec public successfully');
|
|
180
|
+
this.logger.info('Deposited to Aztec public successfully', { txReceipt });
|
|
154
181
|
|
|
155
182
|
const log = extractEvent(
|
|
156
183
|
txReceipt.logs,
|
|
157
184
|
this.contract.address,
|
|
158
185
|
this.contract.abi,
|
|
159
186
|
'DepositToAztecPublic',
|
|
160
|
-
log =>
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
187
|
+
log => {
|
|
188
|
+
// Normalize hex strings for comparison (case-insensitive, handle different formats)
|
|
189
|
+
const normalizeHex = (val: string | bigint | number) => {
|
|
190
|
+
const hexStr = typeof val === 'string' ? val : `0x${val.toString(16).padStart(64, '0')}`;
|
|
191
|
+
return hexStr.toLowerCase();
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const secretHashMatch = normalizeHex(log.args.secretHash) === normalizeHex(claimSecretHash.toString());
|
|
195
|
+
const amountMatch = log.args.amount === amountToBridge;
|
|
196
|
+
const toMatch = normalizeHex(log.args.to) === normalizeHex(to.toString());
|
|
197
|
+
|
|
198
|
+
this.logger.debug(
|
|
199
|
+
`Event filter matching: secretHash=${secretHashMatch} (${log.args.secretHash} vs ${claimSecretHash.toString()}), ` +
|
|
200
|
+
`amount=${amountMatch} (${log.args.amount} vs ${amountToBridge}), ` +
|
|
201
|
+
`to=${toMatch} (${log.args.to} vs ${to.toString()})`,
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
return secretHashMatch && amountMatch && toMatch;
|
|
205
|
+
},
|
|
164
206
|
this.logger,
|
|
165
207
|
);
|
|
166
208
|
|
|
167
209
|
return {
|
|
168
|
-
claimAmount:
|
|
210
|
+
claimAmount: amountToBridge,
|
|
169
211
|
claimSecret,
|
|
170
212
|
claimSecretHash,
|
|
171
213
|
messageHash: log.args.key,
|
|
@@ -175,46 +217,53 @@ export class L1FeeJuicePortalManager {
|
|
|
175
217
|
|
|
176
218
|
/**
|
|
177
219
|
* Creates a new instance
|
|
178
|
-
* @param
|
|
179
|
-
* @param
|
|
180
|
-
* @param walletClient - L1 wallet client.
|
|
220
|
+
* @param node - Aztec node client used for retrieving the L1 contract addresses.
|
|
221
|
+
* @param extendedClient - Wallet client, extended with public actions.
|
|
181
222
|
* @param logger - Logger.
|
|
182
223
|
*/
|
|
183
224
|
public static async new(
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
walletClient: ViemWalletClient,
|
|
225
|
+
node: AztecNode,
|
|
226
|
+
extendedClient: ExtendedViemWalletClient,
|
|
187
227
|
logger: Logger,
|
|
188
228
|
): Promise<L1FeeJuicePortalManager> {
|
|
189
229
|
const {
|
|
190
|
-
l1ContractAddresses: { feeJuiceAddress, feeJuicePortalAddress },
|
|
191
|
-
} = await
|
|
230
|
+
l1ContractAddresses: { feeJuiceAddress, feeJuicePortalAddress, feeAssetHandlerAddress },
|
|
231
|
+
} = await node.getNodeInfo();
|
|
192
232
|
|
|
193
233
|
if (feeJuiceAddress.isZero() || feeJuicePortalAddress.isZero()) {
|
|
194
234
|
throw new Error('Portal or token not deployed on L1');
|
|
195
235
|
}
|
|
236
|
+
if (!feeAssetHandlerAddress || feeAssetHandlerAddress.isZero()) {
|
|
237
|
+
throw new Error('Handler not deployed on L1, or handler address is zero');
|
|
238
|
+
}
|
|
196
239
|
|
|
197
|
-
return new L1FeeJuicePortalManager(
|
|
240
|
+
return new L1FeeJuicePortalManager(
|
|
241
|
+
feeJuicePortalAddress,
|
|
242
|
+
feeJuiceAddress,
|
|
243
|
+
feeAssetHandlerAddress,
|
|
244
|
+
extendedClient,
|
|
245
|
+
logger,
|
|
246
|
+
);
|
|
198
247
|
}
|
|
199
248
|
}
|
|
200
249
|
|
|
201
250
|
/** Helper for interacting with a test TokenPortal on L1 for sending tokens to L2. */
|
|
202
251
|
export class L1ToL2TokenPortalManager {
|
|
203
|
-
protected readonly portal:
|
|
252
|
+
protected readonly portal: ViemContract<typeof TokenPortalAbi>;
|
|
204
253
|
protected readonly tokenManager: L1TokenManager;
|
|
205
254
|
|
|
206
255
|
constructor(
|
|
207
256
|
portalAddress: EthAddress,
|
|
208
257
|
tokenAddress: EthAddress,
|
|
209
|
-
|
|
210
|
-
protected
|
|
258
|
+
handlerAddress: EthAddress | undefined,
|
|
259
|
+
protected extendedClient: ExtendedViemWalletClient,
|
|
211
260
|
protected logger: Logger,
|
|
212
261
|
) {
|
|
213
|
-
this.tokenManager = new L1TokenManager(tokenAddress,
|
|
262
|
+
this.tokenManager = new L1TokenManager(tokenAddress, handlerAddress, extendedClient, logger);
|
|
214
263
|
this.portal = getContract({
|
|
215
264
|
address: portalAddress.toString(),
|
|
216
265
|
abi: TokenPortalAbi,
|
|
217
|
-
client:
|
|
266
|
+
client: extendedClient,
|
|
218
267
|
});
|
|
219
268
|
}
|
|
220
269
|
|
|
@@ -239,8 +288,8 @@ export class L1ToL2TokenPortalManager {
|
|
|
239
288
|
claimSecretHash.toString(),
|
|
240
289
|
]);
|
|
241
290
|
|
|
242
|
-
const txReceipt = await this.
|
|
243
|
-
hash: await this.
|
|
291
|
+
const txReceipt = await this.extendedClient.waitForTransactionReceipt({
|
|
292
|
+
hash: await this.extendedClient.writeContract(request),
|
|
244
293
|
});
|
|
245
294
|
|
|
246
295
|
const log = extractEvent(
|
|
@@ -248,10 +297,19 @@ export class L1ToL2TokenPortalManager {
|
|
|
248
297
|
this.portal.address,
|
|
249
298
|
this.portal.abi,
|
|
250
299
|
'DepositToAztecPublic',
|
|
251
|
-
log =>
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
300
|
+
log => {
|
|
301
|
+
// Normalize hex strings for comparison (case-insensitive, handle different formats)
|
|
302
|
+
const normalizeHex = (val: string | bigint | number) => {
|
|
303
|
+
const hexStr = typeof val === 'string' ? val : `0x${val.toString(16).padStart(64, '0')}`;
|
|
304
|
+
return hexStr.toLowerCase();
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
return (
|
|
308
|
+
normalizeHex(log.args.secretHash) === normalizeHex(claimSecretHash.toString()) &&
|
|
309
|
+
log.args.amount === amount &&
|
|
310
|
+
normalizeHex(log.args.to) === normalizeHex(to.toString())
|
|
311
|
+
);
|
|
312
|
+
},
|
|
255
313
|
this.logger,
|
|
256
314
|
);
|
|
257
315
|
|
|
@@ -280,8 +338,8 @@ export class L1ToL2TokenPortalManager {
|
|
|
280
338
|
this.logger.info('Sending L1 tokens to L2 to be claimed privately');
|
|
281
339
|
const { request } = await this.portal.simulate.depositToAztecPrivate([amount, claimSecretHash.toString()]);
|
|
282
340
|
|
|
283
|
-
const txReceipt = await this.
|
|
284
|
-
hash: await this.
|
|
341
|
+
const txReceipt = await this.extendedClient.waitForTransactionReceipt({
|
|
342
|
+
hash: await this.extendedClient.writeContract(request),
|
|
285
343
|
});
|
|
286
344
|
|
|
287
345
|
const log = extractEvent(
|
|
@@ -289,7 +347,18 @@ export class L1ToL2TokenPortalManager {
|
|
|
289
347
|
this.portal.address,
|
|
290
348
|
this.portal.abi,
|
|
291
349
|
'DepositToAztecPrivate',
|
|
292
|
-
log =>
|
|
350
|
+
log => {
|
|
351
|
+
// Normalize hex strings for comparison (case-insensitive, handle different formats)
|
|
352
|
+
const normalizeHex = (val: string | bigint | number) => {
|
|
353
|
+
const hexStr = typeof val === 'string' ? val : `0x${val.toString(16).padStart(64, '0')}`;
|
|
354
|
+
return hexStr.toLowerCase();
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
return (
|
|
358
|
+
log.args.amount === amount &&
|
|
359
|
+
normalizeHex(log.args.secretHashForL2MessageConsumption) === normalizeHex(claimSecretHash.toString())
|
|
360
|
+
);
|
|
361
|
+
},
|
|
293
362
|
this.logger,
|
|
294
363
|
);
|
|
295
364
|
|
|
@@ -309,7 +378,11 @@ export class L1ToL2TokenPortalManager {
|
|
|
309
378
|
|
|
310
379
|
private async bridgeSetup(amount: bigint, mint: boolean) {
|
|
311
380
|
if (mint) {
|
|
312
|
-
await this.tokenManager.
|
|
381
|
+
const mintableAmount = await this.tokenManager.getMintAmount();
|
|
382
|
+
if (amount !== mintableAmount) {
|
|
383
|
+
throw new Error(`Minting amount must be ${mintableAmount} for testing`);
|
|
384
|
+
}
|
|
385
|
+
await this.tokenManager.mint(this.extendedClient.account.address);
|
|
313
386
|
}
|
|
314
387
|
await this.tokenManager.approve(amount, this.portal.address, 'TokenPortal');
|
|
315
388
|
return generateClaimSecret();
|
|
@@ -318,21 +391,21 @@ export class L1ToL2TokenPortalManager {
|
|
|
318
391
|
|
|
319
392
|
/** Helper for interacting with a test TokenPortal on L1 for both withdrawing from and bridging to L2. */
|
|
320
393
|
export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
|
|
321
|
-
private readonly outbox:
|
|
394
|
+
private readonly outbox: ViemContract<typeof OutboxAbi>;
|
|
322
395
|
|
|
323
396
|
constructor(
|
|
324
397
|
portalAddress: EthAddress,
|
|
325
398
|
tokenAddress: EthAddress,
|
|
399
|
+
handlerAddress: EthAddress | undefined,
|
|
326
400
|
outboxAddress: EthAddress,
|
|
327
|
-
|
|
328
|
-
walletClient: ViemWalletClient,
|
|
401
|
+
extendedClient: ExtendedViemWalletClient,
|
|
329
402
|
logger: Logger,
|
|
330
403
|
) {
|
|
331
|
-
super(portalAddress, tokenAddress,
|
|
404
|
+
super(portalAddress, tokenAddress, handlerAddress, extendedClient, logger);
|
|
332
405
|
this.outbox = getContract({
|
|
333
406
|
address: outboxAddress.toString(),
|
|
334
407
|
abi: OutboxAbi,
|
|
335
|
-
client:
|
|
408
|
+
client: extendedClient,
|
|
336
409
|
});
|
|
337
410
|
}
|
|
338
411
|
|
|
@@ -355,9 +428,12 @@ export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
|
|
|
355
428
|
`Sending L1 tx to consume message at block ${blockNumber} index ${messageIndex} to withdraw ${amount}`,
|
|
356
429
|
);
|
|
357
430
|
|
|
358
|
-
const
|
|
431
|
+
const messageLeafId = getL2ToL1MessageLeafId({ leafIndex: messageIndex, siblingPath });
|
|
432
|
+
const isConsumedBefore = await this.outbox.read.hasMessageBeenConsumedAtCheckpoint([blockNumber, messageLeafId]);
|
|
359
433
|
if (isConsumedBefore) {
|
|
360
|
-
throw new Error(
|
|
434
|
+
throw new Error(
|
|
435
|
+
`L1 to L2 message at block ${blockNumber} index ${messageIndex} height ${siblingPath.pathSize} has already been consumed`,
|
|
436
|
+
);
|
|
361
437
|
}
|
|
362
438
|
|
|
363
439
|
// Call function on L1 contract to consume the message
|
|
@@ -370,11 +446,15 @@ export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
|
|
|
370
446
|
siblingPath.toBufferArray().map((buf: Buffer): Hex => `0x${buf.toString('hex')}`),
|
|
371
447
|
]);
|
|
372
448
|
|
|
373
|
-
await this.
|
|
449
|
+
await this.extendedClient.waitForTransactionReceipt({
|
|
450
|
+
hash: await this.extendedClient.writeContract(withdrawRequest),
|
|
451
|
+
});
|
|
374
452
|
|
|
375
|
-
const isConsumedAfter = await this.outbox.read.
|
|
453
|
+
const isConsumedAfter = await this.outbox.read.hasMessageBeenConsumedAtCheckpoint([blockNumber, messageLeafId]);
|
|
376
454
|
if (!isConsumedAfter) {
|
|
377
|
-
throw new Error(
|
|
455
|
+
throw new Error(
|
|
456
|
+
`L1 to L2 message at block ${blockNumber} index ${messageIndex} height ${siblingPath.pathSize} not consumed after withdrawal`,
|
|
457
|
+
);
|
|
378
458
|
}
|
|
379
459
|
}
|
|
380
460
|
|
|
@@ -385,26 +465,27 @@ export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
|
|
|
385
465
|
* @param l2Bridge - Address of the L2 bridge.
|
|
386
466
|
* @param callerOnL1 - Caller address on L1.
|
|
387
467
|
*/
|
|
388
|
-
public getL2ToL1MessageLeaf(
|
|
468
|
+
public async getL2ToL1MessageLeaf(
|
|
389
469
|
amount: bigint,
|
|
390
470
|
recipient: EthAddress,
|
|
391
471
|
l2Bridge: AztecAddress,
|
|
392
472
|
callerOnL1: EthAddress = EthAddress.ZERO,
|
|
393
|
-
): Fr {
|
|
473
|
+
): Promise<Fr> {
|
|
474
|
+
const version = await this.outbox.read.VERSION();
|
|
475
|
+
|
|
394
476
|
const content = sha256ToField([
|
|
395
477
|
Buffer.from(toFunctionSelector('withdraw(address,uint256,address)').substring(2), 'hex'),
|
|
396
478
|
recipient.toBuffer32(),
|
|
397
479
|
new Fr(amount).toBuffer(),
|
|
398
480
|
callerOnL1.toBuffer32(),
|
|
399
481
|
]);
|
|
400
|
-
const leaf = sha256ToField([
|
|
401
|
-
l2Bridge.toBuffer(),
|
|
402
|
-
new Fr(1).toBuffer(), // aztec version
|
|
403
|
-
EthAddress.fromString(this.portal.address).toBuffer32() ?? Buffer.alloc(32, 0),
|
|
404
|
-
new Fr(this.publicClient.chain.id).toBuffer(), // chain id
|
|
405
|
-
content.toBuffer(),
|
|
406
|
-
]);
|
|
407
482
|
|
|
408
|
-
return
|
|
483
|
+
return computeL2ToL1MessageHash({
|
|
484
|
+
l2Sender: l2Bridge,
|
|
485
|
+
l1Recipient: EthAddress.fromString(this.portal.address),
|
|
486
|
+
content,
|
|
487
|
+
rollupVersion: new Fr(version),
|
|
488
|
+
chainId: new Fr(this.extendedClient.chain.id),
|
|
489
|
+
});
|
|
409
490
|
}
|
|
410
491
|
}
|
|
@@ -1,49 +1,64 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
3
|
-
import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
4
3
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
4
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
+
import type { GasSettings } from '@aztec/stdlib/gas';
|
|
6
|
+
import { ExecutionPayload } from '@aztec/stdlib/tx';
|
|
5
7
|
|
|
6
|
-
import type { L2AmountClaim } from '../
|
|
7
|
-
import {
|
|
8
|
-
import type { Wallet } from '../wallet/index.js';
|
|
9
|
-
import { FeeJuicePaymentMethod } from './fee_juice_payment_method.js';
|
|
8
|
+
import type { L2AmountClaim } from '../ethereum/portal_manager.js';
|
|
9
|
+
import type { FeePaymentMethod } from './fee_payment_method.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Pay fee directly with Fee Juice claimed
|
|
12
|
+
* Pay fee directly with Fee Juice claimed in the same tx. Claiming consumes an L1 to L2 message that "contains"
|
|
13
|
+
* the fee juice bridged from L1.
|
|
13
14
|
*/
|
|
14
|
-
export class FeeJuicePaymentMethodWithClaim
|
|
15
|
+
export class FeeJuicePaymentMethodWithClaim implements FeePaymentMethod {
|
|
15
16
|
constructor(
|
|
16
|
-
private
|
|
17
|
+
private sender: AztecAddress,
|
|
17
18
|
private claim: Pick<L2AmountClaim, 'claimAmount' | 'claimSecret' | 'messageLeafIndex'>,
|
|
18
|
-
) {
|
|
19
|
-
super(senderWallet.getAddress());
|
|
20
|
-
}
|
|
19
|
+
) {}
|
|
21
20
|
|
|
22
21
|
/**
|
|
23
|
-
* Creates
|
|
24
|
-
* @returns
|
|
22
|
+
* Creates an execution payload to pay the fee in Fee Juice.
|
|
23
|
+
* @returns An execution payload that just contains the `claim_and_end_setup` function call.
|
|
25
24
|
*/
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
async getExecutionPayload(): Promise<ExecutionPayload> {
|
|
26
|
+
const selector = await FunctionSelector.fromSignature('claim_and_end_setup((Field),u128,Field,Field)');
|
|
27
|
+
|
|
28
|
+
return new ExecutionPayload(
|
|
29
|
+
[
|
|
30
|
+
{
|
|
31
|
+
to: ProtocolContractAddress.FeeJuice,
|
|
32
|
+
name: 'claim_and_end_setup',
|
|
33
|
+
selector,
|
|
34
|
+
hideMsgSender: false,
|
|
35
|
+
isStatic: false,
|
|
36
|
+
args: [
|
|
37
|
+
this.sender.toField(),
|
|
38
|
+
new Fr(this.claim.claimAmount),
|
|
39
|
+
this.claim.claimSecret,
|
|
40
|
+
new Fr(this.claim.messageLeafIndex),
|
|
41
|
+
],
|
|
42
|
+
returnTypes: [],
|
|
43
|
+
type: FunctionType.PRIVATE,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
[],
|
|
47
|
+
[],
|
|
48
|
+
[],
|
|
49
|
+
this.sender, // feePayer
|
|
30
50
|
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
getAsset() {
|
|
54
|
+
return Promise.resolve(ProtocolContractAddress.FeeJuice);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
getFeePayer(): Promise<AztecAddress> {
|
|
58
|
+
return Promise.resolve(this.sender);
|
|
59
|
+
}
|
|
31
60
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
to: ProtocolContractAddress.FeeJuice,
|
|
35
|
-
name: 'claim',
|
|
36
|
-
selector,
|
|
37
|
-
isStatic: false,
|
|
38
|
-
args: [
|
|
39
|
-
this.senderWallet.getAddress().toField(),
|
|
40
|
-
new Fr(this.claim.claimAmount),
|
|
41
|
-
this.claim.claimSecret,
|
|
42
|
-
new Fr(this.claim.messageLeafIndex),
|
|
43
|
-
],
|
|
44
|
-
returnTypes: [],
|
|
45
|
-
type: FunctionType.PRIVATE,
|
|
46
|
-
},
|
|
47
|
-
]);
|
|
61
|
+
getGasSettings(): GasSettings | undefined {
|
|
62
|
+
return;
|
|
48
63
|
}
|
|
49
64
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
2
1
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
2
|
import type { GasSettings } from '@aztec/stdlib/gas';
|
|
3
|
+
import type { ExecutionPayload } from '@aztec/stdlib/tx';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Holds information about how the fee for a transaction is to be paid.
|
|
@@ -9,14 +9,18 @@ export interface FeePaymentMethod {
|
|
|
9
9
|
/** The asset used to pay the fee. */
|
|
10
10
|
getAsset(): Promise<AztecAddress>;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* @returns The function
|
|
12
|
+
* Returns the data to be added to the final execution request
|
|
13
|
+
* to pay the fee in the given asset
|
|
14
|
+
* @returns The function calls to pay the fee.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
getExecutionPayload(): Promise<ExecutionPayload>;
|
|
17
17
|
/**
|
|
18
18
|
* The expected fee payer for this tx.
|
|
19
|
-
* @param gasSettings - The gas limits and max fees.
|
|
20
19
|
*/
|
|
21
|
-
getFeePayer(
|
|
20
|
+
getFeePayer(): Promise<AztecAddress>;
|
|
21
|
+
/**
|
|
22
|
+
* The gas settings (if any) used to compute the
|
|
23
|
+
* execution payload of the payment method
|
|
24
|
+
*/
|
|
25
|
+
getGasSettings(): GasSettings | undefined;
|
|
22
26
|
}
|