@layerzerolabs/protocol-stellar-v2 0.2.53 → 0.2.54

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.
@@ -45,8 +45,16 @@ impl ExecutorHelper {
45
45
  executor.require_auth();
46
46
  if params.value != 0 {
47
47
  value_payer.require_auth();
48
+ transfer_value(env, value_payer, executor, params.value);
48
49
  }
49
- Self::execute_internal(env, executor, params, value_payer);
50
+ LayerZeroReceiverClient::new(env, &params.receiver).lz_receive(
51
+ executor,
52
+ &params.origin,
53
+ &params.guid,
54
+ &params.message,
55
+ &params.extra_data,
56
+ &params.value,
57
+ );
50
58
  }
51
59
 
52
60
  /// Records a failed `lz_receive` execution for off-chain processing.
@@ -113,38 +121,6 @@ impl ExecutorHelper {
113
121
  ExecutorClient::new(env, executor).native_drop(admin, origin, &dst_eid, oapp, params);
114
122
  }
115
123
 
116
- /// Executes `native_drop` followed by `lz_receive`.
117
- pub fn native_drop_and_execute(
118
- env: &Env,
119
- executor: &Address,
120
- admin: &Address,
121
- origin: &Origin,
122
- dst_eid: u32,
123
- oapp: &Address,
124
- native_drop_params: &Vec<NativeDropParams>,
125
- execute_params: &ExecutionParams,
126
- ) {
127
- executor.require_auth();
128
- admin.require_auth();
129
- Self::native_drop(env, executor, admin, origin, dst_eid, oapp, native_drop_params);
130
- Self::execute_internal(env, executor, execute_params, admin);
131
- }
132
-
133
- /// Internal execute logic without auth checks.
134
- /// Callers (`execute` / `native_drop_and_execute`) are responsible for authorization.
135
- fn execute_internal(env: &Env, executor: &Address, params: &ExecutionParams, value_payer: &Address) {
136
- if params.value != 0 {
137
- transfer_value(env, value_payer, executor, params.value);
138
- }
139
- LayerZeroReceiverClient::new(env, &params.receiver).lz_receive(
140
- executor,
141
- &params.origin,
142
- &params.guid,
143
- &params.message,
144
- &params.extra_data,
145
- &params.value,
146
- );
147
- }
148
124
  }
149
125
 
150
126
  #[inline]
@@ -339,125 +339,3 @@ fn test_lz_compose_alert_with_empty_reason() {
339
339
  assert_eq!(record.unwrap().reason.len(), 0);
340
340
  }
341
341
 
