Skip to content

Commit a7748d9

Browse files
committed
Voluntary fees e2e tests
1 parent 6ce7d88 commit a7748d9

File tree

2 files changed

+31
-69
lines changed

2 files changed

+31
-69
lines changed

.github/workflows/scripts/e2e.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
"e2e::ibc_tests::ibc_pfm_happy_flows": 485,
1313
"e2e::ibc_tests::ibc_pfm_unhappy_flows": 485,
1414
"e2e::ibc_tests::ibc_upgrade_client": 280,
15-
"e2e::ibc_tests::ibc_shielded_recv_middleware_happy_flow": 280,
16-
"e2e::ibc_tests::ibc_shielded_recv_middleware_unhappy_flow": 280,
15+
"e2e::ibc_tests::ibc_voluntary_fees_middleware_happy_flow": 280,
16+
"e2e::ibc_tests::ibc_voluntary_fees_middleware_unhappy_flow": 280,
1717
"e2e::eth_bridge_tests::test_add_to_bridge_pool": 10,
1818
"e2e::ledger_tests::double_signing_gets_slashed": 12,
1919
"e2e::ledger_tests::ledger_many_txs_in_a_block": 55,

crates/tests/src/e2e/ibc_tests.rs

Lines changed: 29 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ use namada_sdk::chain::Epoch;
2929
use namada_sdk::governance::cli::onchain::PgfFunding;
3030
use namada_sdk::governance::pgf::ADDRESS as PGF_ADDRESS;
3131
use namada_sdk::governance::storage::proposal::{PGFIbcTarget, PGFTarget};
32-
use namada_sdk::ibc::IbcShieldingData;
3332
use namada_sdk::ibc::apps::nft_transfer::types::{
3433
PORT_ID_STR as NFT_PORT_ID, VERSION as NFT_CHANNEL_VERSION,
3534
};
@@ -1807,24 +1806,15 @@ fn packet_forward_memo_value(
18071806
}
18081807
}
18091808

