Skip to content

Commit 403acdc

Browse files
back transfers multi transfer fix & tests
1 parent f2ccfc9 commit 403acdc

26 files changed

+956
-112
lines changed

chain/vm/src/host/context/tx_back_transfers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::{builtin_functions::BuiltinFunctionContainer, types::VMAddress};
44

55
use super::{async_call_tx_input, CallType, TxResult, TxTokenTransfer};
66

7-
#[derive(Default)]
7+
#[derive(Default, Debug)]
88
pub struct BackTransfers {
99
pub call_value: BigUint,
1010
pub esdt_transfers: Vec<TxTokenTransfer>,

contracts/feature-tests/composability/forwarder-interactor/src/proxy.rs

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,7 +1495,7 @@ where
14951495
.original_result()
14961496
}
14971497

1498-
pub fn forward_sync_retrieve_funds_bt<
1498+
pub fn forward_sync_retrieve_funds_bt_legacy<
14991499
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15001500
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,
15011501
Arg2: ProxyArg<u64>,
@@ -1509,15 +1509,15 @@ where
15091509
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
15101510
self.wrapped_tx
15111511
.payment(NotPayable)
1512-
.raw_call("forward_sync_retrieve_funds_bt")
1512+
.raw_call("forward_sync_retrieve_funds_bt_legacy")
15131513
.argument(&to)
15141514
.argument(&token)
15151515
.argument(&token_nonce)
15161516
.argument(&amount)
15171517
.original_result()
15181518
}
15191519

1520-
pub fn forward_sync_retrieve_funds_bt_reset_twice<
1520+
pub fn forward_sync_retrieve_funds_bt_legacy_reset_twice<
15211521
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15221522
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,
15231523
Arg2: ProxyArg<u64>,
@@ -1531,15 +1531,15 @@ where
15311531
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
15321532
self.wrapped_tx
15331533
.payment(NotPayable)
1534-
.raw_call("forward_sync_retrieve_funds_bt_reset_twice")
1534+
.raw_call("forward_sync_retrieve_funds_bt_legacy_reset_twice")
15351535
.argument(&to)
15361536
.argument(&token)
15371537
.argument(&token_nonce)
15381538
.argument(&amount)
15391539
.original_result()
15401540
}
15411541

1542-
pub fn forward_sync_retrieve_funds_bt_twice<
1542+
pub fn forward_sync_retrieve_funds_bt_legacy_twice<
15431543
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15441544
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,
15451545
Arg2: ProxyArg<u64>,
@@ -1553,14 +1553,62 @@ where
15531553
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
15541554
self.wrapped_tx
15551555
.payment(NotPayable)
1556-
.raw_call("forward_sync_retrieve_funds_bt_twice")
1556+
.raw_call("forward_sync_retrieve_funds_bt_legacy_twice")
15571557
.argument(&to)
15581558
.argument(&token)
15591559
.argument(&token_nonce)
15601560
.argument(&amount)
15611561
.original_result()
15621562
}
15631563

1564+
pub fn forward_sync_retrieve_funds_bt_multi<
1565+
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
1566+
Arg1: ProxyArg<MultiValueEncoded<Env::Api, EgldOrEsdtTokenPaymentMultiValue<Env::Api>>>,
1567+
>(
1568+
self,
1569+
to: Arg0,
1570+
transfers: Arg1,
1571+
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
1572+
self.wrapped_tx
1573+
.payment(NotPayable)
1574+
.raw_call("forward_sync_retrieve_funds_bt_multi")
1575+
.argument(&to)
1576+
.argument(&transfers)
1577+
.original_result()
1578+
}
1579+
1580+
pub fn forward_sync_retrieve_funds_bt_multi_reset_twice<
1581+
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
1582+
Arg1: ProxyArg<MultiValueEncoded<Env::Api, EgldOrEsdtTokenPaymentMultiValue<Env::Api>>>,
1583+
>(
1584+
self,
1585+
to: Arg0,
1586+
transfers: Arg1,
1587+
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
1588+
self.wrapped_tx
1589+
.payment(NotPayable)
1590+
.raw_call("forward_sync_retrieve_funds_bt_multi_reset_twice")
1591+
.argument(&to)
1592+
.argument(&transfers)
1593+
.original_result()
1594+
}
1595+
1596+
pub fn forward_sync_retrieve_funds_bt_multi_twice<
1597+
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
1598+
Arg1: ProxyArg<MultiValueEncoded<Env::Api, EgldOrEsdtTokenPaymentMultiValue<Env::Api>>>,
1599+
>(
1600+
self,
1601+
to: Arg0,
1602+
transfers: Arg1,
1603+
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
1604+
self.wrapped_tx
1605+
.payment(NotPayable)
1606+
.raw_call("forward_sync_retrieve_funds_bt_multi_twice")
1607+
.argument(&to)
1608+
.argument(&transfers)
1609+
.original_result()
1610+
}
1611+
15641612
pub fn forward_promise_retrieve_funds_back_transfers<
15651613
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15661614
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,

