From a625126993047568437a8d8bab23f5e16bc6fc85 Mon Sep 17 00:00:00 2001 From: Murisi Tarusenga Date: Tue, 17 Oct 2023 13:29:24 +0200 Subject: [PATCH] Increased the precision of MASP rewards. --- Cargo.lock | 6 +- Cargo.toml | 4 +- apps/src/lib/client/rpc.rs | 4 +- apps/src/lib/config/genesis.rs | 4 +- core/src/ledger/inflation.rs | 4 +- core/src/ledger/storage/masp_conversions.rs | 57 ++++---- core/src/types/address.rs | 17 --- core/src/types/token.rs | 20 ++- shared/src/ledger/queries/shell.rs | 4 +- shared/src/sdk/masp.rs | 6 +- shared/src/sdk/rpc.rs | 2 +- shared/src/sdk/tx.rs | 4 +- ...9CB1712CCA85B0E96A3330A63BE7CD9E5ECD22.bin | Bin 7448 -> 7448 bytes ...FF8BF07596031CD460FEBFAEA4F75AF65D5402.bin | Bin 0 -> 9208 bytes ...D76149D3088F539CF8372D404609B89B095EF7.bin | Bin 7448 -> 7448 bytes ...EB66F886B3A3B6C71D33F456B859D01DA47ADD.bin | Bin 0 -> 9208 bytes ...7C98D1E5AAAA9988F26B1A47090ACCE693572F.bin | Bin 7448 -> 7448 bytes ...59181FA326C06FCA9A49B5A5C394C75942820E.bin | Bin 15573 -> 0 bytes ...FC3DA2C57E4FD8FF0811D9CB129887F0F9F706.bin | Bin 0 -> 25031 bytes ...8B6780B6F18A312AE3909BEA19D16FCFE837DC.bin | Bin 0 -> 18792 bytes ...A700BB49387329F8FD049D5F66C95B11B55ADE.bin | Bin 22648 -> 0 bytes ...4B1C762CEA0436B0ECA42C52A830A0FD66BC00.bin | Bin 10312 -> 0 bytes ...E72A01F0B169F946835583DC2C71B550315603.bin | Bin 0 -> 19947 bytes ...CFE8EEC08E2D8512695A667D294AE1A4A8D4E6.bin | Bin 0 -> 9649 bytes ...8DC6BBB31619C7E93A1A5A2E64B694DBE1BD6E.bin | Bin 0 -> 7448 bytes ...FA3F379DB351AB4AE081207ABFDFC429C9FA48.bin | Bin 0 -> 17018 bytes ...344FFFAA6CA273027CD480AEA68DDED57D88CA.bin | Bin 7448 -> 7448 bytes ...B827EEEDA858AB983D16024AAA415579A68953.bin | Bin 0 -> 9649 bytes ...C7F5019CA3DF4CB89D10CB4E38DA9CDE3A9A0A.bin | Bin 13799 -> 0 bytes tests/src/integration/masp.rs | 137 ++++-------------- wasm/Cargo.lock | 6 +- wasm/wasm_source/Cargo.toml | 2 +- wasm_for_tests/wasm_source/Cargo.lock | 6 +- 33 files changed, 99 insertions(+), 184 deletions(-) create mode 100644 test_fixtures/masp_proofs/29AC8DE3B07495BEABEAF50FE8FF8BF07596031CD460FEBFAEA4F75AF65D5402.bin create mode 100644 test_fixtures/masp_proofs/52984E26D4A044A259B441C1DAEB66F886B3A3B6C71D33F456B859D01DA47ADD.bin delete mode 100644 test_fixtures/masp_proofs/917B7AD5FD4F2F0CB33924511A59181FA326C06FCA9A49B5A5C394C75942820E.bin create mode 100644 test_fixtures/masp_proofs/9883C2EF7971504BB1CF651BAFFC3DA2C57E4FD8FF0811D9CB129887F0F9F706.bin create mode 100644 test_fixtures/masp_proofs/99393E3AC8046F86ABA05519568B6780B6F18A312AE3909BEA19D16FCFE837DC.bin delete mode 100644 test_fixtures/masp_proofs/A08264B610C5903A47D48E90ABA700BB49387329F8FD049D5F66C95B11B55ADE.bin delete mode 100644 test_fixtures/masp_proofs/A9D6D90370C747C254D4DD4A2D4B1C762CEA0436B0ECA42C52A830A0FD66BC00.bin create mode 100644 test_fixtures/masp_proofs/BA4FED83467B6FEE522748C6F7E72A01F0B169F946835583DC2C71B550315603.bin create mode 100644 test_fixtures/masp_proofs/C7ECE8C02C2E764EFD5B6A0756CFE8EEC08E2D8512695A667D294AE1A4A8D4E6.bin create mode 100644 test_fixtures/masp_proofs/EE7C912B7E21F07494D58AA6668DC6BBB31619C7E93A1A5A2E64B694DBE1BD6E.bin create mode 100644 test_fixtures/masp_proofs/EEB91EB873807EC77BBCA95D4CFA3F379DB351AB4AE081207ABFDFC429C9FA48.bin create mode 100644 test_fixtures/masp_proofs/F36A8353F15FD6D8158DBC67DDB827EEEDA858AB983D16024AAA415579A68953.bin delete mode 100644 test_fixtures/masp_proofs/F3FE67606FCCCE54C3BCF643F0C7F5019CA3DF4CB89D10CB4E38DA9CDE3A9A0A.bin diff --git a/Cargo.lock b/Cargo.lock index 84cbd6f48ef..1c0d1cb6d86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3748,7 +3748,7 @@ dependencies = [ [[package]] name = "masp_note_encryption" version = "0.2.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "borsh 0.9.4", "chacha20 0.9.1", @@ -3761,7 +3761,7 @@ dependencies = [ [[package]] name = "masp_primitives" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "aes 0.7.5", "bip0039", @@ -3792,7 +3792,7 @@ dependencies = [ [[package]] name = "masp_proofs" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "bellman", "blake2b_simd", diff --git a/Cargo.toml b/Cargo.toml index 9c731f0fdf1..db71e929894 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,8 +90,8 @@ libc = "0.2.97" libloading = "0.7.2" libsecp256k1 = {git = "https://github.com/heliaxdev/libsecp256k1", rev = "bbb3bd44a49db361f21d9db80f9a087c194c0ae9", default-features = false, features = ["std", "static-context"]} # branch = "murisi/namada-integration" -masp_primitives = { git = "https://github.com/anoma/masp", rev = "50acc5028fbcd52a05970fe7991c7850ab04358e" } -masp_proofs = { git = "https://github.com/anoma/masp", rev = "50acc5028fbcd52a05970fe7991c7850ab04358e", default-features = false, features = ["local-prover"] } +masp_primitives = { git = "https://github.com/anoma/masp", rev = "1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" } +masp_proofs = { git = "https://github.com/anoma/masp", rev = "1345b463e8fa3b3a6fa13e4a43fb1c410690ad62", default-features = false, features = ["local-prover"] } num256 = "0.3.5" num_cpus = "1.13.0" num-derive = "0.3.3" diff --git a/apps/src/lib/client/rpc.rs b/apps/src/lib/client/rpc.rs index d750ccc7590..1645009011d 100644 --- a/apps/src/lib/client/rpc.rs +++ b/apps/src/lib/client/rpc.rs @@ -2126,7 +2126,7 @@ pub async fn query_conversions< // Track whether any non-sentinel conversions are found let mut conversions_found = false; for ((addr, _), epoch, conv, _) in conv_state.assets.values() { - let amt: masp_primitives::transaction::components::I32Sum = + let amt: masp_primitives::transaction::components::I128Sum = conv.clone().into(); // If the user has specified any targets, then meet them // If we have a sentinel conversion, then skip printing @@ -2181,7 +2181,7 @@ pub async fn query_conversion( Address, MaspDenom, Epoch, - masp_primitives::transaction::components::I32Sum, + masp_primitives::transaction::components::I128Sum, MerklePath, )> { namada::sdk::rpc::query_conversion(client, asset_type).await diff --git a/apps/src/lib/config/genesis.rs b/apps/src/lib/config/genesis.rs index eac5f5bdca0..3331a30c036 100644 --- a/apps/src/lib/config/genesis.rs +++ b/apps/src/lib/config/genesis.rs @@ -1012,8 +1012,8 @@ pub fn genesis(num_validators: u64) -> Genesis { implicit_vp_code_path: vp_implicit_path.into(), implicit_vp_sha256: Default::default(), max_signatures_per_transaction: 15, - epochs_per_year: 525_600, /* seconds in yr (60*60*24*365) div seconds - * per epoch (60 = min_duration) */ + epochs_per_year: 365, /* seconds in yr (60*60*24*365) div seconds + * per epoch (60 = min_duration) */ pos_gain_p: Dec::new(1, 1).expect("This can't fail"), pos_gain_d: Dec::new(1, 1).expect("This can't fail"), staked_ratio: Dec::zero(), diff --git a/core/src/ledger/inflation.rs b/core/src/ledger/inflation.rs index 0b7d1cef694..46e2c7ba8f8 100644 --- a/core/src/ledger/inflation.rs +++ b/core/src/ledger/inflation.rs @@ -133,7 +133,7 @@ mod test { 4_000, NATIVE_MAX_DECIMAL_PLACES, ) - .unwrap(), + .unwrap(), total_native_tokens: token::Amount::from_uint( 4_000, NATIVE_MAX_DECIMAL_PLACES, @@ -209,7 +209,7 @@ mod test { 1_000, NATIVE_MAX_DECIMAL_PLACES, ) - .unwrap(), + .unwrap(), total_native_tokens: token::Amount::from_uint( 1_000, NATIVE_MAX_DECIMAL_PLACES, diff --git a/core/src/ledger/storage/masp_conversions.rs b/core/src/ledger/storage/masp_conversions.rs index 5ab40e0a3d8..9e52d4e7872 100644 --- a/core/src/ledger/storage/masp_conversions.rs +++ b/core/src/ledger/storage/masp_conversions.rs @@ -10,6 +10,7 @@ use masp_primitives::sapling::Node; use crate::ledger::inflation::{RewardsController, ValsToUpdate}; use crate::ledger::parameters; +use crate::ledger::storage_api::token::read_denom; use crate::ledger::storage_api::{StorageRead, StorageWrite}; use crate::types::address::Address; use crate::types::dec::Dec; @@ -17,18 +18,11 @@ use crate::types::storage::Epoch; use crate::types::token::MaspDenom; use crate::types::{address, token}; -/// Inflation is implicitly denominated by this value. The lower this figure, -/// the less precise inflation computations are. The higher this figure, the -/// larger the fixed-width types that are required to carry out inflation -/// computations. This value should be fixed constant for each asset type - here -/// we have simplified it and made it constant across asset types. -const PRECISION: u64 = 100; - /// A representation of the conversion state #[derive(Debug, Default, BorshSerialize, BorshDeserialize)] pub struct ConversionState { /// The last amount of the native token distributed - pub normed_inflation: Option, + pub normed_inflation: Option, /// The tree currently containing all the conversions pub tree: FrozenCommitmentTree, /// Map assets to their latest conversion and position in Merkle tree @@ -44,17 +38,26 @@ pub struct ConversionState { pub fn calculate_masp_rewards( wl_storage: &mut super::WlStorage, addr: &Address, -) -> crate::ledger::storage_api::Result<(u32, u32)> +) -> crate::ledger::storage_api::Result<(u128, u128)> where D: 'static + super::DB + for<'iter> super::DBIter<'iter>, H: 'static + super::StorageHasher, { + let denomination = read_denom(wl_storage, addr).unwrap().unwrap(); + // Inflation is implicitly denominated by this value. The lower this + // figure, the less precise inflation computations are. This is especially + // problematic when inflation is coming from a token with much higher + // denomination than the native token. The higher this figure, the higher + // the threshold of holdings required in order to receive non-zero rewards. + // This value should be fixed constant for each asset type. + let precision = 10u128.pow(std::cmp::max(u32::from(denomination.0), 3) - 3); + let masp_addr = address::masp(); // Query the storage for information //// information about the amount of tokens on the chain let total_tokens: token::Amount = wl_storage - .read(&token::minted_balance_key(&addr))? + .read(&token::minted_balance_key(addr))? .expect("the total supply key should be here"); //// information about the amount of native tokens on the chain @@ -126,10 +129,11 @@ where // Since we must put the notes in a compatible format with the // note format, we must make the inflation amount discrete. let noterized_inflation = if total_token_in_masp.is_zero() { - 0u32 + 0u128 } else { crate::types::uint::Uint::try_into( - (inflation.raw_amount() * PRECISION) + (inflation.raw_amount() + * crate::types::uint::Uint::from(precision)) / total_token_in_masp.raw_amount(), ) .unwrap() @@ -164,7 +168,12 @@ where wl_storage .write( &token::masp_last_inflation(addr), - (total_token_in_masp / PRECISION) * u64::from(noterized_inflation), + token::Amount::from_uint( + (total_token_in_masp.raw_amount() / precision) + * crate::types::uint::Uint::from(noterized_inflation), + 0, + ) + .unwrap(), ) .expect("unable to encode new inflation rate (Decimal)"); @@ -172,15 +181,7 @@ where .write(&token::masp_last_locked_ratio(addr), locked_ratio) .expect("unable to encode new locked ratio (Decimal)"); - // to make it conform with the expected output, we need to - // move it to a ratio of x/100 to match the masp_rewards - // function This may be unneeded, as we could describe it as a - // ratio of x/1 - - Ok(( - noterized_inflation, - PRECISION.try_into().expect("inflation precision too large"), - )) + Ok((noterized_inflation, precision)) } // This is only enabled when "wasm-runtime" is on, because we're using rayon @@ -196,7 +197,7 @@ where use std::cmp::Ordering; use masp_primitives::ff::PrimeField; - use masp_primitives::transaction::components::I32Sum as MaspAmount; + use masp_primitives::transaction::components::I128Sum as MaspAmount; use rayon::iter::{ IndexedParallelIterator, IntoParallelIterator, ParallelIterator, }; @@ -288,12 +289,12 @@ where (addr.clone(), denom), (MaspAmount::from_pair( old_asset, - -(*normed_inflation as i32), + -(*normed_inflation as i128), ) .unwrap() + MaspAmount::from_pair( new_asset, - new_normed_inflation as i32, + new_normed_inflation as i128, ) .unwrap()) .into(), @@ -320,13 +321,13 @@ where // intermediate tokens cancel/ telescope out current_convs.insert( (addr.clone(), denom), - (MaspAmount::from_pair(old_asset, -(reward.1 as i32)) + (MaspAmount::from_pair(old_asset, -(reward.1 as i128)) .unwrap() - + MaspAmount::from_pair(new_asset, reward.1 as i32) + + MaspAmount::from_pair(new_asset, reward.1 as i128) .unwrap() + MaspAmount::from_pair( reward_assets[denom as usize], - real_reward as i32, + real_reward as i128, ) .unwrap()) .into(), diff --git a/core/src/types/address.rs b/core/src/types/address.rs index 416b3f059ea..b0b709d69fc 100644 --- a/core/src/types/address.rs +++ b/core/src/types/address.rs @@ -681,23 +681,6 @@ pub fn tokens() -> HashMap { .collect() } -/// Temporary helper for testing, a hash map of tokens addresses with their -/// MASP XAN incentive schedules. If the reward is (a, b) then a rewarded tokens -/// are dispensed for every b possessed tokens. -pub fn masp_rewards() -> HashMap { - vec![ - (nam(), (0, 100)), - (btc(), (1, 100)), - (eth(), (2, 100)), - (dot(), (3, 100)), - (schnitzel(), (4, 100)), - (apfel(), (5, 100)), - (kartoffel(), (6, 100)), - ] - .into_iter() - .collect() -} - #[cfg(test)] pub mod tests { use proptest::prelude::*; diff --git a/core/src/types/token.rs b/core/src/types/token.rs index c6fefea9c6a..1c6a75335d0 100644 --- a/core/src/types/token.rs +++ b/core/src/types/token.rs @@ -596,6 +596,20 @@ impl Mul for Amount { } } +/// A combination of Euclidean division and fractions: +/// x*(a,b) = (a*(x//b), x%b). +impl Mul<(u128, u128)> for Amount { + type Output = (Amount, Amount); + + fn mul(mut self, rhs: (u128, u128)) -> Self::Output { + let amt = Amount { + raw: (self.raw / rhs.1) * Uint::from(rhs.0), + }; + self.raw %= rhs.1; + (amt, self) + } +} + /// A combination of Euclidean division and fractions: /// x*(a,b) = (a*(x//b), x%b). impl Mul<(u64, u64)> for Amount { @@ -1336,10 +1350,10 @@ pub mod testing { H: 'static + ledger_storage::StorageHasher, { use crate::ledger::parameters::storage::get_epochs_per_year_key; - use crate::types::address::masp_rewards; + use crate::types::address::tokens; - let masp_rewards = masp_rewards(); - let masp_reward_keys: Vec<_> = masp_rewards.keys().collect(); + let tokens = tokens(); + let masp_reward_keys: Vec<_> = tokens.keys().collect(); wl_storage .write(&get_epochs_per_year_key(), epochs_per_year) diff --git a/shared/src/ledger/queries/shell.rs b/shared/src/ledger/queries/shell.rs index a766846916a..520c702608c 100644 --- a/shared/src/ledger/queries/shell.rs +++ b/shared/src/ledger/queries/shell.rs @@ -30,7 +30,7 @@ type Conversion = ( Address, MaspDenom, Epoch, - masp_primitives::transaction::components::I32Sum, + masp_primitives::transaction::components::I128Sum, MerklePath, ); @@ -254,7 +254,7 @@ where addr.clone(), *denom, *epoch, - Into::::into( + Into::::into( conv.clone(), ), ctx.wl_storage.storage.conversion_state.tree.path(*pos), diff --git a/shared/src/sdk/masp.rs b/shared/src/sdk/masp.rs index 739f941b9a6..f9459f6cab0 100644 --- a/shared/src/sdk/masp.rs +++ b/shared/src/sdk/masp.rs @@ -34,8 +34,8 @@ use masp_primitives::transaction::builder::{self, *}; use masp_primitives::transaction::components::sapling::builder::SaplingMetadata; use masp_primitives::transaction::components::transparent::builder::TransparentBuilder; use masp_primitives::transaction::components::{ - ConvertDescription, I128Sum, I32Sum, OutputDescription, SpendDescription, - TxOut, U64Sum, + ConvertDescription, I128Sum, OutputDescription, SpendDescription, TxOut, + U64Sum, }; use masp_primitives::transaction::fees::fixed::FeeRule; use masp_primitives::transaction::sighash::{signature_hash, SignableInput}; @@ -989,7 +989,7 @@ impl ShieldedContext { Address, MaspDenom, _, - I32Sum, + I128Sum, MerklePath, ) = rpc::query_conversion(client, asset_type).await?; self.asset_types diff --git a/shared/src/sdk/rpc.rs b/shared/src/sdk/rpc.rs index 58609bed427..cb881e88a26 100644 --- a/shared/src/sdk/rpc.rs +++ b/shared/src/sdk/rpc.rs @@ -228,7 +228,7 @@ pub async fn query_conversion( Address, MaspDenom, Epoch, - masp_primitives::transaction::components::I32Sum, + masp_primitives::transaction::components::I128Sum, MerklePath, )> { Some(unwrap_client_response::( diff --git a/shared/src/sdk/tx.rs b/shared/src/sdk/tx.rs index 9d7fe0cfe48..0381e6f6aa0 100644 --- a/shared/src/sdk/tx.rs +++ b/shared/src/sdk/tx.rs @@ -15,7 +15,7 @@ use masp_primitives::transaction::components::sapling::fees::{ use masp_primitives::transaction::components::transparent::fees::{ InputView as TransparentInputView, OutputView as TransparentOutputView, }; -use masp_primitives::transaction::components::I32Sum; +use masp_primitives::transaction::components::I128Sum; use namada_core::ledger::governance::cli::onchain::{ DefaultProposal, OnChainProposal, PgfFundingProposal, PgfStewardProposal, ProposalVote, @@ -1643,7 +1643,7 @@ async fn used_asset_types< // Collect all the asset types used in the Sapling converts for output in builder.sapling_converts() { for (asset_type, _) in - I32Sum::from(output.conversion().clone()).components() + I128Sum::from(output.conversion().clone()).components() { add_asset_type(&mut asset_types, shielded, client, *asset_type) .await; diff --git a/test_fixtures/masp_proofs/1362F1CF9B836CF8B05D8189EA9CB1712CCA85B0E96A3330A63BE7CD9E5ECD22.bin b/test_fixtures/masp_proofs/1362F1CF9B836CF8B05D8189EA9CB1712CCA85B0E96A3330A63BE7CD9E5ECD22.bin index 20634c1de5ed13fa856cedaf2127d8ef6c39a987..741f4d5106a2c0107b1dbbcb346b1da4d04cc5fa 100644 GIT binary patch delta 1002 zcmV9f)2Sk z3xbx1LbHDsB?Et|ZB$N(t^fDH(Z!P~CeI;tdVVf&h2S1wq=85^i?EsNm#(Mm6$^Cf zpC8<1GlLI;)q|le%A6-?Q+2d;stU=K%z5>nI7}RsG&a?-rCM1L+COsVHOB?q*YDh@ zIsBgz=9~rh!NBTxxVa6NwkgW28uW+QHJxwwyYH+rn$>^H!`?!wi!mAd2v=B$@b&SQ zg!K%D(SRWq9pE_EHcF&+@c+)14>h2TW&>{i`eh|6O4bVCl!?Vf$K6E7f=d{p2=-yk6!A@ zl0#=b&JRjJD>X*s>9I_ zP1x~#w{k9|sC`T|Bb`m-#UfCqdIC7_m-HCXMUsagO)?& z_{RUTXEh01|Me_i_Fc<0!Z5O+mo%Gj;Ug9UtsHmMrrZ7)NCL^Zed;swsSt_SSP;mi z>mlbu;x^W&^DW)*RMl6i&1#O@gill1ZfSp00xyKj{9G-UU|I4}AG{7`wq!%W4~qOg ze}^yEajuZ6*eme06*RkTiFTF(tMxVzX5u%WpdGv9nJAs9F9_`k>wy&*t;|(*DrB)S zRTx5sj$A2>$x z${IOmv3m~<(z;w;1&4oJan(%`2ib_cn{lnvFKU!eaE1cwq{t{&5xdEzj8c?fkOhk delta 1002 zcmVpk*o95o+sy!j3?)2rzLiDn_ld*Lk;u- zAo>W*4+W*yW8ST5ntdnZX%9pYUkB&FaY^gtM?x5Sma|t7^a3E^HG97fO%V;Q3GW=8 z7Q-V7YOwL(c2Xh6Jv}Z>+AB4)YZLSWAiZ4^lX^sH^9rQ&gXP(NuV|+^k zbjJWR=d*tnB?Eu1Sg7AKIHb>%y>pD=gV38zfmhBe^c}z4=K(Ob=%{M{GsRD$3}sZ< z`13s)&J$p$1=4PqDhg)QZNeU(xii-KDhxNL6T5xkfZ&S2@@+#p5nc1D>+w{YLX>>! z&(-(_=Uz8#)G0G3uXFL2P6s|XkLbR8wo}Gyo%@r%Hd=q(I=pa6vcnOgR&z_bEBNqu zrEU7CxQ2`KTrvb^`>S8#c{R3!F-PAjJ(>y-n$8UaSCF`*SYvzvFG=R}eVh&=w&UC* z2OqS8afQq3o2A^)AHcBKI0{XAQo);6Abp0KC3t+&_G*<%7>tZW5tFZNZV!N%e>k!_DUBk>tMM;|yBYaCd)5W;LY=eH1w9dVaAr9_cIbU*CL4 zTofue!39yve(U!}l`*Mh&KFjp57vqJd9MNH!5^T^@Nz^P*J+{qUg%%B(7?TX9gWDl z-T`_a2xKz$#1sDxiW$g95=pNmb!S~*pq(l-ri>;=)e>AUV-)|RwpH`XqN!aOXsj6EXANhRAs!h94?&m`>x|&9` zg73G;Mu5c<<7(^@(ZS6rK2ivl2=1-#Y$9a<8KL{`4OVh4?lJn{9oE32)hTjhl?czs Ya}+Rcru$9usD;;K>Tn9_0h8n$G(5oe8~^|S diff --git a/test_fixtures/masp_proofs/29AC8DE3B07495BEABEAF50FE8FF8BF07596031CD460FEBFAEA4F75AF65D5402.bin b/test_fixtures/masp_proofs/29AC8DE3B07495BEABEAF50FE8FF8BF07596031CD460FEBFAEA4F75AF65D5402.bin new file mode 100644 index 0000000000000000000000000000000000000000..b748454de8fd4dcd1fb8fc32f944bc6abc828039 GIT binary patch literal 9208 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 literal 0 HcmV?d00001 diff --git a/test_fixtures/masp_proofs/37332141CB34FC30FF51F4BEE8D76149D3088F539CF8372D404609B89B095EF7.bin b/test_fixtures/masp_proofs/37332141CB34FC30FF51F4BEE8D76149D3088F539CF8372D404609B89B095EF7.bin index 1fbae64602829c00c5f1da4fa116e6a3dc28caa9..18f83d0543674902e112707b9a890c8baf916c7d 100644 GIT binary patch delta 1002 zcmVvYhohcmRZRsWyRVE!v#6`hu zk(qIeQddQ$q}|-O06{Kq!C&2!mkmP*8(k-`36 zA?XXmR0V%_E1S@M7R-2&ymF~G#ClQiPR1qVyGQB>+3-q|7QhoAG7358k$!IX?!n*R zJR9%dF}LkDLJe+ny9RU`Q$S@q#_W~>MIcM_tw99FAb?De;iQo4Eiv=XpE*Pm;nxMP z5vGD!i8Q!rRiQaXyb24kK`=&z%p5ZsB1s68;Cp{_tD}#j77w96T{ssDLXxU_4B~U* zZ9MpSwU}u*`QcSk%B&v0JTaeAwf|@}gThnR)l`*6Q?UjGNWokP z?l6@LKM*Zv!J`e|Si3kNq80I{&Y;Fi$+GBnuv|&J+JmSK5#%nGaG=BPFuZQ-HZCv5 zCx0i|R(ih$S6745pYZmQ`^z7Yz2d@6W(|Mr*1iIyAwaMi3aidjT>rP{QRuJc78I|W zXK1&i5+1?S?CqCL06QWUOH@w_VbdV_FBi!S!>jukac-;KrW{>=z|UJ<+X~xuL&>W~ zn}-|e4kGFLKmr;7b`LBB-5LFoq3fWsVD;2Tn$A zARF%H-*q4qcsBAYxPVlin2eOvOMoo!?qTg37=%L8sD|1#nCT+f;8z@QNgY>fO%TYi YE$!*C*K|(TI4fpp@^KR`0F&e#H2>)7?EnA( delta 1002 zcmVe6>1H+jGSqT`PNLuuCrGV^a3DLVLmyV&#ydNPhCsu zM2L~U&v{E|(5ctv@ZIaruv#;-YZLSWARl*%nEx%fG9+jZOQ2|RQBwB1w6)HeI?t;v zi!}V6E3-~B&4&sKlc=-Npnv%n*-s#fNnN@SBwzXwTAbL@YsCZpj>}s zmMD4_iHoL7Mcp^PB2n~iKxrCIR7G&rsxv^O=upSz%T<4y!GEG5tS}vI)@n`s75lT@ zp&JxP75=|#uG63X04BaXv{mi?1;PP8KK+U0lLR>b=BMk2NY?LUSN)8bMY;Owi>|UJ z8}_M>b7b`U5b=7q=sLOYsQbV36V|>mXqe8L5J`Fd{(Fm)WHqA~m`yt$gOcP@-F6~* z@DWtVao2ys$941zZ7A0@5_=@>=%xs$(@N+NmL>KNLuP5#r2RsUXX z%jE3-*wdFoiZ0R`TXOkj%_!<3k#;^Q@tye^^e0mW@rB+UmV&V1I2&j zg4u9pG$u(HmsxRui^s3DqlE>ieCZ(bQ21X819yLtK*zbY2}HsAUE?=XBWALdePvmZ z;0OsMmb3?Ht!E-r33Iya-{6K8^$>owT3iss!|0~Zxyyu6f@Jnw21t^=ftP<6jTJ&jhU{2+t#bE=2NVa@6i3n65c(VD zfI)W2o>X~<1Kter1^D7~_hxv{Zj1nk4VgJPpyk6JZKPUH7E5v(JxOB)V=rYI@NQ?- z5K5>zTt^&&x$^B+HWZC8VOPbN~PV diff --git a/test_fixtures/masp_proofs/52984E26D4A044A259B441C1DAEB66F886B3A3B6C71D33F456B859D01DA47ADD.bin b/test_fixtures/masp_proofs/52984E26D4A044A259B441C1DAEB66F886B3A3B6C71D33F456B859D01DA47ADD.bin new file mode 100644 index 0000000000000000000000000000000000000000..c51b5ed0d978ab920e1c513daaffdee73adc4aed GIT binary patch literal 9208 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 Od;j+x0s`nCH~$7@I|zCJ literal 0 HcmV?d00001 diff --git a/test_fixtures/masp_proofs/8B29BC2E1A96DF331C7C3A2B227C98D1E5AAAA9988F26B1A47090ACCE693572F.bin b/test_fixtures/masp_proofs/8B29BC2E1A96DF331C7C3A2B227C98D1E5AAAA9988F26B1A47090ACCE693572F.bin index fc528241a153f61d1e8fa210caa13bc95cd1c670..afcad7c65449afcb2942ccb2e2db2169ed4ffc23 100644 GIT binary patch delta 1002 zcmVjs{Lk;u- zAft2SEe1x3k?ZIxnig@KV4LceiY%E2A}|`F#FwW3C0|O24V0wR-o}80J!|EP{BR`kSd&qp_E!W z);Ig9!|ds@w=9ZZLq)AYOysu|Qmlj@p`2^Nth#k_AWBUMT z%}*;6o^D7rY6W9@LYR2vyIs83Rk6EQNLis@vBX{$I!S+20DLZ$Vy(oYNVcfJS=XUG zu7jf&@5U2aQ)*oy5u4M4kqUD%<%{l!F#VG5vP<6hShmlNy@@WEg zIEy{C!k&KyqT`1-R>4i4_-DFFqbS^e83T~T)7zTr9cI?`|77>bg&BiJs-HBE5hVmF z+4CpKI)Vi;;^cytA~|Q3|Cv78&VLGsCHx|W`53^;7mjLr@uH@Ngm~H^V+M=u-yeRRDLdv z>MnoN!@p;7?&N*iS1A5HZ$WI0nuRx|g%1G=U%&!fxc_%q*!Mum@EB$&QYql+`R-$e_6I5>2$B3i(bqJ!3s13fdFc1X|mIZ(G-`HJFNw~>KqEHbTh+cVa#QefkszZEI z_qDJEDMrb$X!XMZ88XwU4N8qagDj|Sf;9K%iFEyL@fG|qGm|;vcn4W1qsup@;!`rR zzhsL^J?9T0f@s~TV$lbJgeN|YJWWK4k-L-TVe0w_@_p@0F$j?h{~|qGMW2CIr+Y@t z>V)PF0vx!0lPy#YKO@38bb}SI6;oaH*vb+Fd~LX7Z&Jl;aWez&Ty~MW6suvKtiz|n YJe73yQ(X`P$Z74p=MaZ7Dvz4$JtiYUa?TP5 zHV|Z0vW0r36Af3MU{~BXL~+TpYZLSWAko2KdLrr~RiCgbbe_xnoT5dVY$d}z%#ehK zr4vq3JhOimB?Eu35Tx*YDvx@r#_Z|xY=sp_jaiNw7v4;ciB>ceyJagBqYH6j*$Y>7 z6Fk%gOVpu)1Na(R!ud4v7wMXetet!c6&EXwwOmR(kO~Xw#dU?1v{Bw)lbrFCBKh7} z%*|yAEV;n>CsHM+abb6bsbnwu;@bs^96uQ5>M07dg6)6U=dLIpb+19`K!UqW1+*rhiA; zx{Gt&!le&kUWY+u-@-#7pch0#xC?uVKFhq zlXt=%+LcXZz(Fsl4#gU$@c9xosQ=-+iG;_#P(^>-|8262A%s)jYfCBHw5YhI=)Waf zXxG@p8TRQRR+Q?(c*$rBt*)NCvJ;wMzSyS1wZVd@>%H=K5HY_&g&g(Wn)Wu`3M@Pq6`>y}y z^_zd^ZbE<9`eL2Y+Y=K9!5?i%5uo3!Fs!{D6Y2x9AL`99^v%}yr?Uok&+^7NmvTD; zz1-@zV+!&T$OcphO!t_*&4mM~95i3?J=Uh?q0mmLCzr(-_ktdOwT4xfPf z6-B1Nv3(UA-X=$*38k(Oh1j`STkl0_n%7yL=PD+Df80&$2c7idFk=SGx|*HtZ9l6B zO~C@}rl7tpj$w!bwBd}PVid6GVXJexKsCLac^*1BDY|CL+CgpO<^=Ek@f>hcks3y$ zGi-QV`-o37XUs$*4%}2OhxMTlf6k{K4H+sG_*C?)eK|(Tra+T!jYRW1p;{R-jY_#7 Y3Pcn$N)EMb8cUh_iZU5#2$SR-G*c?_y8r+H diff --git a/test_fixtures/masp_proofs/917B7AD5FD4F2F0CB33924511A59181FA326C06FCA9A49B5A5C394C75942820E.bin b/test_fixtures/masp_proofs/917B7AD5FD4F2F0CB33924511A59181FA326C06FCA9A49B5A5C394C75942820E.bin deleted file mode 100644 index 4dde0ccf5f17bae502d207612170f73df7e81ba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15573 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 diff --git a/test_fixtures/masp_proofs/9883C2EF7971504BB1CF651BAFFC3DA2C57E4FD8FF0811D9CB129887F0F9F706.bin b/test_fixtures/masp_proofs/9883C2EF7971504BB1CF651BAFFC3DA2C57E4FD8FF0811D9CB129887F0F9F706.bin new file mode 100644 index 0000000000000000000000000000000000000000..094103100a780895ed109ac82128ed1b142bfc78 GIT binary patch literal 25031 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 Yx6j}GyTc!+KWFv+m;Lqmb9t421Kf{AI{*Lx literal 0 HcmV?d00001 diff --git a/test_fixtures/masp_proofs/99393E3AC8046F86ABA05519568B6780B6F18A312AE3909BEA19D16FCFE837DC.bin b/test_fixtures/masp_proofs/99393E3AC8046F86ABA05519568B6780B6F18A312AE3909BEA19D16FCFE837DC.bin new file mode 100644 index 0000000000000000000000000000000000000000..f456d94d7d508b81413aada12461d083d9b29c0c GIT binary patch literal 18792 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 literal 0 HcmV?d00001 diff --git a/test_fixtures/masp_proofs/A08264B610C5903A47D48E90ABA700BB49387329F8FD049D5F66C95B11B55ADE.bin b/test_fixtures/masp_proofs/A08264B610C5903A47D48E90ABA700BB49387329F8FD049D5F66C95B11B55ADE.bin deleted file mode 100644 index 4d88ddcc5d402717893ed197c13f45baa08a53c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22648 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 O`(GFTIDr5A$$tPvo&`t% diff --git a/test_fixtures/masp_proofs/A9D6D90370C747C254D4DD4A2D4B1C762CEA0436B0ECA42C52A830A0FD66BC00.bin b/test_fixtures/masp_proofs/A9D6D90370C747C254D4DD4A2D4B1C762CEA0436B0ECA42C52A830A0FD66BC00.bin deleted file mode 100644 index d67642b43e9810f3f2e1acccdbbee81da239a5ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10312 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 diff --git a/test_fixtures/masp_proofs/BA4FED83467B6FEE522748C6F7E72A01F0B169F946835583DC2C71B550315603.bin b/test_fixtures/masp_proofs/BA4FED83467B6FEE522748C6F7E72A01F0B169F946835583DC2C71B550315603.bin new file mode 100644 index 0000000000000000000000000000000000000000..565d189c0ce9f5b3fc605e1d63a57a4b3ff949e5 GIT binary patch literal 19947 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 NzCZiK~)dy{2)v!?Iv~r|L{bjoXQNN0??% zC)8Vfc>Y$J&x{-d+Kqsv=!>+iXWZ12965yPK5KsQ!Sn5Ox!ZdvZIec2Ga4kYC^i$2 zk&B`9p4}LlZ=fEqnnS*-T*6Y%f}cwcvMC| z@%BTx&l6L4c#XrgR+HY3({7o!Oi3XPv`UtMh8LgM5}2Vbha(y~DQ#F7t;?RjZijwS z+k~fy>ly|$vBMJ!JK*@+bW_>Ue;PZ$j4kb9m! zqo)CaQPv?815&S=46xFM-=Tz_CC70hx7T61=({Un@gP2XW-u%Otcc$XIUnjl4e&qV z2Nn)_m{ou6MID(wS?)Yt&Q*Ov1uC#_>f!t(*uH~tr-t3}72onzEicT20WJXAM9RdJ z8Hji=6=?r31b?+%w zH)6x3thvA>JyU|rydeMzq==QGrc@o-VcY6x{9fjE`FVI=m8CsMj(%z`=xl@n1XS

uE-H%Yk6E~GN6&ybD%-m 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 literal 0 HcmV?d00001 diff --git a/test_fixtures/masp_proofs/EE7C912B7E21F07494D58AA6668DC6BBB31619C7E93A1A5A2E64B694DBE1BD6E.bin b/test_fixtures/masp_proofs/EE7C912B7E21F07494D58AA6668DC6BBB31619C7E93A1A5A2E64B694DBE1BD6E.bin new file mode 100644 index 0000000000000000000000000000000000000000..fee4361a2b54e7e9b59cdc715893a58d59f9ada9 GIT binary patch literal 7448 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 Y6BuD6dz(Z?U#j6PLnD=60F&e#G!Mh-$p8QV diff --git a/test_fixtures/masp_proofs/F36A8353F15FD6D8158DBC67DDB827EEEDA858AB983D16024AAA415579A68953.bin b/test_fixtures/masp_proofs/F36A8353F15FD6D8158DBC67DDB827EEEDA858AB983D16024AAA415579A68953.bin new file mode 100644 index 0000000000000000000000000000000000000000..755c32011e4d8f737561ac85b8cb3357c052506c GIT binary patch literal 9649 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 S<8^*Kf>!4E`4(MeJ1o literal 0 HcmV?d00001 diff --git a/test_fixtures/masp_proofs/F3FE67606FCCCE54C3BCF643F0C7F5019CA3DF4CB89D10CB4E38DA9CDE3A9A0A.bin b/test_fixtures/masp_proofs/F3FE67606FCCCE54C3BCF643F0C7F5019CA3DF4CB89D10CB4E38DA9CDE3A9A0A.bin deleted file mode 100644 index b10162bc6b0288fcfa3d1721fd716ec3c2a776b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13799 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 L{&$QI|9bu}n12XU diff --git a/tests/src/integration/masp.rs b/tests/src/integration/masp.rs index ecd1b34465d..592130e574e 100644 --- a/tests/src/integration/masp.rs +++ b/tests/src/integration/masp.rs @@ -6,9 +6,6 @@ use namada::types::io::DefaultIo; use namada_apps::client::tx::CLIShieldedUtils; use namada_apps::node::ledger::shell::testing::client::run; use namada_apps::node::ledger::shell::testing::utils::{Bin, CapturedOutput}; -use namada_core::types::address::{btc, eth, masp_rewards}; -use namada_core::types::token; -use namada_core::types::token::{DenominatedAmount, NATIVE_MAX_DECIMAL_PLACES}; use test_log::test; use super::setup; @@ -22,10 +19,6 @@ use crate::e2e::setup::constants::{ /// for leaving their assets in the pool for varying periods of time. #[test] fn masp_incentives() -> Result<()> { - // The number of decimal places used by BTC amounts. - const BTC_DENOMINATION: u8 = 8; - // The number of decimal places used by ETH amounts. - const ETH_DENOMINATION: u8 = 18; // This address doesn't matter for tests. But an argument is required. let validator_one_rpc = "127.0.0.1:26567"; // Download the shielded pool parameters before starting node @@ -35,7 +28,7 @@ fn masp_incentives() -> Result<()> { // not invalidated. let mut node = setup::setup()?; // Wait till epoch boundary - let ep0 = node.next_epoch(); + node.next_epoch(); // Send 20 BTC from Albert to PA run( &node, @@ -94,10 +87,8 @@ fn masp_incentives() -> Result<()> { assert!(captured.result.is_ok()); assert!(captured.contains("No shielded nam balance found")); - let masp_rewards = masp_rewards(); - // Wait till epoch boundary - let ep1 = node.next_epoch(); + node.next_epoch(); // Assert BTC balance at VK(A) is 20 let captured = CapturedOutput::of(|| { @@ -118,9 +109,6 @@ fn masp_incentives() -> Result<()> { assert!(captured.result.is_ok()); assert!(captured.contains("btc: 20")); - let amt20 = token::Amount::from_uint(20, BTC_DENOMINATION).unwrap(); - let amt10 = token::Amount::from_uint(10, ETH_DENOMINATION).unwrap(); - // Assert NAM balance at VK(A) is 20*BTC_reward*(epoch_1-epoch_0) let captured = CapturedOutput::of(|| { run( @@ -138,13 +126,8 @@ fn masp_incentives() -> Result<()> { ) }); - let amt = (amt20 * masp_rewards[&btc()]).0 * (ep1.0 - ep0.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 22.74")); // Assert NAM balance at MASP pool is 20*BTC_reward*(epoch_1-epoch_0) let captured = CapturedOutput::of(|| { @@ -162,16 +145,11 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt20 * masp_rewards[&btc()]).0 * (ep1.0 - ep0.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 22.74")); // Wait till epoch boundary - let ep2 = node.next_epoch(); + node.next_epoch(); // Assert BTC balance at VK(A) is 20 let captured = CapturedOutput::of(|| { @@ -208,13 +186,8 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt20 * masp_rewards[&btc()]).0 * (ep2.0 - ep0.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 90.96")); // Assert NAM balance at MASP pool is 20*BTC_reward*(epoch_2-epoch_0) let captured = CapturedOutput::of(|| { @@ -232,16 +205,11 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt20 * masp_rewards[&btc()]).0 * (ep2.0 - ep0.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 90.96")); // Wait till epoch boundary - let ep3 = node.next_epoch(); + node.next_epoch(); // Send 10 ETH from Albert to PA(B) run( @@ -302,7 +270,7 @@ fn masp_incentives() -> Result<()> { assert!(captured.contains("No shielded nam balance found")); // Wait till epoch boundary - let ep4 = node.next_epoch(); + node.next_epoch(); // Assert ETH balance at VK(B) is 10 let captured = CapturedOutput::of(|| { @@ -339,13 +307,8 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt10 * masp_rewards[ð()]).0 * (ep4.0 - ep3.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 22.71432")); // Assert NAM balance at MASP pool is // 20*BTC_reward*(epoch_4-epoch_0)+10*ETH_reward*(epoch_4-epoch_3) @@ -364,17 +327,11 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = ((amt20 * masp_rewards[&btc()]).0 * (ep4.0 - ep0.0)) - + ((amt10 * masp_rewards[ð()]).0 * (ep4.0 - ep3.0)); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 386.46336")); // Wait till epoch boundary - let ep5 = node.next_epoch(); + node.next_epoch(); // Send 10 ETH from SK(B) to Christel run( @@ -417,7 +374,7 @@ fn masp_incentives() -> Result<()> { assert!(captured.result.is_ok()); assert!(captured.contains("No shielded eth balance found")); - let _ep = node.next_epoch(); + node.next_epoch(); // Assert NAM balance at VK(B) is 10*ETH_reward*(ep-epoch_3) let captured = CapturedOutput::of(|| { @@ -435,15 +392,10 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt10 * masp_rewards[ð()]).0 * (ep5.0 - ep3.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 86.60024")); - let ep = node.next_epoch(); + node.next_epoch(); // Assert NAM balance at MASP pool is // 20*BTC_reward*(epoch_5-epoch_0)+10*ETH_reward*(epoch_5-epoch_3) let captured = CapturedOutput::of(|| { @@ -461,17 +413,11 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = ((amt20 * masp_rewards[&btc()]).0 * (ep.0 - ep0.0)) - + ((amt10 * masp_rewards[ð()]).0 * (ep5.0 - ep3.0)); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 1180.41525")); // Wait till epoch boundary - let ep6 = node.next_epoch(); + node.next_epoch(); // Send 20 BTC from SK(A) to Christel run( @@ -530,13 +476,8 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt20 * masp_rewards[&btc()]).0 * (ep6.0 - ep0.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated,))); + assert!(captured.contains("nam: 1407.16324")); // Assert NAM balance at MASP pool is // 20*BTC_reward*(epoch_6-epoch_0)+20*ETH_reward*(epoch_5-epoch_3) @@ -555,17 +496,11 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = ((amt20 * masp_rewards[&btc()]).0 * (ep6.0 - ep0.0)) - + ((amt10 * masp_rewards[ð()]).0 * (ep5.0 - ep3.0)); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated,))); + assert!(captured.contains("nam: 1520.37191")); // Wait till epoch boundary - let _ep7 = node.next_epoch(); + node.next_epoch(); // Assert NAM balance at VK(A) is 20*BTC_reward*(epoch_6-epoch_0) let captured = CapturedOutput::of(|| { @@ -583,13 +518,8 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt20 * masp_rewards[&btc()]).0 * (ep6.0 - ep0.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated))); + assert!(captured.contains("nam: 1573.18")); // Assert NAM balance at VK(B) is 10*ETH_reward*(epoch_5-epoch_3) let captured = CapturedOutput::of(|| { @@ -607,13 +537,8 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = (amt10 * masp_rewards[ð()]).0 * (ep5.0 - ep3.0); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated,))); + assert!(captured.contains("nam: 126.565")); // Assert NAM balance at MASP pool is // 20*BTC_reward*(epoch_6-epoch_0)+10*ETH_reward*(epoch_5-epoch_3) @@ -632,18 +557,12 @@ fn masp_incentives() -> Result<()> { ], ) }); - let amt = ((amt20 * masp_rewards[&btc()]).0 * (ep6.0 - ep0.0)) - + ((amt10 * masp_rewards[ð()]).0 * (ep5.0 - ep3.0)); - let denominated = DenominatedAmount { - amount: amt, - denom: NATIVE_MAX_DECIMAL_PLACES.into(), - }; assert!(captured.result.is_ok()); - assert!(captured.contains(&format!("nam: {}", denominated,))); + assert!(captured.contains("nam: 1699.745")); // Wait till epoch boundary to prevent conversion expiry during transaction // construction - let _ep8 = node.next_epoch(); + node.next_epoch(); // Send 10*ETH_reward*(epoch_5-epoch_3) NAM from SK(B) to Christel run( @@ -658,8 +577,7 @@ fn masp_incentives() -> Result<()> { "--token", NAM, "--amount", - &((amt10 * masp_rewards[ð()]).0 * (ep5.0 - ep3.0)) - .to_string_native(), + "141.49967", "--signing-keys", BERTHA, "--node", @@ -669,7 +587,7 @@ fn masp_incentives() -> Result<()> { node.assert_success(); // Wait till epoch boundary - let _ep9 = node.next_epoch(); + node.next_epoch(); // Send 20*BTC_reward*(epoch_6-epoch_0) NAM from SK(A) to Bertha run( @@ -684,8 +602,7 @@ fn masp_incentives() -> Result<()> { "--token", NAM, "--amount", - &((amt20 * masp_rewards[&btc()]).0 * (ep6.0 - ep0.0)) - .to_string_native(), + "1980.356", "--signing-keys", ALBERT, "--node", diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 5dbe91c1e42..439d62e184a 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -3101,7 +3101,7 @@ dependencies = [ [[package]] name = "masp_note_encryption" version = "0.2.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "borsh 0.9.4", "chacha20 0.9.1", @@ -3114,7 +3114,7 @@ dependencies = [ [[package]] name = "masp_primitives" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "aes 0.7.5", "bip0039", @@ -3145,7 +3145,7 @@ dependencies = [ [[package]] name = "masp_proofs" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "bellman", "blake2b_simd", diff --git a/wasm/wasm_source/Cargo.toml b/wasm/wasm_source/Cargo.toml index 81f07ba0497..2022e64ca07 100644 --- a/wasm/wasm_source/Cargo.toml +++ b/wasm/wasm_source/Cargo.toml @@ -43,7 +43,7 @@ once_cell = {version = "1.8.0", optional = true} wee_alloc = "0.4.5" getrandom = { version = "0.2", features = ["custom"] } # branch = "murisi/namada-integration" -masp_primitives = { git = "https://github.com/anoma/masp", rev = "50acc5028fbcd52a05970fe7991c7850ab04358e", optional = true } +masp_primitives = { git = "https://github.com/anoma/masp", rev = "1345b463e8fa3b3a6fa13e4a43fb1c410690ad62", optional = true } ripemd = "0.1" [dev-dependencies] diff --git a/wasm_for_tests/wasm_source/Cargo.lock b/wasm_for_tests/wasm_source/Cargo.lock index 8e3bc2bb202..c8cafdda1c6 100644 --- a/wasm_for_tests/wasm_source/Cargo.lock +++ b/wasm_for_tests/wasm_source/Cargo.lock @@ -3101,7 +3101,7 @@ dependencies = [ [[package]] name = "masp_note_encryption" version = "0.2.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "borsh 0.9.4", "chacha20 0.9.1", @@ -3114,7 +3114,7 @@ dependencies = [ [[package]] name = "masp_primitives" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "aes 0.7.5", "bip0039", @@ -3145,7 +3145,7 @@ dependencies = [ [[package]] name = "masp_proofs" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=1345b463e8fa3b3a6fa13e4a43fb1c410690ad62#1345b463e8fa3b3a6fa13e4a43fb1c410690ad62" dependencies = [ "bellman", "blake2b_simd",