1810-
fn shielded_recv_memo_value(
1811-
masp_transfer_path: &Path,
1812-
shielded_amount: Amount,
1813-
overflow_receiver: namada_core::address::Address,
1809+
fn voluntary_fees_memo_value(
1810+
fee_amount: Amount,
1811+
fee_receiver: namada_core::address::Address,
18141812
) -> serde_json::Map<String, serde_json::Value> {
1815-
use namada_core::string_encoding::StringEncoded;
18161813
use namada_sdk::ibc::{NamadaMemo, NamadaMemoData};
18171814

1818-
let transfer =
1819-
std::fs::read_to_string(masp_transfer_path).expect("Test failed");
1820-
let tx = StringEncoded::new(
1821-
IbcShieldingData::from_str(&transfer).expect("Test failed"),
1822-
);
1823-
#[allow(deprecated)]
1824-
let data = NamadaMemoData::OsmosisSwap {
1825-
shielding_data: tx,
1826-
shielded_amount,
1827-
overflow_receiver,
1815+
let data = NamadaMemoData::VoluntaryFees {
1816+
fee_amount,
1817+
fee_receiver,
18281818
};
18291819

18301820
let value = serde_json::to_value(&NamadaMemo { namada: data })
@@ -2571,11 +2561,8 @@ fn ibc_pfm_unhappy_flows() -> Result<()> {
25712561
Ok(())
25722562
}
25732563

2574-
/// Test that we are able to use the shielded-receive
2575-
/// middleware to shield funds specified in the memo
2576-
/// message.
25772564
#[test]
2578-
fn ibc_shielded_recv_middleware_happy_flow() -> Result<()> {
2565+
fn ibc_voluntary_fees_middleware_happy_flow() -> Result<()> {
25792566
let update_genesis =
25802567
|mut genesis: templates::All<templates::Unvalidated>, base_dir: &_| {
25812568
genesis.parameters.parameters.epochs_per_year =
@@ -2622,45 +2609,33 @@ fn ibc_shielded_recv_middleware_happy_flow() -> Result<()> {
26222609
)?;
26232610
check_shielded_balance(&test, AA_VIEWING_KEY, NAM, 20)?;
26242611

2625-
// 2. Unshield from A_SPENDING_KEY to B_SPENDING_KEY,
2626-
// using the packet forward and shielded receive
2612+
// 2. Unshield from A_SPENDING_KEY, using the packet forward and voluntary
2613+
// fees
26272614
// middlewares
26282615
for iter in 1..=2u64 {
2629-
let nam_addr = find_address(&test, NAM)?;
2630-
let overflow_addr = "tnam1qrqzqa0l0rzzrlr20n487l6n865t8ndv6uhseulq";
2631-
let ibc_denom_on_gaia =
2632-
format!("transfer/{channel_id_gaia}/{nam_addr}");
2633-
let memo_path = gen_ibc_shielding_data(
2634-
&test,
2635-
AB_PAYMENT_ADDRESS,
2636-
&ibc_denom_on_gaia,
2637-
8,
2638-
&port_id_namada,
2639-
&channel_id_namada,
2640-
None,
2641-
)?;
2642-
let masp_receiver = match iter {
2616+
let recv_addr = "tnam1qpn2vkhm7f0ufh5nylnmr4yflc8x45gnlvdq3tcq";
2617+
let fees_addr = "tnam1qrqzqa0l0rzzrlr20n487l6n865t8ndv6uhseulq";
2618+
let receiver = match iter {
26432619
// Test addresses encoded using `bech32m`...
2644-
1 => MASP.encode(),
2620+
1 => recv_addr,
26452621
// ...as well as addresses encoded using `bech32`
26462622
2 => {
2647-
let bech32 = "tnam1pcqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqh8f9c4";
2623+
let bech32 = "tnam1qpn2vkhm7f0ufh5nylnmr4yflc8x45gnlvcup8az";
26482624
let addr: namada_core::address::Address =
26492625
bech32.parse().unwrap();
2650-
assert_eq!(addr, MASP);
2651-
bech32.to_owned()
2626+
assert_eq!(addr, recv_addr.parse().unwrap());
2627+
bech32
26522628
}
26532629
_ => unreachable!("there are only 2 iters"),
26542630
};
26552631
let memo = packet_forward_memo(
2656-
masp_receiver.into(),
2632+
receiver.to_owned().into(),
26572633
&PortId::transfer(),
26582634
&channel_id_namada,
26592635
None,
2660-
Some(shielded_recv_memo_value(
2661-
&memo_path,
2636+
Some(voluntary_fees_memo_value(
26622637
Amount::native_whole(8),
2663-
overflow_addr.parse().unwrap(),
2638+
fees_addr.parse().unwrap(),
26642639
)),
26652640
);
26662641
transfer(
@@ -2689,17 +2664,15 @@ fn ibc_shielded_recv_middleware_happy_flow() -> Result<()> {
26892664

26902665
// Check the token on Namada
26912666
check_shielded_balance(&test, AA_VIEWING_KEY, NAM, 20 - iter * 10)?;
2692-
check_shielded_balance(&test, AB_VIEWING_KEY, NAM, 8 * iter)?;
2693-
check_balance(&test, overflow_addr, NAM, 2 * iter)?;
2667+
check_balance(&test, recv_addr, NAM, 8 * iter)?;
2668+
check_balance(&test, fees_addr, NAM, 2 * iter)?;
26942669
}
26952670

26962671
Ok(())
26972672
}
26982673

2699-
/// Test that if the received amount underflows the minimum
2700-
/// amount, we error out and refund assets.
27012674
#[test]
2702-
fn ibc_shielded_recv_middleware_unhappy_flow() -> Result<()> {
2675+
fn ibc_voluntary_fees_middleware_unhappy_flow() -> Result<()> {
27032676
let update_genesis =
27042677
|mut genesis: templates::All<templates::Unvalidated>, base_dir: &_| {
27052678
genesis.parameters.parameters.epochs_per_year =
@@ -2733,29 +2706,18 @@ fn ibc_shielded_recv_middleware_unhappy_flow() -> Result<()> {
27332706
let hermes = run_hermes(&hermes_dir)?;
27342707
let _bg_hermes = hermes.background();
27352708

2736-
let nam_addr = find_address(&test, NAM)?;
2737-
let overflow_addr = "tnam1qrqzqa0l0rzzrlr20n487l6n865t8ndv6uhseulq";
2738-
let ibc_denom_on_gaia = format!("transfer/{channel_id_gaia}/{nam_addr}");
2709+
let recv_addr = "tnam1qpn2vkhm7f0ufh5nylnmr4yflc8x45gnlvdq3tcq";
2710+
let fees_addr = "tnam1qrqzqa0l0rzzrlr20n487l6n865t8ndv6uhseulq";
27392711
check_balance(&test, ALBERT, NAM, 2_000_000)?;
27402712

2741-
let memo_path = gen_ibc_shielding_data(
2742-
&test,
2743-
AB_PAYMENT_ADDRESS,
2744-
&ibc_denom_on_gaia,
2745-
8,
2746-
&port_id_namada,
2747-
&channel_id_namada,
2748-
None,
2749-
)?;
27502713
let memo = packet_forward_memo(
2751-
MASP.to_string().into(),
2714+
recv_addr.to_string().into(),
27522715
&PortId::transfer(),
27532716
&channel_id_namada,
27542717
None,
2755-
Some(shielded_recv_memo_value(
2756-
&memo_path,
2718+
Some(voluntary_fees_memo_value(
27572719
Amount::native_whole(8),
2758-
overflow_addr.parse().unwrap(),
2720+
fees_addr.parse().unwrap(),
27592721
)),
27602722
);
27612723
transfer(
@@ -2779,8 +2741,8 @@ fn ibc_shielded_recv_middleware_unhappy_flow() -> Result<()> {
27792741

27802742
// Check the token on Namada
27812743
check_balance(&test, ALBERT, NAM, 2_000_000)?;
2782-
check_shielded_balance(&test, AB_VIEWING_KEY, NAM, 0)?;
2783-
check_balance(&test, overflow_addr, NAM, 0)?;
2744+
check_balance(&test, recv_addr, NAM, 0)?;
2745+
check_balance(&test, fees_addr, NAM, 0)?;
27842746

27852747
Ok(())
27862748
}

0 commit comments

Comments
 (0)