@layerzerolabs/protocol-stellar-v2 0.2.13 → 0.2.18
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 +484 -337
- package/.turbo/turbo-lint.log +126 -56
- package/.turbo/turbo-test.log +1403 -984
- package/Cargo.lock +142 -3
- package/Cargo.toml +5 -1
- package/contracts/ERROR_SPEC.md +44 -0
- package/contracts/common-macros/src/auth.rs +113 -0
- package/contracts/common-macros/src/contract_ttl.rs +84 -0
- package/contracts/common-macros/src/lib.rs +219 -29
- package/contracts/common-macros/src/lz_contract.rs +83 -0
- package/contracts/common-macros/src/storage.rs +1 -1
- package/contracts/common-macros/src/tests/{ownable.rs → auth.rs} +48 -15
- package/contracts/common-macros/src/tests/contract_ttl.rs +662 -0
- package/contracts/common-macros/src/tests/mod.rs +3 -2
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +24 -0
- package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__ownable__snapshot_only_owner_preserves_function_signature.snap → common_macros__tests__auth__snapshot_only_auth_preserves_function_signature.snap} +4 -4
- package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap → common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap} +26 -10
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +69 -0
- 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 +7 -41
- 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 +21 -66
- package/contracts/common-macros/src/ttl_extendable.rs +36 -0
- package/contracts/common-macros/src/upgradeable.rs +76 -0
- package/contracts/common-macros/src/utils.rs +9 -0
- package/contracts/endpoint-v2/src/constants.rs +4 -4
- package/contracts/endpoint-v2/src/endpoint_v2.rs +58 -36
- package/contracts/endpoint-v2/src/errors.rs +4 -3
- package/contracts/endpoint-v2/src/events.rs +1 -1
- package/contracts/endpoint-v2/src/message_lib_manager.rs +18 -5
- package/contracts/endpoint-v2/src/messaging_channel.rs +11 -1
- package/contracts/endpoint-v2/src/messaging_composer.rs +11 -1
- package/contracts/endpoint-v2/src/storage.rs +1 -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 +62 -10
- 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 +4 -6
- 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 +16 -2
- 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 +226 -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_auth_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/freeze.rs +139 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +2 -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_auth_missing_env.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_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 +21 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_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/errors.rs +7 -2
- 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 +49 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +73 -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 +7 -9
- package/contracts/message-libs/treasury/src/errors.rs +2 -3
- package/contracts/message-libs/treasury/src/events.rs +1 -1
- package/contracts/message-libs/treasury/src/interfaces/zro_fee_lib.rs +2 -2
- package/contracts/message-libs/treasury/src/lib.rs +3 -3
- package/contracts/message-libs/treasury/src/storage.rs +3 -1
- package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +1 -1
- package/contracts/message-libs/treasury/src/treasury.rs +23 -26
- 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 +37 -56
- package/contracts/message-libs/uln-302/src/send_uln.rs +112 -138
- 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 +10 -25
- package/contracts/oapps/counter/Cargo.toml +14 -1
- package/contracts/oapps/counter/integration_tests/mod.rs +4 -1
- package/contracts/oapps/counter/integration_tests/setup_sml.rs +169 -0
- package/contracts/oapps/counter/integration_tests/setup_uln.rs +997 -0
- package/contracts/oapps/counter/integration_tests/signing.rs +62 -0
- package/contracts/oapps/counter/integration_tests/test_with_sml.rs +24 -55
- package/contracts/oapps/counter/integration_tests/test_with_uln.rs +314 -0
- package/contracts/oapps/counter/integration_tests/utils.rs +196 -53
- package/contracts/oapps/counter/src/counter.rs +67 -44
- package/contracts/oapps/counter/src/tests/mod.rs +0 -13
- package/contracts/oapps/counter/src/tests/test_counter.rs +5 -7
- package/contracts/oapps/oapp/src/errors.rs +5 -1
- package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +318 -221
- package/contracts/oapps/oapp/src/oapp_core.rs +36 -21
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +48 -12
- package/contracts/oapps/oapp/src/oapp_receiver.rs +106 -41
- package/contracts/oapps/oapp/src/oapp_sender.rs +26 -34
- package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +9 -9
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +25 -18
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +7 -8
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +14 -16
- package/contracts/oapps/oapp-macros/src/generators.rs +128 -0
- package/contracts/oapps/oapp-macros/src/lib.rs +211 -0
- package/contracts/oapps/oft/integration-tests/setup.rs +34 -9
- package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
- package/contracts/oapps/oft/src/errors.rs +6 -1
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +13 -13
- package/contracts/oapps/oft/src/extensions/pausable.rs +5 -5
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +23 -23
- package/contracts/oapps/oft/src/lib.rs +4 -2
- package/contracts/oapps/oft/src/oft.rs +31 -71
- package/contracts/oapps/oft/src/oft_impl.rs +201 -0
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +2 -4
- package/contracts/oapps/oft/src/oft_types/mint_burn.rs +1 -4
- package/contracts/oapps/oft/src/storage.rs +2 -0
- package/contracts/oapps/oft/src/tests/extensions/setup.rs +60 -31
- package/contracts/oapps/oft/src/tests/extensions/test_oft_fee.rs +5 -3
- package/contracts/oapps/oft/src/tests/extensions/test_pausable.rs +5 -3
- package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +6 -4
- package/contracts/oapps/oft/src/tests/test_decimals.rs +2 -2
- package/contracts/oapps/oft/src/tests/test_oft_msg_codec.rs +1 -2
- package/contracts/oapps/oft/src/tests/test_send.rs +4 -4
- package/contracts/oapps/oft/src/tests/test_utils.rs +122 -81
- package/contracts/oapps/oft/src/types.rs +20 -0
- 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/{counter/integration_tests → oft-std/integration-tests}/setup.rs +76 -30
- 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 +141 -26
- 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/auth.rs +44 -0
- package/contracts/utils/src/errors.rs +32 -5
- package/contracts/utils/src/lib.rs +5 -1
- package/contracts/utils/src/multisig.rs +211 -0
- package/contracts/utils/src/ownable.rs +50 -60
- package/contracts/utils/src/tests/buffer_reader.rs +6 -6
- package/contracts/utils/src/tests/buffer_writer.rs +6 -6
- package/contracts/utils/src/tests/bytes_ext.rs +2 -4
- package/contracts/utils/src/tests/mod.rs +4 -1
- package/contracts/utils/src/tests/multisig.rs +731 -0
- package/contracts/utils/src/tests/option_ext.rs +18 -0
- package/contracts/utils/src/tests/ownable.rs +22 -70
- package/contracts/utils/src/tests/ttl_configurable.rs +607 -0
- package/contracts/utils/src/tests/upgradeable.rs +290 -0
- package/contracts/utils/src/ttl_configurable.rs +153 -0
- package/contracts/utils/src/ttl_extendable.rs +27 -0
- package/contracts/utils/src/upgradeable.rs +56 -0
- package/contracts/workers/dvn/Cargo.toml +2 -2
- package/contracts/workers/dvn/src/auth.rs +24 -35
- package/contracts/workers/dvn/src/dvn.rs +23 -14
- package/contracts/workers/dvn/src/errors.rs +1 -7
- package/contracts/workers/dvn/src/events.rs +1 -14
- package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
- package/contracts/workers/dvn/src/interfaces/mod.rs +0 -2
- package/contracts/workers/dvn/src/storage.rs +3 -13
- package/contracts/workers/dvn/src/tests/auth.rs +4 -4
- package/contracts/workers/dvn/src/tests/dvn.rs +1 -2
- package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +7 -8
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +11 -8
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +11 -12
- package/contracts/workers/dvn/src/tests/setup.rs +5 -5
- package/contracts/workers/dvn-fee-lib/Cargo.toml +0 -1
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +45 -16
- 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/auth.rs +80 -16
- package/contracts/workers/executor/src/executor.rs +17 -29
- package/contracts/workers/executor/src/storage.rs +2 -9
- package/contracts/workers/executor-fee-lib/Cargo.toml +1 -1
- package/contracts/workers/executor-fee-lib/src/errors.rs +9 -7
- package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +153 -121
- package/contracts/workers/executor-helper/Cargo.toml +1 -6
- package/contracts/workers/executor-helper/src/executor_helper.rs +53 -73
- package/contracts/workers/executor-helper/src/lib.rs +1 -7
- package/contracts/workers/price-feed/Cargo.toml +1 -2
- 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 +42 -23
- package/contracts/workers/worker/Cargo.toml +4 -0
- package/contracts/workers/worker/src/errors.rs +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 +502 -0
- package/contracts/workers/worker/src/worker.rs +28 -30
- package/package.json +8 -5
- package/sdk/.turbo/turbo-build.log +1 -0
- package/sdk/.turbo/turbo-test.log +1009 -0
- package/sdk/dist/generated/bml.d.ts +104 -37
- package/sdk/dist/generated/bml.js +83 -42
- package/sdk/dist/generated/counter.d.ts +334 -175
- package/sdk/dist/generated/counter.js +109 -63
- package/sdk/dist/generated/dvn.d.ts +1985 -0
- package/sdk/dist/generated/dvn.js +326 -0
- package/sdk/dist/generated/dvn_fee_lib.d.ts +690 -0
- package/sdk/dist/generated/dvn_fee_lib.js +163 -0
- package/sdk/dist/generated/endpoint.d.ts +155 -46
- package/sdk/dist/generated/endpoint.js +93 -50
- package/sdk/dist/generated/executor.d.ts +1841 -0
- package/sdk/dist/generated/executor.js +312 -0
- package/sdk/dist/generated/executor_fee_lib.d.ts +1083 -0
- package/sdk/dist/generated/executor_fee_lib.js +255 -0
- package/sdk/dist/generated/executor_helper.d.ts +981 -0
- package/sdk/dist/generated/executor_helper.js +236 -0
- package/sdk/dist/generated/oft_std.d.ts +1722 -0
- package/sdk/dist/generated/oft_std.js +316 -0
- package/sdk/dist/generated/price_feed.d.ts +1077 -0
- package/sdk/dist/generated/price_feed.js +210 -0
- package/sdk/dist/generated/sml.d.ts +171 -56
- package/sdk/dist/generated/sml.js +111 -62
- package/sdk/dist/generated/treasury.d.ts +896 -0
- package/sdk/dist/generated/treasury.js +219 -0
- package/sdk/dist/generated/uln302.d.ts +175 -75
- package/sdk/dist/generated/uln302.js +126 -82
- package/sdk/dist/generated/upgrader.d.ts +70 -0
- package/sdk/dist/generated/upgrader.js +19 -0
- package/sdk/dist/index.d.ts +10 -0
- package/sdk/dist/index.js +14 -0
- package/sdk/dist/wasm/blocked-message-lib.d.ts +1 -0
- package/sdk/dist/wasm/blocked-message-lib.js +2 -0
- package/sdk/dist/wasm/counter.d.ts +1 -0
- package/sdk/dist/wasm/counter.js +2 -0
- package/sdk/dist/wasm/dvn-fee-lib.d.ts +1 -0
- package/sdk/dist/wasm/dvn-fee-lib.js +2 -0
- package/sdk/dist/wasm/dvn.d.ts +1 -0
- package/sdk/dist/wasm/dvn.js +2 -0
- package/sdk/dist/wasm/endpoint-v2.d.ts +1 -0
- package/sdk/dist/wasm/endpoint-v2.js +2 -0
- package/sdk/dist/wasm/executor-fee-lib.d.ts +1 -0
- package/sdk/dist/wasm/executor-fee-lib.js +2 -0
- package/sdk/dist/wasm/executor-helper.d.ts +1 -0
- package/sdk/dist/wasm/executor-helper.js +2 -0
- package/sdk/dist/wasm/executor.d.ts +1 -0
- package/sdk/dist/wasm/executor.js +2 -0
- package/sdk/dist/wasm/layerzero-views.d.ts +1 -0
- package/sdk/dist/wasm/layerzero-views.js +2 -0
- package/sdk/dist/wasm/oft-std.d.ts +1 -0
- package/sdk/dist/wasm/oft-std.js +2 -0
- package/sdk/dist/wasm/price-feed.d.ts +1 -0
- package/sdk/dist/wasm/price-feed.js +2 -0
- package/sdk/dist/wasm/simple-message-lib.d.ts +1 -0
- package/sdk/dist/wasm/simple-message-lib.js +2 -0
- package/sdk/dist/wasm/treasury.d.ts +1 -0
- package/sdk/dist/wasm/treasury.js +2 -0
- package/sdk/dist/wasm/uln302.d.ts +1 -0
- package/sdk/dist/wasm/uln302.js +2 -0
- package/sdk/dist/wasm/upgrader.d.ts +1 -0
- package/sdk/dist/wasm/upgrader.js +2 -0
- package/sdk/dist/wasm.d.ts +15 -0
- package/sdk/dist/wasm.js +15 -0
- package/sdk/package.json +7 -4
- package/sdk/src/index.ts +17 -0
- package/sdk/test/counter-sml.test.ts +376 -0
- package/sdk/test/counter-uln.test.ts +493 -0
- package/sdk/test/{oft.test.ts → oft-sml.test.ts} +187 -323
- package/sdk/test/suites/constants.ts +22 -2
- package/sdk/test/suites/dummyContractClient.ts +169 -0
- package/sdk/test/suites/globalSetup.ts +450 -0
- package/sdk/test/suites/localnet.ts +23 -6
- package/sdk/test/upgrader.test.ts +300 -0
- package/sdk/test/utils.ts +558 -85
- package/sdk/vitest.config.ts +21 -0
- package/tools/ts-bindings-gen/src/main.rs +12 -1
- package/turbo.json +2 -0
- package/contracts/common-macros/src/contract_impl.rs +0 -47
- package/contracts/common-macros/src/ownable.rs +0 -59
- package/contracts/common-macros/src/tests/contract_impl.rs +0 -381
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +0 -32
- 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/oapp-macros/src/lib.rs +0 -154
- package/contracts/oapp-macros/src/oapp_core.rs +0 -40
- package/contracts/oapp-macros/src/oapp_full.rs +0 -21
- package/contracts/oapp-macros/src/oapp_options_type3.rs +0 -31
- package/contracts/oapp-macros/src/oapp_receiver.rs +0 -48
- package/contracts/oapp-macros/src/oapp_sender.rs +0 -21
- package/contracts/oapp-macros/src/util.rs +0 -107
- package/contracts/oapps/oft/src/constants.rs +0 -5
- package/contracts/oapps/oft/src/default_oft_impl.rs +0 -146
- package/contracts/utils/src/tests/ttl.rs +0 -421
- package/contracts/utils/src/ttl.rs +0 -123
- package/contracts/workers/dvn/src/interfaces/multisig.rs +0 -56
- package/contracts/workers/dvn/src/multisig.rs +0 -153
- package/sdk/test/index.test.ts +0 -376
- /package/contracts/{oapp-macros → oapps/oapp-macros}/Cargo.toml +0 -0
|
@@ -1,4 +1,24 @@
|
|
|
1
|
-
use super
|
|
1
|
+
use super::{Uln302, Uln302Args, Uln302Client};
|
|
2
|
+
use crate::{
|
|
3
|
+
errors::Uln302Error,
|
|
4
|
+
events::{
|
|
5
|
+
DVNFeePaid, DefaultExecutorConfigsSet, DefaultSendUlnConfigsSet, ExecutorConfigSet, ExecutorFeePaid,
|
|
6
|
+
SendUlnConfigSet,
|
|
7
|
+
},
|
|
8
|
+
interfaces::{
|
|
9
|
+
ExecutorConfig, ISendUln302, OAppExecutorConfig, OAppUlnConfig, SetDefaultExecutorConfigParam,
|
|
10
|
+
SetDefaultUlnConfigParam, UlnConfig,
|
|
11
|
+
},
|
|
12
|
+
storage::UlnStorage,
|
|
13
|
+
};
|
|
14
|
+
use common_macros::{contract_impl, only_auth};
|
|
15
|
+
use endpoint_v2::{FeeRecipient, FeesAndPacket, ISendLib, MessagingFee, OutboundPacket};
|
|
16
|
+
use message_lib_common::{
|
|
17
|
+
interfaces::{LayerZeroDVNClient, LayerZeroExecutorClient, LayerZeroTreasuryClient},
|
|
18
|
+
packet_codec_v1, worker_options,
|
|
19
|
+
};
|
|
20
|
+
use soroban_sdk::{assert_with_error, bytes, vec, Address, Bytes, BytesN, Env, Map, Vec};
|
|
21
|
+
use utils::option_ext::OptionExt;
|
|
2
22
|
|
|
3
23
|
// ==============================================================================
|
|
4
24
|
// ISendLib Contract Implementation
|
|
@@ -10,22 +30,21 @@ impl ISendLib for Uln302 {
|
|
|
10
30
|
///
|
|
11
31
|
/// Calculates fees from: executor (message execution), DVNs (verification), and treasury (protocol fee).
|
|
12
32
|
fn quote(env: &Env, packet: &OutboundPacket, options: &Bytes, pay_in_zro: bool) -> MessagingFee {
|
|
13
|
-
let (executor_options, dvn_options
|
|
33
|
+
let (executor_options, dvn_options, packet_header, payload_hash) =
|
|
34
|
+
prepare_packet_and_options(env, packet, options);
|
|
14
35
|
|
|
15
36
|
// Executor fee
|
|
16
37
|
let executor_fee =
|
|
17
38
|
Self::quote_executor(env, &packet.sender, packet.dst_eid, packet.message.len(), &executor_options);
|
|
18
39
|
|
|
19
40
|
// DVNs fees
|
|
20
|
-
let packet_header = packet_codec_v1::encode_packet_header(env, packet);
|
|
21
|
-
let payload_hash = packet_codec_v1::payload_hash(env, packet);
|
|
22
41
|
let dvns_fee =
|
|
23
42
|
Self::quote_dvns(env, &packet.sender, packet.dst_eid, &packet_header, &payload_hash, &dvn_options);
|
|
24
43
|
|
|
25
44
|
// Treasury fee
|
|
26
45
|
let workers_fee = executor_fee + dvns_fee;
|
|
27
|
-
let
|
|
28
|
-
|
|
46
|
+
let treasury_client = LayerZeroTreasuryClient::new(env, &Self::treasury(env));
|
|
47
|
+
let treasury_fee = treasury_client.get_fee(&packet.sender, &packet.dst_eid, &workers_fee, &pay_in_zro);
|
|
29
48
|
|
|
30
49
|
if pay_in_zro {
|
|
31
50
|
MessagingFee { native_fee: workers_fee, zro_fee: treasury_fee }
|
|
@@ -40,28 +59,41 @@ impl ISendLib for Uln302 {
|
|
|
40
59
|
fn send(env: &Env, packet: &OutboundPacket, options: &Bytes, pay_in_zro: bool) -> FeesAndPacket {
|
|
41
60
|
Self::endpoint(env).require_auth();
|
|
42
61
|
|
|
43
|
-
let
|
|
44
|
-
|
|
45
|
-
let (executor_options, dvn_options) = worker_options::split_worker_options(env, options);
|
|
62
|
+
let (executor_options, dvn_options, packet_header, payload_hash) =
|
|
63
|
+
prepare_packet_and_options(env, packet, options);
|
|
46
64
|
|
|
47
65
|
// Executor fee
|
|
48
66
|
let executor_fee_recipient =
|
|
49
67
|
Self::assign_executor(env, &packet.sender, packet.dst_eid, packet.message.len(), &executor_options);
|
|
50
|
-
native_fee_recipients.push_back(executor_fee_recipient);
|
|
51
68
|
|
|
52
69
|
// DVNs fees
|
|
53
|
-
let packet_header = packet_codec_v1::encode_packet_header(env, packet);
|
|
54
|
-
let payload_hash = packet_codec_v1::payload_hash(env, packet);
|
|
55
70
|
let dvns_fee_recipients =
|
|
56
71
|
Self::assign_dvns(env, &packet.sender, packet.dst_eid, &packet_header, &payload_hash, &dvn_options);
|
|
72
|
+
|
|
73
|
+
// Collect all worker fees
|
|
74
|
+
let mut native_fee_recipients = vec![env, executor_fee_recipient];
|
|
57
75
|
native_fee_recipients.extend(dvns_fee_recipients.iter());
|
|
58
76
|
|
|
59
77
|
// Treasury fee
|
|
60
|
-
let
|
|
61
|
-
let
|
|
62
|
-
|
|
78
|
+
let total_worker_fee = native_fee_recipients.iter().map(|fee| fee.amount).sum();
|
|
79
|
+
let treasury_addr = Self::treasury(env);
|
|
80
|
+
let treasury_fee = LayerZeroTreasuryClient::new(env, &treasury_addr).get_fee(
|
|
81
|
+
&packet.sender,
|
|
82
|
+
&packet.dst_eid,
|
|
83
|
+
&total_worker_fee,
|
|
84
|
+
&pay_in_zro,
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
// Handle ZRO fee recipients
|
|
88
|
+
let mut zro_fee_recipients = vec![env];
|
|
63
89
|
if treasury_fee > 0 {
|
|
64
|
-
|
|
90
|
+
// The treasury contract address is used as the fixed fee recipient (rather than allowing
|
|
91
|
+
// the treasury admin to configure a custom receiver). This is because ZRO may be issued
|
|
92
|
+
// as a Stellar Classic Asset, which requires the recipient to have an established trustline.
|
|
93
|
+
// If an arbitrary receiver could be configured, a malicious treasury admin could set it to
|
|
94
|
+
// an address without a trustline, causing all token transfers to fail and effectively
|
|
95
|
+
// DOSing the OApp. Using the contract address ensures the recipient is always valid.
|
|
96
|
+
let treasury_fee_recipient = FeeRecipient { to: treasury_addr, amount: treasury_fee };
|
|
65
97
|
if pay_in_zro {
|
|
66
98
|
zro_fee_recipients.push_back(treasury_fee_recipient);
|
|
67
99
|
} else {
|
|
@@ -84,23 +116,23 @@ impl ISendLib for Uln302 {
|
|
|
84
116
|
#[contract_impl]
|
|
85
117
|
impl ISendUln302 for Uln302 {
|
|
86
118
|
/// Sets default executor configurations for multiple destination endpoints.
|
|
87
|
-
#[
|
|
119
|
+
#[only_auth]
|
|
88
120
|
fn set_default_executor_configs(env: &Env, params: &Vec<SetDefaultExecutorConfigParam>) {
|
|
89
121
|
for param in params {
|
|
90
122
|
param.config.validate_default_config(env);
|
|
91
123
|
UlnStorage::set_default_executor_configs(env, param.dst_eid, ¶m.config);
|
|
92
124
|
}
|
|
93
|
-
|
|
125
|
+
DefaultExecutorConfigsSet { params: params.clone() }.publish(env);
|
|
94
126
|
}
|
|
95
127
|
|
|
96
128
|
/// Sets default send ULN configurations for multiple destination endpoints.
|
|
97
|
-
#[
|
|
129
|
+
#[only_auth]
|
|
98
130
|
fn set_default_send_uln_configs(env: &Env, params: &Vec<SetDefaultUlnConfigParam>) {
|
|
99
131
|
for param in params {
|
|
100
132
|
param.config.validate_default_config(env);
|
|
101
133
|
UlnStorage::set_default_send_uln_configs(env, param.eid, ¶m.config);
|
|
102
134
|
}
|
|
103
|
-
|
|
135
|
+
DefaultSendUlnConfigsSet { params: params.clone() }.publish(env);
|
|
104
136
|
}
|
|
105
137
|
|
|
106
138
|
// ============================================================================================
|
|
@@ -109,6 +141,7 @@ impl ISendUln302 for Uln302 {
|
|
|
109
141
|
|
|
110
142
|
/// Returns the treasury address for fee collection.
|
|
111
143
|
fn treasury(env: &Env) -> Address {
|
|
144
|
+
// This is safe because the treasury is set in the constructor.
|
|
112
145
|
UlnStorage::treasury(env).unwrap()
|
|
113
146
|
}
|
|
114
147
|
|
|
@@ -124,7 +157,8 @@ impl ISendUln302 for Uln302 {
|
|
|
124
157
|
|
|
125
158
|
/// Returns the effective executor configuration by merging OApp config with default.
|
|
126
159
|
fn effective_executor_config(env: &Env, sender: &Address, dst_eid: u32) -> ExecutorConfig {
|
|
127
|
-
let default_config = Self::
|
|
160
|
+
let default_config = Self::default_executor_config(env, dst_eid)
|
|
161
|
+
.unwrap_or_panic(env, Uln302Error::DefaultExecutorConfigNotFound);
|
|
128
162
|
let oapp_config = Self::oapp_executor_config(env, sender, dst_eid).unwrap_or_default();
|
|
129
163
|
|
|
130
164
|
oapp_config.apply_default_config(&default_config)
|
|
@@ -142,13 +176,14 @@ impl ISendUln302 for Uln302 {
|
|
|
142
176
|
|
|
143
177
|
/// Returns the effective send ULN configuration by merging OApp config with default.
|
|
144
178
|
fn effective_send_uln_config(env: &Env, sender: &Address, dst_eid: u32) -> UlnConfig {
|
|
145
|
-
let default_config =
|
|
179
|
+
let default_config =
|
|
180
|
+
Self::default_send_uln_config(env, dst_eid).unwrap_or_panic(env, Uln302Error::DefaultSendUlnConfigNotFound);
|
|
146
181
|
let oapp_config = Self::oapp_send_uln_config(env, sender, dst_eid).unwrap_or(OAppUlnConfig::default(env));
|
|
147
182
|
|
|
148
|
-
let
|
|
149
|
-
|
|
183
|
+
let effective_config = oapp_config.apply_default_config(&default_config);
|
|
184
|
+
effective_config.validate_at_least_one_dvn(env); // validate the final config
|
|
150
185
|
|
|
151
|
-
|
|
186
|
+
effective_config
|
|
152
187
|
}
|
|
153
188
|
}
|
|
154
189
|
|
|
@@ -158,11 +193,6 @@ impl ISendUln302 for Uln302 {
|
|
|
158
193
|
|
|
159
194
|
impl Uln302 {
|
|
160
195
|
/// Sets OApp-specific executor configuration for a destination endpoint.
|
|
161
|
-
///
|
|
162
|
-
/// # Arguments
|
|
163
|
-
/// * `sender` - The sender OApp address
|
|
164
|
-
/// * `dst_eid` - The destination endpoint ID
|
|
165
|
-
/// * `config` - The OApp-specific executor configuration
|
|
166
196
|
pub(super) fn set_executor_config(env: &Env, sender: &Address, dst_eid: u32, config: &OAppExecutorConfig) {
|
|
167
197
|
UlnStorage::set_oapp_executor_configs(env, sender, dst_eid, config);
|
|
168
198
|
ExecutorConfigSet { sender: sender.clone(), dst_eid, config: config.clone() }.publish(env);
|
|
@@ -170,12 +200,6 @@ impl Uln302 {
|
|
|
170
200
|
|
|
171
201
|
/// Sets OApp-specific send ULN configuration for a destination endpoint.
|
|
172
202
|
///
|
|
173
|
-
/// # Arguments
|
|
174
|
-
/// * `sender` - The sender OApp address
|
|
175
|
-
/// * `dst_eid` - The destination endpoint ID
|
|
176
|
-
/// * `config` - The OApp-specific send ULN configuration
|
|
177
|
-
///
|
|
178
|
-
/// # Panics
|
|
179
203
|
/// Panics if the final effective config is invalid.
|
|
180
204
|
pub(super) fn set_send_uln_config(env: &Env, sender: &Address, dst_eid: u32, config: &OAppUlnConfig) {
|
|
181
205
|
config.validate_oapp_config(env);
|
|
@@ -184,7 +208,7 @@ impl Uln302 {
|
|
|
184
208
|
// validate the config by getting the effective config
|
|
185
209
|
let _ = Self::effective_send_uln_config(env, sender, dst_eid);
|
|
186
210
|
|
|
187
|
-
|
|
211
|
+
SendUlnConfigSet { sender: sender.clone(), dst_eid, config: config.clone() }.publish(env);
|
|
188
212
|
}
|
|
189
213
|
|
|
190
214
|
// ============================================================================================
|
|
@@ -192,31 +216,16 @@ impl Uln302 {
|
|
|
192
216
|
// ============================================================================================
|
|
193
217
|
|
|
194
218
|
/// Quotes the executor fee for message execution.
|
|
195
|
-
///
|
|
196
|
-
/// # Arguments
|
|
197
|
-
/// * `sender` - The sender OApp address
|
|
198
|
-
/// * `dst_eid` - The destination endpoint ID
|
|
199
|
-
/// * `message_length` - The length of the message
|
|
200
|
-
/// * `options` - The worker options
|
|
201
|
-
///
|
|
202
|
-
/// # Returns
|
|
203
|
-
/// The executor fee
|
|
204
219
|
fn quote_executor(env: &Env, sender: &Address, dst_eid: u32, message_length: u32, options: &Bytes) -> i128 {
|
|
205
|
-
|
|
206
|
-
|
|
220
|
+
// Get the effective executor config and validate message size
|
|
221
|
+
let executor_config = Self::effective_executor_config(env, sender, dst_eid);
|
|
222
|
+
assert_with_error!(env, message_length <= executor_config.max_message_size, Uln302Error::InvalidMessageSize);
|
|
223
|
+
|
|
224
|
+
let executor_client = LayerZeroExecutorClient::new(env, &executor_config.executor);
|
|
225
|
+
executor_client.get_fee(&env.current_contract_address(), sender, &dst_eid, &message_length, options)
|
|
207
226
|
}
|
|
208
227
|
|
|
209
228
|
/// Quotes the total DVN fees for message verification.
|
|
210
|
-
///
|
|
211
|
-
/// # Arguments
|
|
212
|
-
/// * `sender` - The sender OApp address
|
|
213
|
-
/// * `dst_eid` - The destination endpoint ID
|
|
214
|
-
/// * `packet_header` - The raw packet header bytes
|
|
215
|
-
/// * `payload_hash` - The hash of the message payload
|
|
216
|
-
/// * `dvn_options` - The worker options for each DVN
|
|
217
|
-
///
|
|
218
|
-
/// # Returns
|
|
219
|
-
/// The total DVN fees
|
|
220
229
|
fn quote_dvns(
|
|
221
230
|
env: &Env,
|
|
222
231
|
sender: &Address,
|
|
@@ -228,19 +237,17 @@ impl Uln302 {
|
|
|
228
237
|
let uln_config = Self::effective_send_uln_config(env, sender, dst_eid);
|
|
229
238
|
let send_lib = env.current_contract_address();
|
|
230
239
|
let confirmations = uln_config.confirmations;
|
|
231
|
-
|
|
232
|
-
let get_dvn_fee = |idx: usize, dvn_addr: Address| {
|
|
233
|
-
let dvn_client = LayerZeroDVNClient::new(env, &dvn_addr);
|
|
234
|
-
let dvn_opts = dvn_options.get(idx as u32).unwrap_or(bytes!(env));
|
|
235
|
-
dvn_client.get_fee(&send_lib, sender, &dst_eid, packet_header, payload_hash, &confirmations, &dvn_opts)
|
|
236
|
-
};
|
|
237
|
-
|
|
238
240
|
uln_config
|
|
239
241
|
.required_dvns
|
|
240
242
|
.iter()
|
|
241
243
|
.chain(uln_config.optional_dvns.iter())
|
|
242
244
|
.enumerate()
|
|
243
|
-
.
|
|
245
|
+
.map(|(idx, dvn_addr)| {
|
|
246
|
+
let dvn_client = LayerZeroDVNClient::new(env, &dvn_addr);
|
|
247
|
+
let dvn_opts = dvn_options.get(idx as u32).unwrap_or(bytes!(env));
|
|
248
|
+
dvn_client.get_fee(&send_lib, sender, &dst_eid, packet_header, payload_hash, &confirmations, &dvn_opts)
|
|
249
|
+
})
|
|
250
|
+
.sum()
|
|
244
251
|
}
|
|
245
252
|
|
|
246
253
|
// ============================================================================================
|
|
@@ -248,15 +255,6 @@ impl Uln302 {
|
|
|
248
255
|
// ============================================================================================
|
|
249
256
|
|
|
250
257
|
/// Assigns an executor job and returns the fee recipient.
|
|
251
|
-
///
|
|
252
|
-
/// # Arguments
|
|
253
|
-
/// * `sender` - The sender OApp address
|
|
254
|
-
/// * `dst_eid` - The destination endpoint ID
|
|
255
|
-
/// * `message_length` - The length of the message
|
|
256
|
-
/// * `options` - The worker options
|
|
257
|
-
///
|
|
258
|
-
/// # Returns
|
|
259
|
-
/// The fee recipient
|
|
260
258
|
fn assign_executor(
|
|
261
259
|
env: &Env,
|
|
262
260
|
sender: &Address,
|
|
@@ -264,25 +262,19 @@ impl Uln302 {
|
|
|
264
262
|
message_length: u32,
|
|
265
263
|
options: &Bytes,
|
|
266
264
|
) -> FeeRecipient {
|
|
267
|
-
|
|
265
|
+
// Get the effective executor config and validate message size
|
|
266
|
+
let executor_config = Self::effective_executor_config(env, sender, dst_eid);
|
|
267
|
+
assert_with_error!(env, message_length <= executor_config.max_message_size, Uln302Error::InvalidMessageSize);
|
|
268
|
+
|
|
269
|
+
let executor_client = LayerZeroExecutorClient::new(env, &executor_config.executor);
|
|
268
270
|
let recipient =
|
|
269
|
-
|
|
271
|
+
executor_client.assign_job(&env.current_contract_address(), sender, &dst_eid, &message_length, options);
|
|
270
272
|
|
|
271
|
-
ExecutorFeePaid { executor:
|
|
273
|
+
ExecutorFeePaid { executor: executor_client.address.clone(), fee: recipient.clone() }.publish(env);
|
|
272
274
|
recipient
|
|
273
275
|
}
|
|
274
276
|
|
|
275
277
|
/// Assigns DVN jobs and returns fee recipients for all DVNs.
|
|
276
|
-
///
|
|
277
|
-
/// # Arguments
|
|
278
|
-
/// * `sender` - The sender OApp address
|
|
279
|
-
/// * `dst_eid` - The destination endpoint ID
|
|
280
|
-
/// * `packet_header` - The raw packet header bytes
|
|
281
|
-
/// * `payload_hash` - The hash of the message payload
|
|
282
|
-
/// * `dvn_options` - The worker options for each DVN
|
|
283
|
-
///
|
|
284
|
-
/// # Returns
|
|
285
|
-
/// The fee recipients for all DVNs
|
|
286
278
|
fn assign_dvns(
|
|
287
279
|
env: &Env,
|
|
288
280
|
sender: &Address,
|
|
@@ -295,61 +287,43 @@ impl Uln302 {
|
|
|
295
287
|
let send_lib = env.current_contract_address();
|
|
296
288
|
let confirmations = uln_config.confirmations;
|
|
297
289
|
|
|
298
|
-
let
|
|
299
|
-
|
|
290
|
+
let mut dvns = vec![env];
|
|
291
|
+
let mut fees = vec![env];
|
|
292
|
+
for (idx, dvn_addr) in uln_config.required_dvns.iter().chain(uln_config.optional_dvns.iter()).enumerate() {
|
|
293
|
+
let dvn_client = LayerZeroDVNClient::new(env, &dvn_addr);
|
|
300
294
|
let dvn_opts = dvn_options.get(idx as u32).unwrap_or(bytes!(env));
|
|
301
|
-
dvn_client.assign_job(
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
295
|
+
let dvn_fee_recipient = dvn_client.assign_job(
|
|
296
|
+
&send_lib,
|
|
297
|
+
sender,
|
|
298
|
+
&dst_eid,
|
|
299
|
+
packet_header,
|
|
300
|
+
payload_hash,
|
|
301
|
+
&confirmations,
|
|
302
|
+
&dvn_opts,
|
|
303
|
+
);
|
|
304
|
+
fees.push_back(dvn_fee_recipient);
|
|
305
|
+
dvns.push_back(dvn_addr);
|
|
306
|
+
}
|
|
312
307
|
|
|
313
308
|
DVNFeePaid { dvns, fees: fees.clone() }.publish(env);
|
|
314
309
|
fees
|
|
315
310
|
}
|
|
311
|
+
}
|
|
316
312
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
/// Gets a validated executor client, ensuring message size is within limits.
|
|
322
|
-
///
|
|
323
|
-
/// # Arguments
|
|
324
|
-
/// * `sender` - The sender OApp address
|
|
325
|
-
/// * `dst_eid` - The destination endpoint ID
|
|
326
|
-
/// * `message_length` - The length of the message
|
|
327
|
-
///
|
|
328
|
-
/// # Returns
|
|
329
|
-
/// The executor client
|
|
330
|
-
fn get_validated_executor_client(
|
|
331
|
-
env: &Env,
|
|
332
|
-
sender: &Address,
|
|
333
|
-
dst_eid: u32,
|
|
334
|
-
message_length: u32,
|
|
335
|
-
) -> LayerZeroExecutorClient<'static> {
|
|
336
|
-
let executor_config = Self::effective_executor_config(env, sender, dst_eid);
|
|
337
|
-
assert_with_error!(env, message_length <= executor_config.max_message_size, Uln302Error::InvalidMessageSize);
|
|
338
|
-
LayerZeroExecutorClient::new(env, &executor_config.executor)
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/// Returns the treasury client.
|
|
342
|
-
fn get_treasury_client(env: &Env) -> LayerZeroTreasuryClient<'static> {
|
|
343
|
-
LayerZeroTreasuryClient::new(env, &Self::treasury(env))
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
/// Returns the default executor config or panics if not found.
|
|
347
|
-
fn expect_default_executor_config(env: &Env, dst_eid: u32) -> ExecutorConfig {
|
|
348
|
-
Self::default_executor_config(env, dst_eid).unwrap_or_panic(env, Uln302Error::DefaultExecutorConfigNotFound)
|
|
349
|
-
}
|
|
313
|
+
// ==============================================================================
|
|
314
|
+
// Helper Functions
|
|
315
|
+
// ==============================================================================
|
|
350
316
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
317
|
+
/// Prepares common packet and options needed for both quote and send flows.
|
|
318
|
+
///
|
|
319
|
+
/// Returns a tuple of (executor_options, dvn_options, packet_header, payload_hash)
|
|
320
|
+
fn prepare_packet_and_options(
|
|
321
|
+
env: &Env,
|
|
322
|
+
packet: &OutboundPacket,
|
|
323
|
+
options: &Bytes,
|
|
324
|
+
) -> (Bytes, Map<u32, Bytes>, Bytes, BytesN<32>) {
|
|
325
|
+
let (executor_options, dvn_options) = worker_options::split_worker_options(env, options);
|
|
326
|
+
let packet_header = packet_codec_v1::encode_packet_header(env, packet);
|
|
327
|
+
let payload_hash = packet_codec_v1::payload_hash(env, packet);
|
|
328
|
+
(executor_options, dvn_options, packet_header, payload_hash)
|
|
355
329
|
}
|
|
@@ -25,6 +25,11 @@ pub enum UlnStorage {
|
|
|
25
25
|
#[persistent(UlnConfig)]
|
|
26
26
|
DefaultReceiveUlnConfigs { src_eid: u32 },
|
|
27
27
|
|
|
28
|
+
/// The OApp-specific executor configurations for a sender and destination endpoint
|
|
29
|
+
#[persistent(OAppExecutorConfig)]
|
|
30
|
+
#[name("oapp_executor_configs")]
|
|
31
|
+
OAppExecutorConfigs { sender: Address, dst_eid: u32 },
|
|
32
|
+
|
|
28
33
|
/// The OApp-specific send ULN configurations for a sender and destination endpoint
|
|
29
34
|
#[persistent(OAppUlnConfig)]
|
|
30
35
|
#[name("oapp_send_uln_configs")]
|
|
@@ -35,11 +40,6 @@ pub enum UlnStorage {
|
|
|
35
40
|
#[name("oapp_receive_uln_configs")]
|
|
36
41
|
OAppReceiveUlnConfigs { receiver: Address, src_eid: u32 },
|
|
37
42
|
|
|
38
|
-
/// The OApp-specific executor configurations for a sender and destination endpoint
|
|
39
|
-
#[persistent(OAppExecutorConfig)]
|
|
40
|
-
#[name("oapp_executor_configs")]
|
|
41
|
-
OAppExecutorConfigs { sender: Address, dst_eid: u32 },
|
|
42
|
-
|
|
43
43
|
/// The confirmations for a DVN for a given header hash and payload hash
|
|
44
44
|
#[persistent(u64)]
|
|
45
45
|
Confirmations { dvn: Address, header_hash: BytesN<32>, payload_hash: BytesN<32> },
|
package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
extern crate std;
|
|
2
2
|
use crate::{
|
|
3
3
|
errors::Uln302Error,
|
|
4
|
-
events::
|
|
4
|
+
events::ReceiveUlnConfigSet,
|
|
5
5
|
interfaces::{OAppUlnConfig, UlnConfig},
|
|
6
6
|
tests::setup::{setup, TestSetup},
|
|
7
7
|
uln302::CONFIG_TYPE_RECEIVE_ULN,
|
|
@@ -35,8 +35,7 @@ fn test_effective_receive_uln_config_with_custom_config() {
|
|
|
35
35
|
let default_config = UlnConfig::generate(&setup.env, 15, 1, 2, 1);
|
|
36
36
|
let eid = 101;
|
|
37
37
|
|
|
38
|
-
setup.
|
|
39
|
-
setup.set_default_receive_uln_config(eid, default_config.clone());
|
|
38
|
+
setup.set_default_configs(eid, default_config.clone());
|
|
40
39
|
|
|
41
40
|
let TestSetup { env, uln302, endpoint, .. } = setup;
|
|
42
41
|
|
|
@@ -57,11 +56,11 @@ fn test_effective_receive_uln_config_with_custom_config() {
|
|
|
57
56
|
let params = vec![&env, SetConfigParam { eid, config_type: CONFIG_TYPE_RECEIVE_ULN, config: config_bytes }];
|
|
58
57
|
endpoint.set_config(&Address::generate(&env), &oapp, &uln302.address, ¶ms);
|
|
59
58
|
|
|
60
|
-
// Assert
|
|
59
|
+
// Assert ReceiveUlnConfigSet event was published immediately after the setter
|
|
61
60
|
assert_event(
|
|
62
61
|
&env,
|
|
63
62
|
&uln302.address,
|
|
64
|
-
|
|
63
|
+
ReceiveUlnConfigSet { config: custom_config.clone(), receiver: oapp.clone(), src_eid: eid },
|
|
65
64
|
);
|
|
66
65
|
|
|
67
66
|
let config = uln302.effective_receive_uln_config(&oapp, &eid);
|
|
@@ -77,8 +76,7 @@ fn test_effective_receive_uln_config_must_have_at_least_one_dvn() {
|
|
|
77
76
|
let default_config = UlnConfig::generate(&setup.env, 10, 1, 0, 0);
|
|
78
77
|
let eid = 101;
|
|
79
78
|
|
|
80
|
-
setup.
|
|
81
|
-
setup.set_default_send_uln_config(eid, default_config);
|
|
79
|
+
setup.set_default_configs(eid, default_config.clone());
|
|
82
80
|
|
|
83
81
|
let TestSetup { env, uln302, endpoint, .. } = setup;
|
|
84
82
|
|
package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
extern crate std;
|
|
2
2
|
use crate::{
|
|
3
3
|
errors::Uln302Error,
|
|
4
|
-
events::
|
|
4
|
+
events::DefaultReceiveUlnConfigsSet,
|
|
5
5
|
interfaces::{ReceiveUln302Client, SetDefaultUlnConfigParam, UlnConfig},
|
|
6
6
|
tests::setup::{setup, TestSetup},
|
|
7
7
|
};
|
|
@@ -32,8 +32,8 @@ fn test_set_default_receive_uln_configs() {
|
|
|
32
32
|
}]);
|
|
33
33
|
uln302.set_default_receive_uln_configs(&oapp_receive_uln_configs);
|
|
34
34
|
|
|
35
|
-
// Assert
|
|
36
|
-
assert_event(&env, &uln302.address,
|
|
35
|
+
// Assert DefaultReceiveUlnConfigSet event was published with all params
|
|
36
|
+
assert_event(&env, &uln302.address, DefaultReceiveUlnConfigsSet { params: oapp_receive_uln_configs.clone() });
|
|
37
37
|
|
|
38
38
|
let uln302_receive_client = ReceiveUln302Client::new(&env, &uln302.address);
|
|
39
39
|
for config in oapp_receive_uln_configs.clone() {
|
|
@@ -2,7 +2,7 @@ extern crate std;
|
|
|
2
2
|
|
|
3
3
|
use crate::{
|
|
4
4
|
errors::Uln302Error,
|
|
5
|
-
events::
|
|
5
|
+
events::SendUlnConfigSet,
|
|
6
6
|
interfaces::{OAppUlnConfig, UlnConfig},
|
|
7
7
|
tests::setup::{setup, TestSetup},
|
|
8
8
|
uln302::CONFIG_TYPE_SEND_ULN,
|
|
@@ -20,8 +20,7 @@ fn test_effective_send_uln_config_with_default_only() {
|
|
|
20
20
|
let default_config = UlnConfig::generate(&setup.env, 10, 2, 3, 2);
|
|
21
21
|
let eid = 100;
|
|
22
22
|
|
|
23
|
-
setup.
|
|
24
|
-
setup.set_default_receive_uln_config(eid, default_config.clone());
|
|
23
|
+
setup.set_default_configs(eid, default_config.clone());
|
|
25
24
|
|
|
26
25
|
let TestSetup { env, uln302, .. } = setup;
|
|
27
26
|
|
|
@@ -40,8 +39,7 @@ fn test_effective_send_uln_config_with_custom_config() {
|
|
|
40
39
|
let default_config = UlnConfig::generate(&setup.env, 10, 2, 3, 2);
|
|
41
40
|
let eid = 100;
|
|
42
41
|
|
|
43
|
-
setup.
|
|
44
|
-
setup.set_default_receive_uln_config(eid, default_config.clone());
|
|
42
|
+
setup.set_default_configs(eid, default_config.clone());
|
|
45
43
|
|
|
46
44
|
let TestSetup { env, uln302, endpoint, .. } = setup;
|
|
47
45
|
|
|
@@ -66,11 +64,11 @@ fn test_effective_send_uln_config_with_custom_config() {
|
|
|
66
64
|
let params = vec![&env, SetConfigParam { eid, config_type: CONFIG_TYPE_SEND_ULN, config: config_bytes }];
|
|
67
65
|
endpoint.set_config(&Address::generate(&env), &oapp, &uln302.address, ¶ms);
|
|
68
66
|
|
|
69
|
-
// Assert
|
|
67
|
+
// Assert SendUlnConfigSet event was published immediately after the setter
|
|
70
68
|
assert_event(
|
|
71
69
|
&env,
|
|
72
70
|
&uln302.address,
|
|
73
|
-
|
|
71
|
+
SendUlnConfigSet { config: custom_config.clone(), dst_eid: eid, sender: oapp.clone() },
|
|
74
72
|
);
|
|
75
73
|
|
|
76
74
|
// Get aggregated config - should have custom confirmations but default DVNs
|
|
@@ -89,8 +87,7 @@ fn test_effective_send_uln_config_must_have_at_least_one_dvn() {
|
|
|
89
87
|
let default_config = UlnConfig::generate(&setup.env, 10, 2, 0, 0);
|
|
90
88
|
let eid = 100;
|
|
91
89
|
|
|
92
|
-
setup.
|
|
93
|
-
setup.set_default_receive_uln_config(eid, default_config);
|
|
90
|
+
setup.set_default_configs(eid, default_config.clone());
|
|
94
91
|
|
|
95
92
|
let TestSetup { env, uln302, endpoint, .. } = setup;
|
|
96
93
|
|
package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs
CHANGED
|
@@ -7,7 +7,7 @@ use utils::testing_utils::assert_event;
|
|
|
7
7
|
|
|
8
8
|
use crate::{
|
|
9
9
|
errors::Uln302Error,
|
|
10
|
-
events::
|
|
10
|
+
events::DefaultExecutorConfigsSet,
|
|
11
11
|
interfaces::{ExecutorConfig, SendUln302Client, SetDefaultExecutorConfigParam},
|
|
12
12
|
tests::setup::{setup, TestSetup},
|
|
13
13
|
};
|
|
@@ -44,7 +44,7 @@ fn test_set_default_executor_configs() {
|
|
|
44
44
|
uln302.set_default_executor_configs(&executor_configs);
|
|
45
45
|
|
|
46
46
|
// Assert DefaultExecutorConfigSet event was published with all params
|
|
47
|
-
assert_event(&env, &uln302.address,
|
|
47
|
+
assert_event(&env, &uln302.address, DefaultExecutorConfigsSet { params: executor_configs.clone() });
|
|
48
48
|
|
|
49
49
|
let uln302_send_client = SendUln302Client::new(&env, &uln302.address);
|
|
50
50
|
for config_param in executor_configs.clone() {
|
package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs
CHANGED
|
@@ -7,7 +7,7 @@ use utils::testing_utils::assert_event;
|
|
|
7
7
|
|
|
8
8
|
use crate::{
|
|
9
9
|
errors::Uln302Error,
|
|
10
|
-
events::
|
|
10
|
+
events::DefaultSendUlnConfigsSet,
|
|
11
11
|
interfaces::{SendUln302Client, SetDefaultUlnConfigParam, UlnConfig},
|
|
12
12
|
tests::setup::{setup, TestSetup},
|
|
13
13
|
};
|
|
@@ -33,8 +33,8 @@ fn test_set_default_send_uln_configs() {
|
|
|
33
33
|
}]);
|
|
34
34
|
uln302.set_default_send_uln_configs(&oapp_send_uln_configs);
|
|
35
35
|
|
|
36
|
-
// Assert
|
|
37
|
-
assert_event(&env, &uln302.address,
|
|
36
|
+
// Assert DefaultSendUlnConfigSet event was published with all params
|
|
37
|
+
assert_event(&env, &uln302.address, DefaultSendUlnConfigsSet { params: oapp_send_uln_configs.clone() });
|
|
38
38
|
|
|
39
39
|
let uln302_send_client = SendUln302Client::new(&env, &uln302.address);
|
|
40
40
|
for config in oapp_send_uln_configs.clone() {
|
|
@@ -253,6 +253,15 @@ impl<'a> TestSetup<'a> {
|
|
|
253
253
|
self.uln302.set_default_executor_configs(¶ms);
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
+
/// Sets all three default configs (executor, send ULN, receive ULN) for an EID.
|
|
257
|
+
/// This is required for `is_supported_eid` to return true.
|
|
258
|
+
pub fn set_default_configs(&self, eid: u32, uln_config: UlnConfig) {
|
|
259
|
+
let executor_config = ExecutorConfig::generate(&self.env, 10000);
|
|
260
|
+
self.set_default_executor_config(eid, executor_config);
|
|
261
|
+
self.set_default_send_uln_config(eid, uln_config.clone());
|
|
262
|
+
self.set_default_receive_uln_config(eid, uln_config);
|
|
263
|
+
}
|
|
264
|
+
|
|
256
265
|
pub fn register_executor(&mut self, fee: i128) -> Address {
|
|
257
266
|
let executor = self.env.register(DummyExecutor, (fee,));
|
|
258
267
|
self.executors.push_back(executor.clone());
|
|
@@ -44,4 +44,9 @@ impl ExecutorConfig {
|
|
|
44
44
|
pub fn new(max_message_size: u32, executor: &Address) -> Self {
|
|
45
45
|
ExecutorConfig { max_message_size, executor: executor.clone() }
|
|
46
46
|
}
|
|
47
|
+
|
|
48
|
+
pub fn generate(env: &Env, max_message_size: u32) -> Self {
|
|
49
|
+
use soroban_sdk::testutils::Address as _;
|
|
50
|
+
ExecutorConfig { max_message_size, executor: Address::generate(env) }
|
|
51
|
+
}
|
|
47
52
|
}
|
|
@@ -15,8 +15,7 @@ fn test_get_oapp_receive_uln_config() {
|
|
|
15
15
|
let default_config = UlnConfig::generate(&setup.env, 15, 1, 2, 1);
|
|
16
16
|
let eid = 101;
|
|
17
17
|
|
|
18
|
-
setup.
|
|
19
|
-
setup.set_default_receive_uln_config(eid, default_config);
|
|
18
|
+
setup.set_default_configs(eid, default_config);
|
|
20
19
|
|
|
21
20
|
let TestSetup { env, uln302, endpoint, .. } = setup;
|
|
22
21
|
|
|
@@ -15,8 +15,7 @@ fn test_get_oapp_send_uln_config() {
|
|
|
15
15
|
let default_config = UlnConfig::generate(&setup.env, 10, 2, 3, 2);
|
|
16
16
|
let eid = 100;
|
|
17
17
|
|
|
18
|
-
setup.
|
|
19
|
-
setup.set_default_receive_uln_config(eid, default_config);
|
|
18
|
+
setup.set_default_configs(eid, default_config);
|
|
20
19
|
|
|
21
20
|
let TestSetup { env, uln302, endpoint, .. } = setup;
|
|
22
21
|
|