@aztec/end-to-end 0.0.1-commit.4d79d1f2d → 0.0.1-commit.4d9804df
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 +217 -14
- package/dest/automine/automine_test_context.d.ts +85 -0
- package/dest/automine/automine_test_context.d.ts.map +1 -0
- package/dest/automine/automine_test_context.js +98 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.d.ts +1 -1
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/automine/delivery/interactive_handshake_responder.d.ts +48 -0
- package/dest/automine/delivery/interactive_handshake_responder.d.ts.map +1 -0
- package/dest/automine/delivery/interactive_handshake_responder.js +76 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts +19 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
- package/dest/automine/delivery/onchain_delivery_harness.js +141 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
- package/dest/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.js +39 -52
- package/dest/automine/token/token_contract_test.d.ts +40 -0
- package/dest/automine/token/token_contract_test.d.ts.map +1 -0
- package/dest/{e2e_token_contract → automine/token}/token_contract_test.js +37 -52
- package/dest/automine/token/token_test_helpers.d.ts +73 -0
- package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
- package/dest/automine/token/token_test_helpers.js +97 -0
- package/dest/bench/client_flows/benchmark.d.ts +15 -1
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +19 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +5 -5
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +62 -53
- package/dest/bench/client_flows/data_extractor.js +1 -0
- package/dest/bench/utils.d.ts +3 -3
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +102 -8
- package/dest/composed/ha/ha_full_setup.d.ts +77 -0
- package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
- package/dest/composed/ha/ha_full_setup.js +383 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +17 -13
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +82 -74
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +83 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +86 -0
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/ha_setup.d.ts +4 -4
- package/dest/fixtures/ha_setup.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.js +8 -3
- package/dest/fixtures/index.d.ts +2 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +99 -48
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +319 -262
- package/dest/fixtures/setup_p2p_test.d.ts +14 -7
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +21 -18
- package/dest/fixtures/timing.d.ts +42 -0
- package/dest/fixtures/timing.d.ts.map +1 -0
- package/dest/fixtures/timing.js +72 -0
- package/dest/fixtures/token_utils.d.ts +22 -4
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +26 -8
- package/dest/fixtures/utils.d.ts +2 -2
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +1 -1
- package/dest/fixtures/wait_helpers.d.ts +135 -0
- package/dest/fixtures/wait_helpers.d.ts.map +1 -0
- package/dest/fixtures/wait_helpers.js +154 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/multi-node/block-production/setup.d.ts +97 -0
- package/dest/multi-node/block-production/setup.d.ts.map +1 -0
- package/dest/multi-node/block-production/setup.js +158 -0
- package/dest/multi-node/governance/setup.d.ts +67 -0
- package/dest/multi-node/governance/setup.d.ts.map +1 -0
- package/dest/multi-node/governance/setup.js +126 -0
- package/dest/multi-node/multi_node_test_context.d.ts +212 -0
- package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
- package/dest/multi-node/multi_node_test_context.js +347 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/inactivity_setup.js +111 -0
- package/dest/multi-node/slashing/setup.d.ts +167 -0
- package/dest/multi-node/slashing/setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/setup.js +275 -0
- package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +21 -11
- package/dest/p2p/p2p_network.d.ts.map +1 -0
- package/dest/{e2e_p2p → p2p}/p2p_network.js +97 -37
- package/dest/p2p/reqresp/utils.d.ts +19 -0
- package/dest/p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/{e2e_p2p → p2p}/reqresp/utils.js +67 -27
- package/dest/p2p/shared.d.ts +72 -0
- package/dest/p2p/shared.d.ts.map +1 -0
- package/dest/p2p/shared.js +212 -0
- package/dest/shared/cross_chain_test_harness.d.ts +6 -4
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +36 -31
- package/dest/shared/gas_portal_test_harness.d.ts +8 -5
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +26 -14
- package/dest/shared/index.d.ts +2 -1
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +12 -5
- package/dest/shared/timing_env.d.js +5 -0
- package/dest/shared/timing_env.js +365 -0
- package/dest/shared/uniswap_l1_l2.d.ts +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +55 -45
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/lending_simulator.d.ts +10 -3
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +27 -15
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -2
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
- package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
- package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +17 -4
- package/dest/single-node/fees/fees_test.d.ts +93 -0
- package/dest/single-node/fees/fees_test.d.ts.map +1 -0
- package/dest/{e2e_fees → single-node/fees}/fees_test.js +89 -63
- package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
- package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
- package/dest/single-node/l1-reorgs/setup.js +57 -0
- package/dest/single-node/partial-proofs/setup.d.ts +5 -0
- package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
- package/dest/single-node/partial-proofs/setup.js +5 -0
- package/dest/single-node/proving/setup.d.ts +5 -0
- package/dest/single-node/proving/setup.d.ts.map +1 -0
- package/dest/single-node/proving/setup.js +5 -0
- package/dest/single-node/recovery/setup.d.ts +5 -0
- package/dest/single-node/recovery/setup.d.ts.map +1 -0
- package/dest/single-node/recovery/setup.js +5 -0
- package/dest/single-node/setup.d.ts +49 -0
- package/dest/single-node/setup.d.ts.map +1 -0
- package/dest/single-node/setup.js +56 -0
- package/dest/single-node/single_node_test_context.d.ts +360 -0
- package/dest/single-node/single_node_test_context.d.ts.map +1 -0
- package/dest/single-node/single_node_test_context.js +833 -0
- package/dest/spartan/setup_test_wallets.d.ts +11 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +121 -46
- package/dest/spartan/tx_metrics.d.ts +27 -4
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +106 -21
- package/dest/spartan/utils/bot.d.ts +3 -2
- package/dest/spartan/utils/bot.d.ts.map +1 -1
- package/dest/spartan/utils/bot.js +2 -1
- package/dest/spartan/utils/config.d.ts +10 -30
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +3 -1
- package/dest/spartan/utils/index.d.ts +4 -2
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +5 -1
- package/dest/spartan/utils/k8s.d.ts +3 -1
- package/dest/spartan/utils/k8s.d.ts.map +1 -1
- package/dest/spartan/utils/k8s.js +6 -0
- package/dest/spartan/utils/nodes.d.ts +4 -5
- package/dest/spartan/utils/nodes.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +11 -11
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/test-wallet/test_wallet.d.ts +48 -25
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +197 -91
- package/dest/test-wallet/utils.d.ts +38 -3
- package/dest/test-wallet/utils.d.ts.map +1 -1
- package/dest/test-wallet/utils.js +65 -10
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +56 -0
- package/dest/test-wallet/worker_wallet.d.ts +53 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +157 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +23 -0
- package/package.json +50 -47
- package/src/automine/README.md +60 -0
- package/src/automine/automine_test_context.ts +153 -0
- package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
- package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
- package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +44 -63
- package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +43 -58
- package/src/automine/token/token_test_helpers.ts +138 -0
- package/src/bench/client_flows/benchmark.ts +21 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +102 -64
- package/src/bench/client_flows/data_extractor.ts +1 -0
- package/src/bench/utils.ts +116 -7
- package/src/composed/ha/ha_full_setup.ts +466 -0
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +97 -93
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +110 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +14 -6
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +406 -351
- package/src/fixtures/setup_p2p_test.ts +23 -27
- package/src/fixtures/timing.ts +97 -0
- package/src/fixtures/token_utils.ts +42 -7
- package/src/fixtures/utils.ts +2 -3
- package/src/fixtures/wait_helpers.ts +333 -0
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +106 -0
- package/src/guides/up_quick_start.sh +5 -2
- package/src/infra/README.md +12 -0
- package/src/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -0
- package/src/multi-node/README.md +95 -0
- package/src/multi-node/block-production/setup.ts +272 -0
- package/src/multi-node/governance/setup.ts +172 -0
- package/src/multi-node/multi_node_test_context.ts +447 -0
- package/src/multi-node/slashing/inactivity_setup.ts +139 -0
- package/src/multi-node/slashing/setup.ts +433 -0
- package/src/p2p/README.md +78 -0
- package/src/{e2e_p2p → p2p}/p2p_network.ts +116 -47
- package/src/{e2e_p2p → p2p}/reqresp/utils.ts +82 -26
- package/src/p2p/shared.ts +329 -0
- package/src/shared/cross_chain_test_harness.ts +42 -17
- package/src/shared/gas_portal_test_harness.ts +33 -15
- package/src/shared/index.ts +1 -0
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +13 -5
- package/src/shared/timing_env.d.mts +39 -0
- package/src/shared/timing_env.mjs +363 -0
- package/src/shared/uniswap_l1_l2.ts +98 -54
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +33 -15
- package/src/simulators/token_simulator.ts +6 -2
- package/src/single-node/README.md +60 -0
- package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
- package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
- package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +19 -5
- package/src/{e2e_fees → single-node/fees}/fees_test.ts +114 -70
- package/src/single-node/l1-reorgs/setup.ts +93 -0
- package/src/single-node/partial-proofs/setup.ts +8 -0
- package/src/single-node/proving/setup.ts +15 -0
- package/src/single-node/recovery/setup.ts +8 -0
- package/src/single-node/setup.ts +63 -0
- package/src/single-node/single_node_test_context.ts +1041 -0
- package/src/spartan/setup_test_wallets.ts +165 -41
- package/src/spartan/tx_metrics.ts +108 -24
- package/src/spartan/utils/bot.ts +4 -1
- package/src/spartan/utils/config.ts +2 -0
- package/src/spartan/utils/index.ts +7 -0
- package/src/spartan/utils/k8s.ts +8 -0
- package/src/spartan/utils/nodes.ts +17 -12
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/test-wallet/test_wallet.ts +228 -107
- package/src/test-wallet/utils.ts +104 -11
- package/src/test-wallet/wallet_worker_script.ts +66 -0
- package/src/test-wallet/worker_wallet.ts +216 -0
- package/src/test-wallet/worker_wallet_schema.ts +14 -0
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -55
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -129
- package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
- package/dest/e2e_deploy_contract/deploy_test.js +0 -50
- package/dest/e2e_epochs/epochs_test.d.ts +0 -100
- package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
- package/dest/e2e_epochs/epochs_test.js +0 -367
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.d.ts +0 -88
- package/dest/e2e_fees/fees_test.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.d.ts +0 -11
- package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.js +0 -56
- package/dest/e2e_multi_validator/utils.d.ts +0 -12
- package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +0 -136
- package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
- package/dest/e2e_p2p/reqresp/utils.d.ts +0 -22
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.d.ts +0 -46
- package/dest/e2e_p2p/shared.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.js +0 -181
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +0 -2
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +0 -1
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +0 -1
- package/dest/e2e_token_contract/token_contract_test.d.ts +0 -44
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -193
- package/src/e2e_deploy_contract/deploy_test.ts +0 -85
- package/src/e2e_epochs/epochs_test.ts +0 -487
- package/src/e2e_l1_publisher/write_json.ts +0 -77
- package/src/e2e_nested_contract/nested_contract_test.ts +0 -73
- package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
- package/src/e2e_p2p/shared.ts +0 -290
- /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.js +0 -0
- /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.js +0 -0
- /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof.json +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.ts +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.ts +0 -0
- /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { OnchainDeliveryTestContract } from '@aztec/noir-test-contracts.js/OnchainDeliveryTest';
|
|
5
|
+
import { jest } from '@jest/globals';
|
|
6
|
+
import { AUTOMINE_E2E_OPTS } from '../../fixtures/fixtures.js';
|
|
7
|
+
import { ensureHandshakeRegistryPublished, setup, setupPXEAndGetWallet } from '../../fixtures/setup.js';
|
|
8
|
+
const formatMode = (mode)=>typeof mode === 'string' ? mode : `${mode.events}->${mode.notes}`;
|
|
9
|
+
// Onchain private delivery has two orthogonal axes: the delivery MODE (constrained = nullifier-chained sequence;
|
|
10
|
+
// unconstrained = no nullifier, windowed scan) and the tagging-secret SOURCE, which the wallet's
|
|
11
|
+
// `resolveTaggingSecretStrategy` hook selects. This harness exercises (strategy, mode) cells end to end across two
|
|
12
|
+
// PXEs that share only a node: the sender PXE sends, the recipient PXE discovers purely from onchain logs plus the
|
|
13
|
+
// HandshakeRegistry.
|
|
14
|
+
//
|
|
15
|
+
// Cross-PXE is the meaningful setup: the recipient PXE holds no sender state, so a cell only "discovers" a message if
|
|
16
|
+
// the source truly reached it.
|
|
17
|
+
export function buildMessageDeliveryTest(opts) {
|
|
18
|
+
const { strategy, mode, senderHook, recipientRegistration, customRequestResponder, additionalTests } = opts;
|
|
19
|
+
const description = `${strategy} x ${formatMode(mode)}`;
|
|
20
|
+
describe(description, ()=>{
|
|
21
|
+
jest.setTimeout(300_000);
|
|
22
|
+
const eventValues = [
|
|
23
|
+
10n,
|
|
24
|
+
20n,
|
|
25
|
+
30n
|
|
26
|
+
];
|
|
27
|
+
const noteValues = [
|
|
28
|
+
40n,
|
|
29
|
+
50n,
|
|
30
|
+
60n
|
|
31
|
+
];
|
|
32
|
+
let aztecNode;
|
|
33
|
+
let walletSender;
|
|
34
|
+
let walletRecipient;
|
|
35
|
+
let sender;
|
|
36
|
+
let recipient;
|
|
37
|
+
let contractSender;
|
|
38
|
+
let teardownSender;
|
|
39
|
+
let teardownRecipient;
|
|
40
|
+
// Discovery results captured in beforeAll, so the assertions in the actual tests below stay pure.
|
|
41
|
+
// A failure during delivery fails beforeAll loudly instead of being swallowed as an expected red.
|
|
42
|
+
let discoveredEvents;
|
|
43
|
+
let readNotes;
|
|
44
|
+
const { events: eventMode, notes: noteMode } = typeof mode === 'string' ? {
|
|
45
|
+
events: mode,
|
|
46
|
+
notes: mode
|
|
47
|
+
} : mode;
|
|
48
|
+
const sendEvent = (value)=>eventMode === 'constrained' ? contractSender.methods.emit_event(recipient, value) : contractSender.methods.emit_event_unconstrained(recipient, value);
|
|
49
|
+
const sendNote = (value)=>noteMode === 'constrained' ? contractSender.methods.emit_note(recipient, value) : contractSender.methods.emit_note_unconstrained(recipient, value);
|
|
50
|
+
let additionallyFundedAccounts;
|
|
51
|
+
let recipientAccount;
|
|
52
|
+
let customRequestCount = 0;
|
|
53
|
+
beforeAll(async ()=>{
|
|
54
|
+
// The sender PXE holds the sender and carries this cell's tagging-secret-strategy hook. The recipient is funded
|
|
55
|
+
// at genesis here but created and deployed on the isolated recipient PXE below, so it carries no sender state
|
|
56
|
+
// from other cells.
|
|
57
|
+
({ aztecNode, additionallyFundedAccounts, wallet: walletSender, accounts: [sender], teardown: teardownSender } = await setup(1, {
|
|
58
|
+
...AUTOMINE_E2E_OPTS,
|
|
59
|
+
additionallyFundedAccounts: await generateSchnorrAccounts(1, 'schnorr'),
|
|
60
|
+
pxeCreationOptions: {
|
|
61
|
+
hooks: {
|
|
62
|
+
resolveTaggingSecretStrategy: senderHook,
|
|
63
|
+
resolveCustomRequest: async (request)=>{
|
|
64
|
+
if (!customRequestResponder) {
|
|
65
|
+
throw new Error('A custom request arrived but this test cell has no customRequestResponder configured');
|
|
66
|
+
}
|
|
67
|
+
if (!recipientAccount) {
|
|
68
|
+
throw new Error('A custom request arrived before the recipient wallet was created');
|
|
69
|
+
}
|
|
70
|
+
customRequestCount++;
|
|
71
|
+
const respond = customRequestResponder(walletRecipient, additionallyFundedAccounts[0], await recipientAccount.getCompleteAddress());
|
|
72
|
+
return respond(request);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
({ wallet: walletRecipient, teardown: teardownRecipient } = await setupPXEAndGetWallet(aztecNode, aztecNode, {}, undefined, 'pxe-recipient'));
|
|
78
|
+
recipientAccount = await walletRecipient.createSchnorrAccount(additionallyFundedAccounts[0].secret, additionallyFundedAccounts[0].salt, additionallyFundedAccounts[0].signingKey);
|
|
79
|
+
await (await recipientAccount.getDeployMethod()).send({
|
|
80
|
+
from: NO_FROM
|
|
81
|
+
});
|
|
82
|
+
recipient = recipientAccount.address;
|
|
83
|
+
await ensureHandshakeRegistryPublished(walletSender, sender);
|
|
84
|
+
const { contract: deployed, instance } = await OnchainDeliveryTestContract.deploy(walletSender).send({
|
|
85
|
+
from: sender
|
|
86
|
+
});
|
|
87
|
+
contractSender = deployed;
|
|
88
|
+
await ensureHandshakeRegistryPublished(walletRecipient, recipient);
|
|
89
|
+
await walletRecipient.registerContract(instance, OnchainDeliveryTestContract.artifact);
|
|
90
|
+
await recipientRegistration?.(walletRecipient, recipient, sender);
|
|
91
|
+
// Constrained sends to one pair are strictly ordered, so deliver one tx at a time. The first send bootstraps the
|
|
92
|
+
// handshake (when the source is a handshake); the rest reuse it.
|
|
93
|
+
const blockNumbers = [];
|
|
94
|
+
for (const value of eventValues){
|
|
95
|
+
const { receipt } = await sendEvent(value).send({
|
|
96
|
+
from: sender
|
|
97
|
+
});
|
|
98
|
+
blockNumbers.push(receipt.blockNumber);
|
|
99
|
+
}
|
|
100
|
+
for (const value of noteValues){
|
|
101
|
+
await sendNote(value).send({
|
|
102
|
+
from: sender
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
await walletRecipient.sync();
|
|
106
|
+
const events = await walletRecipient.getPrivateEvents(OnchainDeliveryTestContract.events.DeliveryEvent, {
|
|
107
|
+
contractAddress: contractSender.address,
|
|
108
|
+
fromBlock: BlockNumber(Math.min(...blockNumbers)),
|
|
109
|
+
toBlock: BlockNumber(Math.max(...blockNumbers) + 1),
|
|
110
|
+
scopes: [
|
|
111
|
+
recipient
|
|
112
|
+
]
|
|
113
|
+
});
|
|
114
|
+
discoveredEvents = events.map((e)=>e.event.value);
|
|
115
|
+
const contractRecipient = OnchainDeliveryTestContract.at(contractSender.address, walletRecipient);
|
|
116
|
+
const { result } = await contractRecipient.methods.get_note_values(recipient).simulate({
|
|
117
|
+
from: recipient
|
|
118
|
+
});
|
|
119
|
+
readNotes = result.storage.slice(0, Number(result.len));
|
|
120
|
+
});
|
|
121
|
+
afterAll(async ()=>{
|
|
122
|
+
await teardownRecipient();
|
|
123
|
+
await teardownSender();
|
|
124
|
+
});
|
|
125
|
+
it('the recipient PXE discovers the events delivered by the sender PXE', ()=>{
|
|
126
|
+
expect(discoveredEvents.length).toBe(eventValues.length);
|
|
127
|
+
for (const value of eventValues){
|
|
128
|
+
expect(discoveredEvents).toContainEqual(value);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
it('the recipient PXE reads back the notes delivered by the sender PXE', ()=>{
|
|
132
|
+
expect(readNotes).toEqual(noteValues);
|
|
133
|
+
});
|
|
134
|
+
if (customRequestResponder) {
|
|
135
|
+
it('the custom request hook fires exactly once, on the send that bootstraps the tagging secret', ()=>{
|
|
136
|
+
expect(customRequestCount).toBe(1);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
additionalTests?.();
|
|
140
|
+
});
|
|
141
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import type { TxHash } from '@aztec/aztec.js/tx';
|
|
4
|
+
import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
|
|
5
|
+
import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
|
|
6
|
+
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
7
|
+
import { TokenSimulator } from '../../simulators/token_simulator.js';
|
|
8
|
+
import { AutomineTestContext, type AutomineTestOpts } from '../automine_test_context.js';
|
|
9
|
+
export declare class Role {
|
|
10
|
+
private isAdmin;
|
|
11
|
+
private isMinter;
|
|
12
|
+
private isBlacklisted;
|
|
13
|
+
withAdmin(): this;
|
|
14
|
+
withMinter(): this;
|
|
15
|
+
withBlacklisted(): this;
|
|
16
|
+
toNoirStruct(): {
|
|
17
|
+
is_admin: boolean;
|
|
18
|
+
is_minter: boolean;
|
|
19
|
+
is_blacklisted: boolean;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* TokenBlacklist-domain harness over the automine topology: extends {@link AutomineTestContext} with a
|
|
24
|
+
* {@link TokenSimulator}, the {@link Role} helper, the TokenBlacklist deploy plus a bad-account and
|
|
25
|
+
* authwit proxy, and the role-change-delay warp. Base setup and mint run in {@link setup}.
|
|
26
|
+
*/
|
|
27
|
+
export declare class BlacklistTokenContractTest extends AutomineTestContext {
|
|
28
|
+
static CHANGE_ROLES_DELAY: number;
|
|
29
|
+
asset: TokenBlacklistContract;
|
|
30
|
+
tokenSim: TokenSimulator;
|
|
31
|
+
badAccount: InvalidAccountContract;
|
|
32
|
+
authwitProxy: GenericProxyContract;
|
|
33
|
+
adminAddress: AztecAddress;
|
|
34
|
+
otherAddress: AztecAddress;
|
|
35
|
+
blacklistedAddress: AztecAddress;
|
|
36
|
+
private testName;
|
|
37
|
+
constructor(testName: string);
|
|
38
|
+
crossTimestampOfChange(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Applies base setup:
|
|
41
|
+
* 1. Add 3 accounts.
|
|
42
|
+
* 2. Publicly deploy accounts, deploy token contract and a "bad account".
|
|
43
|
+
*/
|
|
44
|
+
applyBaseSetup(): Promise<void>;
|
|
45
|
+
setup(opts?: AutomineTestOpts): Promise<void>;
|
|
46
|
+
addPendingShieldNoteToPXE(contract: TokenBlacklistContract, recipient: AztecAddress, amount: bigint, secretHash: Fr, txHash: TxHash): Promise<void>;
|
|
47
|
+
applyMint(): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhY2tsaXN0X3Rva2VuX2NvbnRyYWN0X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRvbWluZS90b2tlbi9ibGFja2xpc3RfdG9rZW5fY29udHJhY3RfdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVDLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBS3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXpGLHFCQUFhLElBQUk7SUFDZixPQUFPLENBQUMsT0FBTyxDQUFTO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQVM7SUFDekIsT0FBTyxDQUFDLGFBQWEsQ0FBUztJQUU5QixTQUFTLFNBR1I7SUFFRCxVQUFVLFNBR1Q7SUFFRCxlQUFlLFNBR2Q7SUFFRCxZQUFZOzs7O01BSVg7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxxQkFBYSwwQkFBMkIsU0FBUSxtQkFBbUI7SUFFakUsTUFBTSxDQUFDLGtCQUFrQixTQUFTO0lBRWxDLEtBQUssRUFBRyxzQkFBc0IsQ0FBQztJQUMvQixRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLFVBQVUsRUFBRyxzQkFBc0IsQ0FBQztJQUNwQyxZQUFZLEVBQUcsb0JBQW9CLENBQUM7SUFFcEMsWUFBWSxFQUFHLFlBQVksQ0FBQztJQUM1QixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLGtCQUFrQixFQUFHLFlBQVksQ0FBQztJQUVsQyxPQUFPLENBQUMsUUFBUSxDQUFTO0lBRXpCLFlBQVksUUFBUSxFQUFFLE1BQU0sRUFHM0I7SUFFSyxzQkFBc0Isa0JBRTNCO0lBRUQ7Ozs7T0FJRztJQUNHLGNBQWMsa0JBZ0RuQjtJQUVjLEtBQUssQ0FBQyxJQUFJLEdBQUUsZ0JBQXFCLGlCQUsvQztJQUVLLHlCQUF5QixDQUM3QixRQUFRLEVBQUUsc0JBQXNCLEVBQ2hDLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsVUFBVSxFQUFFLEVBQUUsRUFDZCxNQUFNLEVBQUUsTUFBTSxpQkFjZjtJQUVLLFNBQVMsa0JBbURkO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blacklist_token_contract_test.d.ts","sourceRoot":"","sources":["../../../src/automine/token/blacklist_token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAKtF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEzF,qBAAa,IAAI;IACf,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAE9B,SAAS,SAGR;IAED,UAAU,SAGT;IAED,eAAe,SAGd;IAED,YAAY;;;;MAIX;CACF;AAED;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,mBAAmB;IAEjE,MAAM,CAAC,kBAAkB,SAAS;IAElC,KAAK,EAAG,sBAAsB,CAAC;IAC/B,QAAQ,EAAG,cAAc,CAAC;IAC1B,UAAU,EAAG,sBAAsB,CAAC;IACpC,YAAY,EAAG,oBAAoB,CAAC;IAEpC,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,kBAAkB,EAAG,YAAY,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,QAAQ,EAAE,MAAM,EAG3B;IAEK,sBAAsB,kBAE3B;IAED;;;;OAIG;IACG,cAAc,kBAgDnB;IAEc,KAAK,CAAC,IAAI,GAAE,gBAAqB,iBAK/C;IAEK,yBAAyB,CAC7B,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,EAAE,EACd,MAAM,EAAE,MAAM,iBAcf;IAEK,SAAS,kBAmDd;CACF"}
|
package/dest/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.js
RENAMED
|
@@ -5,8 +5,9 @@ import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist'
|
|
|
5
5
|
import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
|
|
6
6
|
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
7
7
|
import { jest } from '@jest/globals';
|
|
8
|
-
import {
|
|
9
|
-
import { TokenSimulator } from '
|
|
8
|
+
import { ensureAuthRegistryPublished } from '../../fixtures/setup.js';
|
|
9
|
+
import { TokenSimulator } from '../../simulators/token_simulator.js';
|
|
10
|
+
import { AutomineTestContext } from '../automine_test_context.js';
|
|
10
11
|
export class Role {
|
|
11
12
|
isAdmin = false;
|
|
12
13
|
isMinter = false;
|
|
@@ -33,94 +34,80 @@ export class Role {
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
/**
|
|
38
|
+
* TokenBlacklist-domain harness over the automine topology: extends {@link AutomineTestContext} with a
|
|
39
|
+
* {@link TokenSimulator}, the {@link Role} helper, the TokenBlacklist deploy plus a bad-account and
|
|
40
|
+
* authwit proxy, and the role-change-delay warp. Base setup and mint run in {@link setup}.
|
|
41
|
+
*/ export class BlacklistTokenContractTest extends AutomineTestContext {
|
|
37
42
|
// This value MUST match the same value that we have in the contract
|
|
38
43
|
static CHANGE_ROLES_DELAY = 86400;
|
|
39
|
-
context;
|
|
40
|
-
logger;
|
|
41
|
-
wallet;
|
|
42
44
|
asset;
|
|
43
45
|
tokenSim;
|
|
44
46
|
badAccount;
|
|
45
|
-
|
|
46
|
-
cheatCodes;
|
|
47
|
-
sequencer;
|
|
48
|
-
aztecNode;
|
|
47
|
+
authwitProxy;
|
|
49
48
|
adminAddress;
|
|
50
49
|
otherAddress;
|
|
51
50
|
blacklistedAddress;
|
|
51
|
+
testName;
|
|
52
52
|
constructor(testName){
|
|
53
|
-
|
|
53
|
+
super();
|
|
54
|
+
this.testName = testName;
|
|
54
55
|
}
|
|
55
56
|
async crossTimestampOfChange() {
|
|
56
|
-
await this.
|
|
57
|
+
await this.markProvenAndWarp(BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
59
60
|
* Applies base setup:
|
|
60
61
|
* 1. Add 3 accounts.
|
|
61
62
|
* 2. Publicly deploy accounts, deploy token contract and a "bad account".
|
|
62
63
|
*/ async applyBaseSetup() {
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const { deployedAccounts } = await deployAccounts(3, this.logger)({
|
|
67
|
-
wallet: this.context.wallet,
|
|
68
|
-
initialFundedAccounts: this.context.initialFundedAccounts
|
|
69
|
-
});
|
|
64
|
+
// Bumped from 2 min: pipelined cadence (~24s/dependent-tx) makes the 3-account deploy plus token/bad-account/
|
|
65
|
+
// proxy deploys exceed the original window.
|
|
66
|
+
jest.setTimeout(600_000);
|
|
70
67
|
this.cheatCodes = this.context.cheatCodes;
|
|
71
68
|
this.aztecNode = this.context.aztecNodeService;
|
|
72
69
|
this.sequencer = this.context.sequencer;
|
|
73
70
|
this.wallet = this.context.wallet;
|
|
74
|
-
this.adminAddress =
|
|
75
|
-
this.otherAddress = deployedAccounts[1].address;
|
|
76
|
-
this.blacklistedAddress = deployedAccounts[2].address;
|
|
71
|
+
[this.adminAddress, this.otherAddress, this.blacklistedAddress] = this.context.accounts;
|
|
77
72
|
this.logger.info('Setting up blacklist token contract');
|
|
78
|
-
|
|
79
|
-
this.logger.verbose(`Public deploy accounts...`);
|
|
80
|
-
await publicDeployAccounts(this.wallet, [
|
|
81
|
-
this.adminAddress,
|
|
82
|
-
this.otherAddress,
|
|
83
|
-
this.blacklistedAddress
|
|
84
|
-
]);
|
|
73
|
+
await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
|
|
85
74
|
this.logger.verbose(`Deploying TokenContract...`);
|
|
86
|
-
this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
|
|
75
|
+
({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
|
|
87
76
|
from: this.adminAddress
|
|
88
|
-
});
|
|
77
|
+
}));
|
|
89
78
|
this.logger.verbose(`Token deployed to ${this.asset.address}`);
|
|
90
79
|
this.logger.verbose(`Deploying bad account...`);
|
|
91
|
-
this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
|
|
80
|
+
({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
|
|
92
81
|
from: this.adminAddress
|
|
93
|
-
});
|
|
82
|
+
}));
|
|
94
83
|
this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
|
|
95
84
|
// Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
|
|
96
85
|
// (so their notes are in scope), but msg_sender in the target must differ from the note owner
|
|
97
86
|
// to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
|
|
98
87
|
this.logger.verbose(`Deploying generic proxy...`);
|
|
99
|
-
this.
|
|
88
|
+
({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
|
|
100
89
|
from: this.adminAddress
|
|
101
|
-
});
|
|
102
|
-
this.logger.verbose(`Deployed to ${this.
|
|
90
|
+
}));
|
|
91
|
+
this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
|
|
103
92
|
await this.crossTimestampOfChange();
|
|
104
93
|
this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
|
|
105
94
|
this.adminAddress,
|
|
106
95
|
this.otherAddress,
|
|
107
96
|
this.blacklistedAddress
|
|
108
97
|
]);
|
|
109
|
-
expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
|
|
98
|
+
expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
|
|
110
99
|
from: this.adminAddress
|
|
111
|
-
})).toEqual(new Role().withAdmin().toNoirStruct());
|
|
100
|
+
})).result).toEqual(new Role().withAdmin().toNoirStruct());
|
|
112
101
|
}
|
|
113
|
-
async setup() {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
skipAccountDeployment: true
|
|
102
|
+
async setup(opts = {}) {
|
|
103
|
+
await super.setup({
|
|
104
|
+
numberOfAccounts: 3,
|
|
105
|
+
...opts
|
|
118
106
|
});
|
|
107
|
+
// hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
|
|
108
|
+
this.logger = createLogger(`e2e:automine:blacklist:${this.testName}`);
|
|
119
109
|
await this.applyBaseSetup();
|
|
120
110
|
}
|
|
121
|
-
async teardown() {
|
|
122
|
-
await teardown(this.context);
|
|
123
|
-
}
|
|
124
111
|
async addPendingShieldNoteToPXE(contract, recipient, amount, secretHash, txHash) {
|
|
125
112
|
const txEffects = await this.aztecNode.getTxEffect(txHash);
|
|
126
113
|
await contract.methods.process_transparent_note(contract.address, amount, secretHash, txHash.hash, txEffects.data.noteHashes, txEffects.data.nullifiers[0], recipient).simulate({
|
|
@@ -140,9 +127,9 @@ export class BlacklistTokenContractTest {
|
|
|
140
127
|
from: this.adminAddress
|
|
141
128
|
});
|
|
142
129
|
await this.crossTimestampOfChange();
|
|
143
|
-
expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
|
|
130
|
+
expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
|
|
144
131
|
from: this.adminAddress
|
|
145
|
-
})).toEqual(adminMinterRole.toNoirStruct());
|
|
132
|
+
})).result).toEqual(adminMinterRole.toNoirStruct());
|
|
146
133
|
this.logger.verbose(`Minting ${amount} publicly...`);
|
|
147
134
|
await asset.methods.mint_public(this.adminAddress, amount).send({
|
|
148
135
|
from: this.adminAddress
|
|
@@ -150,7 +137,7 @@ export class BlacklistTokenContractTest {
|
|
|
150
137
|
this.logger.verbose(`Minting ${amount} privately...`);
|
|
151
138
|
const secret = Fr.random();
|
|
152
139
|
const secretHash = await computeSecretHash(secret);
|
|
153
|
-
const receipt = await asset.methods.mint_private(amount, secretHash).send({
|
|
140
|
+
const { receipt } = await asset.methods.mint_private(amount, secretHash).send({
|
|
154
141
|
from: this.adminAddress
|
|
155
142
|
});
|
|
156
143
|
await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
|
|
@@ -159,18 +146,18 @@ export class BlacklistTokenContractTest {
|
|
|
159
146
|
});
|
|
160
147
|
this.logger.verbose(`Minting complete.`);
|
|
161
148
|
tokenSim.mintPublic(this.adminAddress, amount);
|
|
162
|
-
const publicBalance = await asset.methods.balance_of_public(this.adminAddress).simulate({
|
|
149
|
+
const { result: publicBalance } = await asset.methods.balance_of_public(this.adminAddress).simulate({
|
|
163
150
|
from: this.adminAddress
|
|
164
151
|
});
|
|
165
152
|
this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
|
|
166
153
|
expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
|
|
167
154
|
tokenSim.mintPrivate(this.adminAddress, amount);
|
|
168
|
-
const privateBalance = await asset.methods.balance_of_private(this.adminAddress).simulate({
|
|
155
|
+
const { result: privateBalance } = await asset.methods.balance_of_private(this.adminAddress).simulate({
|
|
169
156
|
from: this.adminAddress
|
|
170
157
|
});
|
|
171
158
|
this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
|
|
172
159
|
expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
|
|
173
|
-
const totalSupply = await asset.methods.total_supply().simulate({
|
|
160
|
+
const { result: totalSupply } = await asset.methods.total_supply().simulate({
|
|
174
161
|
from: this.adminAddress
|
|
175
162
|
});
|
|
176
163
|
this.logger.verbose(`Total supply: ${totalSupply}`);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
3
|
+
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
4
|
+
import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
|
|
5
|
+
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
6
|
+
import { TokenSimulator } from '../../simulators/token_simulator.js';
|
|
7
|
+
import { AutomineTestContext, type AutomineTestOpts } from '../automine_test_context.js';
|
|
8
|
+
/**
|
|
9
|
+
* Token-domain harness over the automine topology: extends {@link AutomineTestContext} with a
|
|
10
|
+
* {@link TokenSimulator}, the USDC Token deploy plus a bad-account and authwit proxy, and an optional
|
|
11
|
+
* mint. Base setup is opt-in via {@link applyBaseSnapshots} (run during `setup()`); {@link applyMint}
|
|
12
|
+
* is called explicitly after `setup()`.
|
|
13
|
+
*/
|
|
14
|
+
export declare class TokenContractTest extends AutomineTestContext {
|
|
15
|
+
static TOKEN_NAME: string;
|
|
16
|
+
static TOKEN_SYMBOL: string;
|
|
17
|
+
static TOKEN_DECIMALS: bigint;
|
|
18
|
+
metricsPort?: number;
|
|
19
|
+
asset: TokenContract;
|
|
20
|
+
tokenSim: TokenSimulator;
|
|
21
|
+
node: AztecNode;
|
|
22
|
+
badAccount: InvalidAccountContract;
|
|
23
|
+
authwitProxy: GenericProxyContract;
|
|
24
|
+
adminAddress: AztecAddress;
|
|
25
|
+
otherAddress: AztecAddress;
|
|
26
|
+
account2Address: AztecAddress;
|
|
27
|
+
private shouldApplyBaseSetup;
|
|
28
|
+
private testName;
|
|
29
|
+
constructor(testName: string);
|
|
30
|
+
/**
|
|
31
|
+
* Registers that base setup should be applied during setup().
|
|
32
|
+
* Call this before setup() to deploy 3 accounts, publicly deploy accounts, token contract and a "bad account".
|
|
33
|
+
*/
|
|
34
|
+
applyBaseSnapshots(): void;
|
|
35
|
+
private applyBaseSetup;
|
|
36
|
+
setup(opts?: AutomineTestOpts): Promise<void>;
|
|
37
|
+
/** Mints an initial public and private balance to the admin account. Call after {@link setup}. */
|
|
38
|
+
applyMint(): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dG9taW5lL3Rva2VuL3Rva2VuX2NvbnRyYWN0X3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQU10RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEtBQUssZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl6Rjs7Ozs7R0FLRztBQUNILHFCQUFhLGlCQUFrQixTQUFRLG1CQUFtQjtJQUN4RCxNQUFNLENBQUMsVUFBVSxTQUFVO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLFNBQVM7SUFDNUIsTUFBTSxDQUFDLGNBQWMsU0FBTztJQUM1QixXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDckIsS0FBSyxFQUFHLGFBQWEsQ0FBQztJQUN0QixRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLElBQUksRUFBRyxTQUFTLENBQUM7SUFFakIsVUFBVSxFQUFHLHNCQUFzQixDQUFDO0lBQ3BDLFlBQVksRUFBRyxvQkFBb0IsQ0FBQztJQUNwQyxZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLFlBQVksRUFBRyxZQUFZLENBQUM7SUFDNUIsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBUztJQUV6QixZQUFZLFFBQVEsRUFBRSxNQUFNLEVBSTNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO1lBS2EsY0FBYztJQThDYixLQUFLLENBQUMsSUFBSSxHQUFFLGdCQUFxQixpQkFRL0M7SUFFRCxrR0FBa0c7SUFDNUYsU0FBUyxrQkE4QmQ7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../../src/automine/token/token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAMtF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAIzF;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,YAAY,EAAG,oBAAoB,CAAC;IACpC,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,eAAe,EAAG,YAAY,CAAC;IAE/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,QAAQ,EAAE,MAAM,EAI3B;IAED;;;OAGG;IACH,kBAAkB,SAEjB;YAKa,cAAc;IA8Cb,KAAK,CAAC,IAAI,GAAE,gBAAqB,iBAQ/C;IAED,kGAAkG;IAC5F,SAAS,kBA8Bd;CACF"}
|
|
@@ -3,30 +3,34 @@ import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
|
3
3
|
import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
|
|
4
4
|
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
5
5
|
import { jest } from '@jest/globals';
|
|
6
|
-
import {
|
|
7
|
-
import { mintTokensToPrivate } from '
|
|
8
|
-
import { TokenSimulator } from '
|
|
6
|
+
import { ensureAuthRegistryPublished } from '../../fixtures/setup.js';
|
|
7
|
+
import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
|
|
8
|
+
import { TokenSimulator } from '../../simulators/token_simulator.js';
|
|
9
|
+
import { AutomineTestContext } from '../automine_test_context.js';
|
|
9
10
|
const { METRICS_PORT: metricsPort } = process.env;
|
|
10
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Token-domain harness over the automine topology: extends {@link AutomineTestContext} with a
|
|
13
|
+
* {@link TokenSimulator}, the USDC Token deploy plus a bad-account and authwit proxy, and an optional
|
|
14
|
+
* mint. Base setup is opt-in via {@link applyBaseSnapshots} (run during `setup()`); {@link applyMint}
|
|
15
|
+
* is called explicitly after `setup()`.
|
|
16
|
+
*/ export class TokenContractTest extends AutomineTestContext {
|
|
11
17
|
static TOKEN_NAME = 'USDC';
|
|
12
18
|
static TOKEN_SYMBOL = 'USD';
|
|
13
19
|
static TOKEN_DECIMALS = 18n;
|
|
14
|
-
context;
|
|
15
|
-
logger;
|
|
16
20
|
metricsPort;
|
|
17
21
|
asset;
|
|
18
22
|
tokenSim;
|
|
19
23
|
node;
|
|
20
24
|
badAccount;
|
|
21
|
-
|
|
22
|
-
wallet;
|
|
25
|
+
authwitProxy;
|
|
23
26
|
adminAddress;
|
|
24
|
-
|
|
27
|
+
otherAddress;
|
|
25
28
|
account2Address;
|
|
26
29
|
shouldApplyBaseSetup = false;
|
|
27
|
-
|
|
30
|
+
testName;
|
|
28
31
|
constructor(testName){
|
|
29
|
-
|
|
32
|
+
super();
|
|
33
|
+
this.testName = testName;
|
|
30
34
|
this.metricsPort = metricsPort ? parseInt(metricsPort) : undefined;
|
|
31
35
|
}
|
|
32
36
|
/**
|
|
@@ -36,73 +40,54 @@ export class TokenContractTest {
|
|
|
36
40
|
this.shouldApplyBaseSetup = true;
|
|
37
41
|
}
|
|
38
42
|
/**
|
|
39
|
-
* Registers that mint should be applied during setup().
|
|
40
|
-
* Call this before setup() to mint tokens to the admin account.
|
|
41
|
-
*/ applyMintSnapshot() {
|
|
42
|
-
this.shouldApplyMint = true;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
43
|
* Applies base setup: deploys 3 accounts, publicly deploys accounts, token contract and a "bad account".
|
|
46
44
|
*/ async applyBaseSetup() {
|
|
47
45
|
// Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
|
|
48
46
|
jest.setTimeout(120_000);
|
|
49
|
-
this.logger.info('Applying base setup - deploying 3 accounts');
|
|
50
|
-
const { deployedAccounts } = await deployAccounts(3, this.logger)({
|
|
51
|
-
wallet: this.context.wallet,
|
|
52
|
-
initialFundedAccounts: this.context.initialFundedAccounts
|
|
53
|
-
});
|
|
54
47
|
this.node = this.context.aztecNodeService;
|
|
55
48
|
this.wallet = this.context.wallet;
|
|
56
|
-
[this.adminAddress, this.
|
|
49
|
+
[this.adminAddress, this.otherAddress, this.account2Address] = this.context.accounts;
|
|
57
50
|
this.logger.info('Applying base setup - deploying token contract');
|
|
58
|
-
this.
|
|
59
|
-
await publicDeployAccounts(this.wallet, [
|
|
60
|
-
this.adminAddress,
|
|
61
|
-
this.account1Address
|
|
62
|
-
]);
|
|
51
|
+
await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
|
|
63
52
|
this.logger.verbose(`Deploying TokenContract...`);
|
|
64
|
-
this.asset = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
|
|
53
|
+
({ contract: this.asset } = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
|
|
65
54
|
from: this.adminAddress
|
|
66
|
-
});
|
|
55
|
+
}));
|
|
67
56
|
this.logger.verbose(`Token deployed to ${this.asset.address}`);
|
|
68
57
|
this.logger.verbose(`Deploying bad account...`);
|
|
69
|
-
this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
|
|
58
|
+
({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
|
|
70
59
|
from: this.adminAddress
|
|
71
|
-
});
|
|
60
|
+
}));
|
|
72
61
|
this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
|
|
73
62
|
// Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
|
|
74
63
|
// (so their notes are in scope), but msg_sender in the target must differ from the note owner
|
|
75
64
|
// to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
|
|
76
65
|
this.logger.verbose(`Deploying generic proxy...`);
|
|
77
|
-
this.
|
|
66
|
+
({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
|
|
78
67
|
from: this.adminAddress
|
|
79
|
-
});
|
|
80
|
-
this.logger.verbose(`Deployed to ${this.
|
|
68
|
+
}));
|
|
69
|
+
this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
|
|
81
70
|
this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
|
|
82
71
|
this.adminAddress,
|
|
83
|
-
this.
|
|
72
|
+
this.otherAddress
|
|
84
73
|
]);
|
|
85
|
-
expect(await this.asset.methods.get_admin().simulate({
|
|
74
|
+
expect((await this.asset.methods.get_admin().simulate({
|
|
86
75
|
from: this.adminAddress
|
|
87
|
-
})).toBe(this.adminAddress.toBigInt());
|
|
76
|
+
})).result).toBe(this.adminAddress.toBigInt());
|
|
88
77
|
}
|
|
89
|
-
async setup() {
|
|
90
|
-
|
|
78
|
+
async setup(opts = {}) {
|
|
79
|
+
await super.setup({
|
|
80
|
+
numberOfAccounts: 3,
|
|
91
81
|
metricsPort: this.metricsPort,
|
|
92
|
-
|
|
93
|
-
skipAccountDeployment: true
|
|
82
|
+
...opts
|
|
94
83
|
});
|
|
84
|
+
// hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
|
|
85
|
+
this.logger = createLogger(`e2e:automine:token:${this.testName}`);
|
|
95
86
|
if (this.shouldApplyBaseSetup) {
|
|
96
87
|
await this.applyBaseSetup();
|
|
97
88
|
}
|
|
98
|
-
if (this.shouldApplyMint) {
|
|
99
|
-
await this.applyMint();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
async teardown() {
|
|
103
|
-
await teardown(this.context);
|
|
104
89
|
}
|
|
105
|
-
async applyMint() {
|
|
90
|
+
/** Mints an initial public and private balance to the admin account. Call after {@link setup}. */ async applyMint() {
|
|
106
91
|
this.logger.info('Applying mint setup');
|
|
107
92
|
const { asset, adminAddress, tokenSim } = this;
|
|
108
93
|
const amount = 10000n;
|
|
@@ -111,7 +96,7 @@ export class TokenContractTest {
|
|
|
111
96
|
from: adminAddress
|
|
112
97
|
});
|
|
113
98
|
tokenSim.mintPublic(adminAddress, amount);
|
|
114
|
-
const publicBalance = await asset.methods.balance_of_public(adminAddress).simulate({
|
|
99
|
+
const { result: publicBalance } = await asset.methods.balance_of_public(adminAddress).simulate({
|
|
115
100
|
from: adminAddress
|
|
116
101
|
});
|
|
117
102
|
this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
|
|
@@ -119,12 +104,12 @@ export class TokenContractTest {
|
|
|
119
104
|
this.logger.verbose(`Minting ${amount} privately...`);
|
|
120
105
|
await mintTokensToPrivate(asset, adminAddress, adminAddress, amount);
|
|
121
106
|
tokenSim.mintPrivate(adminAddress, amount);
|
|
122
|
-
const privateBalance = await asset.methods.balance_of_private(adminAddress).simulate({
|
|
107
|
+
const { result: privateBalance } = await asset.methods.balance_of_private(adminAddress).simulate({
|
|
123
108
|
from: adminAddress
|
|
124
109
|
});
|
|
125
110
|
this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
|
|
126
111
|
expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(adminAddress));
|
|
127
|
-
const totalSupply = await asset.methods.total_supply().simulate({
|
|
112
|
+
const { result: totalSupply } = await asset.methods.total_supply().simulate({
|
|
128
113
|
from: adminAddress
|
|
129
114
|
});
|
|
130
115
|
this.logger.verbose(`Total supply: ${totalSupply}`);
|