@layerzerolabs/protocol-stellar-v2 0.2.9 → 0.2.11
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 +245 -199
- package/.turbo/turbo-lint.log +79 -107
- package/.turbo/turbo-test.log +1017 -841
- package/Cargo.lock +13 -5
- package/contracts/common-macros/src/contract_impl.rs +6 -3
- package/contracts/common-macros/src/error.rs +9 -17
- package/contracts/common-macros/src/event.rs +4 -4
- package/contracts/common-macros/src/lib.rs +2 -2
- package/contracts/common-macros/src/ownable.rs +9 -5
- package/contracts/common-macros/src/tests/contract_impl.rs +178 -86
- package/contracts/common-macros/src/tests/error.rs +168 -0
- package/contracts/common-macros/src/tests/mod.rs +2 -4
- package/contracts/common-macros/src/tests/ownable.rs +37 -60
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +16 -6
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__error__snapshot_generated_contract_error_code.snap +20 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +3 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_only_owner_preserves_function_signature.snap +12 -2
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -1
- package/contracts/common-macros/src/tests/utils.rs +267 -0
- package/contracts/common-macros/src/ttl_configurable.rs +15 -12
- package/contracts/common-macros/src/utils.rs +35 -6
- package/contracts/message-libs/uln-302/src/receive_uln.rs +1 -1
- package/contracts/message-libs/uln-302/src/send_uln.rs +2 -2
- package/contracts/message-libs/uln-302/src/uln302.rs +2 -2
- package/contracts/oapp-macros/src/oapp_core.rs +1 -1
- package/contracts/oapps/oft/integration-tests/setup.rs +4 -3
- package/contracts/oapps/oft/src/default_oft_impl.rs +146 -0
- package/contracts/oapps/oft/src/extensions/mod.rs +3 -0
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +164 -0
- package/contracts/oapps/oft/src/extensions/pausable.rs +50 -0
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -0
- package/contracts/oapps/oft/src/lib.rs +2 -3
- package/contracts/oapps/oft/src/oft.rs +16 -85
- package/contracts/oapps/oft/src/oft_types/mint_burn.rs +1 -1
- package/contracts/oapps/oft/src/tests/extensions/mod.rs +11 -0
- package/contracts/oapps/oft/src/tests/extensions/setup.rs +888 -0
- package/contracts/oapps/oft/src/tests/extensions/test_oft_fee.rs +749 -0
- package/contracts/oapps/oft/src/tests/extensions/test_pausable.rs +432 -0
- package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1078 -0
- package/contracts/oapps/oft/src/tests/mod.rs +2 -0
- package/contracts/oapps/oft/src/tests/test_utils.rs +24 -6
- package/contracts/oapps/{oft-mint-burn → oft-std}/Cargo.toml +1 -8
- package/contracts/oapps/oft-std/src/lib.rs +5 -0
- package/contracts/oapps/oft-std/src/oft.rs +59 -0
- package/contracts/utils/src/ownable.rs +2 -2
- package/contracts/utils/src/tests/ownable.rs +0 -63
- package/contracts/utils/src/ttl.rs +19 -1
- package/contracts/workers/dvn/src/auth.rs +91 -27
- package/contracts/workers/dvn/src/dvn.rs +22 -20
- package/contracts/workers/dvn/src/interfaces/dvn.rs +48 -3
- package/contracts/workers/dvn/src/interfaces/multisig.rs +41 -0
- package/contracts/workers/dvn/src/lib.rs +6 -8
- package/contracts/workers/dvn/src/multisig.rs +6 -3
- package/contracts/workers/dvn/src/tests/auth.rs +1 -1
- package/contracts/workers/dvn/src/tests/dvn.rs +3 -4
- package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -1
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +4 -3
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +8 -6
- package/contracts/workers/executor/src/interfaces/executor.rs +5 -2
- package/contracts/workers/executor/src/lz_executor.rs +6 -6
- package/contracts/workers/price-feed/Cargo.toml +21 -0
- package/contracts/workers/price-feed/src/errors.rs +9 -0
- package/contracts/workers/price-feed/src/events.rs +30 -0
- package/contracts/workers/price-feed/src/lib.rs +11 -0
- package/contracts/workers/price-feed/src/price_feed.rs +265 -0
- package/contracts/workers/price-feed/src/storage.rs +42 -0
- package/contracts/workers/price-feed/src/types.rs +59 -0
- package/contracts/workers/worker/src/interfaces/dvn_fee_lib.rs +2 -1
- package/package.json +3 -3
- package/sdk/dist/generated/bml.js +3 -1
- package/sdk/dist/generated/counter.d.ts +102 -0
- package/sdk/dist/generated/counter.js +13 -1
- package/sdk/dist/generated/endpoint.js +3 -1
- package/sdk/dist/generated/sml.js +3 -1
- package/sdk/dist/generated/uln302.js +3 -1
- package/sdk/package.json +1 -1
- package/contracts/oapps/oft/src/macro_tests/mod.rs +0 -2
- package/contracts/oapps/oft/src/macro_tests/test_all_default.rs +0 -41
- package/contracts/oapps/oft/src/macro_tests/test_override.rs +0 -83
- package/contracts/oapps/oft-mint-burn/src/lib.rs +0 -3
- package/contracts/oapps/oft-mint-burn/src/oft.rs +0 -28
- package/contracts/oapps/oft-mint-burn/src/tests/mod.rs +0 -1
- package/contracts/workers/dvn/src/types.rs +0 -26
|
@@ -43,23 +43,15 @@
|
|
|
43
43
|
// inside this crate and in external crates implementing the OFT trait.
|
|
44
44
|
extern crate self as oft;
|
|
45
45
|
|
|
46
|
-
use crate::{
|
|
47
|
-
|
|
48
|
-
constants,
|
|
49
|
-
errors::OFTError,
|
|
50
|
-
events::{self, OFTSent},
|
|
51
|
-
storage::OFTStorage,
|
|
52
|
-
types::OFTReceipt,
|
|
53
|
-
utils::{address_to_bytes32, remove_dust, resolve_address, to_ld, to_sd},
|
|
54
|
-
};
|
|
55
|
-
use endpoint_v2::{MessagingComposerClient, Origin};
|
|
46
|
+
use crate::{errors::OFTError, storage::OFTStorage, types::OFTReceipt};
|
|
47
|
+
use endpoint_v2::Origin;
|
|
56
48
|
use oapp::{
|
|
57
49
|
oapp_core::{oapp_initialize, OAppCore},
|
|
58
50
|
oapp_options_type3::OAppOptionsType3,
|
|
59
51
|
oapp_receiver::OAppReceiver,
|
|
60
52
|
oapp_sender::OAppSender,
|
|
61
53
|
};
|
|
62
|
-
use soroban_sdk::{assert_with_error, contracttrait, token::TokenClient,
|
|
54
|
+
use soroban_sdk::{assert_with_error, contracttrait, token::TokenClient, Address, Bytes, BytesN, Env};
|
|
63
55
|
use utils::ownable::OwnableInitializer;
|
|
64
56
|
|
|
65
57
|
// =====================================================
|
|
@@ -74,12 +66,12 @@ pub fn oft_initialize<T: OFT + OwnableInitializer>(
|
|
|
74
66
|
token: &Address,
|
|
75
67
|
endpoint: &Address,
|
|
76
68
|
delegate: &Option<Address>,
|
|
69
|
+
shared_decimals: u32,
|
|
77
70
|
) {
|
|
78
71
|
// Initialize OApp (includes owner initialization)
|
|
79
72
|
oapp_initialize::<T>(env, owner, endpoint, delegate);
|
|
80
73
|
|
|
81
74
|
let local_decimals = TokenClient::new(env, token).decimals();
|
|
82
|
-
let shared_decimals = T::shared_decimals(env);
|
|
83
75
|
assert_with_error!(env, local_decimals >= shared_decimals, OFTError::InvalidLocalDecimals);
|
|
84
76
|
|
|
85
77
|
// Initialize OFT storage
|
|
@@ -142,14 +134,8 @@ pub trait OFTInner: OAppCore {
|
|
|
142
134
|
// =========================================================================
|
|
143
135
|
|
|
144
136
|
/// Calculates debit amounts without executing (view function).
|
|
145
|
-
fn __debit_view(env: &Env, amount_ld: i128, min_amount_ld: i128,
|
|
146
|
-
|
|
147
|
-
let amount_sent_ld = remove_dust(amount_ld, conversion_rate);
|
|
148
|
-
let amount_received_ld = amount_sent_ld;
|
|
149
|
-
|
|
150
|
-
assert_with_error!(env, amount_received_ld >= min_amount_ld, OFTError::SlippageExceeded);
|
|
151
|
-
|
|
152
|
-
OFTReceipt { amount_sent_ld, amount_received_ld }
|
|
137
|
+
fn __debit_view(env: &Env, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) -> OFTReceipt {
|
|
138
|
+
crate::default_oft_impl::default_debit_view(env, amount_ld, min_amount_ld, dst_eid)
|
|
153
139
|
}
|
|
154
140
|
|
|
155
141
|
/// Builds OFT message and combines options for cross-chain transfer.
|
|
@@ -162,18 +148,7 @@ pub trait OFTInner: OAppCore {
|
|
|
162
148
|
where
|
|
163
149
|
Self: OAppOptionsType3,
|
|
164
150
|
{
|
|
165
|
-
|
|
166
|
-
let conversion_rate = OFTStorage::decimal_conversion_rate(env).unwrap();
|
|
167
|
-
let msg = OFTMessage {
|
|
168
|
-
send_to: send_param.to.clone(),
|
|
169
|
-
amount_sd: to_sd(env, amount_ld, conversion_rate),
|
|
170
|
-
compose_from: if has_compose { Some(address_to_bytes32(sender)) } else { None },
|
|
171
|
-
compose_msg: if has_compose { Some(send_param.compose_msg.clone()) } else { None },
|
|
172
|
-
};
|
|
173
|
-
let (msg, _) = msg.encode(env);
|
|
174
|
-
let msg_type = if has_compose { constants::SEND_AND_CALL } else { constants::SEND };
|
|
175
|
-
|
|
176
|
-
(msg, Self::combine_options(env, send_param.dst_eid, msg_type, &send_param.extra_options))
|
|
151
|
+
crate::default_oft_impl::default_build_msg_and_options::<Self>(env, sender, send_param, amount_ld)
|
|
177
152
|
}
|
|
178
153
|
|
|
179
154
|
/// Handles OFT receive logic.
|
|
@@ -186,29 +161,7 @@ pub trait OFTInner: OAppCore {
|
|
|
186
161
|
_extra_data: &Bytes,
|
|
187
162
|
_value: i128,
|
|
188
163
|
) {
|
|
189
|
-
|
|
190
|
-
let send_to = resolve_address(env, &oft_msg.send_to);
|
|
191
|
-
|
|
192
|
-
let conversion_rate = OFTStorage::decimal_conversion_rate(env).unwrap();
|
|
193
|
-
let amount_received_ld =
|
|
194
|
-
Self::__credit(env, &send_to, to_ld(oft_msg.amount_sd, conversion_rate), origin.src_eid);
|
|
195
|
-
|
|
196
|
-
if oft_msg.is_composed() {
|
|
197
|
-
let compose_msg = OFTComposeMsg {
|
|
198
|
-
nonce: origin.nonce,
|
|
199
|
-
src_eid: origin.src_eid,
|
|
200
|
-
amount_ld: amount_received_ld,
|
|
201
|
-
compose_from: oft_msg.compose_from.unwrap(),
|
|
202
|
-
compose_msg: oft_msg.compose_msg.unwrap(),
|
|
203
|
-
}
|
|
204
|
-
.encode(env);
|
|
205
|
-
|
|
206
|
-
let endpoint = MessagingComposerClient::new(env, &Self::endpoint(env));
|
|
207
|
-
endpoint.send_compose(&env.current_contract_address(), &send_to, guid, &0, &compose_msg);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
events::OFTReceived { guid: guid.clone(), src_eid: origin.src_eid, to: send_to, amount_received_ld }
|
|
211
|
-
.publish(env);
|
|
164
|
+
crate::default_oft_impl::default_lz_receive::<Self>(env, _executor, origin, guid, message, _extra_data, _value)
|
|
212
165
|
}
|
|
213
166
|
}
|
|
214
167
|
|
|
@@ -236,8 +189,11 @@ pub trait OFT: OFTInner + OAppReceiver + OAppSender + OAppOptionsType3 {
|
|
|
236
189
|
}
|
|
237
190
|
|
|
238
191
|
/// Retrieves the shared decimals used for cross-chain normalization.
|
|
239
|
-
fn shared_decimals(
|
|
240
|
-
|
|
192
|
+
fn shared_decimals(env: &Env) -> u32 {
|
|
193
|
+
let token = Self::token(env);
|
|
194
|
+
let local_decimals = soroban_sdk::token::TokenClient::new(env, &token).decimals();
|
|
195
|
+
let conversion_rate = Self::decimal_conversion_rate(env);
|
|
196
|
+
local_decimals - conversion_rate.ilog10()
|
|
241
197
|
}
|
|
242
198
|
|
|
243
199
|
/// Retrieves the decimal conversion rate used for cross-chain normalization.
|
|
@@ -264,8 +220,7 @@ pub trait OFT: OFTInner + OAppReceiver + OAppSender + OAppOptionsType3 {
|
|
|
264
220
|
env: &Env,
|
|
265
221
|
send_param: &oft::types::SendParam,
|
|
266
222
|
) -> (oft::types::OFTLimit, soroban_sdk::Vec<oft::types::OFTFeeDetail>, oft::types::OFTReceipt) {
|
|
267
|
-
|
|
268
|
-
(oft::types::OFTLimit { min_amount_ld: 0, max_amount_ld: i128::MAX }, vec![env], oft_receipt)
|
|
223
|
+
crate::default_oft_impl::default_quote_oft::<Self>(env, send_param)
|
|
269
224
|
}
|
|
270
225
|
|
|
271
226
|
/// Quotes a send operation including LayerZero messaging fees.
|
|
@@ -275,11 +230,7 @@ pub trait OFT: OFTInner + OAppReceiver + OAppSender + OAppOptionsType3 {
|
|
|
275
230
|
send_param: &oft::types::SendParam,
|
|
276
231
|
pay_in_zro: bool,
|
|
277
232
|
) -> endpoint_v2::MessagingFee {
|
|
278
|
-
|
|
279
|
-
Self::__debit_view(env, send_param.amount_ld, send_param.min_amount_ld, send_param.dst_eid);
|
|
280
|
-
|
|
281
|
-
let (msg, options) = Self::__build_msg_and_options(env, sender, send_param, amount_received_ld);
|
|
282
|
-
Self::lz_quote(env, send_param.dst_eid, &msg, &options, pay_in_zro)
|
|
233
|
+
crate::default_oft_impl::default_quote_send::<Self>(env, sender, send_param, pay_in_zro)
|
|
283
234
|
}
|
|
284
235
|
|
|
285
236
|
/// Sends tokens cross-chain to another endpoint.
|
|
@@ -295,26 +246,6 @@ pub trait OFT: OFTInner + OAppReceiver + OAppSender + OAppOptionsType3 {
|
|
|
295
246
|
fee: &endpoint_v2::MessagingFee,
|
|
296
247
|
refund_address: &Address,
|
|
297
248
|
) -> (endpoint_v2::MessagingReceipt, oft::types::OFTReceipt) {
|
|
298
|
-
sender
|
|
299
|
-
|
|
300
|
-
let oft_receipt =
|
|
301
|
-
Self::__debit(env, sender, send_param.amount_ld, send_param.min_amount_ld, send_param.dst_eid);
|
|
302
|
-
|
|
303
|
-
let (msg, options) = Self::__build_msg_and_options(env, sender, send_param, oft_receipt.amount_received_ld);
|
|
304
|
-
let msg_receipt = Self::lz_send(env, sender, send_param.dst_eid, &msg, &options, fee, refund_address);
|
|
305
|
-
|
|
306
|
-
OFTSent {
|
|
307
|
-
guid: msg_receipt.guid.clone(),
|
|
308
|
-
dst_eid: send_param.dst_eid,
|
|
309
|
-
from: sender.clone(),
|
|
310
|
-
amount_sent_ld: oft_receipt.amount_sent_ld,
|
|
311
|
-
amount_received_ld: oft_receipt.amount_received_ld,
|
|
312
|
-
}
|
|
313
|
-
.publish(env);
|
|
314
|
-
|
|
315
|
-
(msg_receipt, oft_receipt)
|
|
249
|
+
crate::default_oft_impl::default_send::<Self>(env, sender, send_param, fee, refund_address)
|
|
316
250
|
}
|
|
317
|
-
|
|
318
|
-
// NOTE: `next_nonce`, `lz_receive`, etc. are inherited from OAppReceiver supertrait.
|
|
319
|
-
// Do NOT redefine them here to avoid method conflicts.
|
|
320
251
|
}
|
|
@@ -22,7 +22,7 @@ use crate::types::OFTReceipt;
|
|
|
22
22
|
/// `OFTReceipt` containing the amount sent and amount received
|
|
23
23
|
pub fn debit<T: OFT>(env: &Env, sender: &Address, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) -> OFTReceipt {
|
|
24
24
|
let receipt = T::__debit_view(env, amount_ld, min_amount_ld, dst_eid);
|
|
25
|
-
MintBurnTokenClient::new(env, &T::token(env)).burn(sender, &receipt.
|
|
25
|
+
MintBurnTokenClient::new(env, &T::token(env)).burn(sender, &receipt.amount_received_ld);
|
|
26
26
|
receipt
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//! Extension tests module.
|
|
2
|
+
//!
|
|
3
|
+
//! This module contains tests for OFT extensions (pausable, oft_fee, rate_limiter).
|
|
4
|
+
|
|
5
|
+
pub mod setup;
|
|
6
|
+
pub mod test_oft_fee;
|
|
7
|
+
pub mod test_pausable;
|
|
8
|
+
pub mod test_rate_limiter;
|
|
9
|
+
|
|
10
|
+
// Re-export commonly used items for convenience
|
|
11
|
+
pub use setup::{ExtensiveOFT, ExtensiveOFTClient, ExtensiveOFTTestSetup};
|