contracts/feature-tests/composability/forwarder/src/forwarder_main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ pub mod fwd_call_promises;
99
pub mod fwd_call_promises_bt;
1010
pub mod fwd_call_sync;
1111
pub mod fwd_call_sync_bt;
12+
pub mod fwd_call_sync_bt_legacy;
1213
pub mod fwd_call_transf_exec;
1314
pub mod fwd_change_owner;
1415
pub mod fwd_deploy;
@@ -42,7 +43,8 @@ pub trait Forwarder:
4243
+ common::CommonModule
4344
+ fwd_call_promises::CallPromisesModule
4445
+ fwd_call_promise_direct::CallPromisesDirectModule
45-
+ fwd_call_sync_bt::BackTransfersFeatureModule
46+
+ fwd_call_sync_bt_legacy::BackTransfersLegacyModule
47+
+ fwd_call_sync_bt::BackTransfersModule
4648
+ fwd_call_promises_bt::CallPromisesBackTransfersModule
4749
{
4850
#[init]

contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,7 +1495,7 @@ where
14951495
.original_result()
14961496
}
14971497

1498-
pub fn forward_sync_retrieve_funds_bt<
1498+
pub fn forward_sync_retrieve_funds_bt_legacy<
14991499
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15001500
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,
15011501
Arg2: ProxyArg<u64>,
@@ -1509,15 +1509,15 @@ where
15091509
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
15101510
self.wrapped_tx
15111511
.payment(NotPayable)
1512-
.raw_call("forward_sync_retrieve_funds_bt")
1512+
.raw_call("forward_sync_retrieve_funds_bt_legacy")
15131513
.argument(&to)
15141514
.argument(&token)
15151515
.argument(&token_nonce)
15161516
.argument(&amount)
15171517
.original_result()
15181518
}
15191519

1520-
pub fn forward_sync_retrieve_funds_bt_reset_twice<
1520+
pub fn forward_sync_retrieve_funds_bt_legacy_reset_twice<
15211521
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15221522
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,
15231523
Arg2: ProxyArg<u64>,
@@ -1531,15 +1531,15 @@ where
15311531
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
15321532
self.wrapped_tx
15331533
.payment(NotPayable)
1534-
.raw_call("forward_sync_retrieve_funds_bt_reset_twice")
1534+
.raw_call("forward_sync_retrieve_funds_bt_legacy_reset_twice")
15351535
.argument(&to)
15361536
.argument(&token)
15371537
.argument(&token_nonce)
15381538
.argument(&amount)
15391539
.original_result()
15401540
}
15411541

1542-
pub fn forward_sync_retrieve_funds_bt_twice<
1542+
pub fn forward_sync_retrieve_funds_bt_legacy_twice<
15431543
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15441544
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,
15451545
Arg2: ProxyArg<u64>,
@@ -1553,14 +1553,62 @@ where
15531553
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
15541554
self.wrapped_tx
15551555
.payment(NotPayable)
1556-
.raw_call("forward_sync_retrieve_funds_bt_twice")
1556+
.raw_call("forward_sync_retrieve_funds_bt_legacy_twice")
15571557
.argument(&to)
15581558
.argument(&token)
15591559
.argument(&token_nonce)
15601560
.argument(&amount)
15611561
.original_result()
15621562
}
15631563

1564+
pub fn forward_sync_retrieve_funds_bt_multi<
1565+
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
1566+
Arg1: ProxyArg<MultiValueEncoded<Env::Api, EgldOrEsdtTokenPaymentMultiValue<Env::Api>>>,
1567+
>(
1568+
self,
1569+
to: Arg0,
1570+
transfers: Arg1,
1571+
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
1572+
self.wrapped_tx
1573+
.payment(NotPayable)
1574+
.raw_call("forward_sync_retrieve_funds_bt_multi")
1575+
.argument(&to)
1576+
.argument(&transfers)
1577+
.original_result()
1578+
}
1579+
1580+
pub fn forward_sync_retrieve_funds_bt_multi_reset_twice<
1581+
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
1582+
Arg1: ProxyArg<MultiValueEncoded<Env::Api, EgldOrEsdtTokenPaymentMultiValue<Env::Api>>>,
1583+
>(
1584+
self,
1585+
to: Arg0,
1586+
transfers: Arg1,
1587+
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
1588+
self.wrapped_tx
1589+
.payment(NotPayable)
1590+
.raw_call("forward_sync_retrieve_funds_bt_multi_reset_twice")
1591+
.argument(&to)
1592+
.argument(&transfers)
1593+
.original_result()
1594+
}
1595+
1596+
pub fn forward_sync_retrieve_funds_bt_multi_twice<
1597+
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
1598+
Arg1: ProxyArg<MultiValueEncoded<Env::Api, EgldOrEsdtTokenPaymentMultiValue<Env::Api>>>,
1599+
>(
1600+
self,
1601+
to: Arg0,
1602+
transfers: Arg1,
1603+
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ()> {
1604+
self.wrapped_tx
1605+
.payment(NotPayable)
1606+
.raw_call("forward_sync_retrieve_funds_bt_multi_twice")
1607+
.argument(&to)
1608+
.argument(&transfers)
1609+
.original_result()
1610+
}
1611+
15641612
pub fn forward_promise_retrieve_funds_back_transfers<
15651613
Arg0: ProxyArg<ManagedAddress<Env::Api>>,
15661614
Arg1: ProxyArg<EgldOrEsdtTokenIdentifier<Env::Api>>,

contracts/feature-tests/composability/forwarder/src/fwd_call_sync.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pub trait ForwarderSyncCallModule {
8787
.to(&to)
8888
.gas(half_gas)
8989
.typed(vault_proxy::VaultProxy)
90-
.retrieve_funds_egld_or_single_esdt()
90+
.retrieve_received_funds_immmediately()
9191
.egld(payment)
9292
.returns(ReturnsBackTransfersEGLD)
9393
.sync_call()

0 commit comments

Comments
 (0)