342
- // =============================================================================
343
- // native_drop_and_execute() tests
344
- // =============================================================================
345
-
346
- #[test]
347
- fn test_native_drop_and_execute_calls_both() {
348
- let setup = TestSetup::new();
349
- let origin = setup.default_origin();
350
- let dst_eid = 2u32;
351
- let oapp = Address::generate(&setup.env);
352
-
353
- let receiver1 = Address::generate(&setup.env);
354
- let native_drop_params: Vec<NativeDropParams> =
355
- vec![&setup.env, NativeDropParams { receiver: receiver1.clone(), amount: 10 }];
356
-
357
- let execute_params = setup.default_execution_params();
358
-
359
- setup.mock_all_auths();
360
- setup.executor_helper_client.native_drop_and_execute(
361
- &setup.executor,
362
- &setup.admin,
363
- &origin,
364
- &dst_eid,
365
- &oapp,
366
- &native_drop_params,
367
- &execute_params,
368
- );
369
-
370
- // Verify native_drop was called
371
- let drop_record = setup.executor_client().get_native_drop();
372
- assert!(drop_record.is_some());
373
- let drop_record = drop_record.unwrap();
374
- assert_eq!(drop_record.admin, setup.admin);
375
- assert_eq!(drop_record.origin, origin);
376
- assert_eq!(drop_record.dst_eid, dst_eid);
377
- assert_eq!(drop_record.oapp, oapp);
378
- assert_eq!(drop_record.params.len(), 1);
379
- assert_eq!(drop_record.params.get(0).unwrap().receiver, receiver1);
380
- assert_eq!(drop_record.params.get(0).unwrap().amount, 10);
381
-
382
- // Verify lz_receive was also called
383
- let receive_record = setup.receiver_client().get_lz_receive();
384
- assert!(receive_record.is_some());
385
- let receive_record = receive_record.unwrap();
386
- assert_eq!(receive_record.executor, setup.executor);
387
- assert_eq!(receive_record.origin, execute_params.origin);
388
- assert_eq!(receive_record.guid, execute_params.guid);
389
- }
390
-
391
- #[test]
392
- fn test_native_drop_and_execute_with_empty_drop_params() {
393
- let setup = TestSetup::new();
394
- let origin = setup.default_origin();
395
- let dst_eid = 1u32;
396
- let oapp = Address::generate(&setup.env);
397
- let native_drop_params: Vec<NativeDropParams> = vec![&setup.env];
398
- let execute_params = setup.default_execution_params();
399
-
400
- setup.mock_all_auths();
401
- setup.executor_helper_client.native_drop_and_execute(
402
- &setup.executor,
403
- &setup.admin,
404
- &origin,
405
- &dst_eid,
406
- &oapp,
407
- &native_drop_params,
408
- &execute_params,
409
- );
410
-
411
- // Verify native_drop was called with empty params
412
- let drop_record = setup.executor_client().get_native_drop();
413
- assert!(drop_record.is_some());
414
- assert_eq!(drop_record.unwrap().params.len(), 0);
415
-
416
- // Verify lz_receive was still called
417
- let receive_record = setup.receiver_client().get_lz_receive();
418
- assert!(receive_record.is_some());
419
- }
420
-
421
- #[test]
422
- fn test_native_drop_and_execute_with_value_transfer() {
423
- let setup = TestSetup::new();
424
- let origin = setup.default_origin();
425
- let dst_eid = 2u32;
426
- let oapp = Address::generate(&setup.env);
427
-
428
- let receiver1 = Address::generate(&setup.env);
429
- let native_drop_params: Vec<NativeDropParams> =
430
- vec![&setup.env, NativeDropParams { receiver: receiver1.clone(), amount: 10 }];
431
-
432
- let mut execute_params = setup.default_execution_params();
433
- execute_params.value = 25; // Add value to trigger token transfer
434
-
435
- // Mint tokens to admin (value payer)
436
- setup.mint_native(&setup.admin, 100);
437
- let admin_before = setup.balance_native(&setup.admin);
438
- let executor_before = setup.balance_native(&setup.executor);
439
-
440
- setup.mock_all_auths();
441
- setup.executor_helper_client.native_drop_and_execute(
442
- &setup.executor,
443
- &setup.admin,
444
- &origin,
445
- &dst_eid,
446
- &oapp,
447
- &native_drop_params,
448
- &execute_params,
449
- );
450
-
451
- // Verify token transfer occurred
452
- assert_eq!(setup.balance_native(&setup.admin), admin_before - 25);
453
- assert_eq!(setup.balance_native(&setup.executor), executor_before + 25);
454
-
455
- // Verify both operations occurred
456
- let drop_record = setup.executor_client().get_native_drop();
457
- assert!(drop_record.is_some());
458
- assert_eq!(drop_record.unwrap().params.len(), 1);
459
-
460
- let receive_record = setup.receiver_client().get_lz_receive();
461
- assert!(receive_record.is_some());
462
- assert_eq!(receive_record.unwrap().value, 25);
463
- }
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@layerzerolabs/protocol-stellar-v2",
3
- "version": "0.2.53",
3
+ "version": "0.2.54",
4
4
  "private": false,
5
5
  "license": "LZBL-1.2",
6
6
  "devDependencies": {
7
7
  "@types/node": "^22.18.6",
8
8
  "tsx": "^4.19.3",
9
9
  "typescript": "^5.8.2",
10
- "@layerzerolabs/common-node-utils": "0.2.53",
11
- "@layerzerolabs/stellar-ts-bindings-gen": "0.2.53",
12
- "@layerzerolabs/vm-tooling-stellar": "0.2.53"
10
+ "@layerzerolabs/common-node-utils": "0.2.54",
11
+ "@layerzerolabs/vm-tooling-stellar": "0.2.54",
12
+ "@layerzerolabs/stellar-ts-bindings-gen": "0.2.54"
13
13
  },
14
14
  "publishConfig": {
15
15
  "access": "restricted",