@layerzerolabs/protocol-stellar-v2 0.2.21 → 0.2.23
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/.turbo/turbo-build.log +347 -271
- package/.turbo/turbo-lint.log +277 -208
- package/.turbo/turbo-test.log +1700 -1370
- package/Cargo.lock +22 -51
- package/Cargo.toml +6 -1
- package/contracts/common-macros/src/auth.rs +10 -9
- package/contracts/common-macros/src/contract_ttl.rs +1 -4
- package/contracts/common-macros/src/error.rs +1 -3
- package/contracts/common-macros/src/lib.rs +65 -61
- package/contracts/common-macros/src/storage.rs +212 -65
- package/contracts/common-macros/src/tests/auth.rs +75 -6
- package/contracts/common-macros/src/tests/contract_ttl.rs +383 -350
- package/contracts/common-macros/src/tests/error.rs +9 -21
- package/contracts/common-macros/src/tests/lz_contract.rs +80 -0
- package/contracts/common-macros/src/tests/mod.rs +2 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -3
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +28 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +8 -43
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +6 -29
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__lz_contract__snapshot_generated_lz_contract_code.snap +31 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_extendable__snapshot_generated_ttl_extendable_code.snap +8 -0
- package/contracts/common-macros/src/tests/storage/extract_fields.rs +87 -0
- package/contracts/common-macros/src/tests/storage/gen_accessor_methods.rs +223 -0
- package/contracts/common-macros/src/tests/storage/gen_args.rs +65 -0
- package/contracts/common-macros/src/tests/storage/gen_enum_variant.rs +78 -0
- package/contracts/common-macros/src/tests/storage/gen_key.rs +108 -0
- package/contracts/common-macros/src/tests/storage/gen_params.rs +105 -0
- package/contracts/common-macros/src/tests/{storage.rs → storage/generate_storage.rs} +54 -129
- package/contracts/common-macros/src/tests/storage/is_primitive_type.rs +48 -0
- package/contracts/common-macros/src/tests/storage/mod.rs +16 -0
- package/contracts/common-macros/src/tests/storage/parse_default.rs +164 -0
- package/contracts/common-macros/src/tests/storage/parse_name.rs +159 -0
- package/contracts/common-macros/src/tests/storage/parse_no_ttl_extension.rs +124 -0
- package/contracts/common-macros/src/tests/storage/parse_storage_type.rs +174 -0
- package/contracts/common-macros/src/tests/storage/snapshots/common_macros__tests__storage__generate_storage__snapshot_generated_storage_code.snap +412 -0
- package/contracts/common-macros/src/tests/storage/storage_kind.rs +39 -0
- package/contracts/common-macros/src/tests/storage/test_setup.rs +25 -0
- package/contracts/common-macros/src/tests/storage/validate_attrs.rs +138 -0
- package/contracts/common-macros/src/tests/storage/variant_config.rs +226 -0
- package/contracts/common-macros/src/tests/test_helpers.rs +4 -10
- package/contracts/common-macros/src/tests/ttl_configurable.rs +2 -2
- package/contracts/common-macros/src/tests/ttl_extendable.rs +32 -0
- package/contracts/common-macros/src/tests/upgradeable.rs +118 -2
- package/contracts/common-macros/src/ttl_configurable.rs +1 -4
- package/contracts/common-macros/src/upgradeable.rs +21 -3
- package/contracts/endpoint-v2/Cargo.toml +0 -4
- package/contracts/endpoint-v2/src/endpoint_v2.rs +37 -17
- package/contracts/endpoint-v2/src/errors.rs +26 -1
- package/contracts/endpoint-v2/src/interfaces/layerzero_endpoint_v2.rs +1 -1
- package/contracts/endpoint-v2/src/interfaces/message_lib_manager.rs +4 -4
- package/contracts/endpoint-v2/src/interfaces/messaging_composer.rs +2 -2
- package/contracts/endpoint-v2/src/lib.rs +0 -1
- package/contracts/endpoint-v2/src/message_lib_manager.rs +39 -8
- package/contracts/endpoint-v2/src/messaging_channel.rs +36 -4
- package/contracts/endpoint-v2/src/messaging_composer.rs +18 -4
- package/contracts/endpoint-v2/src/storage.rs +9 -1
- package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +2 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +1 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +3 -3
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +5 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +5 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +1 -1
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +4 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +7 -2
- package/contracts/endpoint-v2/src/tests/messaging_composer/mod.rs +4 -0
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +7 -2
- package/contracts/layerzero-views/src/layerzero_view.rs +0 -1
- package/contracts/layerzero-views/src/tests/mod.rs +1 -0
- package/contracts/layerzero-views/src/tests/types_tests.rs +31 -0
- package/contracts/layerzero-views/src/types.rs +2 -3
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/constructor.rs +61 -0
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_impl_ttl_extension.rs +97 -0
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_trait_ttl_extension.rs +99 -0
- package/contracts/macro-integration-tests/tests/runtime/contract_ttl/mod.rs +3 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/mod.rs +5 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_default.rs +86 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig.rs +47 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig_upgradeable.rs +77 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable.rs +114 -0
- package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable_no_migration.rs +105 -0
- package/contracts/macro-integration-tests/tests/runtime/multisig/admin_entrypoints.rs +242 -0
- package/contracts/macro-integration-tests/tests/runtime/multisig/mod.rs +9 -0
- package/contracts/macro-integration-tests/tests/runtime/multisig/self_auth.rs +54 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +13 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +1 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +70 -1
- package/contracts/macro-integration-tests/tests/runtime/ownable/two_step_transfer.rs +219 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +41 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +48 -16
- package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +10 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +96 -3
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +4 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/extend_instance_ttl.rs +64 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/mod.rs +16 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/migrate_guard_and_state.rs +305 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/mod.rs +3 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/no_migration.rs +59 -0
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/upgrade_then_migrate.rs +88 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
- package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.rs +6 -0
- package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/contract_impl/pass/basic.rs +102 -0
- package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.rs +6 -0
- package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/contract_trait/pass/basic.rs +83 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/basic.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.rs +6 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.stderr +20 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.stderr +86 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/basic.rs +45 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig.rs +34 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig_upgradeable.rs +30 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable.rs +39 -0
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable_no_migration.rs +28 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.stderr +12 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/multisig/pass/basic.rs +49 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.rs +19 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.stderr +12 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +0 -8
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/basic.rs +39 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +7 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/api_surface.rs +102 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/basic.rs +43 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/multi_key.rs +38 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.stderr +71 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/{minimal_contract.rs → basic.rs} +2 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/multisig_contract.rs +28 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/ownable_contract.rs +32 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/basic.rs +23 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/no_user_contractimpl.rs +21 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.stderr +29 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.stderr +71 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.stderr +79 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/basic.rs +43 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/multisig_contract.rs +35 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_migration.rs +30 -0
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_user_contractimpl.rs +29 -0
- package/contracts/macro-integration-tests/tests/ui_contract_impl.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui_contract_trait.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui_lz_contract.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_multisig.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ttl_extendable.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui_upgradeable.rs +11 -0
- package/contracts/message-libs/blocked-message-lib/Cargo.toml +1 -1
- package/contracts/message-libs/blocked-message-lib/src/lib.rs +4 -1
- package/contracts/message-libs/blocked-message-lib/src/tests/blocked_message_lib_tests.rs +108 -0
- package/contracts/message-libs/blocked-message-lib/src/tests/mod.rs +4 -0
- package/contracts/message-libs/blocked-message-lib/src/tests/setup.rs +40 -0
- package/contracts/message-libs/simple-message-lib/src/lib.rs +1 -1
- package/contracts/message-libs/simple-message-lib/src/tests/mod.rs +2 -0
- package/contracts/message-libs/simple-message-lib/src/tests/setup.rs +124 -0
- package/contracts/message-libs/simple-message-lib/src/tests/simple_message_lib_tests.rs +309 -0
- package/contracts/message-libs/uln-302/src/errors.rs +21 -0
- package/contracts/message-libs/uln-302/src/interfaces/receive_uln.rs +1 -1
- package/contracts/message-libs/uln-302/src/receive_uln.rs +6 -4
- package/contracts/message-libs/uln-302/src/send_uln.rs +15 -6
- package/contracts/message-libs/uln-302/src/storage.rs +5 -5
- package/contracts/message-libs/uln-302/src/tests/uln302/get_config.rs +71 -0
- package/contracts/message-libs/uln-302/src/tests/uln302/mod.rs +1 -0
- package/contracts/message-libs/uln-302/src/uln302.rs +3 -0
- package/contracts/oapps/counter/Cargo.toml +2 -0
- package/contracts/oapps/counter/integration_tests/mod.rs +1 -0
- package/contracts/oapps/counter/integration_tests/setup_sml.rs +6 -4
- package/contracts/oapps/counter/integration_tests/setup_uln.rs +12 -5
- package/contracts/oapps/counter/integration_tests/test_with_blocked.rs +67 -0
- package/contracts/oapps/counter/src/tests/mod.rs +1 -0
- package/contracts/oapps/counter/src/tests/test_u256_ext.rs +48 -0
- package/contracts/oapps/oapp/src/lib.rs +0 -3
- package/contracts/oapps/oapp/src/tests/mod.rs +1 -0
- package/contracts/oapps/oft/integration-tests/setup.rs +2 -3
- package/contracts/oapps/oft/src/lib.rs +3 -0
- package/contracts/oapps/oft/src/tests/extensions/mod.rs +3 -0
- package/contracts/oapps/oft/src/tests/extensions/oft_fee.rs +240 -0
- package/contracts/oapps/oft/src/tests/extensions/pausable.rs +141 -0
- package/contracts/oapps/oft/src/tests/extensions/rate_limiter.rs +447 -0
- package/contracts/oapps/oft/src/tests/mod.rs +2 -0
- package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +180 -0
- package/contracts/oapps/oft/src/tests/oft_types/mod.rs +1 -0
- package/contracts/oapps/oft-core/integration-tests/setup.rs +2 -3
- package/contracts/oapps/oft-core/src/lib.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/mod.rs +1 -1
- package/contracts/oapps/oft-core/src/tests/{test_oft_version.rs → test_oft_version_and_approval.rs} +9 -0
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +0 -43
- package/contracts/upgrader/src/tests/test_upgrader.rs +18 -0
- package/contracts/utils/src/auth.rs +2 -2
- package/contracts/utils/src/buffer_reader.rs +61 -10
- package/contracts/utils/src/buffer_writer.rs +35 -20
- package/contracts/utils/src/bytes_ext.rs +1 -2
- package/contracts/utils/src/errors.rs +5 -3
- package/contracts/utils/src/multisig.rs +59 -36
- package/contracts/utils/src/option_ext.rs +3 -3
- package/contracts/utils/src/ownable.rs +12 -6
- package/contracts/utils/src/tests/auth.rs +179 -0
- package/contracts/utils/src/tests/buffer_reader.rs +203 -1
- package/contracts/utils/src/tests/buffer_writer.rs +176 -5
- package/contracts/utils/src/tests/mod.rs +2 -0
- package/contracts/utils/src/tests/multisig.rs +170 -141
- package/contracts/utils/src/tests/option_ext.rs +1 -1
- package/contracts/utils/src/tests/ownable.rs +156 -161
- package/contracts/utils/src/tests/test_helper.rs +21 -1
- package/contracts/utils/src/tests/testing_utils.rs +84 -2
- package/contracts/utils/src/tests/ttl_configurable.rs +66 -86
- package/contracts/utils/src/tests/ttl_extendable.rs +64 -0
- package/contracts/utils/src/tests/upgradeable.rs +115 -6
- package/contracts/utils/src/ttl_configurable.rs +22 -12
- package/contracts/utils/src/ttl_extendable.rs +1 -3
- package/contracts/utils/src/upgradeable.rs +21 -24
- package/contracts/workers/dvn/src/auth.rs +1 -1
- package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
- package/contracts/workers/dvn/src/storage.rs +1 -1
- package/contracts/workers/dvn/src/tests/auth.rs +136 -3
- package/contracts/workers/dvn/src/tests/mod.rs +0 -1
- package/contracts/workers/dvn/src/tests/setup.rs +4 -10
- package/contracts/workers/executor-helper/src/tests/executor_helper.rs +279 -0
- package/contracts/workers/executor-helper/src/tests/setup.rs +106 -1
- package/contracts/workers/worker/src/worker.rs +1 -1
- package/docs/oft-guide.md +5 -5
- package/package.json +5 -7
- package/sdk/.turbo/turbo-test.log +662 -466
- package/sdk/LICENSE +23 -0
- package/sdk/dist/generated/bml.d.ts +101 -106
- package/sdk/dist/generated/bml.js +108 -26
- package/sdk/dist/generated/counter.d.ts +123 -484
- package/sdk/dist/generated/counter.js +103 -25
- package/sdk/dist/generated/dvn.d.ts +141 -699
- package/sdk/dist/generated/dvn.js +106 -28
- package/sdk/dist/generated/dvn_fee_lib.d.ts +31 -248
- package/sdk/dist/generated/dvn_fee_lib.js +27 -24
- package/sdk/dist/generated/endpoint.d.ts +158 -836
- package/sdk/dist/generated/endpoint.js +107 -29
- package/sdk/dist/generated/executor.d.ts +139 -671
- package/sdk/dist/generated/executor.js +106 -28
- package/sdk/dist/generated/executor_fee_lib.d.ts +109 -264
- package/sdk/dist/generated/executor_fee_lib.js +106 -28
- package/sdk/dist/generated/executor_helper.d.ts +95 -92
- package/sdk/dist/generated/executor_helper.js +103 -25
- package/sdk/dist/generated/layerzero_view.d.ts +178 -335
- package/sdk/dist/generated/layerzero_view.js +172 -33
- package/sdk/dist/generated/oft.d.ts +137 -680
- package/sdk/dist/generated/oft.js +103 -25
- package/sdk/dist/generated/price_feed.d.ts +45 -444
- package/sdk/dist/generated/price_feed.js +27 -24
- package/sdk/dist/generated/sml.d.ts +119 -428
- package/sdk/dist/generated/sml.js +103 -25
- package/sdk/dist/generated/treasury.d.ts +109 -288
- package/sdk/dist/generated/treasury.js +103 -25
- package/sdk/dist/generated/uln302.d.ts +190 -527
- package/sdk/dist/generated/uln302.js +170 -31
- package/sdk/dist/generated/upgrader.d.ts +14 -34
- package/sdk/dist/generated/upgrader.js +24 -21
- package/sdk/package.json +3 -4
- package/sdk/test/counter-sml.test.ts +218 -142
- package/sdk/test/counter-uln.test.ts +189 -145
- package/sdk/test/oft-sml.test.ts +173 -156
- package/sdk/test/suites/constants.ts +7 -1
- package/sdk/test/suites/globalSetup.ts +140 -74
- package/sdk/turbo.json +1 -1
- package/tools/ts-bindings-gen/Cargo.toml +4 -4
- package/tools/ts-bindings-gen/src/main.rs +4 -0
- package/turbo.json +3 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +0 -1072
- package/contracts/endpoint-v2/src/constants.rs +0 -52
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +0 -12
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +0 -7
- package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +0 -20
- package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +0 -15
- package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +0 -16
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +0 -26
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +0 -21
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +0 -12
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +0 -7
- package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +0 -14
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +0 -14
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +0 -16
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +0 -15
- package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +0 -14
- package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +0 -19
- package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +0 -15
- package/contracts/message-libs/simple-message-lib/src/test.rs +0 -280
- package/contracts/oapps/oapp/src/macro_tests/mod.rs +0 -1
- package/contracts/workers/dvn/src/tests/multisig/mod.rs +0 -3
- package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +0 -132
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +0 -109
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +0 -106
- /package/contracts/oapps/oapp/src/{macro_tests → tests}/test_macros.rs +0 -0
|
@@ -11,31 +11,39 @@ import { Client as ExecutorHelperClient } from '../src/generated/executor_helper
|
|
|
11
11
|
import { Client as SMLClient } from '../src/generated/sml';
|
|
12
12
|
import {
|
|
13
13
|
DEFAULT_DEPLOYER,
|
|
14
|
-
|
|
14
|
+
EID_A,
|
|
15
|
+
EID_B,
|
|
15
16
|
EXECUTOR_ADMIN,
|
|
16
17
|
MSG_TYPE_ABA,
|
|
17
18
|
MSG_TYPE_VANILLA,
|
|
18
19
|
NETWORK_PASSPHRASE,
|
|
19
20
|
} from './suites/constants';
|
|
20
21
|
import { deployContract } from './suites/deploy';
|
|
22
|
+
import type { ChainAddresses } from './suites/globalSetup';
|
|
21
23
|
import { PacketSentEvent, scanPacketSentEvents } from './suites/scan';
|
|
22
24
|
import { assertTransactionSucceeded, createClient, signAndSendWithExecutorAuth } from './utils';
|
|
23
25
|
|
|
24
|
-
//
|
|
25
|
-
let
|
|
26
|
+
// Chain addresses (injected from globalSetup)
|
|
27
|
+
let chainA: ChainAddresses;
|
|
28
|
+
let chainB: ChainAddresses;
|
|
26
29
|
|
|
27
|
-
// Counter-
|
|
28
|
-
let
|
|
30
|
+
// Counter addresses (deployed per-chain)
|
|
31
|
+
let counterAAddress = '';
|
|
32
|
+
let counterBAddress = '';
|
|
29
33
|
|
|
30
|
-
// Clients
|
|
31
|
-
let
|
|
32
|
-
let
|
|
33
|
-
let
|
|
34
|
-
let
|
|
34
|
+
// Chain A Clients
|
|
35
|
+
let endpointClientA: EndpointClient;
|
|
36
|
+
let smlClientA: SMLClient;
|
|
37
|
+
let counterClientA: CounterClient;
|
|
38
|
+
let executorHelperClientA: ExecutorHelperClient;
|
|
35
39
|
|
|
36
|
-
//
|
|
40
|
+
// Chain B Clients
|
|
41
|
+
let endpointClientB: EndpointClient;
|
|
42
|
+
let smlClientB: SMLClient;
|
|
43
|
+
let counterClientB: CounterClient;
|
|
44
|
+
let executorHelperClientB: ExecutorHelperClient;
|
|
37
45
|
|
|
38
|
-
describe('Counter
|
|
46
|
+
describe('Counter Cross-Chain Testing (SML)', async () => {
|
|
39
47
|
const repoRoot = await getFullyQualifiedRepoRootPath();
|
|
40
48
|
const wasmDir = path.join(
|
|
41
49
|
repoRoot,
|
|
@@ -50,96 +58,170 @@ describe('Counter with SML testing', async () => {
|
|
|
50
58
|
const COUNTER_WASM_PATH = path.join(wasmDir, 'counter.wasm');
|
|
51
59
|
|
|
52
60
|
beforeAll(async () => {
|
|
53
|
-
// Inject
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
console.log('
|
|
58
|
-
console.log('
|
|
59
|
-
console.log('
|
|
60
|
-
console.log(' Executor
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
// Inject chain addresses from globalSetup
|
|
62
|
+
chainA = inject('chainA');
|
|
63
|
+
chainB = inject('chainB');
|
|
64
|
+
|
|
65
|
+
console.log('\n📋 Chain A addresses (EID: ' + EID_A + ')');
|
|
66
|
+
console.log(' Endpoint:', chainA.endpointV2);
|
|
67
|
+
console.log(' SML:', chainA.sml);
|
|
68
|
+
console.log(' Executor:', chainA.executor);
|
|
69
|
+
|
|
70
|
+
console.log('\n📋 Chain B addresses (EID: ' + EID_B + ')');
|
|
71
|
+
console.log(' Endpoint:', chainB.endpointV2);
|
|
72
|
+
console.log(' SML:', chainB.sml);
|
|
73
|
+
console.log(' Executor:', chainB.executor);
|
|
74
|
+
|
|
75
|
+
// Create clients for Chain A protocol contracts
|
|
76
|
+
endpointClientA = createClient(EndpointClient, chainA.endpointV2);
|
|
77
|
+
smlClientA = createClient(SMLClient, chainA.sml);
|
|
78
|
+
executorHelperClientA = createClient(ExecutorHelperClient, chainA.executorHelper);
|
|
79
|
+
|
|
80
|
+
// Create clients for Chain B protocol contracts
|
|
81
|
+
endpointClientB = createClient(EndpointClient, chainB.endpointV2);
|
|
82
|
+
smlClientB = createClient(SMLClient, chainB.sml);
|
|
83
|
+
executorHelperClientB = createClient(ExecutorHelperClient, chainB.executorHelper);
|
|
66
84
|
});
|
|
67
85
|
|
|
68
|
-
describe('Deploy
|
|
69
|
-
it('Deploy Counter', async () => {
|
|
70
|
-
|
|
86
|
+
describe('Deploy Counters on Both Chains', () => {
|
|
87
|
+
it('Deploy Counter A on Chain A', async () => {
|
|
88
|
+
counterClientA = await deployContract<CounterClient>(
|
|
71
89
|
CounterClient,
|
|
72
90
|
COUNTER_WASM_PATH,
|
|
73
91
|
{
|
|
74
92
|
owner: DEFAULT_DEPLOYER.publicKey(),
|
|
75
|
-
endpoint:
|
|
93
|
+
endpoint: chainA.endpointV2,
|
|
76
94
|
delegate: DEFAULT_DEPLOYER.publicKey(),
|
|
77
95
|
},
|
|
78
96
|
DEFAULT_DEPLOYER,
|
|
79
97
|
);
|
|
80
98
|
|
|
81
|
-
|
|
82
|
-
console.log('✅ Counter deployed:',
|
|
99
|
+
counterAAddress = counterClientA.options.contractId;
|
|
100
|
+
console.log('✅ Counter A deployed on Chain A:', counterAAddress);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('Deploy Counter B on Chain B', async () => {
|
|
104
|
+
counterClientB = await deployContract<CounterClient>(
|
|
105
|
+
CounterClient,
|
|
106
|
+
COUNTER_WASM_PATH,
|
|
107
|
+
{
|
|
108
|
+
owner: DEFAULT_DEPLOYER.publicKey(),
|
|
109
|
+
endpoint: chainB.endpointV2,
|
|
110
|
+
delegate: DEFAULT_DEPLOYER.publicKey(),
|
|
111
|
+
},
|
|
112
|
+
DEFAULT_DEPLOYER,
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
counterBAddress = counterClientB.options.contractId;
|
|
116
|
+
console.log('✅ Counter B deployed on Chain B:', counterBAddress);
|
|
83
117
|
});
|
|
84
118
|
});
|
|
85
119
|
|
|
86
|
-
describe('Wire
|
|
87
|
-
it('Set Counter Send Library to SML', async () => {
|
|
88
|
-
|
|
89
|
-
|
|
120
|
+
describe('Wire Counters to use SML (Cross-Chain)', () => {
|
|
121
|
+
it('Set Counter A Send Library to SML (for sending to Chain B)', async () => {
|
|
122
|
+
const assembledTx = await endpointClientA.set_send_library({
|
|
123
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
124
|
+
sender: counterAAddress,
|
|
125
|
+
dst_eid: EID_B,
|
|
126
|
+
new_lib: chainA.sml,
|
|
127
|
+
});
|
|
128
|
+
await assembledTx.signAndSend();
|
|
129
|
+
|
|
130
|
+
const { result: sendLib } = await endpointClientA.get_send_library({
|
|
131
|
+
sender: counterAAddress,
|
|
132
|
+
dst_eid: EID_B,
|
|
133
|
+
});
|
|
134
|
+
expect(sendLib.lib).toBe(chainA.sml);
|
|
135
|
+
console.log('✅ Counter A send library set to SML for EID_B');
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it('Set Counter A Receive Library to SML (for receiving from Chain B)', async () => {
|
|
139
|
+
const assembledTx = await endpointClientA.set_receive_library({
|
|
140
|
+
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
141
|
+
receiver: counterAAddress,
|
|
142
|
+
src_eid: EID_B,
|
|
143
|
+
new_lib: chainA.sml,
|
|
144
|
+
grace_period: 0n,
|
|
145
|
+
});
|
|
146
|
+
await assembledTx.signAndSend();
|
|
147
|
+
|
|
148
|
+
const { result: receiveLib } = await endpointClientA.get_receive_library({
|
|
149
|
+
receiver: counterAAddress,
|
|
150
|
+
src_eid: EID_B,
|
|
151
|
+
});
|
|
152
|
+
expect(receiveLib.lib).toBe(chainA.sml);
|
|
153
|
+
console.log('✅ Counter A receive library set to SML for EID_B');
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
it('Set Counter B Send Library to SML (for sending to Chain A)', async () => {
|
|
157
|
+
const assembledTx = await endpointClientB.set_send_library({
|
|
90
158
|
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
91
|
-
sender:
|
|
92
|
-
dst_eid:
|
|
93
|
-
new_lib:
|
|
159
|
+
sender: counterBAddress,
|
|
160
|
+
dst_eid: EID_A,
|
|
161
|
+
new_lib: chainB.sml,
|
|
94
162
|
});
|
|
95
163
|
await assembledTx.signAndSend();
|
|
96
164
|
|
|
97
|
-
const { result: sendLib } = await
|
|
98
|
-
sender:
|
|
99
|
-
dst_eid:
|
|
165
|
+
const { result: sendLib } = await endpointClientB.get_send_library({
|
|
166
|
+
sender: counterBAddress,
|
|
167
|
+
dst_eid: EID_A,
|
|
100
168
|
});
|
|
101
|
-
expect(sendLib.lib).toBe(
|
|
102
|
-
|
|
103
|
-
console.log('✅ Counter send library set to SML');
|
|
169
|
+
expect(sendLib.lib).toBe(chainB.sml);
|
|
170
|
+
console.log('✅ Counter B send library set to SML for EID_A');
|
|
104
171
|
});
|
|
105
172
|
|
|
106
|
-
it('Set Counter Receive Library to SML', async () => {
|
|
107
|
-
const assembledTx = await
|
|
173
|
+
it('Set Counter B Receive Library to SML (for receiving from Chain A)', async () => {
|
|
174
|
+
const assembledTx = await endpointClientB.set_receive_library({
|
|
108
175
|
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
109
|
-
receiver:
|
|
110
|
-
src_eid:
|
|
111
|
-
new_lib:
|
|
176
|
+
receiver: counterBAddress,
|
|
177
|
+
src_eid: EID_A,
|
|
178
|
+
new_lib: chainB.sml,
|
|
112
179
|
grace_period: 0n,
|
|
113
180
|
});
|
|
114
181
|
await assembledTx.signAndSend();
|
|
115
182
|
|
|
116
|
-
const { result: receiveLib } = await
|
|
117
|
-
receiver:
|
|
118
|
-
src_eid:
|
|
183
|
+
const { result: receiveLib } = await endpointClientB.get_receive_library({
|
|
184
|
+
receiver: counterBAddress,
|
|
185
|
+
src_eid: EID_A,
|
|
186
|
+
});
|
|
187
|
+
expect(receiveLib.lib).toBe(chainB.sml);
|
|
188
|
+
console.log('✅ Counter B receive library set to SML for EID_A');
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it('Set Counter A Peer to Counter B', async () => {
|
|
192
|
+
const peerBBytes = StrKey.decodeContract(counterBAddress);
|
|
193
|
+
|
|
194
|
+
const assembledTx = await counterClientA.set_peer({
|
|
195
|
+
eid: EID_B,
|
|
196
|
+
peer: Buffer.from(peerBBytes),
|
|
197
|
+
});
|
|
198
|
+
await assembledTx.signAndSend();
|
|
199
|
+
|
|
200
|
+
const { result: peer } = await counterClientA.peer({
|
|
201
|
+
eid: EID_B,
|
|
119
202
|
});
|
|
120
|
-
expect(
|
|
121
|
-
|
|
122
|
-
console.log('✅ Counter receive library set to SML');
|
|
203
|
+
expect(peer?.toString()).toBe(Buffer.from(peerBBytes).toString());
|
|
204
|
+
console.log('✅ Counter A peer set to Counter B for EID_B');
|
|
123
205
|
});
|
|
124
206
|
|
|
125
|
-
it('Set Counter Peer', async () => {
|
|
126
|
-
const
|
|
207
|
+
it('Set Counter B Peer to Counter A', async () => {
|
|
208
|
+
const peerABytes = StrKey.decodeContract(counterAAddress);
|
|
127
209
|
|
|
128
|
-
const assembledTx = await
|
|
129
|
-
eid:
|
|
130
|
-
peer: Buffer.from(
|
|
210
|
+
const assembledTx = await counterClientB.set_peer({
|
|
211
|
+
eid: EID_A,
|
|
212
|
+
peer: Buffer.from(peerABytes),
|
|
131
213
|
});
|
|
132
214
|
await assembledTx.signAndSend();
|
|
133
215
|
|
|
134
|
-
const { result: peer } = await
|
|
135
|
-
eid:
|
|
216
|
+
const { result: peer } = await counterClientB.peer({
|
|
217
|
+
eid: EID_A,
|
|
136
218
|
});
|
|
137
|
-
expect(peer?.toString()).toBe(Buffer.from(
|
|
138
|
-
console.log('✅ Counter peer set for
|
|
219
|
+
expect(peer?.toString()).toBe(Buffer.from(peerABytes).toString());
|
|
220
|
+
console.log('✅ Counter B peer set to Counter A for EID_A');
|
|
139
221
|
});
|
|
140
222
|
});
|
|
141
223
|
|
|
142
|
-
describe('
|
|
224
|
+
describe('Cross-Chain ABA Messaging (A → B → A)', async () => {
|
|
143
225
|
let incrementLedger = 0;
|
|
144
226
|
let responseLedger = 0;
|
|
145
227
|
let packetSentEvent: PacketSentEvent;
|
|
@@ -150,17 +232,17 @@ describe('Counter with SML testing', async () => {
|
|
|
150
232
|
let responseMessage: Buffer;
|
|
151
233
|
let abaReturnFee: bigint;
|
|
152
234
|
|
|
153
|
-
it('Counter Increment (ABA)', async () => {
|
|
154
|
-
//
|
|
235
|
+
it('Counter A Increment (ABA) - sends to Chain B', async () => {
|
|
236
|
+
// Quote the return fee (for Counter B to send response back to Chain A)
|
|
155
237
|
const returnOptions = Options.newOptions().addExecutorLzReceiveOption(200000n, 0n);
|
|
156
238
|
|
|
157
|
-
const { result: returnFee } = await
|
|
158
|
-
dst_eid:
|
|
239
|
+
const { result: returnFee } = await counterClientB.quote({
|
|
240
|
+
dst_eid: EID_A,
|
|
159
241
|
msg_type: MSG_TYPE_VANILLA,
|
|
160
242
|
options: Buffer.from(returnOptions.toBytes()),
|
|
161
243
|
pay_in_zro: false,
|
|
162
244
|
});
|
|
163
|
-
console.log('✅ Return fee for ABA:', returnFee);
|
|
245
|
+
console.log('✅ Return fee for ABA (B→A):', returnFee);
|
|
164
246
|
|
|
165
247
|
// Add 1% buffer to the return fee
|
|
166
248
|
abaReturnFee = (returnFee.native_fee * 101n) / 100n;
|
|
@@ -172,82 +254,79 @@ describe('Counter with SML testing', async () => {
|
|
|
172
254
|
);
|
|
173
255
|
const optionsBuffer = Buffer.from(abaOptions.toBytes());
|
|
174
256
|
|
|
175
|
-
const { result: fee } = await
|
|
176
|
-
dst_eid:
|
|
257
|
+
const { result: fee } = await counterClientA.quote({
|
|
258
|
+
dst_eid: EID_B,
|
|
177
259
|
msg_type: MSG_TYPE_ABA,
|
|
178
260
|
options: optionsBuffer,
|
|
179
261
|
pay_in_zro: true,
|
|
180
262
|
});
|
|
181
|
-
console.log('✅ ABA Fee:', fee);
|
|
263
|
+
console.log('✅ ABA Fee (A→B):', fee);
|
|
182
264
|
|
|
183
|
-
const assembledTx = await
|
|
265
|
+
const assembledTx = await counterClientA.increment({
|
|
184
266
|
caller: DEFAULT_DEPLOYER.publicKey(),
|
|
185
|
-
dst_eid:
|
|
267
|
+
dst_eid: EID_B,
|
|
186
268
|
msg_type: MSG_TYPE_ABA,
|
|
187
269
|
options: optionsBuffer,
|
|
188
270
|
fee: fee,
|
|
189
271
|
});
|
|
190
272
|
const sentTx = await assembledTx.signAndSend();
|
|
191
273
|
|
|
192
|
-
// Extract ledger number from transaction response
|
|
193
274
|
const txResponse = sentTx.getTransactionResponse;
|
|
194
275
|
if (txResponse && 'ledger' in txResponse) {
|
|
195
276
|
incrementLedger = txResponse.ledger;
|
|
196
277
|
}
|
|
197
278
|
|
|
198
|
-
const { result: outboundCount } = await
|
|
199
|
-
eid:
|
|
279
|
+
const { result: outboundCount } = await counterClientA.outbound_count({
|
|
280
|
+
eid: EID_B,
|
|
200
281
|
});
|
|
201
282
|
expect(outboundCount).toBe(1n);
|
|
202
|
-
console.log('✅ Counter incremented (ABA), outbound count:', outboundCount);
|
|
283
|
+
console.log('✅ Counter A incremented (ABA to B), outbound count:', outboundCount);
|
|
203
284
|
});
|
|
204
285
|
|
|
205
|
-
it('Scan PacketSent Events', async () => {
|
|
206
|
-
const packetSentEvents = await scanPacketSentEvents(
|
|
207
|
-
protocolAddresses.endpointV2,
|
|
208
|
-
incrementLedger,
|
|
209
|
-
);
|
|
286
|
+
it('Scan PacketSent Events (A → B)', async () => {
|
|
287
|
+
const packetSentEvents = await scanPacketSentEvents(chainA.endpointV2, incrementLedger);
|
|
210
288
|
expect(packetSentEvents.length).toBeGreaterThan(0);
|
|
211
289
|
packetSentEvent = packetSentEvents[0];
|
|
212
290
|
console.log(
|
|
213
|
-
`✅ PacketSent events scanned
|
|
291
|
+
`✅ PacketSent events scanned from Chain A. Found ${packetSentEvents.length} events`,
|
|
214
292
|
);
|
|
215
293
|
});
|
|
216
294
|
|
|
217
|
-
it('Verify Counter Message', async () => {
|
|
295
|
+
it('Verify Counter Message on Chain B (via SML)', async () => {
|
|
218
296
|
const packet = PacketSerializer.deserialize(packetSentEvent.encoded_packet);
|
|
219
297
|
guid = Buffer.from(packet.guid.replace('0x', ''), 'hex');
|
|
220
298
|
message = Buffer.from(packet.message.replace('0x', ''), 'hex');
|
|
221
299
|
const codec = PacketV1Codec.from(packet);
|
|
222
300
|
const packetHeader = codec.header();
|
|
223
301
|
const payloadHash = codec.payloadHash();
|
|
224
|
-
|
|
302
|
+
|
|
303
|
+
// Validate on Chain B's SML
|
|
304
|
+
const assembledTx = await smlClientB.validate_packet({
|
|
225
305
|
header_bytes: Buffer.from(packetHeader.replace('0x', ''), 'hex'),
|
|
226
306
|
payload_hash: Buffer.from(payloadHash.replace('0x', ''), 'hex'),
|
|
227
307
|
});
|
|
228
308
|
await assembledTx.signAndSend();
|
|
229
|
-
console.log('✅ ABA request packet validated');
|
|
309
|
+
console.log('✅ ABA request packet validated on Chain B');
|
|
230
310
|
});
|
|
231
311
|
|
|
232
|
-
it('Receive Counter Message (ABA - triggers response)', async () => {
|
|
233
|
-
// ABA message: receives message and automatically sends response
|
|
312
|
+
it('Receive Counter Message on Chain B (ABA - triggers response to A)', async () => {
|
|
234
313
|
const origin = {
|
|
235
314
|
nonce: 1n,
|
|
236
|
-
sender: Buffer.from(StrKey.decodeContract(
|
|
237
|
-
src_eid:
|
|
315
|
+
sender: Buffer.from(StrKey.decodeContract(counterAAddress)),
|
|
316
|
+
src_eid: EID_A,
|
|
238
317
|
};
|
|
239
318
|
|
|
240
|
-
|
|
319
|
+
// Execute on Chain B using Chain B's executor
|
|
320
|
+
const assembledTx = await executorHelperClientB.native_drop_and_execute(
|
|
241
321
|
{
|
|
242
|
-
executor:
|
|
322
|
+
executor: chainB.executor,
|
|
243
323
|
admin: EXECUTOR_ADMIN.publicKey(),
|
|
244
324
|
origin,
|
|
245
|
-
dst_eid:
|
|
246
|
-
oapp:
|
|
247
|
-
// Native drop: send 100 stroops to counter contract
|
|
325
|
+
dst_eid: EID_B,
|
|
326
|
+
oapp: counterBAddress,
|
|
248
327
|
native_drop_params: [
|
|
249
328
|
{
|
|
250
|
-
receiver:
|
|
329
|
+
receiver: counterBAddress,
|
|
251
330
|
amount: 100n,
|
|
252
331
|
},
|
|
253
332
|
],
|
|
@@ -257,120 +336,117 @@ describe('Counter with SML testing', async () => {
|
|
|
257
336
|
guid,
|
|
258
337
|
message,
|
|
259
338
|
origin,
|
|
260
|
-
receiver:
|
|
261
|
-
value: abaReturnFee,
|
|
339
|
+
receiver: counterBAddress,
|
|
340
|
+
value: abaReturnFee,
|
|
262
341
|
},
|
|
263
342
|
},
|
|
264
343
|
{
|
|
265
|
-
simulate: false,
|
|
344
|
+
simulate: false,
|
|
266
345
|
},
|
|
267
346
|
);
|
|
268
347
|
|
|
269
|
-
// Sign and send using non-root auth flow
|
|
270
348
|
const txResult = await signAndSendWithExecutorAuth(
|
|
271
|
-
|
|
349
|
+
chainB.executor,
|
|
272
350
|
EXECUTOR_ADMIN,
|
|
273
351
|
assembledTx,
|
|
274
352
|
NETWORK_PASSPHRASE,
|
|
275
353
|
);
|
|
276
354
|
|
|
277
|
-
assertTransactionSucceeded(txResult, 'LzReceive (ABA)');
|
|
355
|
+
assertTransactionSucceeded(txResult, 'LzReceive on Chain B (ABA)');
|
|
278
356
|
|
|
279
357
|
if ('ledger' in txResult) {
|
|
280
358
|
responseLedger = txResult.ledger;
|
|
281
359
|
}
|
|
282
360
|
|
|
283
|
-
// Verify
|
|
284
|
-
const { result: inboundCount } = await
|
|
285
|
-
eid:
|
|
361
|
+
// Verify Counter B received the message
|
|
362
|
+
const { result: inboundCount } = await counterClientB.inbound_count({
|
|
363
|
+
eid: EID_A,
|
|
286
364
|
});
|
|
287
365
|
expect(inboundCount).toBe(1n);
|
|
288
366
|
|
|
289
|
-
// Verify
|
|
290
|
-
const { result: outboundCount } = await
|
|
291
|
-
eid:
|
|
367
|
+
// Verify Counter B sent the response back to Chain A
|
|
368
|
+
const { result: outboundCount } = await counterClientB.outbound_count({
|
|
369
|
+
eid: EID_A,
|
|
292
370
|
});
|
|
293
|
-
expect(outboundCount).toBe(
|
|
371
|
+
expect(outboundCount).toBe(1n);
|
|
294
372
|
console.log(
|
|
295
|
-
'✅ ABA message
|
|
373
|
+
'✅ Counter B received ABA message and sent response, outbound count:',
|
|
296
374
|
outboundCount,
|
|
297
375
|
);
|
|
298
376
|
});
|
|
299
377
|
|
|
300
|
-
it('Scan ABA Response PacketSent Events', async () => {
|
|
301
|
-
const packetSentEvents = await scanPacketSentEvents(
|
|
302
|
-
protocolAddresses.endpointV2,
|
|
303
|
-
responseLedger,
|
|
304
|
-
);
|
|
378
|
+
it('Scan ABA Response PacketSent Events (B → A)', async () => {
|
|
379
|
+
const packetSentEvents = await scanPacketSentEvents(chainB.endpointV2, responseLedger);
|
|
305
380
|
expect(packetSentEvents.length).toBeGreaterThan(0);
|
|
306
381
|
responsePacketSentEvent = packetSentEvents[0];
|
|
307
382
|
console.log(
|
|
308
|
-
`✅ ABA response PacketSent events scanned. Found ${packetSentEvents.length} events`,
|
|
383
|
+
`✅ ABA response PacketSent events scanned from Chain B. Found ${packetSentEvents.length} events`,
|
|
309
384
|
);
|
|
310
385
|
});
|
|
311
386
|
|
|
312
|
-
it('Verify ABA Response Message', async () => {
|
|
387
|
+
it('Verify ABA Response Message on Chain A (via SML)', async () => {
|
|
313
388
|
const packet = PacketSerializer.deserialize(responsePacketSentEvent.encoded_packet);
|
|
314
389
|
responseGuid = Buffer.from(packet.guid.replace('0x', ''), 'hex');
|
|
315
390
|
responseMessage = Buffer.from(packet.message.replace('0x', ''), 'hex');
|
|
316
391
|
const codec = PacketV1Codec.from(packet);
|
|
317
392
|
const packetHeader = codec.header();
|
|
318
393
|
const payloadHash = codec.payloadHash();
|
|
319
|
-
|
|
394
|
+
|
|
395
|
+
// Validate on Chain A's SML
|
|
396
|
+
const assembledTx = await smlClientA.validate_packet({
|
|
320
397
|
header_bytes: Buffer.from(packetHeader.replace('0x', ''), 'hex'),
|
|
321
398
|
payload_hash: Buffer.from(payloadHash.replace('0x', ''), 'hex'),
|
|
322
399
|
});
|
|
323
400
|
await assembledTx.signAndSend();
|
|
324
|
-
console.log('✅ ABA response packet validated');
|
|
401
|
+
console.log('✅ ABA response packet validated on Chain A');
|
|
325
402
|
});
|
|
326
403
|
|
|
327
|
-
it('Receive ABA Response Message', async () => {
|
|
328
|
-
// Receive the response message (vanilla type)
|
|
404
|
+
it('Receive ABA Response Message on Chain A', async () => {
|
|
329
405
|
const origin = {
|
|
330
|
-
nonce:
|
|
331
|
-
sender: Buffer.from(StrKey.decodeContract(
|
|
332
|
-
src_eid:
|
|
406
|
+
nonce: 1n,
|
|
407
|
+
sender: Buffer.from(StrKey.decodeContract(counterBAddress)),
|
|
408
|
+
src_eid: EID_B,
|
|
333
409
|
};
|
|
334
410
|
|
|
335
|
-
|
|
411
|
+
// Execute on Chain A using Chain A's executor
|
|
412
|
+
const assembledTx = await executorHelperClientA.execute(
|
|
336
413
|
{
|
|
337
|
-
executor:
|
|
414
|
+
executor: chainA.executor,
|
|
338
415
|
params: {
|
|
339
416
|
extra_data: Buffer.from([]),
|
|
340
417
|
gas_limit: 0n,
|
|
341
418
|
guid: responseGuid,
|
|
342
419
|
message: responseMessage,
|
|
343
420
|
origin,
|
|
344
|
-
receiver:
|
|
345
|
-
value: 10n,
|
|
421
|
+
receiver: counterAAddress,
|
|
422
|
+
value: 10n,
|
|
346
423
|
},
|
|
347
424
|
value_payer: EXECUTOR_ADMIN.publicKey(),
|
|
348
425
|
},
|
|
349
426
|
{
|
|
350
|
-
simulate: false,
|
|
427
|
+
simulate: false,
|
|
351
428
|
},
|
|
352
429
|
);
|
|
353
430
|
|
|
354
|
-
// Sign and send using non-root auth flow
|
|
355
431
|
const txResult = await signAndSendWithExecutorAuth(
|
|
356
|
-
|
|
432
|
+
chainA.executor,
|
|
357
433
|
EXECUTOR_ADMIN,
|
|
358
434
|
assembledTx,
|
|
359
435
|
NETWORK_PASSPHRASE,
|
|
360
436
|
);
|
|
361
437
|
|
|
362
|
-
assertTransactionSucceeded(txResult, 'LzReceive (ABA Response)');
|
|
438
|
+
assertTransactionSucceeded(txResult, 'LzReceive on Chain A (ABA Response)');
|
|
363
439
|
|
|
364
|
-
// Verify
|
|
365
|
-
const { result: inboundCount } = await
|
|
366
|
-
eid:
|
|
440
|
+
// Verify Counter A received the response
|
|
441
|
+
const { result: inboundCount } = await counterClientA.inbound_count({
|
|
442
|
+
eid: EID_B,
|
|
367
443
|
});
|
|
368
|
-
expect(inboundCount).toBe(
|
|
369
|
-
console.log('✅ ABA response
|
|
444
|
+
expect(inboundCount).toBe(1n);
|
|
445
|
+
console.log('✅ Counter A received ABA response, inbound count:', inboundCount);
|
|
370
446
|
|
|
371
|
-
console.log('\n🎉 ABA round-trip completed successfully!');
|
|
372
|
-
console.log(' Request:
|
|
373
|
-
console.log(' Response: Counter → Counter (Vanilla
|
|
447
|
+
console.log('\n🎉 Cross-chain ABA round-trip completed successfully!');
|
|
448
|
+
console.log(' Request: Counter A (Chain A) → Counter B (Chain B) [ABA]');
|
|
449
|
+
console.log(' Response: Counter B (Chain B) → Counter A (Chain A) [Vanilla]');
|
|
374
450
|
});
|
|
375
451
|
});
|
|
376
452
|
});
|