@layerzerolabs/protocol-stellar-v2 0.2.13 → 0.2.15
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 +384 -278
- package/.turbo/turbo-lint.log +110 -78
- package/.turbo/turbo-test.log +1248 -1014
- package/Cargo.lock +130 -3
- package/Cargo.toml +2 -1
- package/contracts/common-macros/src/contract_impl.rs +6 -1
- package/contracts/common-macros/src/lib.rs +47 -8
- package/contracts/common-macros/src/ownable.rs +7 -25
- package/contracts/common-macros/src/storage.rs +1 -1
- package/contracts/common-macros/src/tests/contract_impl.rs +5 -0
- package/contracts/common-macros/src/tests/mod.rs +1 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +23 -7
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +5 -25
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +48 -48
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -25
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +21 -0
- package/contracts/common-macros/src/tests/upgradeable.rs +31 -0
- package/contracts/common-macros/src/ttl_configurable.rs +14 -44
- package/contracts/common-macros/src/upgradeable.rs +76 -0
- package/contracts/endpoint-v2/src/endpoint_v2.rs +25 -1
- package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +175 -8
- package/contracts/endpoint-v2/src/tests/endpoint_v2/build_outbound_packet.rs +76 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +342 -159
- package/contracts/endpoint-v2/src/tests/endpoint_v2/delegate.rs +3 -15
- package/contracts/endpoint-v2/src/tests/endpoint_v2/initializable.rs +20 -31
- package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +126 -164
- package/contracts/endpoint-v2/src/tests/endpoint_v2/mod.rs +1 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/native_token.rs +0 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/owner.rs +0 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +311 -304
- package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +423 -96
- package/contracts/endpoint-v2/src/tests/endpoint_v2/recover_token.rs +1 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +47 -20
- package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +373 -403
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +96 -22
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +61 -9
- package/contracts/endpoint-v2/src/tests/endpoint_v2/transfer_ownership.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/ttl_config.rs +8 -11
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +81 -30
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +209 -76
- package/contracts/endpoint-v2/src/tests/endpoint_v2/zro.rs +0 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library.rs +24 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library_timeout.rs +40 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_send_library.rs +24 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_config.rs +108 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_library_index.rs +52 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_receive_library.rs +92 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_registered_libraries.rs +74 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_send_library.rs +83 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_registered_library.rs +32 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_supported_eid.rs +28 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_valid_receive_library.rs +261 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/mod.rs +16 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/receive_library_timeout.rs +62 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +65 -43
- package/contracts/endpoint-v2/src/tests/message_lib_manager/registered_libraries_count.rs +42 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +61 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +3 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +59 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +15 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_config.rs +155 -51
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +114 -92
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +235 -132
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +93 -87
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +346 -245
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +406 -60
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +252 -78
- package/contracts/endpoint-v2/src/tests/message_lib_manager/timeout.rs +102 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +212 -273
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +203 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +94 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_nonce.rs +78 -248
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_payload_hash.rs +7 -282
- package/contracts/endpoint-v2/src/tests/messaging_channel/lazy_inbound_nonce.rs +6 -274
- package/contracts/endpoint-v2/src/tests/messaging_channel/mod.rs +3 -2
- package/contracts/endpoint-v2/src/tests/messaging_channel/next_guid.rs +86 -178
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +328 -212
- package/contracts/endpoint-v2/src/tests/messaging_channel/outbound.rs +68 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/outbound_nonce.rs +6 -209
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +207 -159
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +142 -153
- package/contracts/endpoint-v2/src/tests/messaging_composer/compose_queue.rs +6 -179
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +163 -221
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +90 -121
- package/contracts/endpoint-v2/src/tests/mock.rs +18 -4
- package/contracts/endpoint-v2/src/tests/util/build_payload.rs +4 -70
- package/contracts/endpoint-v2/src/tests/util/compute_guid.rs +2 -1
- package/contracts/endpoint-v2/src/tests/util/keccak256.rs +17 -106
- package/contracts/layerzero-views/Cargo.toml +35 -0
- package/contracts/layerzero-views/src/errors.rs +10 -0
- package/contracts/layerzero-views/src/layerzero_view.rs +229 -0
- package/contracts/layerzero-views/src/lib.rs +38 -0
- package/contracts/layerzero-views/src/storage.rs +18 -0
- package/contracts/layerzero-views/src/tests/layerzero_view_tests.rs +423 -0
- package/contracts/layerzero-views/src/tests/mod.rs +4 -0
- package/contracts/layerzero-views/src/tests/setup.rs +377 -0
- package/contracts/layerzero-views/src/types.rs +50 -0
- package/contracts/macro-integration-tests/Cargo.toml +30 -0
- package/contracts/macro-integration-tests/src/lib.rs +1 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +62 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +22 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/only_owner_guard.rs +97 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +101 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +225 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/mod.rs +4 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/name_override_runtime.rs +52 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +261 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +137 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +113 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +50 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +139 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +3 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.rs +21 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +16 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.stderr +16 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +26 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_owner_env_param_variants.rs +46 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +16 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +19 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +44 -0
- package/contracts/macro-integration-tests/tests/ui_error.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ownable.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_storage.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ttl_configurable.rs +12 -0
- package/contracts/message-libs/blocked-message-lib/src/lib.rs +17 -17
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +64 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet.rs +58 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet_header.rs +138 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/mod.rs +6 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload.rs +30 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload_hash.rs +15 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/test_helper.rs +39 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_dvn_option.rs +57 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +50 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +74 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +280 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +126 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +48 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/mod.rs +7 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +139 -0
- package/contracts/message-libs/message-lib-common/src/worker_options.rs +31 -1
- package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +2 -2
- package/contracts/message-libs/treasury/src/errors.rs +0 -1
- package/contracts/message-libs/treasury/src/lib.rs +3 -3
- package/contracts/message-libs/treasury/src/storage.rs +2 -0
- package/contracts/message-libs/treasury/src/treasury.rs +12 -13
- package/contracts/message-libs/uln-302/Cargo.toml +1 -1
- package/contracts/message-libs/uln-302/src/errors.rs +0 -5
- package/contracts/message-libs/uln-302/src/events.rs +5 -6
- package/contracts/message-libs/uln-302/src/receive_uln.rs +24 -54
- package/contracts/message-libs/uln-302/src/send_uln.rs +89 -135
- package/contracts/message-libs/uln-302/src/storage.rs +5 -5
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +5 -7
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +3 -3
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +6 -9
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +3 -3
- package/contracts/message-libs/uln-302/src/tests/setup.rs +9 -0
- package/contracts/message-libs/uln-302/src/tests/testing_utils.rs +5 -0
- package/contracts/message-libs/uln-302/src/tests/uln302/get_app_receive_uln_config.rs +1 -2
- package/contracts/message-libs/uln-302/src/tests/uln302/get_app_send_uln_config.rs +1 -2
- package/contracts/message-libs/uln-302/src/tests/uln302/set_config.rs +37 -55
- package/contracts/message-libs/uln-302/src/uln302.rs +8 -5
- package/contracts/oapps/counter/src/counter.rs +0 -1
- package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +306 -224
- package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -1
- package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_core.rs +1 -0
- package/contracts/oapps/oft/integration-tests/setup.rs +10 -3
- package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
- package/contracts/oapps/oft/src/default_oft_impl.rs +9 -3
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +5 -5
- package/contracts/oapps/oft/src/extensions/pausable.rs +1 -1
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +18 -18
- package/contracts/oapps/oft/src/oft.rs +9 -9
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
- package/contracts/oapps/oft/src/tests/extensions/setup.rs +26 -11
- package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1 -1
- package/contracts/oapps/oft/src/tests/test_send.rs +4 -4
- package/contracts/oapps/oft/src/tests/test_utils.rs +93 -74
- package/contracts/oapps/oft-std/Cargo.toml +6 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/mod.rs +3 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_oft_fee.rs +157 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_pausable.rs +162 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_rate_limiter.rs +186 -0
- package/contracts/oapps/oft-std/integration-tests/mod.rs +3 -0
- package/contracts/oapps/oft-std/integration-tests/setup.rs +245 -0
- package/contracts/oapps/oft-std/integration-tests/utils.rs +427 -0
- package/contracts/oapps/oft-std/src/lib.rs +12 -1
- package/contracts/oapps/oft-std/src/oft.rs +122 -25
- package/contracts/upgrader/Cargo.toml +19 -0
- package/contracts/upgrader/src/lib.rs +96 -0
- package/contracts/upgrader/src/tests/mod.rs +1 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
- package/contracts/upgrader/src/tests/test_upgrader.rs +120 -0
- package/contracts/utils/src/errors.rs +6 -1
- package/contracts/utils/src/lib.rs +2 -1
- package/contracts/utils/src/ownable.rs +49 -61
- package/contracts/utils/src/tests/mod.rs +3 -1
- package/contracts/utils/src/tests/option_ext.rs +21 -0
- package/contracts/utils/src/tests/ownable.rs +10 -69
- package/contracts/utils/src/tests/ttl_configurable.rs +596 -0
- package/contracts/utils/src/tests/upgradeable.rs +288 -0
- package/contracts/utils/src/{ttl.rs → ttl_configurable.rs} +67 -52
- package/contracts/utils/src/upgradeable.rs +54 -0
- package/contracts/workers/dvn/Cargo.toml +1 -1
- package/contracts/workers/dvn/src/auth.rs +21 -32
- package/contracts/workers/dvn/src/dvn.rs +40 -3
- package/contracts/workers/dvn/src/errors.rs +1 -0
- package/contracts/workers/dvn/src/multisig.rs +10 -6
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -2
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +4 -4
- package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -2
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +46 -14
- package/contracts/workers/dvn-fee-lib/src/errors.rs +3 -2
- package/contracts/workers/dvn-fee-lib/src/lib.rs +5 -11
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +30 -16
- package/contracts/workers/executor/src/executor.rs +16 -2
- package/contracts/workers/executor-fee-lib/src/errors.rs +9 -7
- package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +154 -119
- package/contracts/workers/executor-helper/Cargo.toml +0 -5
- package/contracts/workers/executor-helper/src/lib.rs +1 -7
- package/contracts/workers/price-feed/Cargo.toml +0 -1
- package/contracts/workers/price-feed/src/errors.rs +3 -2
- package/contracts/workers/price-feed/src/lib.rs +5 -6
- package/contracts/workers/price-feed/src/price_feed.rs +39 -17
- package/contracts/workers/worker/Cargo.toml +4 -0
- package/contracts/workers/worker/src/interfaces/price_feed.rs +3 -3
- package/contracts/workers/worker/src/lib.rs +2 -2
- package/contracts/workers/worker/src/tests/mod.rs +4 -0
- package/contracts/workers/worker/src/tests/setup.rs +147 -0
- package/contracts/workers/worker/src/tests/worker.rs +501 -0
- package/contracts/workers/worker/src/worker.rs +10 -16
- package/package.json +3 -3
- package/sdk/dist/generated/bml.d.ts +40 -30
- package/sdk/dist/generated/bml.js +16 -11
- package/sdk/dist/generated/counter.d.ts +168 -134
- package/sdk/dist/generated/counter.js +26 -21
- package/sdk/dist/generated/dvn.d.ts +1932 -0
- package/sdk/dist/generated/dvn.js +288 -0
- package/sdk/dist/generated/dvn_fee_lib.d.ts +615 -0
- package/sdk/dist/generated/dvn_fee_lib.js +123 -0
- package/sdk/dist/generated/endpoint.d.ts +75 -41
- package/sdk/dist/generated/endpoint.js +22 -17
- package/sdk/dist/generated/executor.d.ts +1809 -0
- package/sdk/dist/generated/executor.js +269 -0
- package/sdk/dist/generated/executor_fee_lib.d.ts +999 -0
- package/sdk/dist/generated/executor_fee_lib.js +208 -0
- package/sdk/dist/generated/executor_helper.d.ts +869 -0
- package/sdk/dist/generated/executor_helper.js +187 -0
- package/sdk/dist/generated/oft_std.d.ts +1544 -0
- package/sdk/dist/generated/oft_std.js +271 -0
- package/sdk/dist/generated/price_feed.d.ts +1002 -0
- package/sdk/dist/generated/price_feed.js +170 -0
- package/sdk/dist/generated/sml.d.ts +75 -41
- package/sdk/dist/generated/sml.js +22 -17
- package/sdk/dist/generated/uln302.d.ts +79 -60
- package/sdk/dist/generated/uln302.js +37 -37
- package/sdk/dist/generated/upgrader.d.ts +70 -0
- package/sdk/dist/generated/upgrader.js +19 -0
- package/sdk/dist/index.d.ts +8 -0
- package/sdk/dist/index.js +11 -0
- package/sdk/package.json +4 -3
- package/sdk/src/index.ts +13 -0
- package/sdk/test/index.test.ts +0 -1
- package/sdk/test/oft.test.ts +12 -23
- package/sdk/test/suites/testUpgradeable.ts +169 -0
- package/sdk/test/upgrader.test.ts +309 -0
- package/tools/ts-bindings-gen/src/main.rs +11 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear.rs +0 -316
- package/contracts/endpoint-v2/src/tests/messaging_channel/internal.rs +0 -388
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1.rs +0 -162
- package/contracts/message-libs/message-lib-common/src/tests/worker_options.rs +0 -319
- package/contracts/utils/src/tests/ttl.rs +0 -421
- /package/contracts/{oapp-macros → oapps/oapp-macros}/Cargo.toml +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/lib.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_full.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_options_type3.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_receiver.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_sender.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/util.rs +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
use soroban_sdk::{testutils::Address as _, Address, BytesN};
|
|
2
2
|
|
|
3
|
-
use crate::{endpoint_v2::EndpointV2,
|
|
3
|
+
use crate::{endpoint_v2::EndpointV2, tests::endpoint_setup::setup};
|
|
4
4
|
|
|
5
5
|
#[test]
|
|
6
6
|
fn test_inbound_payload_hash_not_set() {
|
|
7
|
-
let
|
|
8
|
-
let env = &
|
|
9
|
-
let endpoint_client = &
|
|
7
|
+
let context = setup();
|
|
8
|
+
let env = &context.env;
|
|
9
|
+
let endpoint_client = &context.endpoint_client;
|
|
10
10
|
|
|
11
11
|
let receiver = Address::generate(env);
|
|
12
12
|
let src_eid = 2;
|
|
@@ -20,9 +20,9 @@ fn test_inbound_payload_hash_not_set() {
|
|
|
20
20
|
|
|
21
21
|
#[test]
|
|
22
22
|
fn test_inbound_payload_hash_after_setting() {
|
|
23
|
-
let
|
|
24
|
-
let env = &
|
|
25
|
-
let endpoint_client = &
|
|
23
|
+
let context = setup();
|
|
24
|
+
let env = &context.env;
|
|
25
|
+
let endpoint_client = &context.endpoint_client;
|
|
26
26
|
|
|
27
27
|
let receiver = Address::generate(env);
|
|
28
28
|
let src_eid = 2;
|
|
@@ -39,278 +39,3 @@ fn test_inbound_payload_hash_after_setting() {
|
|
|
39
39
|
let payload_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
|
|
40
40
|
assert_eq!(payload_hash, Some(expected_hash));
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
#[test]
|
|
44
|
-
fn test_inbound_payload_hash_different_nonces() {
|
|
45
|
-
let test_setup = setup();
|
|
46
|
-
let env = &test_setup.env;
|
|
47
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
48
|
-
|
|
49
|
-
let receiver = Address::generate(env);
|
|
50
|
-
let src_eid = 2;
|
|
51
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
52
|
-
let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
|
|
53
|
-
let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
|
|
54
|
-
let hash3 = BytesN::from_array(env, &[0xefu8; 32]);
|
|
55
|
-
|
|
56
|
-
// Set payload hashes for different nonces
|
|
57
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender, 1, &hash1));
|
|
58
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender, 5, &hash2));
|
|
59
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender, 10, &hash3));
|
|
60
|
-
|
|
61
|
-
// Verify each nonce has its own independent payload hash
|
|
62
|
-
let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &1);
|
|
63
|
-
let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &5);
|
|
64
|
-
let retrieved_hash3 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &10);
|
|
65
|
-
|
|
66
|
-
assert_eq!(retrieved_hash1, Some(hash1));
|
|
67
|
-
assert_eq!(retrieved_hash2, Some(hash2));
|
|
68
|
-
assert_eq!(retrieved_hash3, Some(hash3));
|
|
69
|
-
|
|
70
|
-
// Verify unset nonces return None
|
|
71
|
-
let unset_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &2);
|
|
72
|
-
assert_eq!(unset_hash, None);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
#[test]
|
|
76
|
-
fn test_inbound_payload_hash_different_receivers() {
|
|
77
|
-
let test_setup = setup();
|
|
78
|
-
let env = &test_setup.env;
|
|
79
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
80
|
-
|
|
81
|
-
let receiver1 = Address::generate(env);
|
|
82
|
-
let receiver2 = Address::generate(env);
|
|
83
|
-
let src_eid = 2;
|
|
84
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
85
|
-
let nonce = 1;
|
|
86
|
-
let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
|
|
87
|
-
let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
|
|
88
|
-
|
|
89
|
-
// Set payload hashes for different receivers
|
|
90
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver1, src_eid, &sender, nonce, &hash1));
|
|
91
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver2, src_eid, &sender, nonce, &hash2));
|
|
92
|
-
|
|
93
|
-
// Verify each receiver has its own independent payload hash
|
|
94
|
-
let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver1, &src_eid, &sender, &nonce);
|
|
95
|
-
let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver2, &src_eid, &sender, &nonce);
|
|
96
|
-
|
|
97
|
-
assert_eq!(retrieved_hash1, Some(hash1));
|
|
98
|
-
assert_eq!(retrieved_hash2, Some(hash2));
|
|
99
|
-
|
|
100
|
-
// Verify a third receiver returns None
|
|
101
|
-
let receiver3 = Address::generate(env);
|
|
102
|
-
let unset_hash = endpoint_client.inbound_payload_hash(&receiver3, &src_eid, &sender, &nonce);
|
|
103
|
-
assert_eq!(unset_hash, None);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
#[test]
|
|
107
|
-
fn test_inbound_payload_hash_different_src_eids() {
|
|
108
|
-
let test_setup = setup();
|
|
109
|
-
let env = &test_setup.env;
|
|
110
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
111
|
-
|
|
112
|
-
let receiver = Address::generate(env);
|
|
113
|
-
let src_eid1 = 2;
|
|
114
|
-
let src_eid2 = 3;
|
|
115
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
116
|
-
let nonce = 1;
|
|
117
|
-
let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
|
|
118
|
-
let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
|
|
119
|
-
|
|
120
|
-
// Set payload hashes for different source EIDs
|
|
121
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid1, &sender, nonce, &hash1));
|
|
122
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid2, &sender, nonce, &hash2));
|
|
123
|
-
|
|
124
|
-
// Verify each src_eid has its own independent payload hash
|
|
125
|
-
let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver, &src_eid1, &sender, &nonce);
|
|
126
|
-
let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver, &src_eid2, &sender, &nonce);
|
|
127
|
-
|
|
128
|
-
assert_eq!(retrieved_hash1, Some(hash1));
|
|
129
|
-
assert_eq!(retrieved_hash2, Some(hash2));
|
|
130
|
-
|
|
131
|
-
// Verify a third src_eid returns None
|
|
132
|
-
let src_eid3 = 4;
|
|
133
|
-
let unset_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid3, &sender, &nonce);
|
|
134
|
-
assert_eq!(unset_hash, None);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
#[test]
|
|
138
|
-
fn test_inbound_payload_hash_different_senders() {
|
|
139
|
-
let test_setup = setup();
|
|
140
|
-
let env = &test_setup.env;
|
|
141
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
142
|
-
|
|
143
|
-
let receiver = Address::generate(env);
|
|
144
|
-
let src_eid = 2;
|
|
145
|
-
let sender1 = BytesN::from_array(env, &[1u8; 32]);
|
|
146
|
-
let sender2 = BytesN::from_array(env, &[2u8; 32]);
|
|
147
|
-
let nonce = 1;
|
|
148
|
-
let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
|
|
149
|
-
let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
|
|
150
|
-
|
|
151
|
-
// Set payload hashes for different senders
|
|
152
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender1, nonce, &hash1));
|
|
153
|
-
env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender2, nonce, &hash2));
|
|
154
|
-
|
|
155
|
-
// Verify each sender has its own independent payload hash
|
|
156
|
-
let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender1, &nonce);
|
|
157
|
-
let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender2, &nonce);
|
|
158
|
-
|
|
159
|
-
assert_eq!(retrieved_hash1, Some(hash1));
|
|
160
|
-
assert_eq!(retrieved_hash2, Some(hash2));
|
|
161
|
-
|
|
162
|
-
// Verify a third sender returns None
|
|
163
|
-
let sender3 = BytesN::from_array(env, &[3u8; 32]);
|
|
164
|
-
let unset_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender3, &nonce);
|
|
165
|
-
assert_eq!(unset_hash, None);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
#[test]
|
|
169
|
-
fn test_inbound_payload_hash_after_removal() {
|
|
170
|
-
let test_setup = setup();
|
|
171
|
-
let env = &test_setup.env;
|
|
172
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
173
|
-
|
|
174
|
-
let receiver = Address::generate(env);
|
|
175
|
-
let src_eid = 2;
|
|
176
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
177
|
-
let nonce = 1;
|
|
178
|
-
let payload_hash = BytesN::from_array(env, &[0xabu8; 32]);
|
|
179
|
-
|
|
180
|
-
// Set payload hash
|
|
181
|
-
env.as_contract(&endpoint_client.address, || {
|
|
182
|
-
EndpointV2::inbound(env, &receiver, src_eid, &sender, nonce, &payload_hash)
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
// Verify payload hash is set
|
|
186
|
-
let retrieved_before = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
|
|
187
|
-
assert_eq!(retrieved_before, Some(payload_hash));
|
|
188
|
-
|
|
189
|
-
// Remove payload hash
|
|
190
|
-
env.as_contract(&endpoint_client.address, || {
|
|
191
|
-
storage::EndpointStorage::remove_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce)
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
// Verify payload hash is removed
|
|
195
|
-
let retrieved_after = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
|
|
196
|
-
assert_eq!(retrieved_after, None);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
#[test]
|
|
200
|
-
fn test_inbound_payload_hash_overwrite() {
|
|
201
|
-
let test_setup = setup();
|
|
202
|
-
let env = &test_setup.env;
|
|
203
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
204
|
-
|
|
205
|
-
let receiver = Address::generate(env);
|
|
206
|
-
let src_eid = 2;
|
|
207
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
208
|
-
let nonce = 1;
|
|
209
|
-
let initial_hash = BytesN::from_array(env, &[0xabu8; 32]);
|
|
210
|
-
let new_hash = BytesN::from_array(env, &[0xcdu8; 32]);
|
|
211
|
-
|
|
212
|
-
// Set initial payload hash
|
|
213
|
-
env.as_contract(&endpoint_client.address, || {
|
|
214
|
-
storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &initial_hash)
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
let retrieved_initial = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
|
|
218
|
-
assert_eq!(retrieved_initial, Some(initial_hash));
|
|
219
|
-
|
|
220
|
-
// Overwrite with new payload hash
|
|
221
|
-
env.as_contract(&endpoint_client.address, || {
|
|
222
|
-
storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &new_hash)
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
let retrieved_new = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
|
|
226
|
-
assert_eq!(retrieved_new, Some(new_hash));
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
#[test]
|
|
230
|
-
fn test_inbound_payload_hash_multiple_paths_independence() {
|
|
231
|
-
let test_setup = setup();
|
|
232
|
-
let env = &test_setup.env;
|
|
233
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
234
|
-
|
|
235
|
-
let receiver1 = Address::generate(env);
|
|
236
|
-
let receiver2 = Address::generate(env);
|
|
237
|
-
let src_eid1 = 2;
|
|
238
|
-
let src_eid2 = 3;
|
|
239
|
-
let sender1 = BytesN::from_array(env, &[1u8; 32]);
|
|
240
|
-
let sender2 = BytesN::from_array(env, &[2u8; 32]);
|
|
241
|
-
let nonce = 1;
|
|
242
|
-
|
|
243
|
-
let hash_r1_e1_s1 = BytesN::from_array(env, &[0x11u8; 32]);
|
|
244
|
-
let hash_r1_e1_s2 = BytesN::from_array(env, &[0x12u8; 32]);
|
|
245
|
-
let hash_r1_e2_s1 = BytesN::from_array(env, &[0x13u8; 32]);
|
|
246
|
-
let hash_r2_e1_s1 = BytesN::from_array(env, &[0x14u8; 32]);
|
|
247
|
-
|
|
248
|
-
// Set payload hashes for different combinations
|
|
249
|
-
env.as_contract(&endpoint_client.address, || {
|
|
250
|
-
EndpointV2::inbound(env, &receiver1, src_eid1, &sender1, nonce, &hash_r1_e1_s1)
|
|
251
|
-
});
|
|
252
|
-
env.as_contract(&endpoint_client.address, || {
|
|
253
|
-
EndpointV2::inbound(env, &receiver1, src_eid1, &sender2, nonce, &hash_r1_e1_s2)
|
|
254
|
-
});
|
|
255
|
-
env.as_contract(&endpoint_client.address, || {
|
|
256
|
-
EndpointV2::inbound(env, &receiver1, src_eid2, &sender1, nonce, &hash_r1_e2_s1)
|
|
257
|
-
});
|
|
258
|
-
env.as_contract(&endpoint_client.address, || {
|
|
259
|
-
EndpointV2::inbound(env, &receiver2, src_eid1, &sender1, nonce, &hash_r2_e1_s1)
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
// Verify all paths are independent
|
|
263
|
-
assert_eq!(endpoint_client.inbound_payload_hash(&receiver1, &src_eid1, &sender1, &nonce), Some(hash_r1_e1_s1));
|
|
264
|
-
assert_eq!(endpoint_client.inbound_payload_hash(&receiver1, &src_eid1, &sender2, &nonce), Some(hash_r1_e1_s2));
|
|
265
|
-
assert_eq!(endpoint_client.inbound_payload_hash(&receiver1, &src_eid2, &sender1, &nonce), Some(hash_r1_e2_s1));
|
|
266
|
-
assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid1, &sender1, &nonce), Some(hash_r2_e1_s1));
|
|
267
|
-
|
|
268
|
-
// Verify unset paths return None
|
|
269
|
-
assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid1, &sender2, &nonce), None);
|
|
270
|
-
assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid2, &sender1, &nonce), None);
|
|
271
|
-
assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid2, &sender2, &nonce), None);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
#[test]
|
|
275
|
-
fn test_inbound_payload_hash_zero_hash() {
|
|
276
|
-
let test_setup = setup();
|
|
277
|
-
let env = &test_setup.env;
|
|
278
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
279
|
-
|
|
280
|
-
let receiver = Address::generate(env);
|
|
281
|
-
let src_eid = 2;
|
|
282
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
283
|
-
let nonce = 1;
|
|
284
|
-
let zero_hash = BytesN::from_array(env, &[0u8; 32]);
|
|
285
|
-
|
|
286
|
-
// Set zero hash (should be allowed by storage, even though inbound function rejects it)
|
|
287
|
-
env.as_contract(&endpoint_client.address, || {
|
|
288
|
-
storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &zero_hash)
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
// Verify zero hash is retrieved correctly
|
|
292
|
-
let retrieved_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
|
|
293
|
-
assert_eq!(retrieved_hash, Some(zero_hash));
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
#[test]
|
|
297
|
-
fn test_inbound_payload_hash_max_hash() {
|
|
298
|
-
let test_setup = setup();
|
|
299
|
-
let env = &test_setup.env;
|
|
300
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
301
|
-
|
|
302
|
-
let receiver = Address::generate(env);
|
|
303
|
-
let src_eid = 2;
|
|
304
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
305
|
-
let nonce = 1;
|
|
306
|
-
let max_hash = BytesN::from_array(env, &[0xffu8; 32]);
|
|
307
|
-
|
|
308
|
-
// Set max hash
|
|
309
|
-
env.as_contract(&endpoint_client.address, || {
|
|
310
|
-
storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &max_hash)
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
// Verify max hash is retrieved correctly
|
|
314
|
-
let retrieved_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
|
|
315
|
-
assert_eq!(retrieved_hash, Some(max_hash));
|
|
316
|
-
}
|
|
@@ -4,9 +4,9 @@ use crate::{storage, tests::endpoint_setup::setup};
|
|
|
4
4
|
|
|
5
5
|
#[test]
|
|
6
6
|
fn test_lazy_inbound_nonce_initial_value() {
|
|
7
|
-
let
|
|
8
|
-
let env = &
|
|
9
|
-
let endpoint_client = &
|
|
7
|
+
let context = setup();
|
|
8
|
+
let env = &context.env;
|
|
9
|
+
let endpoint_client = &context.endpoint_client;
|
|
10
10
|
|
|
11
11
|
let receiver = Address::generate(env);
|
|
12
12
|
let src_eid = 2;
|
|
@@ -19,9 +19,9 @@ fn test_lazy_inbound_nonce_initial_value() {
|
|
|
19
19
|
|
|
20
20
|
#[test]
|
|
21
21
|
fn test_lazy_inbound_nonce_after_setting() {
|
|
22
|
-
let
|
|
23
|
-
let env = &
|
|
24
|
-
let endpoint_client = &
|
|
22
|
+
let context = setup();
|
|
23
|
+
let env = &context.env;
|
|
24
|
+
let endpoint_client = &context.endpoint_client;
|
|
25
25
|
|
|
26
26
|
let receiver = Address::generate(env);
|
|
27
27
|
let src_eid = 2;
|
|
@@ -37,271 +37,3 @@ fn test_lazy_inbound_nonce_after_setting() {
|
|
|
37
37
|
let nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
38
38
|
assert_eq!(nonce, expected_nonce);
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
#[test]
|
|
42
|
-
fn test_lazy_inbound_nonce_different_receivers() {
|
|
43
|
-
let test_setup = setup();
|
|
44
|
-
let env = &test_setup.env;
|
|
45
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
46
|
-
|
|
47
|
-
let receiver1 = Address::generate(env);
|
|
48
|
-
let receiver2 = Address::generate(env);
|
|
49
|
-
let src_eid = 2;
|
|
50
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
51
|
-
|
|
52
|
-
// Set different nonces for different receivers
|
|
53
|
-
let nonce1 = 10;
|
|
54
|
-
let nonce2 = 20;
|
|
55
|
-
|
|
56
|
-
env.as_contract(&endpoint_client.address, || {
|
|
57
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid, &sender, &nonce1)
|
|
58
|
-
});
|
|
59
|
-
env.as_contract(&endpoint_client.address, || {
|
|
60
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver2, src_eid, &sender, &nonce2)
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
// Verify each receiver has its own independent lazy nonce
|
|
64
|
-
let retrieved_nonce1 = endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid, &sender);
|
|
65
|
-
let retrieved_nonce2 = endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid, &sender);
|
|
66
|
-
|
|
67
|
-
assert_eq!(retrieved_nonce1, nonce1);
|
|
68
|
-
assert_eq!(retrieved_nonce2, nonce2);
|
|
69
|
-
|
|
70
|
-
// Verify a third receiver still has initial nonce of 0
|
|
71
|
-
let receiver3 = Address::generate(env);
|
|
72
|
-
let retrieved_nonce3 = endpoint_client.lazy_inbound_nonce(&receiver3, &src_eid, &sender);
|
|
73
|
-
assert_eq!(retrieved_nonce3, 0);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
#[test]
|
|
77
|
-
fn test_lazy_inbound_nonce_different_src_eids() {
|
|
78
|
-
let test_setup = setup();
|
|
79
|
-
let env = &test_setup.env;
|
|
80
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
81
|
-
|
|
82
|
-
let receiver = Address::generate(env);
|
|
83
|
-
let src_eid1 = 2;
|
|
84
|
-
let src_eid2 = 3;
|
|
85
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
86
|
-
|
|
87
|
-
// Set different nonces for different source EIDs
|
|
88
|
-
let nonce1 = 15;
|
|
89
|
-
let nonce2 = 25;
|
|
90
|
-
|
|
91
|
-
env.as_contract(&endpoint_client.address, || {
|
|
92
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid1, &sender, &nonce1)
|
|
93
|
-
});
|
|
94
|
-
env.as_contract(&endpoint_client.address, || {
|
|
95
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid2, &sender, &nonce2)
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
// Verify each src_eid has its own independent lazy nonce
|
|
99
|
-
let retrieved_nonce1 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid1, &sender);
|
|
100
|
-
let retrieved_nonce2 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid2, &sender);
|
|
101
|
-
|
|
102
|
-
assert_eq!(retrieved_nonce1, nonce1);
|
|
103
|
-
assert_eq!(retrieved_nonce2, nonce2);
|
|
104
|
-
|
|
105
|
-
// Verify a third src_eid still has initial nonce of 0
|
|
106
|
-
let src_eid3 = 4;
|
|
107
|
-
let retrieved_nonce3 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid3, &sender);
|
|
108
|
-
assert_eq!(retrieved_nonce3, 0);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
#[test]
|
|
112
|
-
fn test_lazy_inbound_nonce_different_senders() {
|
|
113
|
-
let test_setup = setup();
|
|
114
|
-
let env = &test_setup.env;
|
|
115
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
116
|
-
|
|
117
|
-
let receiver = Address::generate(env);
|
|
118
|
-
let src_eid = 2;
|
|
119
|
-
let sender1 = BytesN::from_array(env, &[1u8; 32]);
|
|
120
|
-
let sender2 = BytesN::from_array(env, &[2u8; 32]);
|
|
121
|
-
|
|
122
|
-
// Set different nonces for different senders
|
|
123
|
-
let nonce1 = 30;
|
|
124
|
-
let nonce2 = 40;
|
|
125
|
-
|
|
126
|
-
env.as_contract(&endpoint_client.address, || {
|
|
127
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender1, &nonce1)
|
|
128
|
-
});
|
|
129
|
-
env.as_contract(&endpoint_client.address, || {
|
|
130
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender2, &nonce2)
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
// Verify each sender has its own independent lazy nonce
|
|
134
|
-
let retrieved_nonce1 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender1);
|
|
135
|
-
let retrieved_nonce2 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender2);
|
|
136
|
-
|
|
137
|
-
assert_eq!(retrieved_nonce1, nonce1);
|
|
138
|
-
assert_eq!(retrieved_nonce2, nonce2);
|
|
139
|
-
|
|
140
|
-
// Verify a third sender still has initial nonce of 0
|
|
141
|
-
let sender3 = BytesN::from_array(env, &[3u8; 32]);
|
|
142
|
-
let retrieved_nonce3 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender3);
|
|
143
|
-
assert_eq!(retrieved_nonce3, 0);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
#[test]
|
|
147
|
-
fn test_lazy_inbound_nonce_large_values() {
|
|
148
|
-
let test_setup = setup();
|
|
149
|
-
let env = &test_setup.env;
|
|
150
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
151
|
-
|
|
152
|
-
let receiver = Address::generate(env);
|
|
153
|
-
let src_eid = 2;
|
|
154
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
155
|
-
|
|
156
|
-
// Test with maximum u64 value
|
|
157
|
-
let max_nonce = u64::MAX;
|
|
158
|
-
env.as_contract(&endpoint_client.address, || {
|
|
159
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &max_nonce)
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
let retrieved_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
163
|
-
assert_eq!(retrieved_nonce, max_nonce);
|
|
164
|
-
|
|
165
|
-
// Test with large but not maximum value
|
|
166
|
-
let large_nonce = u64::MAX - 1000;
|
|
167
|
-
env.as_contract(&endpoint_client.address, || {
|
|
168
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &large_nonce)
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
let retrieved_large_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
172
|
-
assert_eq!(retrieved_large_nonce, large_nonce);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
#[test]
|
|
176
|
-
fn test_lazy_inbound_nonce_incremental_updates() {
|
|
177
|
-
let test_setup = setup();
|
|
178
|
-
let env = &test_setup.env;
|
|
179
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
180
|
-
|
|
181
|
-
let receiver = Address::generate(env);
|
|
182
|
-
let src_eid = 2;
|
|
183
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
184
|
-
|
|
185
|
-
// Start with nonce 0
|
|
186
|
-
let initial_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
187
|
-
assert_eq!(initial_nonce, 0);
|
|
188
|
-
|
|
189
|
-
// Incrementally update lazy nonce
|
|
190
|
-
for expected_nonce in 1..=10 {
|
|
191
|
-
env.as_contract(&endpoint_client.address, || {
|
|
192
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &expected_nonce)
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
let retrieved_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
196
|
-
assert_eq!(retrieved_nonce, expected_nonce);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
#[test]
|
|
201
|
-
fn test_lazy_inbound_nonce_overwrite() {
|
|
202
|
-
let test_setup = setup();
|
|
203
|
-
let env = &test_setup.env;
|
|
204
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
205
|
-
|
|
206
|
-
let receiver = Address::generate(env);
|
|
207
|
-
let src_eid = 2;
|
|
208
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
209
|
-
|
|
210
|
-
// Set initial nonce
|
|
211
|
-
let initial_nonce = 100;
|
|
212
|
-
env.as_contract(&endpoint_client.address, || {
|
|
213
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &initial_nonce)
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
let retrieved_initial = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
217
|
-
assert_eq!(retrieved_initial, initial_nonce);
|
|
218
|
-
|
|
219
|
-
// Overwrite with a different nonce
|
|
220
|
-
let new_nonce = 200;
|
|
221
|
-
env.as_contract(&endpoint_client.address, || {
|
|
222
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &new_nonce)
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
let retrieved_new = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
226
|
-
assert_eq!(retrieved_new, new_nonce);
|
|
227
|
-
|
|
228
|
-
// Overwrite with a smaller nonce
|
|
229
|
-
let smaller_nonce = 50;
|
|
230
|
-
env.as_contract(&endpoint_client.address, || {
|
|
231
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &smaller_nonce)
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
let retrieved_smaller = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
235
|
-
assert_eq!(retrieved_smaller, smaller_nonce);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
#[test]
|
|
239
|
-
fn test_lazy_inbound_nonce_multiple_paths_independence() {
|
|
240
|
-
let test_setup = setup();
|
|
241
|
-
let env = &test_setup.env;
|
|
242
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
243
|
-
|
|
244
|
-
let receiver1 = Address::generate(env);
|
|
245
|
-
let receiver2 = Address::generate(env);
|
|
246
|
-
let src_eid1 = 2;
|
|
247
|
-
let src_eid2 = 3;
|
|
248
|
-
let sender1 = BytesN::from_array(env, &[1u8; 32]);
|
|
249
|
-
let sender2 = BytesN::from_array(env, &[2u8; 32]);
|
|
250
|
-
|
|
251
|
-
// Set nonces for different combinations
|
|
252
|
-
let nonce_r1_e1_s1 = 100;
|
|
253
|
-
let nonce_r1_e1_s2 = 200;
|
|
254
|
-
let nonce_r1_e2_s1 = 300;
|
|
255
|
-
let nonce_r2_e1_s1 = 400;
|
|
256
|
-
|
|
257
|
-
env.as_contract(&endpoint_client.address, || {
|
|
258
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid1, &sender1, &nonce_r1_e1_s1)
|
|
259
|
-
});
|
|
260
|
-
env.as_contract(&endpoint_client.address, || {
|
|
261
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid1, &sender2, &nonce_r1_e1_s2)
|
|
262
|
-
});
|
|
263
|
-
env.as_contract(&endpoint_client.address, || {
|
|
264
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid2, &sender1, &nonce_r1_e2_s1)
|
|
265
|
-
});
|
|
266
|
-
env.as_contract(&endpoint_client.address, || {
|
|
267
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver2, src_eid1, &sender1, &nonce_r2_e1_s1)
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
// Verify all paths are independent
|
|
271
|
-
assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid1, &sender1), nonce_r1_e1_s1);
|
|
272
|
-
assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid1, &sender2), nonce_r1_e1_s2);
|
|
273
|
-
assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid2, &sender1), nonce_r1_e2_s1);
|
|
274
|
-
assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid1, &sender1), nonce_r2_e1_s1);
|
|
275
|
-
|
|
276
|
-
// Verify unset paths still return 0
|
|
277
|
-
assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid1, &sender2), 0);
|
|
278
|
-
assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid2, &sender1), 0);
|
|
279
|
-
assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid2, &sender2), 0);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
#[test]
|
|
283
|
-
fn test_lazy_inbound_nonce_zero_value() {
|
|
284
|
-
let test_setup = setup();
|
|
285
|
-
let env = &test_setup.env;
|
|
286
|
-
let endpoint_client = &test_setup.endpoint_client;
|
|
287
|
-
|
|
288
|
-
let receiver = Address::generate(env);
|
|
289
|
-
let src_eid = 2;
|
|
290
|
-
let sender = BytesN::from_array(env, &[1u8; 32]);
|
|
291
|
-
|
|
292
|
-
// Set lazy nonce to a non-zero value first
|
|
293
|
-
env.as_contract(&endpoint_client.address, || {
|
|
294
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &50)
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
let non_zero_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
298
|
-
assert_eq!(non_zero_nonce, 50);
|
|
299
|
-
|
|
300
|
-
// Set lazy nonce back to 0
|
|
301
|
-
env.as_contract(&endpoint_client.address, || {
|
|
302
|
-
storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &0)
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
let zero_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
|
|
306
|
-
assert_eq!(zero_nonce, 0);
|
|
307
|
-
}
|