@layerzerolabs/protocol-stellar-v2 0.2.12 → 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
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
//! LayerZeroView contract - unified view interface for querying protocol state.
|
|
2
|
+
//!
|
|
3
|
+
//! This contract provides view functions for:
|
|
4
|
+
//! - Endpoint view functions (initializable, verifiable, executable)
|
|
5
|
+
//! - ULN302 view functions (verification state with DVN checks)
|
|
6
|
+
|
|
7
|
+
use crate::{
|
|
8
|
+
storage::LayerZeroViewStorage,
|
|
9
|
+
types::{empty_payload_hash, nil_payload_hash, ExecutionState, VerificationState},
|
|
10
|
+
LayerZeroViewError,
|
|
11
|
+
};
|
|
12
|
+
use common_macros::{contract_impl, ownable, ttl_configurable, upgradeable};
|
|
13
|
+
use endpoint_v2::{LayerZeroEndpointV2Client, MessageLibManagerClient, MessagingChannelClient, Origin};
|
|
14
|
+
use message_lib_common::packet_codec_v1::{decode_packet_header, PacketHeader};
|
|
15
|
+
use soroban_sdk::{address_payload::AddressPayload, assert_with_error, contract, Address, Bytes, BytesN, Env};
|
|
16
|
+
use uln302::ReceiveUln302Client;
|
|
17
|
+
use utils::upgradeable::UpgradeableInternal;
|
|
18
|
+
|
|
19
|
+
#[contract]
|
|
20
|
+
#[ttl_configurable]
|
|
21
|
+
#[upgradeable]
|
|
22
|
+
#[ownable]
|
|
23
|
+
pub struct LayerZeroView;
|
|
24
|
+
|
|
25
|
+
#[contract_impl]
|
|
26
|
+
impl LayerZeroView {
|
|
27
|
+
pub fn __constructor(env: &Env, owner: &Address, endpoint: &Address, uln302: &Address) {
|
|
28
|
+
Self::init_owner(env, owner);
|
|
29
|
+
LayerZeroViewStorage::set_endpoint(env, endpoint);
|
|
30
|
+
LayerZeroViewStorage::set_uln302(env, uln302);
|
|
31
|
+
|
|
32
|
+
// Cache the local endpoint ID for efficiency
|
|
33
|
+
let endpoint_client = LayerZeroEndpointV2Client::new(env, endpoint);
|
|
34
|
+
let local_eid = endpoint_client.eid();
|
|
35
|
+
LayerZeroViewStorage::set_local_eid(env, &local_eid);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// =========================================================================
|
|
39
|
+
// Storage Accessors
|
|
40
|
+
// =========================================================================
|
|
41
|
+
|
|
42
|
+
/// Returns the endpoint address.
|
|
43
|
+
pub fn endpoint(env: &Env) -> Address {
|
|
44
|
+
LayerZeroViewStorage::endpoint(env).unwrap()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// Returns the Uln302 address.
|
|
48
|
+
pub fn uln302(env: &Env) -> Address {
|
|
49
|
+
LayerZeroViewStorage::uln302(env).unwrap()
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/// Returns the local endpoint ID.
|
|
53
|
+
pub fn local_eid(env: &Env) -> u32 {
|
|
54
|
+
LayerZeroViewStorage::local_eid(env).unwrap()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// =========================================================================
|
|
58
|
+
// Endpoint View Functions
|
|
59
|
+
// =========================================================================
|
|
60
|
+
|
|
61
|
+
/// Checks if a messaging path can be initialized for the given origin and receiver.
|
|
62
|
+
pub fn initializable(env: &Env, origin: &Origin, receiver: &Address) -> bool {
|
|
63
|
+
LayerZeroEndpointV2Client::new(env, &Self::endpoint(env)).initializable(origin, receiver)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/// Checks if a message can be verified at the endpoint.
|
|
67
|
+
///
|
|
68
|
+
/// Verifies:
|
|
69
|
+
/// 1. Receive library is valid for this receiver and source
|
|
70
|
+
/// 2. Endpoint nonce check passes
|
|
71
|
+
/// 3. Payload hash is not empty
|
|
72
|
+
pub fn verifiable(
|
|
73
|
+
env: &Env,
|
|
74
|
+
origin: &Origin,
|
|
75
|
+
receiver: &Address,
|
|
76
|
+
receive_lib: &Address,
|
|
77
|
+
payload_hash: &BytesN<32>,
|
|
78
|
+
) -> bool {
|
|
79
|
+
let endpoint_address = Self::endpoint(env);
|
|
80
|
+
let endpoint = LayerZeroEndpointV2Client::new(env, &endpoint_address);
|
|
81
|
+
let msglib_manager = MessageLibManagerClient::new(env, &endpoint_address);
|
|
82
|
+
|
|
83
|
+
// Check if receive library is valid for this receiver and source
|
|
84
|
+
if !msglib_manager.is_valid_receive_library(receiver, &origin.src_eid, receive_lib) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Check if endpoint says it's verifiable
|
|
89
|
+
if !endpoint.verifiable(origin, receiver) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Empty payload hash is not allowed for verification
|
|
94
|
+
if payload_hash == &empty_payload_hash(env) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
true
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/// Returns the execution state of a message.
|
|
102
|
+
pub fn executable(env: &Env, origin: &Origin, receiver: &Address) -> ExecutionState {
|
|
103
|
+
let messaging_channel = MessagingChannelClient::new(env, &Self::endpoint(env));
|
|
104
|
+
|
|
105
|
+
let payload_hash =
|
|
106
|
+
messaging_channel.inbound_payload_hash(receiver, &origin.src_eid, &origin.sender, &origin.nonce);
|
|
107
|
+
|
|
108
|
+
let empty_hash = empty_payload_hash(env);
|
|
109
|
+
let nil_hash = nil_payload_hash(env);
|
|
110
|
+
|
|
111
|
+
// Executed: payload hash has been cleared (None) and nonce <= lazy_inbound_nonce
|
|
112
|
+
if payload_hash.is_none()
|
|
113
|
+
&& origin.nonce <= messaging_channel.lazy_inbound_nonce(receiver, &origin.src_eid, &origin.sender)
|
|
114
|
+
{
|
|
115
|
+
return ExecutionState::Executed;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Executable: nonce has not been executed, not nilified, and nonce <= inbound_nonce
|
|
119
|
+
if let Some(ref hash) = payload_hash {
|
|
120
|
+
if hash != &nil_hash
|
|
121
|
+
&& origin.nonce <= messaging_channel.inbound_nonce(receiver, &origin.src_eid, &origin.sender)
|
|
122
|
+
{
|
|
123
|
+
return ExecutionState::Executable;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// VerifiedButNotExecutable: payload hash exists but is not empty or nil
|
|
128
|
+
if let Some(ref hash) = payload_hash {
|
|
129
|
+
if hash != &empty_hash && hash != &nil_hash {
|
|
130
|
+
return ExecutionState::VerifiedButNotExecutable;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Default: NotExecutable
|
|
135
|
+
ExecutionState::NotExecutable
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// =========================================================================
|
|
139
|
+
// ULN302 View Functions
|
|
140
|
+
// =========================================================================
|
|
141
|
+
|
|
142
|
+
/// Returns the combined verification state of a message.
|
|
143
|
+
///
|
|
144
|
+
/// This function checks:
|
|
145
|
+
/// 1. Packet header validity (dst_eid matches local_eid)
|
|
146
|
+
/// 2. Endpoint initializable status
|
|
147
|
+
/// 3. Endpoint verifiable status
|
|
148
|
+
/// 4. ULN verifiable status (DVN confirmations)
|
|
149
|
+
pub fn uln_verifiable(env: &Env, packet_header: &Bytes, payload_hash: &BytesN<32>) -> VerificationState {
|
|
150
|
+
// Decode and validate header
|
|
151
|
+
let header: PacketHeader = decode_packet_header(env, packet_header);
|
|
152
|
+
assert_with_error!(env, header.dst_eid == Self::local_eid(env), LayerZeroViewError::InvalidEID);
|
|
153
|
+
|
|
154
|
+
// Extract receiver address from header
|
|
155
|
+
let receiver = Address::from_payload(env, AddressPayload::ContractIdHash(header.receiver.clone()));
|
|
156
|
+
|
|
157
|
+
// Build Origin from header
|
|
158
|
+
let origin = Origin { src_eid: header.src_eid, sender: header.sender.clone(), nonce: header.nonce };
|
|
159
|
+
|
|
160
|
+
// Check endpoint initializable
|
|
161
|
+
let endpoint = LayerZeroEndpointV2Client::new(env, &Self::endpoint(env));
|
|
162
|
+
|
|
163
|
+
if !endpoint.initializable(&origin, &receiver) {
|
|
164
|
+
return VerificationState::NotInitializable;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Check endpoint verifiable - if false, message is already verified
|
|
168
|
+
let uln302_address = Self::uln302(env);
|
|
169
|
+
if !Self::__endpoint_verifiable(env, &origin, &receiver, &uln302_address, payload_hash) {
|
|
170
|
+
return VerificationState::Verified;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Check ULN verifiable (DVN confirmations)
|
|
174
|
+
let uln302 = ReceiveUln302Client::new(env, &uln302_address);
|
|
175
|
+
if uln302.verifiable(packet_header, payload_hash) {
|
|
176
|
+
return VerificationState::Verifiable;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Still waiting for DVN verifications
|
|
180
|
+
VerificationState::Verifying
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// ============================================================================
|
|
185
|
+
// Internal Helper Functions
|
|
186
|
+
// ============================================================================
|
|
187
|
+
|
|
188
|
+
impl LayerZeroView {
|
|
189
|
+
/// Checks if the message can be verified at the endpoint for ULN verification.
|
|
190
|
+
///
|
|
191
|
+
/// This matches EVM's `_endpointVerifiable` which:
|
|
192
|
+
/// 1. Calls `verifiable(origin, receiver, receiveUln302, payloadHash)`
|
|
193
|
+
/// 2. Checks if the payload hash has already been verified
|
|
194
|
+
fn __endpoint_verifiable(
|
|
195
|
+
env: &Env,
|
|
196
|
+
origin: &Origin,
|
|
197
|
+
receiver: &Address,
|
|
198
|
+
uln302: &Address,
|
|
199
|
+
payload_hash: &BytesN<32>,
|
|
200
|
+
) -> bool {
|
|
201
|
+
// Check verifiable
|
|
202
|
+
if !Self::verifiable(env, origin, receiver, uln302, payload_hash) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Check if payload hash has already been verified
|
|
207
|
+
let messaging_channel = MessagingChannelClient::new(env, &Self::endpoint(env));
|
|
208
|
+
let existing_hash =
|
|
209
|
+
messaging_channel.inbound_payload_hash(receiver, &origin.src_eid, &origin.sender, &origin.nonce);
|
|
210
|
+
|
|
211
|
+
if existing_hash.as_ref() == Some(payload_hash) {
|
|
212
|
+
return false; // Already verified with this payload hash
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
true
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// ============================================================================
|
|
220
|
+
// Upgradeable Implementation
|
|
221
|
+
// ============================================================================
|
|
222
|
+
|
|
223
|
+
impl UpgradeableInternal for LayerZeroView {
|
|
224
|
+
type MigrationData = ();
|
|
225
|
+
|
|
226
|
+
fn __migrate(_env: &Env, _migration_data: &Self::MigrationData) {
|
|
227
|
+
// No migration logic needed for initial upgrade capability
|
|
228
|
+
}
|
|
229
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//! LayerZero View Contract for Stellar
|
|
2
|
+
//!
|
|
3
|
+
//! This crate provides the `LayerZeroView` contract for querying LayerZero protocol state:
|
|
4
|
+
//!
|
|
5
|
+
//! **Endpoint View Functions:**
|
|
6
|
+
//! - `initializable`: Check if a messaging path can be initialized
|
|
7
|
+
//! - `verifiable`: Check if a message can be verified at the endpoint
|
|
8
|
+
//! - `executable`: Get the execution state of a message
|
|
9
|
+
//!
|
|
10
|
+
//! **ULN302 View Functions:**
|
|
11
|
+
//! - `uln_verifiable`: Get combined verification state (endpoint + DVN checks)
|
|
12
|
+
//!
|
|
13
|
+
//! These contracts are designed for use by:
|
|
14
|
+
//! - **Executors**: To check when messages are ready for execution
|
|
15
|
+
//! - **DVNs**: To track verification progress
|
|
16
|
+
//! - **Block Explorers/UIs**: To display message status to users
|
|
17
|
+
|
|
18
|
+
#![no_std]
|
|
19
|
+
|
|
20
|
+
mod errors;
|
|
21
|
+
mod layerzero_view;
|
|
22
|
+
mod storage;
|
|
23
|
+
mod types;
|
|
24
|
+
|
|
25
|
+
#[cfg(test)]
|
|
26
|
+
mod tests;
|
|
27
|
+
|
|
28
|
+
// Re-export contract
|
|
29
|
+
pub use layerzero_view::{LayerZeroView, LayerZeroViewClient};
|
|
30
|
+
|
|
31
|
+
// Re-export storage
|
|
32
|
+
pub use storage::LayerZeroViewStorage;
|
|
33
|
+
|
|
34
|
+
// Re-export types
|
|
35
|
+
pub use types::{empty_payload_hash, nil_payload_hash, ExecutionState, VerificationState};
|
|
36
|
+
|
|
37
|
+
// Re-export errors
|
|
38
|
+
pub use errors::LayerZeroViewError;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//! Storage definitions for LayerZero view contracts.
|
|
2
|
+
|
|
3
|
+
use common_macros::storage;
|
|
4
|
+
use soroban_sdk::Address;
|
|
5
|
+
|
|
6
|
+
/// Storage keys for LayerZeroView contract.
|
|
7
|
+
#[storage]
|
|
8
|
+
pub enum LayerZeroViewStorage {
|
|
9
|
+
/// The LayerZero endpoint address.
|
|
10
|
+
#[instance(Address)]
|
|
11
|
+
Endpoint,
|
|
12
|
+
/// The Uln302 contract address.
|
|
13
|
+
#[instance(Address)]
|
|
14
|
+
Uln302,
|
|
15
|
+
/// The local endpoint ID (cached for efficiency).
|
|
16
|
+
#[instance(u32)]
|
|
17
|
+
LocalEid,
|
|
18
|
+
}
|