@layerzerolabs/protocol-stellar-v2 0.2.15 → 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 +350 -309
- package/.turbo/turbo-lint.log +146 -108
- package/.turbo/turbo-test.log +1423 -1238
- package/Cargo.lock +12 -0
- package/Cargo.toml +3 -0
- 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 +181 -30
- package/contracts/common-macros/src/lz_contract.rs +83 -0
- 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 +2 -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} +3 -3
- 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__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +7 -21
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +2 -2
- package/contracts/common-macros/src/ttl_configurable.rs +19 -34
- package/contracts/common-macros/src/ttl_extendable.rs +36 -0
- package/contracts/common-macros/src/upgradeable.rs +5 -5
- 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 +38 -40
- 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_v2/pay_messaging_fees.rs +3 -3
- package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +1 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +3 -3
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +3 -3
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +1 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +3 -3
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +1 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +4 -4
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +1 -1
- package/contracts/layerzero-views/src/layerzero_view.rs +3 -6
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +2 -2
- package/contracts/macro-integration-tests/tests/runtime/ownable/{only_owner_guard.rs → only_auth_guard.rs} +1 -1
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +1 -1
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +1 -1
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +0 -1
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.rs → only_auth_missing_env.rs} +3 -3
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.stderr → only_auth_missing_env.stderr} +4 -4
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +2 -3
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/{only_owner_env_param_variants.rs → only_auth_env_param_variants.rs} +9 -9
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +6 -6
- 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 +3 -3
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +1 -2
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +1 -2
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +9 -9
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +1 -1
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +1 -1
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +2 -2
- package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +7 -9
- package/contracts/message-libs/treasury/src/errors.rs +2 -2
- 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/storage.rs +1 -1
- package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +1 -1
- package/contracts/message-libs/treasury/src/treasury.rs +14 -16
- package/contracts/message-libs/uln-302/src/receive_uln.rs +13 -2
- package/contracts/message-libs/uln-302/src/send_uln.rs +23 -3
- package/contracts/message-libs/uln-302/src/uln302.rs +6 -24
- 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.rs → setup_sml.rs} +48 -80
- 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 -43
- 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 +93 -78
- 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 -8
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +25 -17
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +7 -7
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +14 -15
- package/contracts/oapps/oapp-macros/src/generators.rs +128 -0
- package/contracts/oapps/oapp-macros/src/lib.rs +113 -56
- package/contracts/oapps/oft/integration-tests/setup.rs +25 -7
- package/contracts/oapps/oft/src/errors.rs +6 -1
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +8 -8
- package/contracts/oapps/oft/src/extensions/pausable.rs +4 -4
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +5 -5
- package/contracts/oapps/oft/src/lib.rs +4 -2
- package/contracts/oapps/oft/src/oft.rs +24 -64
- package/contracts/oapps/oft/src/oft_impl.rs +201 -0
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -3
- 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 +36 -22
- 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 +5 -3
- 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_utils.rs +45 -23
- package/contracts/oapps/oft/src/types.rs +20 -0
- package/contracts/oapps/oft-std/integration-tests/setup.rs +4 -2
- package/contracts/oapps/oft-std/src/oft.rs +24 -6
- package/contracts/upgrader/src/lib.rs +4 -4
- package/contracts/utils/src/auth.rs +44 -0
- package/contracts/utils/src/errors.rs +27 -5
- package/contracts/utils/src/lib.rs +3 -0
- package/contracts/utils/src/multisig.rs +211 -0
- package/contracts/utils/src/ownable.rs +12 -10
- 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 +1 -0
- package/contracts/utils/src/tests/multisig.rs +731 -0
- package/contracts/utils/src/tests/option_ext.rs +2 -5
- package/contracts/utils/src/tests/ownable.rs +16 -5
- package/contracts/utils/src/tests/ttl_configurable.rs +27 -16
- package/contracts/utils/src/tests/upgradeable.rs +4 -2
- package/contracts/utils/src/ttl_configurable.rs +23 -8
- package/contracts/utils/src/ttl_extendable.rs +27 -0
- package/contracts/utils/src/upgradeable.rs +2 -0
- package/contracts/workers/dvn/Cargo.toml +1 -1
- package/contracts/workers/dvn/src/auth.rs +7 -7
- package/contracts/workers/dvn/src/dvn.rs +10 -38
- package/contracts/workers/dvn/src/errors.rs +0 -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 +1 -1
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +3 -6
- package/contracts/workers/executor/src/auth.rs +80 -16
- package/contracts/workers/executor/src/executor.rs +5 -31
- 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/executor_fee_lib.rs +3 -6
- package/contracts/workers/executor-helper/Cargo.toml +1 -1
- package/contracts/workers/executor-helper/src/executor_helper.rs +53 -73
- package/contracts/workers/price-feed/Cargo.toml +1 -1
- package/contracts/workers/price-feed/src/price_feed.rs +7 -10
- package/contracts/workers/worker/src/errors.rs +4 -0
- package/contracts/workers/worker/src/tests/worker.rs +7 -6
- package/contracts/workers/worker/src/worker.rs +20 -16
- 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 +65 -8
- package/sdk/dist/generated/bml.js +70 -34
- package/sdk/dist/generated/counter.d.ts +167 -42
- package/sdk/dist/generated/counter.js +86 -45
- package/sdk/dist/generated/dvn.d.ts +282 -229
- package/sdk/dist/generated/dvn.js +119 -81
- package/sdk/dist/generated/dvn_fee_lib.d.ts +142 -67
- package/sdk/dist/generated/dvn_fee_lib.js +64 -24
- package/sdk/dist/generated/endpoint.d.ts +97 -22
- package/sdk/dist/generated/endpoint.js +75 -37
- package/sdk/dist/generated/executor.d.ts +117 -85
- package/sdk/dist/generated/executor.js +102 -59
- package/sdk/dist/generated/executor_fee_lib.d.ts +162 -78
- package/sdk/dist/generated/executor_fee_lib.js +104 -57
- package/sdk/dist/generated/executor_helper.d.ts +133 -21
- package/sdk/dist/generated/executor_helper.js +99 -50
- package/sdk/dist/generated/oft_std.d.ts +233 -55
- package/sdk/dist/generated/oft_std.js +99 -54
- package/sdk/dist/generated/price_feed.d.ts +142 -67
- package/sdk/dist/generated/price_feed.js +64 -24
- package/sdk/dist/generated/sml.d.ts +113 -32
- package/sdk/dist/generated/sml.js +93 -49
- package/sdk/dist/generated/treasury.d.ts +896 -0
- package/sdk/dist/generated/treasury.js +219 -0
- package/sdk/dist/generated/uln302.d.ts +113 -32
- package/sdk/dist/generated/uln302.js +93 -49
- package/sdk/dist/generated/upgrader.d.ts +2 -2
- package/sdk/dist/generated/upgrader.js +1 -1
- package/sdk/dist/index.d.ts +2 -0
- package/sdk/dist/index.js +3 -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 +4 -2
- package/sdk/src/index.ts +4 -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} +185 -310
- package/sdk/test/suites/constants.ts +22 -2
- package/sdk/test/suites/globalSetup.ts +450 -0
- package/sdk/test/suites/localnet.ts +23 -6
- package/sdk/test/upgrader.test.ts +7 -16
- package/sdk/test/utils.ts +558 -85
- package/sdk/vitest.config.ts +21 -0
- package/tools/ts-bindings-gen/src/main.rs +1 -0
- package/turbo.json +2 -0
- package/contracts/common-macros/src/contract_impl.rs +0 -52
- package/contracts/common-macros/src/ownable.rs +0 -41
- package/contracts/common-macros/src/tests/contract_impl.rs +0 -386
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +0 -12
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +0 -50
- package/contracts/oapps/oapp-macros/src/oapp_core.rs +0 -41
- package/contracts/oapps/oapp-macros/src/oapp_full.rs +0 -21
- package/contracts/oapps/oapp-macros/src/oapp_options_type3.rs +0 -31
- package/contracts/oapps/oapp-macros/src/oapp_receiver.rs +0 -48
- package/contracts/oapps/oapp-macros/src/oapp_sender.rs +0 -21
- package/contracts/oapps/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 -152
- package/contracts/workers/dvn/src/interfaces/multisig.rs +0 -56
- package/contracts/workers/dvn/src/multisig.rs +0 -157
- package/sdk/test/index.test.ts +0 -375
- /package/sdk/test/suites/{testUpgradeable.ts → dummyContractClient.ts} +0 -0
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
use crate::{errors::SimpleMessageLibError, storage::SmlStorage};
|
|
2
|
-
use common_macros::{contract_impl,
|
|
2
|
+
use common_macros::{contract_impl, lz_contract, only_auth};
|
|
3
3
|
use endpoint_v2::{
|
|
4
4
|
FeeRecipient, FeesAndPacket, IMessageLib, ISendLib, LayerZeroEndpointV2Client, MessageLibType, MessageLibVersion,
|
|
5
5
|
MessagingFee, Origin, OutboundPacket, SetConfigParam,
|
|
6
6
|
};
|
|
7
7
|
use message_lib_common::packet_codec_v1;
|
|
8
|
-
use soroban_sdk::{address_payload::AddressPayload,
|
|
8
|
+
use soroban_sdk::{address_payload::AddressPayload, panic_with_error, vec, Address, Bytes, BytesN, Env, Vec};
|
|
9
9
|
|
|
10
|
-
#[
|
|
11
|
-
#[ttl_configurable]
|
|
12
|
-
#[ownable]
|
|
10
|
+
#[lz_contract]
|
|
13
11
|
pub struct SimpleMessageLib;
|
|
14
12
|
|
|
15
13
|
#[contract_impl]
|
|
@@ -43,22 +41,22 @@ impl SimpleMessageLib {
|
|
|
43
41
|
// Admin Manager
|
|
44
42
|
// ============================================================================================
|
|
45
43
|
|
|
46
|
-
#[
|
|
44
|
+
#[only_auth]
|
|
47
45
|
pub fn set_fee_recipient(env: &Env, fee_recipient: &Address) {
|
|
48
46
|
SmlStorage::set_fee_recipient(env, fee_recipient);
|
|
49
47
|
}
|
|
50
48
|
|
|
51
|
-
#[
|
|
49
|
+
#[only_auth]
|
|
52
50
|
pub fn set_native_fee(env: &Env, native_fee: &i128) {
|
|
53
51
|
SmlStorage::set_native_fee(env, native_fee);
|
|
54
52
|
}
|
|
55
53
|
|
|
56
|
-
#[
|
|
54
|
+
#[only_auth]
|
|
57
55
|
pub fn set_zro_fee(env: &Env, zro_fee: &i128) {
|
|
58
56
|
SmlStorage::set_zro_fee(env, zro_fee);
|
|
59
57
|
}
|
|
60
58
|
|
|
61
|
-
#[
|
|
59
|
+
#[only_auth]
|
|
62
60
|
pub fn set_whitelisted_caller(env: &Env, whitelisted_caller: &Address) {
|
|
63
61
|
SmlStorage::set_whitelisted_caller(env, whitelisted_caller);
|
|
64
62
|
}
|
|
@@ -4,8 +4,8 @@ use soroban_sdk::{contractclient, Address, Env};
|
|
|
4
4
|
///
|
|
5
5
|
/// The ZRO token fee library calculates treasury fees when paying in ZRO tokens.
|
|
6
6
|
/// This allows for custom fee calculation logic when users opt to pay fees in ZRO.
|
|
7
|
-
#[contractclient(name = "
|
|
8
|
-
pub trait
|
|
7
|
+
#[contractclient(name = "ZroFeeLibClient")]
|
|
8
|
+
pub trait IZroFeeLib {
|
|
9
9
|
/// Get the treasury fee in ZRO tokens based on the worker fee.
|
|
10
10
|
///
|
|
11
11
|
/// # Arguments
|
|
@@ -70,7 +70,7 @@ fn test_get_fee_zro_payment_requires_fee_lib() {
|
|
|
70
70
|
|
|
71
71
|
// Should fail when trying to pay in ZRO without fee lib set
|
|
72
72
|
let result = setup.treasury.try_get_fee(&sender, &dst_eid, &1000, &true);
|
|
73
|
-
assert_eq!(result.err().unwrap().ok().unwrap(), TreasuryError::
|
|
73
|
+
assert_eq!(result.err().unwrap().ok().unwrap(), TreasuryError::ZroFeeLibNotSet.into());
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
// ============================================================================
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
use crate::{
|
|
2
2
|
errors::TreasuryError,
|
|
3
|
-
events::{FeeEnabledSet, NativeFeeBpSet, TokenWithdrawn,
|
|
4
|
-
interfaces::
|
|
3
|
+
events::{FeeEnabledSet, NativeFeeBpSet, TokenWithdrawn, ZroFeeLibSet},
|
|
4
|
+
interfaces::ZroFeeLibClient,
|
|
5
5
|
storage::TreasuryStorage,
|
|
6
6
|
};
|
|
7
|
-
use common_macros::{contract_impl,
|
|
7
|
+
use common_macros::{contract_impl, lz_contract, only_auth};
|
|
8
8
|
use message_lib_common::interfaces::ILayerZeroTreasury;
|
|
9
|
-
use soroban_sdk::{assert_with_error,
|
|
9
|
+
use soroban_sdk::{assert_with_error, token::Client, Address, Env};
|
|
10
10
|
use utils::option_ext::OptionExt;
|
|
11
11
|
|
|
12
12
|
/// Denominator for basis point calculations (10000 = 100%).
|
|
13
13
|
const BPS_DENOMINATOR: u32 = 10000;
|
|
14
14
|
|
|
15
|
-
#[
|
|
16
|
-
#[ttl_configurable]
|
|
17
|
-
#[ownable]
|
|
15
|
+
#[lz_contract]
|
|
18
16
|
pub struct Treasury;
|
|
19
17
|
|
|
20
18
|
#[contract_impl]
|
|
@@ -31,7 +29,7 @@ impl Treasury {
|
|
|
31
29
|
///
|
|
32
30
|
/// # Arguments
|
|
33
31
|
/// * `native_fee_bp` - Fee percentage in basis points (0-10000, where 10000 = 100%)
|
|
34
|
-
#[
|
|
32
|
+
#[only_auth]
|
|
35
33
|
pub fn set_native_fee_bp(env: &Env, native_fee_bp: u32) {
|
|
36
34
|
assert_with_error!(env, native_fee_bp <= BPS_DENOMINATOR, TreasuryError::InvalidNativeFeeBp);
|
|
37
35
|
TreasuryStorage::set_native_fee_bp(env, &native_fee_bp);
|
|
@@ -42,7 +40,7 @@ impl Treasury {
|
|
|
42
40
|
///
|
|
43
41
|
/// # Arguments
|
|
44
42
|
/// * `fee_enabled` - Whether fee collection is enabled
|
|
45
|
-
#[
|
|
43
|
+
#[only_auth]
|
|
46
44
|
pub fn set_fee_enabled(env: &Env, fee_enabled: bool) {
|
|
47
45
|
TreasuryStorage::set_fee_enabled(env, &fee_enabled);
|
|
48
46
|
FeeEnabledSet { fee_enabled }.publish(env);
|
|
@@ -52,10 +50,10 @@ impl Treasury {
|
|
|
52
50
|
///
|
|
53
51
|
/// # Arguments
|
|
54
52
|
/// * `zro_fee_lib` - The ZRO fee library contract address, or `None` to remove
|
|
55
|
-
#[
|
|
53
|
+
#[only_auth]
|
|
56
54
|
pub fn set_zro_fee_lib(env: &Env, zro_fee_lib: &Option<Address>) {
|
|
57
55
|
TreasuryStorage::set_or_remove_zro_fee_lib(env, zro_fee_lib);
|
|
58
|
-
|
|
56
|
+
ZroFeeLibSet { zro_fee_lib: zro_fee_lib.clone() }.publish(env);
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
/// Withdraws any token (including native XLM) from the contract to a specified address.
|
|
@@ -66,7 +64,7 @@ impl Treasury {
|
|
|
66
64
|
/// * `token` - The token contract address (can be native XLM or any other token)
|
|
67
65
|
/// * `to` - The recipient address
|
|
68
66
|
/// * `amount` - The amount to withdraw (must be positive)
|
|
69
|
-
#[
|
|
67
|
+
#[only_auth]
|
|
70
68
|
pub fn withdraw_token(env: &Env, token: &Address, to: &Address, amount: i128) {
|
|
71
69
|
Client::new(env, token).transfer(&env.current_contract_address(), to, &amount);
|
|
72
70
|
TokenWithdrawn { token: token.clone(), to: to.clone(), amount }.publish(env);
|
|
@@ -101,9 +99,9 @@ impl Treasury {
|
|
|
101
99
|
}
|
|
102
100
|
|
|
103
101
|
/// Returns the ZRO fee library client, panics if not set.
|
|
104
|
-
fn expect_zro_fee_lib_client(env: &Env) ->
|
|
105
|
-
let fee_lib = Self::zro_fee_lib(env).unwrap_or_panic(env, TreasuryError::
|
|
106
|
-
|
|
102
|
+
fn expect_zro_fee_lib_client(env: &Env) -> ZroFeeLibClient<'static> {
|
|
103
|
+
let fee_lib = Self::zro_fee_lib(env).unwrap_or_panic(env, TreasuryError::ZroFeeLibNotSet);
|
|
104
|
+
ZroFeeLibClient::new(env, &fee_lib)
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
107
|
|
|
@@ -130,7 +128,7 @@ impl ILayerZeroTreasury for Treasury {
|
|
|
130
128
|
|
|
131
129
|
let zro_fee =
|
|
132
130
|
Self::expect_zro_fee_lib_client(env).get_fee(sender, &dst_eid, &total_native_fee, &native_treasury_fee);
|
|
133
|
-
assert_with_error!(env, zro_fee >= 0, TreasuryError::
|
|
131
|
+
assert_with_error!(env, zro_fee >= 0, TreasuryError::InvalidZroFee);
|
|
134
132
|
zro_fee
|
|
135
133
|
}
|
|
136
134
|
}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
use super
|
|
1
|
+
use super::{Uln302, Uln302Args, Uln302Client};
|
|
2
|
+
use crate::{
|
|
3
|
+
errors::Uln302Error,
|
|
4
|
+
events::{DefaultReceiveUlnConfigsSet, PayloadVerified, ReceiveUlnConfigSet},
|
|
5
|
+
interfaces::{IReceiveUln302, OAppUlnConfig, SetDefaultUlnConfigParam, UlnConfig},
|
|
6
|
+
storage::UlnStorage,
|
|
7
|
+
};
|
|
8
|
+
use common_macros::{contract_impl, only_auth};
|
|
9
|
+
use endpoint_v2::{util, LayerZeroEndpointV2Client, Origin};
|
|
10
|
+
use message_lib_common::packet_codec_v1::{self, PacketHeader};
|
|
11
|
+
use soroban_sdk::{address_payload::AddressPayload, assert_with_error, Address, Bytes, BytesN, Env, Vec};
|
|
12
|
+
use utils::option_ext::OptionExt;
|
|
2
13
|
|
|
3
14
|
// ============================================================================================
|
|
4
15
|
// IReceiveUln302 Contract Implementation
|
|
@@ -61,7 +72,7 @@ impl IReceiveUln302 for Uln302 {
|
|
|
61
72
|
/// Sets default receive ULN configurations for multiple source endpoints.
|
|
62
73
|
///
|
|
63
74
|
/// Validates each config and stores it as the default for the specified source EID.
|
|
64
|
-
#[
|
|
75
|
+
#[only_auth]
|
|
65
76
|
fn set_default_receive_uln_configs(env: &Env, params: &Vec<SetDefaultUlnConfigParam>) {
|
|
66
77
|
for param in params {
|
|
67
78
|
param.config.validate_default_config(env);
|
|
@@ -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
|
|
@@ -96,7 +116,7 @@ impl ISendLib for Uln302 {
|
|
|
96
116
|
#[contract_impl]
|
|
97
117
|
impl ISendUln302 for Uln302 {
|
|
98
118
|
/// Sets default executor configurations for multiple destination endpoints.
|
|
99
|
-
#[
|
|
119
|
+
#[only_auth]
|
|
100
120
|
fn set_default_executor_configs(env: &Env, params: &Vec<SetDefaultExecutorConfigParam>) {
|
|
101
121
|
for param in params {
|
|
102
122
|
param.config.validate_default_config(env);
|
|
@@ -106,7 +126,7 @@ impl ISendUln302 for Uln302 {
|
|
|
106
126
|
}
|
|
107
127
|
|
|
108
128
|
/// Sets default send ULN configurations for multiple destination endpoints.
|
|
109
|
-
#[
|
|
129
|
+
#[only_auth]
|
|
110
130
|
fn set_default_send_uln_configs(env: &Env, params: &Vec<SetDefaultUlnConfigParam>) {
|
|
111
131
|
for param in params {
|
|
112
132
|
param.config.validate_default_config(env);
|
|
@@ -1,30 +1,14 @@
|
|
|
1
1
|
use crate::{
|
|
2
2
|
errors::Uln302Error,
|
|
3
|
-
|
|
4
|
-
DVNFeePaid, DefaultExecutorConfigsSet, DefaultReceiveUlnConfigsSet, DefaultSendUlnConfigsSet,
|
|
5
|
-
ExecutorConfigSet, ExecutorFeePaid, PayloadVerified, ReceiveUlnConfigSet, SendUlnConfigSet,
|
|
6
|
-
},
|
|
7
|
-
interfaces::{
|
|
8
|
-
ExecutorConfig, IReceiveUln302, ISendUln302, OAppExecutorConfig, OAppUlnConfig, SetDefaultExecutorConfigParam,
|
|
9
|
-
SetDefaultUlnConfigParam, UlnConfig,
|
|
10
|
-
},
|
|
3
|
+
interfaces::{IReceiveUln302, ISendUln302},
|
|
11
4
|
storage::UlnStorage,
|
|
12
5
|
};
|
|
13
|
-
use common_macros::{contract_impl,
|
|
14
|
-
use endpoint_v2::{
|
|
15
|
-
util, FeeRecipient, FeesAndPacket, IMessageLib, ISendLib, LayerZeroEndpointV2Client, MessageLibType,
|
|
16
|
-
MessageLibVersion, MessagingFee, Origin, OutboundPacket, SetConfigParam,
|
|
17
|
-
};
|
|
18
|
-
use message_lib_common::{
|
|
19
|
-
interfaces::{LayerZeroDVNClient, LayerZeroExecutorClient, LayerZeroTreasuryClient},
|
|
20
|
-
packet_codec_v1::{self, PacketHeader},
|
|
21
|
-
worker_options,
|
|
22
|
-
};
|
|
6
|
+
use common_macros::{contract_impl, lz_contract};
|
|
7
|
+
use endpoint_v2::{IMessageLib, MessageLibType, MessageLibVersion, SetConfigParam};
|
|
23
8
|
use soroban_sdk::{
|
|
24
|
-
|
|
25
|
-
assert_with_error, bytes, contract, panic_with_error, vec,
|
|
9
|
+
assert_with_error, panic_with_error,
|
|
26
10
|
xdr::{FromXdr, ToXdr},
|
|
27
|
-
Address, Bytes,
|
|
11
|
+
Address, Bytes, Env, Vec,
|
|
28
12
|
};
|
|
29
13
|
use utils::option_ext::OptionExt;
|
|
30
14
|
|
|
@@ -32,9 +16,7 @@ pub const CONFIG_TYPE_EXECUTOR: u32 = 1;
|
|
|
32
16
|
pub const CONFIG_TYPE_SEND_ULN: u32 = 2;
|
|
33
17
|
pub const CONFIG_TYPE_RECEIVE_ULN: u32 = 3;
|
|
34
18
|
|
|
35
|
-
#[
|
|
36
|
-
#[ttl_configurable]
|
|
37
|
-
#[ownable]
|
|
19
|
+
#[lz_contract]
|
|
38
20
|
pub struct Uln302;
|
|
39
21
|
|
|
40
22
|
#[contract_impl]
|
|
@@ -22,4 +22,17 @@ assert_unordered = "0.3.5"
|
|
|
22
22
|
simple-message-lib = { workspace = true }
|
|
23
23
|
message-lib-common = { workspace = true, features = ["testutils"] }
|
|
24
24
|
endpoint-v2 = { workspace = true, features = ["testutils"] }
|
|
25
|
-
executor = { workspace = true, features = ["testutils"] }
|
|
25
|
+
executor = { workspace = true, features = ["testutils"] }
|
|
26
|
+
uln302 = { workspace = true, features = ["testutils"] }
|
|
27
|
+
dvn = { workspace = true, features = ["testutils"] }
|
|
28
|
+
dvn-fee-lib = { workspace = true }
|
|
29
|
+
executor-fee-lib = { workspace = true }
|
|
30
|
+
worker = { workspace = true }
|
|
31
|
+
treasury = { workspace = true, features = ["testutils"] }
|
|
32
|
+
price-feed = { workspace = true }
|
|
33
|
+
executor-helper = { workspace = true }
|
|
34
|
+
# For real DVN signature verification in integration tests
|
|
35
|
+
k256 = "0.13"
|
|
36
|
+
sha3 = "0.10"
|
|
37
|
+
rand = "0.8"
|
|
38
|
+
ed25519-dalek = "2"
|
|
@@ -2,17 +2,17 @@ extern crate std;
|
|
|
2
2
|
|
|
3
3
|
use crate::{
|
|
4
4
|
counter::{Counter, CounterClient},
|
|
5
|
-
integration_tests::utils::
|
|
5
|
+
integration_tests::utils::{
|
|
6
|
+
address_to_bytes32, decode_packet, register_library, set_peer, set_zro, ChainSetupCommon,
|
|
7
|
+
},
|
|
6
8
|
};
|
|
7
|
-
use endpoint_v2::{EndpointV2, EndpointV2Client};
|
|
9
|
+
use endpoint_v2::{EndpointV2, EndpointV2Client, OutboundPacket};
|
|
10
|
+
use message_lib_common::packet_codec_v1;
|
|
8
11
|
use simple_message_lib::{SimpleMessageLib, SimpleMessageLibClient};
|
|
9
12
|
use soroban_sdk::{
|
|
10
|
-
address_payload::AddressPayload,
|
|
11
|
-
log,
|
|
12
13
|
testutils::{Address as _, MockAuth, MockAuthInvoke},
|
|
13
|
-
Address,
|
|
14
|
+
Address, Bytes, Env, IntoVal,
|
|
14
15
|
};
|
|
15
|
-
use utils::buffer_reader::BufferReader;
|
|
16
16
|
|
|
17
17
|
pub struct ChainSetup<'a> {
|
|
18
18
|
pub eid: u32,
|
|
@@ -23,6 +23,38 @@ pub struct ChainSetup<'a> {
|
|
|
23
23
|
pub counter: CounterClient<'a>,
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
impl<'a> ChainSetupCommon<'a> for ChainSetup<'a> {
|
|
27
|
+
fn counter(&self) -> &CounterClient<'a> {
|
|
28
|
+
&self.counter
|
|
29
|
+
}
|
|
30
|
+
fn endpoint(&self) -> &EndpointV2Client<'a> {
|
|
31
|
+
&self.endpoint
|
|
32
|
+
}
|
|
33
|
+
fn native_token(&self) -> &Address {
|
|
34
|
+
&self.native_token
|
|
35
|
+
}
|
|
36
|
+
fn owner(&self) -> &Address {
|
|
37
|
+
&self.owner
|
|
38
|
+
}
|
|
39
|
+
fn validate_packet(&self, env: &Env, packet_event: &(Bytes, Bytes, Address)) -> OutboundPacket {
|
|
40
|
+
let packet = decode_packet(env, &packet_event.0);
|
|
41
|
+
let encoded_header = packet_codec_v1::encode_packet_header(env, &packet);
|
|
42
|
+
let payload_hash = packet_codec_v1::payload_hash(env, &packet);
|
|
43
|
+
|
|
44
|
+
env.mock_auths(&[MockAuth {
|
|
45
|
+
address: &self.owner,
|
|
46
|
+
invoke: &MockAuthInvoke {
|
|
47
|
+
contract: &self.sml.address,
|
|
48
|
+
fn_name: "validate_packet",
|
|
49
|
+
args: (&encoded_header, &payload_hash).into_val(env),
|
|
50
|
+
sub_invokes: &[],
|
|
51
|
+
},
|
|
52
|
+
}]);
|
|
53
|
+
self.sml.validate_packet(&encoded_header, &payload_hash);
|
|
54
|
+
packet
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
26
58
|
pub struct TestSetup<'a> {
|
|
27
59
|
pub env: Env,
|
|
28
60
|
|
|
@@ -31,7 +63,7 @@ pub struct TestSetup<'a> {
|
|
|
31
63
|
}
|
|
32
64
|
|
|
33
65
|
fn setup_chain<'a>(env: &Env, owner: &Address) -> ChainSetup<'a> {
|
|
34
|
-
// Create ZRO token
|
|
66
|
+
// Create ZRO token for endpoint fees
|
|
35
67
|
let zro_sac = env.register_stellar_asset_contract_v2(owner.clone());
|
|
36
68
|
let zro_token = zro_sac.address();
|
|
37
69
|
|
|
@@ -44,19 +76,8 @@ fn setup_chain<'a>(env: &Env, owner: &Address) -> ChainSetup<'a> {
|
|
|
44
76
|
let sml = SimpleMessageLibClient::new(env, &sml_address);
|
|
45
77
|
let counter = CounterClient::new(env, &counter_address);
|
|
46
78
|
|
|
47
|
-
|
|
48
|
-
env
|
|
49
|
-
address: &owner,
|
|
50
|
-
invoke: &MockAuthInvoke {
|
|
51
|
-
contract: &endpoint_address,
|
|
52
|
-
fn_name: "set_zro",
|
|
53
|
-
args: (&zro_token,).into_val(env),
|
|
54
|
-
sub_invokes: &[],
|
|
55
|
-
},
|
|
56
|
-
}]);
|
|
57
|
-
endpoint.set_zro(&zro_token);
|
|
58
|
-
|
|
59
|
-
register_library(env, &owner, &endpoint, &sml.address);
|
|
79
|
+
set_zro(env, owner, &endpoint, &zro_token);
|
|
80
|
+
register_library(env, owner, &endpoint, &sml.address);
|
|
60
81
|
|
|
61
82
|
let eid = endpoint.eid();
|
|
62
83
|
let native_token = endpoint.native_token();
|
|
@@ -66,25 +87,20 @@ fn setup_chain<'a>(env: &Env, owner: &Address) -> ChainSetup<'a> {
|
|
|
66
87
|
pub fn setup<'a>() -> TestSetup<'a> {
|
|
67
88
|
let env = Env::default();
|
|
68
89
|
let owner = Address::generate(&env);
|
|
69
|
-
let sac = env.register_stellar_asset_contract_v2(owner.clone());
|
|
70
|
-
log!(&env, "native_token: {:?}", sac.address());
|
|
71
90
|
|
|
72
91
|
let chain_a = setup_chain(&env, &owner);
|
|
73
92
|
let chain_b = setup_chain(&env, &owner);
|
|
74
93
|
|
|
75
|
-
log!(&env, "endpoint_a: {:?}", chain_a.endpoint.address);
|
|
76
|
-
log!(&env, "native_token_a: {:?}", chain_a.native_token);
|
|
77
|
-
log!(&env, "counter_a: {:?}", chain_a.counter.address);
|
|
78
|
-
log!(&env, "sml_a: {:?}", chain_a.sml.address);
|
|
79
|
-
|
|
80
|
-
log!(&env, "endpoint_b: {:?}", chain_b.endpoint.address);
|
|
81
|
-
log!(&env, "native_token_b: {:?}", chain_b.native_token);
|
|
82
|
-
log!(&env, "counter_b: {:?}", chain_b.counter.address);
|
|
83
|
-
log!(&env, "sml_b: {:?}", chain_b.sml.address);
|
|
84
|
-
|
|
85
94
|
TestSetup { env, chain_a, chain_b }
|
|
86
95
|
}
|
|
87
96
|
|
|
97
|
+
pub fn wired_setup<'a>() -> TestSetup<'a> {
|
|
98
|
+
let test_setup = setup();
|
|
99
|
+
wire_endpoint(&test_setup.env, &[&test_setup.chain_a, &test_setup.chain_b]);
|
|
100
|
+
wire_counter(&test_setup.env, &[&test_setup.chain_a, &test_setup.chain_b]);
|
|
101
|
+
test_setup
|
|
102
|
+
}
|
|
103
|
+
|
|
88
104
|
pub fn wire_endpoint(env: &Env, chains: &[&ChainSetup<'_>]) {
|
|
89
105
|
for chain in chains {
|
|
90
106
|
for other_chain in chains {
|
|
@@ -114,33 +130,6 @@ pub fn wire_counter(env: &Env, chains: &[&ChainSetup<'_>]) {
|
|
|
114
130
|
}
|
|
115
131
|
}
|
|
116
132
|
|
|
117
|
-
pub fn set_peer(env: &Env, owner: &Address, counter: &CounterClient<'_>, dst_eid: u32, peer: &BytesN<32>) {
|
|
118
|
-
let peer_option = Some(peer.clone());
|
|
119
|
-
env.mock_auths(&[MockAuth {
|
|
120
|
-
address: owner,
|
|
121
|
-
invoke: &MockAuthInvoke {
|
|
122
|
-
contract: &counter.address,
|
|
123
|
-
fn_name: "set_peer",
|
|
124
|
-
args: (&dst_eid, &peer_option).into_val(env),
|
|
125
|
-
sub_invokes: &[],
|
|
126
|
-
},
|
|
127
|
-
}]);
|
|
128
|
-
counter.set_peer(&dst_eid, &peer_option);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
pub fn register_library(env: &Env, owner: &Address, endpoint: &EndpointV2Client<'_>, lib: &Address) {
|
|
132
|
-
env.mock_auths(&[MockAuth {
|
|
133
|
-
address: owner,
|
|
134
|
-
invoke: &MockAuthInvoke {
|
|
135
|
-
contract: &endpoint.address,
|
|
136
|
-
fn_name: "register_library",
|
|
137
|
-
args: (lib,).into_val(env),
|
|
138
|
-
sub_invokes: &[],
|
|
139
|
-
},
|
|
140
|
-
}]);
|
|
141
|
-
endpoint.register_library(lib);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
133
|
pub fn set_default_send_library(
|
|
145
134
|
env: &Env,
|
|
146
135
|
owner: &Address,
|
|
@@ -178,24 +167,3 @@ pub fn set_default_receive_library(
|
|
|
178
167
|
}]);
|
|
179
168
|
endpoint.set_default_receive_library(&src_eid, lib, &0u64);
|
|
180
169
|
}
|
|
181
|
-
|
|
182
|
-
pub fn decode_packet(env: &Env, encoded_packet: &soroban_sdk::Bytes) -> endpoint_v2::OutboundPacket {
|
|
183
|
-
use message_lib_common::packet_codec_v1::*;
|
|
184
|
-
|
|
185
|
-
let header = decode_packet_header(env, &encoded_packet.slice(0..HEADER_LENGTH));
|
|
186
|
-
let payload = encoded_packet.slice(HEADER_LENGTH..);
|
|
187
|
-
|
|
188
|
-
let mut payload_reader = BufferReader::new(&payload);
|
|
189
|
-
let guid = payload_reader.read_bytes_n::<32>();
|
|
190
|
-
let message = payload_reader.read_bytes_until_end();
|
|
191
|
-
|
|
192
|
-
endpoint_v2::OutboundPacket {
|
|
193
|
-
nonce: header.nonce,
|
|
194
|
-
src_eid: header.src_eid,
|
|
195
|
-
sender: Address::from_payload(env, AddressPayload::ContractIdHash(header.sender)),
|
|
196
|
-
dst_eid: header.dst_eid,
|
|
197
|
-
receiver: header.receiver,
|
|
198
|
-
guid,
|
|
199
|
-
message,
|
|
200
|
-
}
|
|
201
|
-
}
|