From e0a4a3ebc3c20ef5f6db4ee87e7330c57bf79197 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Thu, 8 Feb 2024 12:57:50 +0100 Subject: [PATCH 01/15] Removes vp updates --- wasm/wasm_source/src/tx_update_account.rs | 22 ---------------------- wasm/wasm_source/src/vp_user.rs | 9 +-------- 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/wasm/wasm_source/src/tx_update_account.rs b/wasm/wasm_source/src/tx_update_account.rs index 86038ab489..153aa33c11 100644 --- a/wasm/wasm_source/src/tx_update_account.rs +++ b/wasm/wasm_source/src/tx_update_account.rs @@ -17,28 +17,6 @@ fn apply_tx(ctx: &mut Ctx, tx: Tx) -> TxResult { let owner = &tx_data.addr; debug_log!("update VP for: {:#?}", tx_data.addr); - if let Some(hash) = tx_data.vp_code_hash { - let vp_code_sec = signed - .get_section(&hash) - .ok_or_err_msg("vp code section not found") - .map_err(|err| { - ctx.set_commitment_sentinel(); - err - })? - .extra_data_sec() - .ok_or_err_msg("vp code section must be tagged as extra") - .map_err(|err| { - ctx.set_commitment_sentinel(); - err - })?; - - ctx.update_validity_predicate( - owner, - vp_code_sec.code.hash(), - &vp_code_sec.tag, - )?; - } - if let Some(threshold) = tx_data.threshold { let threshold_key = account::threshold_key(owner); ctx.write(&threshold_key, threshold)?; diff --git a/wasm/wasm_source/src/vp_user.rs b/wasm/wasm_source/src/vp_user.rs index ca91a20997..8c396589e1 100644 --- a/wasm/wasm_source/src/vp_user.rs +++ b/wasm/wasm_source/src/vp_user.rs @@ -134,14 +134,7 @@ fn validate_tx( KeyType::PoS => validate_pos_changes(ctx, &addr, key, &valid_sig)?, KeyType::PgfSteward(address) => address != &addr || *valid_sig, KeyType::GovernanceVote(voter) => voter != &addr || *valid_sig, - KeyType::Vp(owner) => { - let has_post: bool = ctx.has_key_post(key)?; - if owner == &addr { - has_post && *valid_sig - } else { - true - } - } + KeyType::Vp(owner) => !(owner == &addr), KeyType::Masp | KeyType::Ibc => true, KeyType::Unknown => { // Unknown changes require a valid signature From 51074a6a15e979ac3425432e9945c75fa75c62e8 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Thu, 8 Feb 2024 17:38:06 +0100 Subject: [PATCH 02/15] Removes vp from `UpdateAccount` --- crates/account/src/types.rs | 7 ++--- crates/apps/src/lib/cli.rs | 3 -- crates/benches/txs.rs | 15 +--------- crates/benches/vps.rs | 29 ++----------------- crates/light_sdk/src/transaction/account.rs | 2 -- crates/sdk/src/args.rs | 10 ------- crates/sdk/src/lib.rs | 10 ++----- crates/sdk/src/signing.rs | 26 ----------------- crates/sdk/src/tx.rs | 32 +-------------------- 9 files changed, 8 insertions(+), 126 deletions(-) diff --git a/crates/account/src/types.rs b/crates/account/src/types.rs index 606cf4c63c..0d2c17968a 100644 --- a/crates/account/src/types.rs +++ b/crates/account/src/types.rs @@ -21,12 +21,13 @@ pub struct InitAccount { /// account. pub public_keys: Vec, /// The VP code hash + // FIXME: remove this too? pub vp_code_hash: Hash, /// The account signature threshold pub threshold: u8, } -/// A tx data type to update an account's validity predicate +/// A tx data type to update an account's signature threshold and keys #[derive( Debug, Clone, @@ -40,8 +41,6 @@ pub struct InitAccount { pub struct UpdateAccount { /// An address of the account pub addr: Address, - /// The new VP code hash - pub vp_code_hash: Option, /// Public keys to be written into the account's storage. This can be used /// for signature verification of transactions for the newly created /// account. @@ -84,13 +83,11 @@ pub mod tests { public_keys in collection::vec(arb_common_pk(), 0..10), )( addr in arb_non_internal_address(), - vp_code_hash in option::of(arb_hash()), threshold in option::of(0..=public_keys.len() as u8), public_keys in Just(public_keys), ) -> UpdateAccount { UpdateAccount { addr, - vp_code_hash, public_keys, threshold, } diff --git a/crates/apps/src/lib/cli.rs b/crates/apps/src/lib/cli.rs index 38ad2cb14a..d21318517f 100644 --- a/crates/apps/src/lib/cli.rs +++ b/crates/apps/src/lib/cli.rs @@ -4459,7 +4459,6 @@ pub mod args { let chain_ctx = ctx.borrow_mut_chain_or_exit(); TxUpdateAccount:: { tx, - vp_code_path: self.vp_code_path, tx_code_path: self.tx_code_path, addr: chain_ctx.get(&self.addr), public_keys: self @@ -4475,14 +4474,12 @@ pub mod args { impl Args for TxUpdateAccount { fn parse(matches: &ArgMatches) -> Self { let tx = Tx::parse(matches); - let vp_code_path = CODE_PATH_OPT.parse(matches); let addr = ADDRESS.parse(matches); let tx_code_path = PathBuf::from(TX_UPDATE_ACCOUNT_WASM); let public_keys = PUBLIC_KEYS.parse(matches); let threshold = THRESHOLD.parse(matches); Self { tx, - vp_code_path, addr, tx_code_path, public_keys, diff --git a/crates/benches/txs.rs b/crates/benches/txs.rs index 44749908c3..55304d1e09 100644 --- a/crates/benches/txs.rs +++ b/crates/benches/txs.rs @@ -366,21 +366,8 @@ fn reveal_pk(c: &mut Criterion) { fn update_account(c: &mut Criterion) { let shell = BenchShell::default(); - let vp_code_hash: Hash = shell - .read_storage_key(&Key::wasm_hash(VP_USER_WASM)) - .unwrap(); - let extra_section = Section::ExtraData(Code::from_hash( - vp_code_hash, - Some(VP_USER_WASM.to_string()), - )); let data = UpdateAccount { addr: defaults::albert_address(), - vp_code_hash: Some(Hash( - extra_section - .hash(&mut sha2::Sha256::new()) - .finalize_reset() - .into(), - )), public_keys: vec![defaults::albert_keypair().ref_to()], threshold: None, }; @@ -388,7 +375,7 @@ fn update_account(c: &mut Criterion) { TX_UPDATE_ACCOUNT_WASM, data, None, - Some(vec![extra_section]), + None, vec![&defaults::albert_keypair()], ); diff --git a/crates/benches/vps.rs b/crates/benches/vps.rs index 35dc7ca219..d95c3f5747 100644 --- a/crates/benches/vps.rs +++ b/crates/benches/vps.rs @@ -11,7 +11,6 @@ use namada::governance::VoteProposalData; use namada::ledger::gas::{TxGasMeter, VpGasMeter}; use namada::token::{Amount, Transfer}; use namada::tx::data::pos::{Bond, CommissionChange}; -use namada::tx::{Code, Section}; use namada::types::hash::Hash; use namada::types::key::ed25519; use namada::types::storage::{Key, TxIndex}; @@ -23,7 +22,6 @@ use namada_apps::bench_utils::{ VP_USER_WASM, }; use namada_apps::wallet::defaults; -use sha2::Digest; const VP_IMPLICIT_WASM: &str = "vp_implicit.wasm"; @@ -67,21 +65,8 @@ fn vp_user(c: &mut Criterion) { vec![&defaults::bertha_keypair()], ); - let vp_validator_hash = shell - .read_storage_key(&Key::wasm_hash(VP_USER_WASM)) - .unwrap(); - let extra_section = Section::ExtraData(Code::from_hash( - vp_validator_hash, - Some(VP_USER_WASM.to_string()), - )); let data = UpdateAccount { addr: defaults::albert_address(), - vp_code_hash: Some(Hash( - extra_section - .hash(&mut sha2::Sha256::new()) - .finalize_reset() - .into(), - )), public_keys: vec![defaults::albert_keypair().to_public()], threshold: None, }; @@ -89,7 +74,7 @@ fn vp_user(c: &mut Criterion) { TX_UPDATE_ACCOUNT_WASM, data, None, - Some(vec![extra_section]), + None, vec![&defaults::albert_keypair()], ); @@ -356,18 +341,8 @@ fn vp_validator(c: &mut Criterion) { vec![&defaults::bertha_keypair()], ); - let extra_section = Section::ExtraData(Code::from_hash( - vp_code_hash, - Some(VP_USER_WASM.to_string()), - )); let data = UpdateAccount { addr: defaults::validator_address(), - vp_code_hash: Some(Hash( - extra_section - .hash(&mut sha2::Sha256::new()) - .finalize_reset() - .into(), - )), public_keys: vec![defaults::validator_account_keypair().to_public()], threshold: None, }; @@ -375,7 +350,7 @@ fn vp_validator(c: &mut Criterion) { TX_UPDATE_ACCOUNT_WASM, data, None, - Some(vec![extra_section]), + None, vec![&defaults::validator_account_keypair()], ); diff --git a/crates/light_sdk/src/transaction/account.rs b/crates/light_sdk/src/transaction/account.rs index e4d30ece2c..f9a400e2bb 100644 --- a/crates/light_sdk/src/transaction/account.rs +++ b/crates/light_sdk/src/transaction/account.rs @@ -174,14 +174,12 @@ impl UpdateAccount { /// Build a raw UpdateAccount transaction from the given parameters pub fn new( addr: Address, - vp_code_hash: Option, public_keys: Vec, threshold: Option, args: GlobalArgs, ) -> Self { let update_account = namada_sdk::account::UpdateAccount { addr, - vp_code_hash, public_keys, threshold, }; diff --git a/crates/sdk/src/args.rs b/crates/sdk/src/args.rs index 557e9e2556..84af52f126 100644 --- a/crates/sdk/src/args.rs +++ b/crates/sdk/src/args.rs @@ -801,8 +801,6 @@ pub struct TxInitValidator { pub struct TxUpdateAccount { /// Common tx arguments pub tx: Tx, - /// Path to the VP WASM code file - pub vp_code_path: Option, /// Path to the TX WASM code file pub tx_code_path: PathBuf, /// Address of the account whose VP is to be updated @@ -826,14 +824,6 @@ impl TxBuilder for TxUpdateAccount { } impl TxUpdateAccount { - /// Path to the VP WASM code file - pub fn vp_code_path(self, vp_code_path: PathBuf) -> Self { - Self { - vp_code_path: Some(vp_code_path), - ..self - } - } - /// Path to the TX WASM code file pub fn tx_code_path(self, tx_code_path: PathBuf) -> Self { Self { diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs index 9c49ffb0af..50fd3a4283 100644 --- a/crates/sdk/src/lib.rs +++ b/crates/sdk/src/lib.rs @@ -284,7 +284,6 @@ pub trait Namada: Sized + MaybeSync + MaybeSend { fn new_update_account(&self, addr: Address) -> args::TxUpdateAccount { args::TxUpdateAccount { addr, - vp_code_path: None, public_keys: vec![], threshold: None, tx_code_path: PathBuf::from(TX_UPDATE_ACCOUNT_WASM), @@ -1186,20 +1185,15 @@ pub mod testing { } prop_compose! { - // Generate an arbitrary account initialization transaction + // Generate an arbitrary account update transaction pub fn arb_update_account_tx()( mut header in arb_header(), wrapper in arb_wrapper_tx(), - mut update_account in arb_update_account(), - extra_data in arb_code(), + update_account in arb_update_account(), code_hash in arb_hash(), ) -> (Tx, TxData) { header.tx_type = TxType::Wrapper(Box::new(wrapper)); let mut tx = Tx { header, sections: vec![] }; - if let Some(vp_code_hash) = &mut update_account.vp_code_hash { - let new_code_hash = tx.add_section(Section::ExtraData(extra_data)).get_hash(); - *vp_code_hash = new_code_hash; - } tx.add_data(update_account.clone()); tx.add_code_from_hash(code_hash, Some(TX_UPDATE_ACCOUNT_WASM.to_owned())); (tx, TxData::UpdateAccount(update_account)) diff --git a/crates/sdk/src/signing.rs b/crates/sdk/src/signing.rs index 7bc127c68d..34a58ae655 100644 --- a/crates/sdk/src/signing.rs +++ b/crates/sdk/src/signing.rs @@ -1206,26 +1206,6 @@ pub async fn to_ledger_vector( )]) } - let vp_code_data = match &update_account.vp_code_hash { - Some(hash) => { - let extra = tx - .get_section(hash) - .and_then(|x| Section::extra_data_sec(x.as_ref())) - .ok_or_else(|| { - Error::Other("unable to load vp code".to_string()) - })?; - let vp_code = if extra.tag == Some(VP_USER_WASM.to_string()) { - "User".to_string() - } else { - HEXLOWER.encode(&extra.code.hash().0) - }; - Some((vp_code, extra.code.hash())) - } - None => None, - }; - if let Some((vp_code, _)) = &vp_code_data { - tv.output.extend(vec![format!("VP type : {}", vp_code)]); - } tv.output_expert .extend(vec![format!("Address : {}", update_account.addr)]); tv.output_expert.extend( @@ -1238,12 +1218,6 @@ pub async fn to_ledger_vector( tv.output_expert .extend(vec![format!("Threshold : {}", threshold,)]) } - if let Some((_, extra_code_hash)) = vp_code_data { - tv.output_expert.extend(vec![format!( - "VP type : {}", - HEXLOWER.encode(&extra_code_hash.0) - )]); - } } else if code_sec.tag == Some(TX_TRANSFER_WASM.to_string()) { let transfer = Transfer::try_from_slice( &tx.data() diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index 86729aa2dd..5a2ec946e0 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -2679,7 +2679,6 @@ pub async fn build_update_account( context: &impl Namada, args::TxUpdateAccount { tx: tx_args, - vp_code_path, tx_code_path, addr, public_keys, @@ -2713,53 +2712,24 @@ pub async fn build_update_account( ))); }; - let vp_code_hash = match vp_code_path { - Some(code_path) => { - let vp_hash = query_wasm_code_hash_buf(context, code_path).await?; - Some(vp_hash) - } - None => None, - }; - let chain_id = tx_args.chain_id.clone().unwrap(); let mut tx = Tx::new(chain_id, tx_args.expiration); if let Some(memo) = &tx_args.memo { tx.add_memo(memo); } - let extra_section_hash = vp_code_path.as_ref().zip(vp_code_hash).map( - |(code_path, vp_code_hash)| { - tx.add_extra_section_from_hash( - vp_code_hash, - Some(code_path.to_string_lossy().into_owned()), - ) - }, - ); let data = UpdateAccount { addr, - vp_code_hash: extra_section_hash, public_keys: public_keys.clone(), threshold: *threshold, }; - let add_code_hash = |tx: &mut Tx, data: &mut UpdateAccount| { - let extra_section_hash = vp_code_path.as_ref().zip(vp_code_hash).map( - |(code_path, vp_code_hash)| { - tx.add_extra_section_from_hash( - vp_code_hash, - Some(code_path.to_string_lossy().into_owned()), - ) - }, - ); - data.vp_code_hash = extra_section_hash; - Ok(()) - }; build( context, tx_args, tx_code_path.clone(), data, - add_code_hash, + do_nothing, unshield, fee_amount, &signing_data.fee_payer, From ff562c030bdeadcd4b2d962820847bf6815767d6 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Thu, 8 Feb 2024 17:40:33 +0100 Subject: [PATCH 03/15] Removes host fn `update_validity_predicate` and updates wasm tests --- crates/namada/src/vm/host_env.rs | 54 ++------------------- crates/namada/src/vm/wasm/host_env.rs | 1 - crates/tests/src/vm_host_env/mod.rs | 35 -------------- crates/tests/src/vm_host_env/tx.rs | 8 --- crates/tx_env/src/lib.rs | 8 --- crates/tx_prelude/src/lib.rs | 22 --------- crates/vm_env/src/lib.rs | 10 ---- wasm/wasm_source/src/vp_implicit.rs | 42 +--------------- wasm/wasm_source/src/vp_user.rs | 70 +++------------------------ 9 files changed, 13 insertions(+), 237 deletions(-) diff --git a/crates/namada/src/vm/host_env.rs b/crates/namada/src/vm/host_env.rs index 21cc2885e8..c54a2dbd6a 100644 --- a/crates/namada/src/vm/host_env.rs +++ b/crates/namada/src/vm/host_env.rs @@ -842,6 +842,9 @@ where tracing::debug!("tx_update {}, {:?}", key, value); let key = Key::parse(key).map_err(TxRuntimeError::StorageDataError)?; + // FIXME: should remove this? Basically, should we allow txs to write vps to + // storage? FIXME: probably also depends if we need this for init + // account if key.is_validity_predicate().is_some() { tx_validate_vp_code_hash(env, &value, &None)?; } @@ -1439,55 +1442,6 @@ where Ok(()) } -/// Update a validity predicate function exposed to the wasm VM Tx environment -pub fn tx_update_validity_predicate( - env: &TxVmEnv, - addr_ptr: u64, - addr_len: u64, - code_hash_ptr: u64, - code_hash_len: u64, - code_tag_ptr: u64, - code_tag_len: u64, -) -> TxResult<()> -where - MEM: VmMemory, - DB: namada_state::DB + for<'iter> namada_state::DBIter<'iter>, - H: StorageHasher, - CA: WasmCacheAccess, -{ - let (addr, gas) = env - .memory - .read_string(addr_ptr, addr_len as _) - .map_err(|e| TxRuntimeError::MemoryError(Box::new(e)))?; - tx_charge_gas(env, gas)?; - - let addr = Address::decode(addr).map_err(TxRuntimeError::AddressError)?; - tracing::debug!("tx_update_validity_predicate for addr {}", addr); - - let (code_tag, gas) = env - .memory - .read_bytes(code_tag_ptr, code_tag_len as _) - .map_err(|e| TxRuntimeError::MemoryError(Box::new(e)))?; - tx_charge_gas(env, gas)?; - let code_tag = Option::::try_from_slice(&code_tag) - .map_err(TxRuntimeError::EncodingError)?; - - let key = Key::validity_predicate(&addr); - let (code_hash, gas) = env - .memory - .read_bytes(code_hash_ptr, code_hash_len as _) - .map_err(|e| TxRuntimeError::MemoryError(Box::new(e)))?; - tx_charge_gas(env, gas)?; - - tx_validate_vp_code_hash(env, &code_hash, &code_tag)?; - - let write_log = unsafe { env.ctx.write_log.get() }; - let (gas, _size_diff) = write_log - .write(&key, code_hash) - .map_err(TxRuntimeError::StorageModificationError)?; - tx_charge_gas(env, gas) -} - /// Initialize a new account established address. pub fn tx_init_account( env: &TxVmEnv, @@ -1517,6 +1471,7 @@ where let code_tag = Option::::try_from_slice(&code_tag) .map_err(TxRuntimeError::EncodingError)?; + // FIXME: if I rmove from init maybe no need for this tx_validate_vp_code_hash(env, &code_hash, &code_tag)?; tracing::debug!("tx_init_account"); @@ -2082,6 +2037,7 @@ where } /// Validate a VP WASM code hash in a tx environment. +// FIXME: should remove this function? fn tx_validate_vp_code_hash( env: &TxVmEnv, code_hash: &[u8], diff --git a/crates/namada/src/vm/wasm/host_env.rs b/crates/namada/src/vm/wasm/host_env.rs index 4ab7ecda35..caa614a185 100644 --- a/crates/namada/src/vm/wasm/host_env.rs +++ b/crates/namada/src/vm/wasm/host_env.rs @@ -72,7 +72,6 @@ where "namada_tx_iter_prefix" => Function::new_native_with_env(wasm_store, env.clone(), host_env::tx_iter_prefix), "namada_tx_iter_next" => Function::new_native_with_env(wasm_store, env.clone(), host_env::tx_iter_next), "namada_tx_insert_verifier" => Function::new_native_with_env(wasm_store, env.clone(), host_env::tx_insert_verifier), - "namada_tx_update_validity_predicate" => Function::new_native_with_env(wasm_store, env.clone(), host_env::tx_update_validity_predicate), "namada_tx_init_account" => Function::new_native_with_env(wasm_store, env.clone(), host_env::tx_init_account), "namada_tx_emit_ibc_event" => Function::new_native_with_env(wasm_store, env.clone(), host_env::tx_emit_ibc_event), "namada_tx_get_ibc_events" => Function::new_native_with_env(wasm_store, env.clone(), host_env::tx_get_ibc_events), diff --git a/crates/tests/src/vm_host_env/mod.rs b/crates/tests/src/vm_host_env/mod.rs index 2269acf1a8..0d562d7ce4 100644 --- a/crates/tests/src/vm_host_env/mod.rs +++ b/crates/tests/src/vm_host_env/mod.rs @@ -232,41 +232,6 @@ mod tests { tx::ctx().init_account(code_hash, &None).unwrap(); } - /// Test that a tx updating validity predicate that is not in the allowlist - /// fails. - #[test] - #[should_panic = "DisallowedVp"] - fn test_tx_update_vp_not_allowed_rejected() { - // Initialize a tx environment - tx_host_env::init(); - - let vp_owner = address::testing::established_address_1(); - let keypair = key::testing::keypair_1(); - let public_key = keypair.ref_to(); - let vp_code = TestWasms::VpAlwaysTrue.read_bytes(); - let vp_hash = sha256(&vp_code); - - tx_host_env::with(|tx_env| { - // let mut tx_env = TestTxEnv::default(); - tx_env.init_parameters( - None, - Some(vec!["some_hash".to_string()]), - None, - None, - ); - - // Spawn the accounts to be able to modify their storage - tx_env.spawn_accounts([&vp_owner]); - tx_env.init_account_storage(&vp_owner, vec![public_key.clone()], 1); - }); - - // Update VP in a transaction. - // Panics only due to unwrap in `native_host_fn!` test macro - tx::ctx() - .update_validity_predicate(&vp_owner, vp_hash, &None) - .unwrap() - } - /// Test that a tx writing validity predicate that is not in the allowlist /// directly to storage fails #[test] diff --git a/crates/tests/src/vm_host_env/tx.rs b/crates/tests/src/vm_host_env/tx.rs index c91807589a..687262101e 100644 --- a/crates/tests/src/vm_host_env/tx.rs +++ b/crates/tests/src/vm_host_env/tx.rs @@ -483,14 +483,6 @@ mod native_tx_host_env { native_host_fn!(tx_iter_prefix(prefix_ptr: u64, prefix_len: u64) -> u64); native_host_fn!(tx_iter_next(iter_id: u64) -> i64); native_host_fn!(tx_insert_verifier(addr_ptr: u64, addr_len: u64)); - native_host_fn!(tx_update_validity_predicate( - addr_ptr: u64, - addr_len: u64, - code_hash_ptr: u64, - code_hash_len: u64, - code_tag_ptr: u64, - code_tag_len: u64, - )); native_host_fn!(tx_init_account( code_hash_ptr: u64, code_hash_len: u64, diff --git a/crates/tx_env/src/lib.rs b/crates/tx_env/src/lib.rs index bc482d5004..97e6a973b9 100644 --- a/crates/tx_env/src/lib.rs +++ b/crates/tx_env/src/lib.rs @@ -40,14 +40,6 @@ pub trait TxEnv: StorageRead + StorageWrite { code_tag: &Option, ) -> Result
; - /// Update a validity predicate - fn update_validity_predicate( - &mut self, - addr: &Address, - code: impl AsRef<[u8]>, - code_tag: &Option, - ) -> Result<()>; - /// Emit an IBC event. On multiple calls, these emitted event will be added. fn emit_ibc_event(&mut self, event: &IbcEvent) -> Result<()>; diff --git a/crates/tx_prelude/src/lib.rs b/crates/tx_prelude/src/lib.rs index 4d04314a53..ade6345a15 100644 --- a/crates/tx_prelude/src/lib.rs +++ b/crates/tx_prelude/src/lib.rs @@ -321,28 +321,6 @@ impl TxEnv for Ctx { .expect("Decoding address created by the ledger shouldn't fail")) } - fn update_validity_predicate( - &mut self, - addr: &Address, - code_hash: impl AsRef<[u8]>, - code_tag: &Option, - ) -> Result<(), Error> { - let addr = addr.encode(); - let code_hash = code_hash.as_ref(); - let code_tag = code_tag.serialize_to_vec(); - unsafe { - namada_tx_update_validity_predicate( - addr.as_ptr() as _, - addr.len() as _, - code_hash.as_ptr() as _, - code_hash.len() as _, - code_tag.as_ptr() as _, - code_tag.len() as _, - ) - }; - Ok(()) - } - fn emit_ibc_event(&mut self, event: &ibc::IbcEvent) -> Result<(), Error> { let event = borsh::to_vec(event).unwrap(); unsafe { diff --git a/crates/vm_env/src/lib.rs b/crates/vm_env/src/lib.rs index 63b5b01bc7..9107b3b1c3 100644 --- a/crates/vm_env/src/lib.rs +++ b/crates/vm_env/src/lib.rs @@ -60,16 +60,6 @@ pub mod tx { // Insert a verifier pub fn namada_tx_insert_verifier(addr_ptr: u64, addr_len: u64); - // Update a validity predicate - pub fn namada_tx_update_validity_predicate( - addr_ptr: u64, - addr_len: u64, - code_hash_ptr: u64, - code_hash_len: u64, - code_tag_ptr: u64, - code_tag_len: u64, - ); - // Initialize a new account pub fn namada_tx_init_account( code_hash_ptr: u64, diff --git a/wasm/wasm_source/src/vp_implicit.rs b/wasm/wasm_source/src/vp_implicit.rs index e880a75934..f3a050ee4a 100644 --- a/wasm/wasm_source/src/vp_implicit.rs +++ b/wasm/wasm_source/src/vp_implicit.rs @@ -75,7 +75,8 @@ fn validate_tx( verifiers: BTreeSet
, ) -> VpResult { debug_log!( - "vp_user called with user addr: {}, key_changed: {:?}, verifiers: {:?}", + "vp_implicit called with user addr: {}, key_changed: {:?}, verifiers: \ + {:?}", addr, keys_changed, verifiers @@ -947,43 +948,4 @@ mod tests { assert!(validate_tx(&CTX, signed_tx, vp_owner, keys_changed, verifiers).unwrap()); } } - - /// Test that a validity predicate update without a valid signature is - /// rejected. - #[test] - fn test_unsigned_vp_update_rejected() { - // Initialize a tx environment - let mut tx_env = TestTxEnv::default(); - - let secret_key = key::testing::keypair_1(); - let public_key = secret_key.ref_to(); - let vp_owner: Address = (&public_key).into(); - let vp_code = TestWasms::VpAlwaysTrue.read_bytes(); - let vp_hash = sha256(&vp_code); - // for the update - tx_env.store_wasm_code(vp_code); - - // Spawn the accounts to be able to modify their storage - tx_env.spawn_accounts([&vp_owner]); - - // Initialize VP environment from a transaction - vp_host_env::init_from_tx(vp_owner.clone(), tx_env, |address| { - // Update VP in a transaction - tx::ctx() - .update_validity_predicate(address, vp_hash, &None) - .unwrap(); - }); - - let vp_env = vp_host_env::take(); - let mut tx_data = Tx::from_type(TxType::Raw); - tx_data.set_data(Data::new(vec![])); - let keys_changed: BTreeSet = - vp_env.all_touched_storage_keys(); - let verifiers: BTreeSet
= BTreeSet::default(); - vp_host_env::set(vp_env); - assert!( - !validate_tx(&CTX, tx_data, vp_owner, keys_changed, verifiers) - .unwrap() - ); - } } diff --git a/wasm/wasm_source/src/vp_user.rs b/wasm/wasm_source/src/vp_user.rs index 8c396589e1..253a59f532 100644 --- a/wasm/wasm_source/src/vp_user.rs +++ b/wasm/wasm_source/src/vp_user.rs @@ -1268,10 +1268,9 @@ mod tests { // Initialize VP environment from a transaction vp_host_env::init_from_tx(vp_owner.clone(), tx_env, |address| { - // Update VP in a transaction - tx::ctx() - .update_validity_predicate(address, vp_hash, &None) - .unwrap(); + // Update threshold in a transaction + let threshold_key = account::threshold_key(address); + tx::ctx().write(&threshold_key, 10).unwrap(); }); let vp_env = vp_host_env::take(); @@ -1310,66 +1309,9 @@ mod tests { // Initialize VP environment from a transaction vp_host_env::init_from_tx(vp_owner.clone(), tx_env, |address| { - // Update VP in a transaction - tx::ctx() - .update_validity_predicate(address, vp_hash, &None) - .unwrap(); - }); - - let pks_map = AccountPublicKeysMap::from_iter(vec![public_key]); - - let mut vp_env = vp_host_env::take(); - let mut tx = vp_env.tx.clone(); - tx.set_data(Data::new(vec![])); - tx.set_code(Code::new(vec![], None)); - tx.add_section(Section::Signature(Signature::new( - vec![tx.raw_header_hash()], - pks_map.index_secret_keys(vec![keypair]), - None, - ))); - let signed_tx = tx.clone(); - vp_env.tx = signed_tx.clone(); - let keys_changed: BTreeSet = - vp_env.all_touched_storage_keys(); - let verifiers: BTreeSet
= BTreeSet::default(); - vp_host_env::set(vp_env); - assert!( - validate_tx(&CTX, signed_tx, vp_owner, keys_changed, verifiers) - .unwrap() - ); - } - - /// Test that a validity predicate update is accepted if allowed - #[test] - fn test_signed_vp_update_allowed_accepted() { - // Initialize a tx environment - let mut tx_env = TestTxEnv::default(); - - let vp_owner = address::testing::established_address_1(); - let keypair = key::testing::keypair_1(); - let public_key = keypair.ref_to(); - let vp_code = TestWasms::VpAlwaysTrue.read_bytes(); - let vp_hash = sha256(&vp_code); - // for the update - tx_env.store_wasm_code(vp_code); - - tx_env.init_parameters( - None, - Some(vec![vp_hash.to_string()]), - None, - None, - ); - - // Spawn the accounts to be able to modify their storage - tx_env.spawn_accounts([&vp_owner]); - tx_env.init_account_storage(&vp_owner, vec![public_key.clone()], 1); - - // Initialize VP environment from a transaction - vp_host_env::init_from_tx(vp_owner.clone(), tx_env, |address| { - // Update VP in a transaction - tx::ctx() - .update_validity_predicate(address, vp_hash, &None) - .unwrap(); + // Update threshold in a transaction + let threshold_key = account::threshold_key(address); + tx::ctx().write(&threshold_key, 10).unwrap(); }); let pks_map = AccountPublicKeysMap::from_iter(vec![public_key]); From e4a7ddf7d7b22e2afbbb606063dd5aec6741cdc5 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Fri, 9 Feb 2024 01:45:15 +0100 Subject: [PATCH 04/15] Removes VP from `InitAccount` and init validator in genesis. Reworks client args and types. --- crates/account/src/types.rs | 7 --- crates/apps/src/lib/cli.rs | 46 +------------------ crates/apps/src/lib/client/tx.rs | 2 - crates/apps/src/lib/client/utils.rs | 1 - crates/apps/src/lib/config/genesis.rs | 1 - .../src/lib/config/genesis/transactions.rs | 18 +------- .../src/lib/node/ledger/shell/init_chain.rs | 14 ++++-- crates/benches/txs.rs | 9 +--- crates/light_sdk/src/transaction/account.rs | 2 - crates/namada/src/vm/host_env.rs | 45 ++++++++---------- crates/sdk/src/args.rs | 12 ----- crates/sdk/src/lib.rs | 8 +--- crates/sdk/src/signing.rs | 24 ++-------- crates/sdk/src/tx.rs | 15 +----- crates/tests/src/e2e/setup.rs | 1 - crates/tests/src/vm_host_env/ibc.rs | 4 +- crates/tests/src/vm_host_env/mod.rs | 31 ++----------- crates/tests/src/vm_host_env/tx.rs | 8 +--- crates/tx_env/src/lib.rs | 6 +-- crates/tx_prelude/src/lib.rs | 18 +------- crates/vm_env/src/lib.rs | 8 +--- wasm/wasm_source/src/tx_init_account.rs | 20 +------- 22 files changed, 51 insertions(+), 249 deletions(-) diff --git a/crates/account/src/types.rs b/crates/account/src/types.rs index 0d2c17968a..43ada0da08 100644 --- a/crates/account/src/types.rs +++ b/crates/account/src/types.rs @@ -1,6 +1,5 @@ use namada_core::borsh::{BorshDeserialize, BorshSchema, BorshSerialize}; use namada_core::types::address::Address; -use namada_core::types::hash::Hash; use namada_core::types::key::common; use serde::{Deserialize, Serialize}; @@ -20,9 +19,6 @@ pub struct InitAccount { /// for signature verification of transactions for the newly created /// account. pub public_keys: Vec, - /// The VP code hash - // FIXME: remove this too? - pub vp_code_hash: Hash, /// The account signature threshold pub threshold: u8, } @@ -53,7 +49,6 @@ pub struct UpdateAccount { /// Tests and strategies for accounts pub mod tests { use namada_core::types::address::testing::arb_non_internal_address; - use namada_core::types::hash::testing::arb_hash; use namada_core::types::key::testing::arb_common_pk; use proptest::prelude::Just; use proptest::{collection, option, prop_compose}; @@ -67,11 +62,9 @@ pub mod tests { )( threshold in 0..=public_keys.len() as u8, public_keys in Just(public_keys), - vp_code_hash in arb_hash(), ) -> InitAccount { InitAccount { public_keys, - vp_code_hash, threshold, } } diff --git a/crates/apps/src/lib/cli.rs b/crates/apps/src/lib/cli.rs index d21318517f..bba3778d83 100644 --- a/crates/apps/src/lib/cli.rs +++ b/crates/apps/src/lib/cli.rs @@ -1246,8 +1246,8 @@ pub mod cmds { fn def() -> App { App::new(Self::CMD) .about( - "Send a signed transaction to update account's validity \ - predicate.", + "Send a signed transaction to update account's threshold \ + or keys.", ) .add_args::>() } @@ -3198,8 +3198,6 @@ pub mod args { arg_multi("account-keys"); pub const VALIDATOR_CONSENSUS_KEY: ArgOpt = arg_opt("consensus-key"); - pub const VALIDATOR_CODE_PATH: ArgOpt = - arg_opt("validator-code-path"); pub const VALIDATOR_ETH_COLD_KEY: ArgOpt = arg_opt("eth-cold-key"); pub const VALIDATOR_ETH_HOT_KEY: ArgOpt = @@ -3209,7 +3207,6 @@ pub mod args { pub const VIEWING_KEY: Arg = arg("key"); pub const VIEWING_KEYS: ArgMulti = arg_multi("viewing-keys"); - pub const VP: ArgOpt = arg_opt("vp"); pub const WALLET_ALIAS_FORCE: ArgFlag = flag("wallet-alias-force"); pub const WASM_CHECKSUMS_PATH: Arg = arg("wasm-checksums-path"); pub const WASM_DIR: ArgOpt = arg_opt("wasm-dir"); @@ -4135,7 +4132,6 @@ pub mod args { let chain_ctx = ctx.borrow_mut_chain_or_exit(); TxInitAccount:: { tx, - vp_code_path: self.vp_code_path, tx_code_path: self.tx_code_path, public_keys: self .public_keys @@ -4150,15 +4146,11 @@ pub mod args { impl Args for TxInitAccount { fn parse(matches: &ArgMatches) -> Self { let tx = Tx::parse(matches); - let vp_code_path = CODE_PATH_OPT - .parse(matches) - .unwrap_or_else(|| PathBuf::from(VP_USER_WASM)); let tx_code_path = PathBuf::from(TX_INIT_ACCOUNT_WASM); let public_keys = PUBLIC_KEYS.parse(matches); let threshold = THRESHOLD.parse(matches); Self { tx, - vp_code_path, public_keys, threshold, tx_code_path, @@ -4167,11 +4159,6 @@ pub mod args { fn def(app: App) -> App { app.add_args::>() - .arg(CODE_PATH_OPT.def().help( - "The path to the validity predicate WASM code to be used \ - for the new account. Uses the default user VP if none \ - specified.", - )) .arg(PUBLIC_KEYS.def().help( "A list public keys to be associated with the new account \ in hexadecimal encoding.", @@ -4292,11 +4279,6 @@ pub mod args { .arg(WEBSITE_OPT.def().help("The validator's website.")) .arg(DISCORD_OPT.def().help("The validator's discord handle.")) .arg(AVATAR_OPT.def().help("The validator's avatar.")) - .arg(VALIDATOR_CODE_PATH.def().help( - "The path to the validity predicate WASM code to be used \ - for the validator account. Uses the default validator VP \ - if none specified.", - )) .arg(UNSAFE_DONT_ENCRYPT.def().help( "UNSAFE: Do not encrypt the generated keypairs. Do not \ use this for keys used in a live network.", @@ -4328,9 +4310,6 @@ pub mod args { website: self.website, discord_handle: self.discord_handle, avatar: self.avatar, - validator_vp_code_path: self - .validator_vp_code_path - .to_path_buf(), unsafe_dont_encrypt: self.unsafe_dont_encrypt, tx_init_account_code_path: self .tx_init_account_code_path @@ -4359,9 +4338,6 @@ pub mod args { let website = WEBSITE_OPT.parse(matches); let discord_handle = DISCORD_OPT.parse(matches); let avatar = AVATAR_OPT.parse(matches); - let validator_vp_code_path = VALIDATOR_CODE_PATH - .parse(matches) - .unwrap_or_else(|| PathBuf::from(VP_USER_WASM)); let unsafe_dont_encrypt = UNSAFE_DONT_ENCRYPT.parse(matches); let tx_init_account_code_path = PathBuf::from(TX_INIT_ACCOUNT_WASM); let tx_become_validator_code_path = @@ -4383,7 +4359,6 @@ pub mod args { website, discord_handle, avatar, - validator_vp_code_path, unsafe_dont_encrypt, tx_init_account_code_path, tx_become_validator_code_path, @@ -4436,11 +4411,6 @@ pub mod args { .arg(WEBSITE_OPT.def().help("The validator's website.")) .arg(DISCORD_OPT.def().help("The validator's discord handle.")) .arg(AVATAR_OPT.def().help("The validator's avatar.")) - .arg(VALIDATOR_CODE_PATH.def().help( - "The path to the validity predicate WASM code to be used \ - for the validator account. Uses the default validator VP \ - if none specified.", - )) .arg(UNSAFE_DONT_ENCRYPT.def().help( "UNSAFE: Do not encrypt the generated keypairs. Do not \ use this for keys used in a live network.", @@ -4489,11 +4459,6 @@ pub mod args { fn def(app: App) -> App { app.add_args::>() - .arg( - CODE_PATH_OPT.def().help( - "The path to the new validity predicate WASM code.", - ), - ) .arg(ADDRESS.def().help( "The account's address. It's key is used to produce the \ signature.", @@ -6981,7 +6946,6 @@ pub mod args { #[derive(Clone, Debug)] pub struct InitGenesisEstablishedAccount { - pub vp: String, pub wallet_aliases: Vec, pub threshold: u8, pub output_path: PathBuf, @@ -6989,14 +6953,11 @@ pub mod args { impl Args for InitGenesisEstablishedAccount { fn parse(matches: &ArgMatches) -> Self { - use crate::config::genesis::utils::VP_USER; let wallet_aliases = ALIAS_MANY.parse(matches); - let vp = VP.parse(matches).unwrap_or_else(|| VP_USER.to_string()); let threshold = THRESHOLD.parse(matches).unwrap_or(1); let output_path = PATH.parse(matches); Self { wallet_aliases, - vp, threshold, output_path, } @@ -7012,9 +6973,6 @@ pub mod args { authorization. Must be less than or equal to the maximum \ number of key aliases provided.", )) - .arg(VP.def().help( - "The validity predicate of the account. Defaults to `vp_user`.", - )) .arg(PATH.def().help( "The path of the .toml file to write the established account \ transaction to. Overwrites the file if it exists.", diff --git a/crates/apps/src/lib/client/tx.rs b/crates/apps/src/lib/client/tx.rs index 21004674aa..6ed423d0c3 100644 --- a/crates/apps/src/lib/client/tx.rs +++ b/crates/apps/src/lib/client/tx.rs @@ -874,7 +874,6 @@ pub async fn submit_init_validator( description, discord_handle, avatar, - validator_vp_code_path, unsafe_dont_encrypt, tx_init_account_code_path, tx_become_validator_code_path, @@ -884,7 +883,6 @@ pub async fn submit_init_validator( namada, args::TxInitAccount { tx: tx_args.clone(), - vp_code_path: validator_vp_code_path, tx_code_path: tx_init_account_code_path, public_keys: account_keys, threshold, diff --git a/crates/apps/src/lib/client/utils.rs b/crates/apps/src/lib/client/utils.rs index a2d5115654..7d011d3020 100644 --- a/crates/apps/src/lib/client/utils.rs +++ b/crates/apps/src/lib/client/utils.rs @@ -741,7 +741,6 @@ pub fn init_genesis_established_account( .collect(); let (address, txs) = genesis::transactions::init_established_account( - args.vp, public_keys, args.threshold, ); diff --git a/crates/apps/src/lib/config/genesis.rs b/crates/apps/src/lib/config/genesis.rs index 82e5f7cdab..3eba979528 100644 --- a/crates/apps/src/lib/config/genesis.rs +++ b/crates/apps/src/lib/config/genesis.rs @@ -444,7 +444,6 @@ pub fn make_dev_genesis( genesis.transactions.established_account.as_mut().unwrap(); let tx = transactions::EstablishedAccountTx { - vp: utils::VP_USER.to_string(), public_keys: vec![StringEncoded::new( consensus_keypair.ref_to(), )], diff --git a/crates/apps/src/lib/config/genesis/transactions.rs b/crates/apps/src/lib/config/genesis/transactions.rs index 7515e2e5e2..64f0d6b9b3 100644 --- a/crates/apps/src/lib/config/genesis/transactions.rs +++ b/crates/apps/src/lib/config/genesis/transactions.rs @@ -228,12 +228,10 @@ pub fn parse_unsigned( /// Create signed [`Transactions`] for an established account. pub fn init_established_account( - vp: String, public_keys: Vec>, threshold: u8, ) -> (Address, UnsignedTransactions) { let unsigned_tx = EstablishedAccountTx { - vp, threshold, public_keys, }; @@ -672,7 +670,6 @@ impl TxToSign for ValidatorAccountTx { Ord, )] pub struct EstablishedAccountTx { - pub vp: String, #[serde(default = "default_threshold")] pub threshold: u8, /// PKs have to come last in TOML to avoid `ValueAfterTable` error @@ -1241,7 +1238,7 @@ pub struct TokenBalancesForValidation { pub fn validate_established_account( tx: &EstablishedAccountTx, - vps: Option<&ValidityPredicates>, + _vps: Option<&ValidityPredicates>, all_used_addresses: &mut BTreeSet
, established_accounts: &mut BTreeMap, u8)>, ) -> bool { @@ -1299,19 +1296,6 @@ pub fn validate_established_account( all_used_addresses.insert(established_address); } - // Check the VP exists - if !vps - .map(|vps| vps.wasm.contains_key(&tx.vp)) - .unwrap_or_default() - { - eprintln!( - "An `established_account` tx `vp` \"{}\" not found in Validity \ - predicates file.", - tx.vp - ); - is_valid = false; - } - // If PK is used, check the authorization if tx.public_keys.is_empty() { eprintln!("An `established_account` tx was found with no public keys."); diff --git a/crates/apps/src/lib/node/ledger/shell/init_chain.rs b/crates/apps/src/lib/node/ledger/shell/init_chain.rs index a881171b51..f83469638c 100644 --- a/crates/apps/src/lib/node/ledger/shell/init_chain.rs +++ b/crates/apps/src/lib/node/ledger/shell/init_chain.rs @@ -511,14 +511,14 @@ where fn apply_genesis_txs_established_account( &mut self, genesis: &genesis::chain::Finalized, - vp_cache: &mut HashMap>, + // FIXME: remove if not needed + _vp_cache: &mut HashMap>, ) -> ControlFlow<()> { if let Some(txs) = genesis.transactions.established_account.as_ref() { for FinalizedEstablishedAccountTx { address, tx: EstablishedAccountTx { - vp, threshold, public_keys, }, @@ -528,8 +528,14 @@ where "Applying genesis tx to init an established account \ {address}" ); - let vp_code = self.lookup_vp(vp, genesis, vp_cache)?; - let code_hash = CodeHash::sha256(&vp_code); + // FIXME: can't we get directly the has of vp_user from storage + // without loading the code and recomputing it? + let vp_hash_key = Key::wasm_hash("vp_user.wasm"); + let code_hash: CodeHash = + self.wl_storage.read(&vp_hash_key).unwrap().unwrap(); + // FIXME: remove if unneeded + // let vp_code = self.lookup_vp("vp_user", genesis, vp_cache)?; + // let code_hash = CodeHash::sha256(&vp_code); self.wl_storage .write_bytes(&Key::validity_predicate(address), code_hash) .unwrap(); diff --git a/crates/benches/txs.rs b/crates/benches/txs.rs index 55304d1e09..8f377be4ae 100644 --- a/crates/benches/txs.rs +++ b/crates/benches/txs.rs @@ -50,7 +50,7 @@ use namada_apps::bench_utils::{ VP_USER_WASM, }; use namada_apps::wallet::defaults; -use sha2::Digest; +// FIXME: check if all the dependencies of the bench crate are still needed fn transfer(c: &mut Criterion) { let mut group = c.benchmark_group("transfer"); @@ -403,15 +403,8 @@ fn init_account(c: &mut Criterion) { vp_code_hash, Some(VP_USER_WASM.to_string()), )); - let extra_hash = Hash( - extra_section - .hash(&mut sha2::Sha256::new()) - .finalize_reset() - .into(), - ); let data = InitAccount { public_keys: vec![new_account.to_public()], - vp_code_hash: extra_hash, threshold: 1, }; let tx = shell.generate_tx( diff --git a/crates/light_sdk/src/transaction/account.rs b/crates/light_sdk/src/transaction/account.rs index f9a400e2bb..8f98695ebd 100644 --- a/crates/light_sdk/src/transaction/account.rs +++ b/crates/light_sdk/src/transaction/account.rs @@ -20,13 +20,11 @@ impl InitAccount { /// Build a raw InitAccount transaction from the given parameters pub fn new( public_keys: Vec, - vp_code_hash: Hash, threshold: u8, args: GlobalArgs, ) -> Self { let init_account = namada_sdk::account::InitAccount { public_keys, - vp_code_hash, threshold, }; diff --git a/crates/namada/src/vm/host_env.rs b/crates/namada/src/vm/host_env.rs index c54a2dbd6a..8181870935 100644 --- a/crates/namada/src/vm/host_env.rs +++ b/crates/namada/src/vm/host_env.rs @@ -842,9 +842,6 @@ where tracing::debug!("tx_update {}, {:?}", key, value); let key = Key::parse(key).map_err(TxRuntimeError::StorageDataError)?; - // FIXME: should remove this? Basically, should we allow txs to write vps to - // storage? FIXME: probably also depends if we need this for init - // account if key.is_validity_predicate().is_some() { tx_validate_vp_code_hash(env, &value, &None)?; } @@ -1445,10 +1442,6 @@ where /// Initialize a new account established address. pub fn tx_init_account( env: &TxVmEnv, - code_hash_ptr: u64, - code_hash_len: u64, - code_tag_ptr: u64, - code_tag_len: u64, result_ptr: u64, ) -> TxResult<()> where @@ -1457,29 +1450,28 @@ where H: StorageHasher, CA: WasmCacheAccess, { - let (code_hash, gas) = env - .memory - .read_bytes(code_hash_ptr, code_hash_len as _) - .map_err(|e| TxRuntimeError::MemoryError(Box::new(e)))?; - tx_charge_gas(env, gas)?; - - let (code_tag, gas) = env - .memory - .read_bytes(code_tag_ptr, code_tag_len as _) - .map_err(|e| TxRuntimeError::MemoryError(Box::new(e)))?; - tx_charge_gas(env, gas)?; - let code_tag = Option::::try_from_slice(&code_tag) - .map_err(TxRuntimeError::EncodingError)?; - - // FIXME: if I rmove from init maybe no need for this - tx_validate_vp_code_hash(env, &code_hash, &code_tag)?; - tracing::debug!("tx_init_account"); let storage = unsafe { env.ctx.storage.get() }; let write_log = unsafe { env.ctx.write_log.get() }; - let code_hash = Hash::try_from(&code_hash[..]) - .map_err(|e| TxRuntimeError::InvalidVpCodeHash(e.to_string()))?; + // //FIXME: not sure if this works + let hash_key = Key::wasm_hash("vp_user.wasm"); + let (vp_hash, gas) = storage + .read(&hash_key) + .map_err(TxRuntimeError::StateError)?; + // FIXME: remove if unused + // let hash_key = + // namada_core::types::storage::Key::wasm_code_name("vp_user". + // to_string()); let (vp_hash, gas) = storage + // .read(&hash_key) + // .map_err(TxRuntimeError::StateError)?; + tx_charge_gas(env, gas)?; + let code_hash = Hash::try_from( + &vp_hash.ok_or(TxRuntimeError::StorageError( + StorageError::SimpleMessage("Missing hash of vp_user in storage"), + ))?[..], + ) + .map_err(|e| TxRuntimeError::InvalidVpCodeHash(e.to_string()))?; let (addr, gas) = write_log.init_account(&storage.address_gen, code_hash); let addr_bytes = addr.serialize_to_vec(); tx_charge_gas(env, gas)?; @@ -2037,7 +2029,6 @@ where } /// Validate a VP WASM code hash in a tx environment. -// FIXME: should remove this function? fn tx_validate_vp_code_hash( env: &TxVmEnv, code_hash: &[u8], diff --git a/crates/sdk/src/args.rs b/crates/sdk/src/args.rs index 84af52f126..cd793bf6d8 100644 --- a/crates/sdk/src/args.rs +++ b/crates/sdk/src/args.rs @@ -650,8 +650,6 @@ impl VoteProposal { pub struct TxInitAccount { /// Common tx arguments pub tx: Tx, - /// Path to the VP WASM code file for the new account - pub vp_code_path: PathBuf, /// Path to the TX WASM code file pub tx_code_path: PathBuf, /// Public key for the new account @@ -689,14 +687,6 @@ impl TxInitAccount { } } - /// Path to the VP WASM code file - pub fn vp_code_path(self, vp_code_path: PathBuf) -> Self { - Self { - vp_code_path, - ..self - } - } - /// Path to the TX WASM code file pub fn tx_code_path(self, tx_code_path: PathBuf) -> Self { Self { @@ -786,8 +776,6 @@ pub struct TxInitValidator { pub discord_handle: Option, /// The validator's avatar pub avatar: Option, - /// Path to the VP WASM code file - pub validator_vp_code_path: PathBuf, /// Path to the TX WASM code file pub tx_init_account_code_path: PathBuf, /// Path to the TX WASM code file diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs index 50fd3a4283..ba8fd35668 100644 --- a/crates/sdk/src/lib.rs +++ b/crates/sdk/src/lib.rs @@ -63,7 +63,6 @@ use crate::tx::{ TX_REDELEGATE_WASM, TX_RESIGN_STEWARD, TX_REVEAL_PK, TX_TRANSFER_WASM, TX_UNBOND_WASM, TX_UNJAIL_VALIDATOR_WASM, TX_UPDATE_ACCOUNT_WASM, TX_UPDATE_STEWARD_COMMISSION, TX_VOTE_PROPOSAL, TX_WITHDRAW_WASM, - VP_USER_WASM, }; use crate::wallet::{Wallet, WalletIo, WalletStorage}; @@ -176,7 +175,6 @@ pub trait Namada: Sized + MaybeSync + MaybeSend { ) -> args::TxInitAccount { args::TxInitAccount { tx: self.tx_builder(), - vp_code_path: PathBuf::from(VP_USER_WASM), tx_code_path: PathBuf::from(TX_INIT_ACCOUNT_WASM), public_keys, threshold, @@ -398,7 +396,6 @@ pub trait Namada: Sized + MaybeSync + MaybeSend { eth_cold_key: None, eth_hot_key: None, protocol_key: None, - validator_vp_code_path: PathBuf::from(VP_USER_WASM), unsafe_dont_encrypt: false, tx_init_account_code_path: PathBuf::from(TX_INIT_ACCOUNT_WASM), tx_become_validator_code_path: PathBuf::from( @@ -1098,14 +1095,13 @@ pub mod testing { pub fn arb_init_account_tx()( mut header in arb_header(), wrapper in arb_wrapper_tx(), - mut init_account in arb_init_account(), + init_account in arb_init_account(), extra_data in arb_code(), code_hash in arb_hash(), ) -> (Tx, TxData) { header.tx_type = TxType::Wrapper(Box::new(wrapper)); let mut tx = Tx { header, sections: vec![] }; - let vp_code_hash = tx.add_section(Section::ExtraData(extra_data)).get_hash(); - init_account.vp_code_hash = vp_code_hash; + let _vp_code_hash = tx.add_section(Section::ExtraData(extra_data)).get_hash(); tx.add_data(init_account.clone()); tx.add_code_from_hash(code_hash, Some(TX_INIT_ACCOUNT_WASM.to_owned())); (tx, TxData::InitAccount(init_account)) diff --git a/crates/sdk/src/signing.rs b/crates/sdk/src/signing.rs index 34a58ae655..57216c15d1 100644 --- a/crates/sdk/src/signing.rs +++ b/crates/sdk/src/signing.rs @@ -55,7 +55,6 @@ use crate::tx::{ TX_RESIGN_STEWARD, TX_REVEAL_PK, TX_TRANSFER_WASM, TX_UNBOND_WASM, TX_UNJAIL_VALIDATOR_WASM, TX_UPDATE_ACCOUNT_WASM, TX_UPDATE_STEWARD_COMMISSION, TX_VOTE_PROPOSAL, TX_WITHDRAW_WASM, - VP_USER_WASM, }; use crate::types::eth_bridge_pool::PendingTransfer; pub use crate::wallet::store::AddressVpType; @@ -981,17 +980,6 @@ pub async fn to_ledger_vector( })?; tv.name = "Init_Account_0".to_string(); - let extra = tx - .get_section(&init_account.vp_code_hash) - .and_then(|x| Section::extra_data_sec(x.as_ref())) - .ok_or_else(|| { - Error::Other("unable to load vp code".to_string()) - })?; - let vp_code = if extra.tag == Some(VP_USER_WASM.to_string()) { - "User".to_string() - } else { - HEXLOWER.encode(&extra.code.hash().0) - }; tv.output.extend(vec![format!("Type : Init Account")]); tv.output.extend( init_account @@ -999,10 +987,8 @@ pub async fn to_ledger_vector( .iter() .map(|k| format!("Public key : {}", k)), ); - tv.output.extend(vec![ - format!("Threshold : {}", init_account.threshold), - format!("VP type : {}", vp_code), - ]); + tv.output + .extend(vec![format!("Threshold : {}", init_account.threshold)]); tv.output_expert.extend( init_account @@ -1010,10 +996,8 @@ pub async fn to_ledger_vector( .iter() .map(|k| format!("Public key : {}", k)), ); - tv.output_expert.extend(vec![ - format!("Threshold : {}", init_account.threshold), - format!("VP type : {}", HEXLOWER.encode(&extra.code.hash().0)), - ]); + tv.output_expert + .extend(vec![format!("Threshold : {}", init_account.threshold)]); } else if code_sec.tag == Some(TX_BECOME_VALIDATOR_WASM.to_string()) { let init_validator = BecomeValidator::try_from_slice( &tx.data() diff --git a/crates/sdk/src/tx.rs b/crates/sdk/src/tx.rs index 5a2ec946e0..da3e474d2d 100644 --- a/crates/sdk/src/tx.rs +++ b/crates/sdk/src/tx.rs @@ -2615,7 +2615,6 @@ pub async fn build_init_account( context: &impl Namada, args::TxInitAccount { tx: tx_args, - vp_code_path, tx_code_path, public_keys, threshold, @@ -2630,8 +2629,6 @@ pub async fn build_init_account( ) .await?; - let vp_code_hash = query_wasm_code_hash_buf(context, vp_code_path).await?; - let threshold = match threshold { Some(threshold) => *threshold, None => { @@ -2647,25 +2644,15 @@ pub async fn build_init_account( let data = InitAccount { public_keys: public_keys.clone(), - // We will add the hash inside the add_code_hash function - vp_code_hash: Hash::zero(), threshold, }; - let add_code_hash = |tx: &mut Tx, data: &mut InitAccount| { - let extra_section_hash = tx.add_extra_section_from_hash( - vp_code_hash, - Some(vp_code_path.to_string_lossy().into_owned()), - ); - data.vp_code_hash = extra_section_hash; - Ok(()) - }; build( context, tx_args, tx_code_path.clone(), data, - add_code_hash, + do_nothing, unshield, fee_amount, &signing_data.fee_payer, diff --git a/crates/tests/src/e2e/setup.rs b/crates/tests/src/e2e/setup.rs index 34517848c3..92df5b9604 100644 --- a/crates/tests/src/e2e/setup.rs +++ b/crates/tests/src/e2e/setup.rs @@ -178,7 +178,6 @@ where let validator_address = { use namada_apps::config::genesis::chain::DeriveEstablishedAddress; let pre_genesis_tx = transactions::EstablishedAccountTx { - vp: "vp_user".to_string(), threshold: 1, public_keys: vec![StringEncoded::new(sk.ref_to())], }; diff --git a/crates/tests/src/vm_host_env/ibc.rs b/crates/tests/src/vm_host_env/ibc.rs index 97e564324a..11a5c7338f 100644 --- a/crates/tests/src/vm_host_env/ibc.rs +++ b/crates/tests/src/vm_host_env/ibc.rs @@ -234,11 +234,11 @@ pub fn init_storage() -> (Address, Address) { }); // initialize a token - let token = tx_host_env::ctx().init_account(code_hash, &None).unwrap(); + let token = tx_host_env::ctx().init_account().unwrap(); let denom_key = token::storage_key::denom_key(&token); let token_denom = token::Denomination(ANY_DENOMINATION); // initialize an account - let account = tx_host_env::ctx().init_account(code_hash, &None).unwrap(); + let account = tx_host_env::ctx().init_account().unwrap(); let key = token::storage_key::balance_key(&token, &account); let init_bal = Amount::from_uint(100, token_denom).unwrap(); tx_host_env::with(|env| { diff --git a/crates/tests/src/vm_host_env/mod.rs b/crates/tests/src/vm_host_env/mod.rs index 0d562d7ce4..2e1514b65f 100644 --- a/crates/tests/src/vm_host_env/mod.rs +++ b/crates/tests/src/vm_host_env/mod.rs @@ -207,33 +207,9 @@ mod tests { ); } - #[test] - #[should_panic] - fn test_tx_init_account_with_invalid_vp() { - // The environment must be initialized first - tx_host_env::init(); - - let code = vec![]; - tx::ctx().init_account(code, &None).unwrap(); - } - - #[test] - fn test_tx_init_account_with_valid_vp() { - // The environment must be initialized first - tx_host_env::init(); - - let code = TestWasms::VpAlwaysTrue.read_bytes(); - let code_hash = Hash::sha256(&code); - tx_host_env::with(|env| { - // store wasm code - let key = Key::wasm_code(&code_hash); - env.wl_storage.storage.write(&key, code.clone()).unwrap(); - }); - tx::ctx().init_account(code_hash, &None).unwrap(); - } - /// Test that a tx writing validity predicate that is not in the allowlist /// directly to storage fails + // FIXME: should probably remove this #[test] #[should_panic = "DisallowedVp"] fn test_tx_write_vp_not_allowed_rejected() { @@ -269,6 +245,7 @@ mod tests { /// is not in the allowlist fails #[test] #[should_panic = "DisallowedVp"] + // FIXME: should probably remove this fn test_tx_init_vp_not_allowed_rejected() { // Initialize a tx environment tx_host_env::init(); @@ -276,8 +253,6 @@ mod tests { let vp_owner = address::testing::established_address_1(); let keypair = key::testing::keypair_1(); let public_key = keypair.ref_to(); - let vp_code = TestWasms::VpAlwaysTrue.read_bytes(); - let vp_hash = sha256(&vp_code); tx_host_env::with(|tx_env| { // let mut tx_env = TestTxEnv::default(); @@ -294,7 +269,7 @@ mod tests { }); // Initializing a new account with the VP should fail - tx::ctx().init_account(vp_hash, &None).unwrap(); + tx::ctx().init_account().unwrap(); } #[test] diff --git a/crates/tests/src/vm_host_env/tx.rs b/crates/tests/src/vm_host_env/tx.rs index 687262101e..44380603ec 100644 --- a/crates/tests/src/vm_host_env/tx.rs +++ b/crates/tests/src/vm_host_env/tx.rs @@ -483,13 +483,7 @@ mod native_tx_host_env { native_host_fn!(tx_iter_prefix(prefix_ptr: u64, prefix_len: u64) -> u64); native_host_fn!(tx_iter_next(iter_id: u64) -> i64); native_host_fn!(tx_insert_verifier(addr_ptr: u64, addr_len: u64)); - native_host_fn!(tx_init_account( - code_hash_ptr: u64, - code_hash_len: u64, - code_tag_ptr: u64, - code_tag_len: u64, - result_ptr: u64 - )); + native_host_fn!(tx_init_account(result_ptr: u64)); native_host_fn!(tx_emit_ibc_event(event_ptr: u64, event_len: u64)); native_host_fn!(tx_get_ibc_events(event_type_ptr: u64, event_type_len: u64) -> i64); native_host_fn!(tx_get_chain_id(result_ptr: u64)); diff --git a/crates/tx_env/src/lib.rs b/crates/tx_env/src/lib.rs index 97e6a973b9..ce20545986 100644 --- a/crates/tx_env/src/lib.rs +++ b/crates/tx_env/src/lib.rs @@ -34,11 +34,7 @@ pub trait TxEnv: StorageRead + StorageWrite { /// Initialize a new account generates a new established address and /// writes the given code as its validity predicate into the storage. - fn init_account( - &mut self, - code_hash: impl AsRef<[u8]>, - code_tag: &Option, - ) -> Result
; + fn init_account(&mut self) -> Result
; /// Emit an IBC event. On multiple calls, these emitted event will be added. fn emit_ibc_event(&mut self, event: &IbcEvent) -> Result<()>; diff --git a/crates/tx_prelude/src/lib.rs b/crates/tx_prelude/src/lib.rs index ade6345a15..1c7b112a38 100644 --- a/crates/tx_prelude/src/lib.rs +++ b/crates/tx_prelude/src/lib.rs @@ -294,23 +294,9 @@ impl TxEnv for Ctx { Ok(()) } - fn init_account( - &mut self, - code_hash: impl AsRef<[u8]>, - code_tag: &Option, - ) -> Result { - let code_hash = code_hash.as_ref(); - let code_tag = code_tag.serialize_to_vec(); + fn init_account(&mut self) -> Result { let result = Vec::with_capacity(address::ESTABLISHED_ADDRESS_BYTES_LEN); - unsafe { - namada_tx_init_account( - code_hash.as_ptr() as _, - code_hash.len() as _, - code_tag.as_ptr() as _, - code_tag.len() as _, - result.as_ptr() as _, - ) - }; + unsafe { namada_tx_init_account(result.as_ptr() as _) }; let slice = unsafe { slice::from_raw_parts( result.as_ptr(), diff --git a/crates/vm_env/src/lib.rs b/crates/vm_env/src/lib.rs index 9107b3b1c3..36306ec387 100644 --- a/crates/vm_env/src/lib.rs +++ b/crates/vm_env/src/lib.rs @@ -61,13 +61,7 @@ pub mod tx { pub fn namada_tx_insert_verifier(addr_ptr: u64, addr_len: u64); // Initialize a new account - pub fn namada_tx_init_account( - code_hash_ptr: u64, - code_hash_len: u64, - code_tag_ptr: u64, - code_tag_len: u64, - result_ptr: u64, - ); + pub fn namada_tx_init_account(result_ptr: u64); // Emit an IBC event pub fn namada_tx_emit_ibc_event(event_ptr: u64, event_len: u64); diff --git a/wasm/wasm_source/src/tx_init_account.rs b/wasm/wasm_source/src/tx_init_account.rs index 5b21855c4a..67691e42b2 100644 --- a/wasm/wasm_source/src/tx_init_account.rs +++ b/wasm/wasm_source/src/tx_init_account.rs @@ -1,5 +1,4 @@ -//! A tx to initialize a new established address with a given public key and -//! a validity predicate. +//! A tx to initialize a new established address with a given public key. use namada_tx_prelude::*; @@ -14,22 +13,7 @@ fn apply_tx(ctx: &mut Ctx, tx_data: Tx) -> TxResult { .wrap_err("failed to decode InitAccount")?; debug_log!("apply_tx called to init a new established account"); - let vp_code_sec = signed - .get_section(&tx_data.vp_code_hash) - .ok_or_err_msg("vp code section not found") - .map_err(|err| { - ctx.set_commitment_sentinel(); - err - })? - .extra_data_sec() - .ok_or_err_msg("vp code section must be tagged as extra") - .map_err(|err| { - ctx.set_commitment_sentinel(); - err - })?; - - let address = - ctx.init_account(vp_code_sec.code.hash(), &vp_code_sec.tag)?; + let address = ctx.init_account()?; match account::init_account(ctx, &address, tx_data) { Ok(address) => { From 31b1070d722eadec18d5c41d3f7cac458e668de3 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Fri, 9 Feb 2024 19:22:33 +0100 Subject: [PATCH 05/15] Removes custom vps from genesis --- crates/apps/src/lib/config/genesis.rs | 22 ++++++++------- .../src/lib/config/genesis/transactions.rs | 28 ++++--------------- .../src/lib/node/ledger/shell/init_chain.rs | 27 ++++++++++++------ crates/namada/src/vm/host_env.rs | 2 +- crates/tests/src/vm_host_env/tx.rs | 19 +++++++++++-- 5 files changed, 54 insertions(+), 44 deletions(-) diff --git a/crates/apps/src/lib/config/genesis.rs b/crates/apps/src/lib/config/genesis.rs index 3eba979528..359679833a 100644 --- a/crates/apps/src/lib/config/genesis.rs +++ b/crates/apps/src/lib/config/genesis.rs @@ -191,10 +191,6 @@ pub struct Validator { /// These tokens are not staked and hence do not contribute to the /// validator's voting power pub non_staked_balance: token::Amount, - /// Validity predicate code WASM - pub validator_vp_code_path: String, - /// Expected SHA-256 hash of the validator VP - pub validator_vp_sha256: [u8; 32], } #[derive( @@ -204,10 +200,6 @@ pub struct Validator { pub struct EstablishedAccount { /// Address pub address: Address, - /// Validity predicate code WASM - pub vp_code_path: String, - /// Expected SHA-256 hash of the validity predicate wasm - pub vp_sha256: [u8; 32], /// A public key to be stored in the account's storage, if any pub public_key: Option, /// Account's sub-space storage. The values must be borsh encoded bytes. @@ -324,6 +316,7 @@ pub fn make_dev_genesis( use crate::config::genesis::chain::{finalize, DeriveEstablishedAddress}; use crate::wallet::defaults; + eprintln!("IN MAKE DEV GENESIS FILE"); //FIXME: remove let mut current_path = std::env::current_dir() .expect("Current directory should exist") .canonicalize() @@ -333,14 +326,18 @@ pub fn make_dev_genesis( current_path.pop(); } let chain_dir = current_path.join("genesis").join("localnet"); + eprintln!("BEFORE LOAD AND VALIDATE"); //FIXME: remove + // FIXME: error here in load and validate let templates = templates::load_and_validate(&chain_dir) .expect("Missing genesis files"); + eprintln!("AFTER LOAD AND VALIDATE"); //FIXME: remove let mut genesis = finalize( templates, ChainIdPrefix::from_str("test").unwrap(), DateTimeUtc::now(), Duration::from_secs(30).into(), ); + eprintln!("AFTER FINALIZE"); //FIXME: remove // Add Ethereum bridge params. genesis.parameters.eth_bridge_params = Some(templates::EthBridgeParams { @@ -356,6 +353,7 @@ pub fn make_dev_genesis( erc20_whitelist: vec![], }); + eprintln!("AFTER EHTEREUM"); //FIXME: remove // Use the default token address for matching tokens let default_tokens: HashMap = defaults::tokens() .into_iter() @@ -387,6 +385,7 @@ pub fn make_dev_genesis( )); bonds.retain(|bond| bond.source != fat_alberts_address); }; + eprintln!("AFTER ALBERT"); //FIXME: remove // fetch validator's balances let (first_val_balance, first_val_bonded) = { let nam_balances = genesis @@ -428,6 +427,7 @@ pub fn make_dev_genesis( ), }, }; + eprintln!("BEFORE VALIDATORS"); //FIXME: remove // Add other validators with randomly generated keys if needed for _val in 0..(num_validators - 1) { let consensus_keypair: common::SecretKey = @@ -456,9 +456,11 @@ pub fn make_dev_genesis( }; established_accounts.push(established_account_tx); + // FIXME: user utils::VP_USER.to_strin() instead of the string + // vp_user + let validator_account_tx = transactions::ValidatorAccountTx { address: StringEncoded::new(address.clone()), - vp: utils::VP_USER.to_string(), commission_rate: Dec::new(5, 2).expect("This can't fail"), max_commission_rate_change: Dec::new(1, 2) .expect("This can't fail"), @@ -493,7 +495,6 @@ pub fn make_dev_genesis( tx: transactions::Signed::new( transactions::ValidatorAccountTx { address: StringEncoded::new(address.clone()), - vp: validator_account_tx.vp, commission_rate: validator_account_tx.commission_rate, max_commission_rate_change: validator_account_tx .max_commission_rate_change, @@ -509,6 +510,7 @@ pub fn make_dev_genesis( }); address }; + eprintln!("BEFORE NAM"); //FIXME: remove // credit nam tokens to validators such that they can bond { let nam_balances = genesis diff --git a/crates/apps/src/lib/config/genesis/transactions.rs b/crates/apps/src/lib/config/genesis/transactions.rs index 64f0d6b9b3..c93f58adad 100644 --- a/crates/apps/src/lib/config/genesis/transactions.rs +++ b/crates/apps/src/lib/config/genesis/transactions.rs @@ -296,8 +296,6 @@ pub fn init_validator( eth_cold_key: StringEncoded::new( validator_wallet.eth_cold_key.ref_to(), ), - // No custom validator VPs yet - vp: utils::VP_USER.to_string(), commission_rate, max_commission_rate_change, net_address, @@ -376,7 +374,6 @@ pub async fn sign_validator_account_tx( consensus_key, protocol_key, tendermint_node_key, - vp, commission_rate, max_commission_rate_change, net_address, @@ -413,7 +410,6 @@ pub async fn sign_validator_account_tx( consensus_key, protocol_key, tendermint_node_key, - vp, commission_rate, max_commission_rate_change, net_address, @@ -577,8 +573,6 @@ pub type SignedBondTx = Signed>; pub struct ValidatorAccountTx { /// The address of the validator. pub address: StringEncoded, - // TODO: remove the vp field - pub vp: String, /// Commission rate charged on rewards for delegators (bounded inside /// 0-1) pub commission_rate: Dec, @@ -893,6 +887,8 @@ where &self, established_accounts: &[EstablishedAccountTx], ) -> (Vec, u8) { + eprintln!("EST ACCOUNTS: {:#?}", established_accounts); //FIXME: remove + eprintln!("SOURCE: {}", self.source); //FIXME: remove match &self.source { GenesisAddress::PublicKey(pk) => (vec![pk.raw.clone()], 1), GenesisAddress::EstablishedAddress(owner) => established_accounts @@ -1100,7 +1096,6 @@ pub fn validate( signatures: acct.signatures, data: ValidatorAccountTx { address: acct.data.address, - vp: acct.data.vp, commission_rate: acct.data.commission_rate, max_commission_rate_change: acct .data @@ -1306,7 +1301,7 @@ pub fn validate_established_account( pub fn validate_validator_account( signed_tx: &SignedValidatorAccountTx, - vps: Option<&ValidityPredicates>, + _vps: Option<&ValidityPredicates>, all_used_addresses: &BTreeSet
, established_accounts: &BTreeMap, u8)>, validator_accounts: &mut BTreeSet
, @@ -1339,6 +1334,7 @@ pub fn validate_validator_account( let mut is_valid = { let maybe_threshold = { let established_addr = Address::Established(tx.address.raw.clone()); + eprintln!("ESTABLISHED ACCOUNTS: {:#?}", established_accounts); //FIXME: remove established_accounts.get(&established_addr).map(|(pks, t)| { let all_ed25519_keys = pks .iter() @@ -1393,21 +1389,9 @@ pub fn validate_validator_account( established_address }; - // Check the VP exists - if !vps - .map(|vps| vps.wasm.contains_key(&tx.vp)) - .unwrap_or_default() - { - eprintln!( - "A `validator_account` tx `vp` \"{}\" not found in Validity \ - predicates file.", - tx.vp - ); - is_valid = false; - } - // Check keys authorizations let unsigned = UnsignedValidatorAccountTx::from(tx); + // FIXME: error here if !validate_signature( &unsigned, &tx.consensus_key.pk.raw, @@ -1494,7 +1478,6 @@ impl From<&ValidatorAccountTx> for UnsignedValidatorAccountTx { fn from(tx: &ValidatorAccountTx) -> Self { let ValidatorAccountTx { address, - vp, commission_rate, max_commission_rate_change, metadata, @@ -1509,7 +1492,6 @@ impl From<&ValidatorAccountTx> for UnsignedValidatorAccountTx { Self { address: address.clone(), - vp: vp.clone(), commission_rate: *commission_rate, max_commission_rate_change: *max_commission_rate_change, metadata: metadata.clone(), diff --git a/crates/apps/src/lib/node/ledger/shell/init_chain.rs b/crates/apps/src/lib/node/ledger/shell/init_chain.rs index f83469638c..3777deb171 100644 --- a/crates/apps/src/lib/node/ledger/shell/init_chain.rs +++ b/crates/apps/src/lib/node/ledger/shell/init_chain.rs @@ -97,6 +97,7 @@ where ))); } + eprintln!("BEFORE READ TOML FILE"); //FIXME: remove // Read the genesis files #[cfg(any( feature = "integration", @@ -115,6 +116,8 @@ where let chain_dir = self.base_dir.join(chain_id); genesis::make_dev_genesis(_num_validators, &chain_dir) }; + + eprintln!("AFTER READ TOML FILE"); //FIXME: remove #[cfg(all( any(test, feature = "benches"), not(feature = "integration") @@ -124,6 +127,7 @@ where let native_token = genesis.get_native_token().clone(); self.wl_storage.storage.native_token = native_token; } + eprintln!("BEFORE VALIDATION"); //FIXME: remove let mut validation = InitChainValidation::new(self, false); validation.run( init, @@ -133,6 +137,7 @@ where ); // propagate errors or panic validation.error_out()?; + eprintln!("AFTER VALIDATION"); //FIXME: remove // Init masp commitment tree and anchor let empty_commitment_tree: CommitmentTree = @@ -182,6 +187,7 @@ where H: StorageHasher + Sync + 'static, { pub fn run( + // FIXME: maybe error here &mut self, init: request::InitChain, genesis: genesis::chain::Finalized, @@ -512,7 +518,7 @@ where &mut self, genesis: &genesis::chain::Finalized, // FIXME: remove if not needed - _vp_cache: &mut HashMap>, + vp_cache: &mut HashMap>, ) -> ControlFlow<()> { if let Some(txs) = genesis.transactions.established_account.as_ref() { for FinalizedEstablishedAccountTx { @@ -528,14 +534,20 @@ where "Applying genesis tx to init an established account \ {address}" ); + eprintln!( + "Applying genesis tx to init an established account \ + {address}" + ); //FIXME: remove // FIXME: can't we get directly the has of vp_user from storage // without loading the code and recomputing it? - let vp_hash_key = Key::wasm_hash("vp_user.wasm"); - let code_hash: CodeHash = - self.wl_storage.read(&vp_hash_key).unwrap().unwrap(); + // FIXME: probably no need for .wasm + // let vp_hash_key = Key::wasm_hash("vp_user"); + // let code_hash: CodeHash = + // self.wl_storage.read(&vp_hash_key).unwrap().unwrap(); // FIXME: remove if unneeded - // let vp_code = self.lookup_vp("vp_user", genesis, vp_cache)?; - // let code_hash = CodeHash::sha256(&vp_code); + let vp_code = self.lookup_vp("vp_user", genesis, vp_cache)?; + eprintln!("AFTER VP USER LOOKUP"); //FIXME: remove + let code_hash = CodeHash::sha256(&vp_code); self.wl_storage .write_bytes(&Key::validity_predicate(address), code_hash) .unwrap(); @@ -569,7 +581,6 @@ where data: ValidatorAccountTx { address, - vp, commission_rate, max_commission_rate_change, metadata, @@ -591,7 +602,7 @@ where "Applying genesis tx to init a validator account {address}" ); - let vp_code = self.lookup_vp(vp, genesis, vp_cache)?; + let vp_code = self.lookup_vp("vp_user", genesis, vp_cache)?; let code_hash = CodeHash::sha256(&vp_code); self.wl_storage .write_bytes(&Key::validity_predicate(address), code_hash) diff --git a/crates/namada/src/vm/host_env.rs b/crates/namada/src/vm/host_env.rs index 8181870935..82495ab765 100644 --- a/crates/namada/src/vm/host_env.rs +++ b/crates/namada/src/vm/host_env.rs @@ -1455,7 +1455,7 @@ where let storage = unsafe { env.ctx.storage.get() }; let write_log = unsafe { env.ctx.write_log.get() }; // //FIXME: not sure if this works - let hash_key = Key::wasm_hash("vp_user.wasm"); + let hash_key = Key::wasm_hash("vp_user"); let (vp_hash, gas) = storage .read(&hash_key) .map_err(TxRuntimeError::StateError)?; diff --git a/crates/tests/src/vm_host_env/tx.rs b/crates/tests/src/vm_host_env/tx.rs index 44380603ec..0d6e08347f 100644 --- a/crates/tests/src/vm_host_env/tx.rs +++ b/crates/tests/src/vm_host_env/tx.rs @@ -19,7 +19,7 @@ use namada::vm::wasm::{self, TxCache, VpCache}; use namada::vm::{self, WasmCacheRwAccess}; use namada::{account, token}; use namada_tx_prelude::transaction::TxSentinel; -use namada_tx_prelude::{BorshSerializeExt, Ctx}; +use namada_tx_prelude::{BorshSerializeExt, Ctx, StorageWrite}; use namada_vp_prelude::key::common; use tempfile::TempDir; @@ -62,14 +62,29 @@ pub struct TestTxEnv { } impl Default for TestTxEnv { fn default() -> Self { + eprintln!("In defauklt TestTxEnv"); //FIXME: remove let (vp_wasm_cache, vp_cache_dir) = wasm::compilation_cache::common::testing::cache(); let (tx_wasm_cache, tx_cache_dir) = wasm::compilation_cache::common::testing::cache(); - let wl_storage = WlStorage { + let mut wl_storage = WlStorage { storage: TestStorage::default(), write_log: WriteLog::default(), }; + // Mock vp_user in storage + let code_hash = Hash::zero(); + let code_key = Key::wasm_code(&code_hash); + let code_len_key = Key::wasm_code_len(&code_hash); + let hash_key = Key::wasm_hash("vp_user"); + let code_name_key = Key::wasm_code_name("vp_user".to_owned()); + + wl_storage.write_bytes(&code_key, vec![]).unwrap(); + wl_storage.write(&code_len_key, 0).unwrap(); + wl_storage.write(&hash_key, code_hash).unwrap(); + wl_storage.write(&code_name_key, code_hash).unwrap(); + wl_storage.commit_tx(); + wl_storage.commit_block().unwrap(); + let mut tx = Tx::from_type(TxType::Raw); tx.header.chain_id = wl_storage.storage.chain_id.clone(); Self { From ab7ab421e40404f6575a773a55d849996488c600 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Fri, 9 Feb 2024 19:23:02 +0100 Subject: [PATCH 06/15] Rebuilds localnet genesis files --- genesis/README.md | 6 +- genesis/localnet/README.md | 15 ++-- genesis/localnet/balances.toml | 76 +++++++++---------- genesis/localnet/parameters.toml | 4 +- .../src/pre-genesis/bond/bond-tx-albert.toml | 4 +- .../established-account-tx-albert.toml | 3 +- .../established-account-tx-bertha.toml | 3 +- .../established-account-tx-christel.toml | 1 - .../src/pre-genesis/signed-transactions.toml | 13 ++-- .../pre-genesis/unsigned-transactions.toml | 11 +-- .../validator-0/signed-transactions.toml | 34 ++++----- .../validator-0/unsigned-transactions.toml | 20 +++-- .../validator-0/validator-wallet.toml | 10 +-- genesis/localnet/src/pre-genesis/wallet.toml | 58 ++++++++------ genesis/localnet/transactions.toml | 47 +++++------- 15 files changed, 148 insertions(+), 157 deletions(-) diff --git a/genesis/README.md b/genesis/README.md index 1aec869104..6e17d89f2f 100644 --- a/genesis/README.md +++ b/genesis/README.md @@ -36,27 +36,25 @@ The [transactions.toml file](transactions.toml) contains any transactions that c ### Genesis tx `established_account` -An established account with some `alias`, a validity predicate `vp` and optionally a `public_key`. When a public key is used, the transaction must be [signed](#signing-genesis-txs) with it to authorize its use. +An established account with some `alias` and optionally a `public_key`. When a public key is used, the transaction must be [signed](#signing-genesis-txs) with it to authorize its use. An unsigned `established_account` tx example: ```toml [[established_account]] alias = "Albert" # Aliases are case-insensitive -vp = "vp_user" public_key = "tpknam1qz0aphcsrw37j8fy742cjwhphu9jwx7esd3ad4xxtxrkwv07ff63we33t3r" ``` ### Genesis tx `validator_account` -A validator account with some `alias`, a validity predicate `vp`, various keys and validator variables. Public keys used in the transaction must also [sign](#signing-validator-genesis-txs) the transaction to authorize their use. +A validator account with some `alias`, various keys and validator variables. Public keys used in the transaction must also [sign](#signing-validator-genesis-txs) the transaction to authorize their use. An unsigned `validator_account` tx example: ```toml [[validator_account]] alias = "validator-0" -vp = "vp_user" commission_rate = "0.05" max_commission_rate_change = "0.01" net_address = "127.0.0.1:27656" diff --git a/genesis/localnet/README.md b/genesis/localnet/README.md index 52d03d794c..de64a70bc7 100644 --- a/genesis/localnet/README.md +++ b/genesis/localnet/README.md @@ -11,17 +11,17 @@ cargo watch -x "test test_validate_localnet_genesis_templates" The pre-genesis balances wallet is located at [pre-genesis/wallet.toml](pre-genesis/wallet.toml) and can be re-generated from the repo's root dir with: ```shell -cargo run --bin namadaw -- --base-dir "genesis/localnet/src" key gen \ +cargo run --bin namadaw -- --pre-genesis --base-dir "genesis/localnet/src" gen \ --alias albert-key --unsafe-dont-encrypt -cargo run --bin namadaw -- --base-dir "genesis/localnet/src" key gen \ +cargo run --bin namadaw -- --pre-genesis --base-dir "genesis/localnet/src" gen \ --alias bertha-key --unsafe-dont-encrypt -cargo run --bin namadaw -- --base-dir "genesis/localnet/src" key gen \ +cargo run --bin namadaw -- --pre-genesis --base-dir "genesis/localnet/src" gen \ --alias christel --unsafe-dont-encrypt -cargo run --bin namadaw -- --base-dir "genesis/localnet/src" key gen \ +cargo run --bin namadaw -- --pre-genesis --base-dir "genesis/localnet/src" gen \ --alias daewon --unsafe-dont-encrypt -cargo run --bin namadaw -- --base-dir "genesis/localnet/src" key gen \ +cargo run --bin namadaw -- --pre-genesis --base-dir "genesis/localnet/src" gen \ --alias validator-0-account-key --unsafe-dont-encrypt -cargo run --bin namadaw -- --base-dir "genesis/localnet/src" key gen \ +cargo run --bin namadaw -- --pre-genesis --base-dir "genesis/localnet/src" gen \ --alias faucet-key --unsafe-dont-encrypt ``` @@ -79,6 +79,7 @@ A delegation with e.g. 20 000 NAM tokens to a validator account whose address ha cargo run --bin namadac -- --base-dir "genesis/localnet/src" utils \ genesis-bond \ --validator tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx \ + --source tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg\ --amount 20000 \ --path "genesis/localnet/src/pre-genesis/bond/bond-tx-albert.toml" ``` @@ -100,7 +101,7 @@ The validator transactions are signed using (note the extra `--alias` argument n cargo run --bin namadac -- --base-dir "genesis/localnet/src" utils \ sign-genesis-txs \ --path "genesis/localnet/src/pre-genesis/validator-0/unsigned-transactions.toml" \ - --output "genesis/localnet/src/validator-0/signed-transactions.toml" + --output "genesis/localnet/src/pre-genesis/validator-0/signed-transactions.toml" \ --alias validator-0 ``` diff --git a/genesis/localnet/balances.toml b/genesis/localnet/balances.toml index a14c274456..d1d5e75e8d 100644 --- a/genesis/localnet/balances.toml +++ b/genesis/localnet/balances.toml @@ -16,102 +16,102 @@ [token.NAM] # albert -tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu = "2000000" -tpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha = "2000000" +tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg = "2000000" +tpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847= "2000000" # bertha -tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn = "2000000" -tpknam1qq52dx5e290wyh7ngdt6wudtyd502lg6ln49yvg3vz97e8j2ruux5e3yewq = "2000000" +tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "2000000" +tpknam1qrdn4pnry9tmgrth6azjuwv5f758974ej0j34xtye5wq4fqy202825vmlsn= "2000000" # christel -tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf = "2000000" -tpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs79 = "2000000" +tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "2000000" +tpknam1qz5h8kwndc7c260xcx2ud3aaegdzpkveyxndhl2zy7pjk0wnl3v2cw8kj07= "2000000" # daewon -tpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm = "100000000" +tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "100000000" # ester tpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4 = "1000000" # validator-0 -tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx = "200000" +tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh = "200000" tpknam1qpzrttnzfyt6xfu2vy092eruasll3z52rjfexwapdw0rdww5uktlk3j73dw = "200000" [token.BTC] # albert -tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu = "1000000" +tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg = "1000000" # bertha -tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn = "1000000" +tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "1000000" # christel -tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf = "1000000" +tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "1000000" # daewon-key -tpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm = "1000000" +tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "1000000" # ester-key tpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4 = "1000000" # validator-0 -tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx = "1000000" +tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh = "1000000" [token.ETH] # albert -tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu = "1000000" +tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg = "1000000" # bertha -tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn = "1000000" +tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "1000000" # christel -tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf = "1000000" +tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "1000000" # daewon-key -tpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm = "1000000" +tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "1000000" # ester-key tpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4 = "1000000" # validator-0 -tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx = "1000000" +tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh = "1000000" [token.DOT] # albert -tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu = "1000000" +tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg = "1000000" # bertha -tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn = "1000000" +tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "1000000" # christel -tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf = "1000000" +tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "1000000" # daewon-key -tpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm = "1000000" +tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "1000000" # ester-key tpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4 = "1000000" # validator-0 -tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx = "1000000" +tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh = "1000000" [token.Schnitzel] # albert -tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu = "1000000" +tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg = "1000000" # bertha -tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn = "1000000" +tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "1000000" # christel -tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf = "1000000" +tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "1000000" # daewon-key -tpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm = "1000000" +tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "1000000" # ester-key tpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4 = "1000000" # validator-0 -tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx = "1000000" +tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh = "1000000" [token.Apfel] # albert -tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu = "1000000" +tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg = "1000000" # bertha -tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn = "1000000" +tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "1000000" # christel -tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf = "1000000" +tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "1000000" # daewon-key -tpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm = "1000000" +tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "1000000" # ester-key tpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4 = "1000000" # validator-0 -tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx = "1000000" +tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh = "1000000" [token.Kartoffel] # albert -tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu = "1000000" +tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg = "1000000" # bertha -tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn = "1000000" +tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "1000000" # christel -tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf = "1000000" +tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "1000000" # daewon-key -tpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm = "1000000" +tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "1000000" # ester-key tpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4 = "1000000" # validator-0 -tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx = "1000000" +tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh = "1000000" diff --git a/genesis/localnet/parameters.toml b/genesis/localnet/parameters.toml index f99f9e0a50..792d111487 100644 --- a/genesis/localnet/parameters.toml +++ b/genesis/localnet/parameters.toml @@ -93,9 +93,9 @@ min_proposal_grace_epochs = 6 # Initial set of stewards stewards = [ # bertha - "tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn", + "tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac", # validator-0 - "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" + "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" ] # The pgf funding inflation rate pgf_inflation_rate = "0.1" diff --git a/genesis/localnet/src/pre-genesis/bond/bond-tx-albert.toml b/genesis/localnet/src/pre-genesis/bond/bond-tx-albert.toml index 73b2960a07..35c8a45ecb 100644 --- a/genesis/localnet/src/pre-genesis/bond/bond-tx-albert.toml +++ b/genesis/localnet/src/pre-genesis/bond/bond-tx-albert.toml @@ -1,4 +1,4 @@ [[bond]] -source = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" -validator = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +source = "tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg" +validator = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" amount = "20000" diff --git a/genesis/localnet/src/pre-genesis/established/established-account-tx-albert.toml b/genesis/localnet/src/pre-genesis/established/established-account-tx-albert.toml index 532198f7e2..081191a280 100644 --- a/genesis/localnet/src/pre-genesis/established/established-account-tx-albert.toml +++ b/genesis/localnet/src/pre-genesis/established/established-account-tx-albert.toml @@ -1,4 +1,3 @@ [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha"] +public_keys = ["tpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847"] diff --git a/genesis/localnet/src/pre-genesis/established/established-account-tx-bertha.toml b/genesis/localnet/src/pre-genesis/established/established-account-tx-bertha.toml index 177974ff4a..8e30e00607 100644 --- a/genesis/localnet/src/pre-genesis/established/established-account-tx-bertha.toml +++ b/genesis/localnet/src/pre-genesis/established/established-account-tx-bertha.toml @@ -1,4 +1,3 @@ [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qq52dx5e290wyh7ngdt6wudtyd502lg6ln49yvg3vz97e8j2ruux5e3yewq"] +public_keys = ["tpknam1qrdn4pnry9tmgrth6azjuwv5f758974ej0j34xtye5wq4fqy202825vmlsn"] diff --git a/genesis/localnet/src/pre-genesis/established/established-account-tx-christel.toml b/genesis/localnet/src/pre-genesis/established/established-account-tx-christel.toml index cdb56e0666..18faa463f0 100644 --- a/genesis/localnet/src/pre-genesis/established/established-account-tx-christel.toml +++ b/genesis/localnet/src/pre-genesis/established/established-account-tx-christel.toml @@ -1,4 +1,3 @@ [[established_account]] -vp = "vp_user" threshold = 1 public_keys = ["tpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs79"] diff --git a/genesis/localnet/src/pre-genesis/signed-transactions.toml b/genesis/localnet/src/pre-genesis/signed-transactions.toml index 6fd4f6f5d3..3ff6958416 100644 --- a/genesis/localnet/src/pre-genesis/signed-transactions.toml +++ b/genesis/localnet/src/pre-genesis/signed-transactions.toml @@ -1,22 +1,19 @@ [[established_account]] -vp = "vp_user" threshold = 1 public_keys = ["tpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs79"] [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qq52dx5e290wyh7ngdt6wudtyd502lg6ln49yvg3vz97e8j2ruux5e3yewq"] +public_keys = ["tpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847"] [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha"] +public_keys = ["tpknam1qrdn4pnry9tmgrth6azjuwv5f758974ej0j34xtye5wq4fqy202825vmlsn"] [[bond]] -source = "tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu" -validator = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +source = "tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg" +validator = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" amount = "20000" [bond.signatures] -tpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha = "signam1qqv8vvt2yk3gpzth6f5qdtf2g889mk6jv0qrrj0np62czy0qrruj5pgezjhqfvs4vg5f9zmelngpy04c7klschc57upr7zlk9w7647sx4j7x9c" +tpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847 = "signam1qpu3zdvx6t72uyq4g8q3yavnwwgp50mfvnsnle2ausuvyke2pns6yhujeh0525cs9m0a8h7m3fmswlg8ffq4kxryqpytac4yyv5f5espapz5vv" diff --git a/genesis/localnet/src/pre-genesis/unsigned-transactions.toml b/genesis/localnet/src/pre-genesis/unsigned-transactions.toml index 32dc9fff47..ba38f3e376 100644 --- a/genesis/localnet/src/pre-genesis/unsigned-transactions.toml +++ b/genesis/localnet/src/pre-genesis/unsigned-transactions.toml @@ -12,19 +12,16 @@ # Albert [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha"] +public_keys = ["tpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847"] # Bertha [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qq52dx5e290wyh7ngdt6wudtyd502lg6ln49yvg3vz97e8j2ruux5e3yewq"] +public_keys = ["tpknam1qrdn4pnry9tmgrth6azjuwv5f758974ej0j34xtye5wq4fqy202825vmlsn"] # Christel [[established_account]] -vp = "vp_user" threshold = 1 public_keys = ["tpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs79"] @@ -32,6 +29,6 @@ public_keys = ["tpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs # Albert bonds to `validator-0` [[bond]] -source = "tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu" -validator = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +source = "tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg" +validator = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" amount = "20000" diff --git a/genesis/localnet/src/pre-genesis/validator-0/signed-transactions.toml b/genesis/localnet/src/pre-genesis/validator-0/signed-transactions.toml index 1d56ab2c9c..3df885cdb7 100644 --- a/genesis/localnet/src/pre-genesis/validator-0/signed-transactions.toml +++ b/genesis/localnet/src/pre-genesis/validator-0/signed-transactions.toml @@ -1,45 +1,43 @@ [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj"] +public_keys = ["tpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc"] [[validator_account]] -address = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" -vp = "vp_user" +address = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" commission_rate = "0.05" max_commission_rate_change = "0.01" net_address = "127.0.0.1:27656" [validator_account.consensus_key] -pk = "tpknam1qr9u5py97pdmcvnrxhzuuv79ydv5rw7r9z402sucwt6h0lvmmmwqy2wrweg" -authorization = "signam1qqxsgw7k5yu200657evhu7kuenf5zw86lvx8nw7wk9zrgt0tx3xpf492f2k054ml6zu6x7p6d3j6rmdm33747ptwrxtvmwdaenyqvvcp3v9gpn" +pk = "tpknam1qpal0gey94q784f09p4lmknyym23r8dyqvlsx7w5wfll9dzumtrmy6kzt9l" +authorization = "signam1qr3t5n54k2qnpecmfsy5klmmq7jtjs273fpxejdmvltd26ym4uwxr86wx4hlzmcs9qfmx7rlhvqyjfg9y7v3la6vqw8zdj4j03vyrmszmuglwg" [validator_account.protocol_key] -pk = "tpknam1qrenhfdphzpszlr7fzand6qgmppge430g3a2lquqzhz64fkve5mq2hdfjaa" -authorization = "signam1qpnjzsgnvgfnfjld89wtjtn7w843dhw39tktuxgw49tcyj678u03hdaufdsf6rakmrjfa6ywjnngy7hmwvwsgkjr60330w9jwl7azus20tcmwj" +pk = "tpknam1qrtvl3s52trj2qacj3m38urvmfpattqjmqh5q6vtcmgd5z3qc3hqvvppyte" +authorization = "signam1qzmhxyuwdcs325wpdcqz2cyexlhxphfvfkyhyeu6xjsa8qxdjkurf73v92n3x9jyv7latketzq6dkrskny7ceakz3nhkdquvz2cw9lsp8wyxjy" [validator_account.tendermint_node_key] -pk = "tpknam1qpgcgptcjl22hl2te2uqnp33aqjmvfaud3a3f3sgtxezg7uu5rsv6d2flr3" -authorization = "signam1qq8d8k43779lxsz3hx3pkpucetdd4kzrl56hk52nwa5dfu97y2gq9axxffftx726e5n8ch2na4c8wn98yxcjpzzdpdkj86655g4hynsgwf35af" +pk = "tpknam1qqn3wqgdldslwagk6zzjnq8ewsw0wmzprajjqxtrfatyumtvjy6d6gc84f7" +authorization = "signam1qrtqmyf8j7g4pxhdttzz5807hsxte2hkl0m7x500jr3ycnsf7m9eauxru56ec82ajwrw5mnt2uwwnqryt9t8ytsvdcxpvac20sj6casdm6wa8u" [validator_account.eth_hot_key] -pk = "tpknam1qypnh98mexms8edj8rcwu0cayx0459p39dwzsffxrr394mf4cse707qcctyrx" -authorization = "signam1q8t7shqzpmdwtfumrahs022mt96mazwq2d843sad4dgcvz9prlj6x37qp7nvhpluclq8ta4sjkg7da77e9xlvyh4eujc3v936egqqf4eqytrku9n" +pk = "tpknam1qypv77znljd9w0mpm4s7ve3knxfqdvr9fu378mq94mtwjmhghh78zucchgk5m" +authorization = "signam1q9z6fnrw9f2g9rs3yw5ddr9n2rlhnvfj6nfaykvkwu8w4n88tw20ghyms50373v5kr6rn08zcyqjje5qr02n448fejtns9q43u5kq38fqypzeul6" [validator_account.eth_cold_key] -pk = "tpknam1qypz8zr0w8lsz3s98vh4p974xuxeedpecj9s2l3326r3kdz4tc0snrcpnc8yv" -authorization = "signam1qxe6c5h7sfrsampxlhsxdkq33zmetwg45y2lqxxhf4v7sy7sa933xat3m9f4g76dpzvpnaedrdy4d7t5xfmwmu0u9cdgdu8pgwqx9k8zqyzkce99" +pk = "tpknam1qypapqlvu9s7xegz6l8j4v3em043k7tydyrvrvllt7lhy973q88rrtqga4ed8" +authorization = "signam1qyfky7u6mhw5049xfp6cq4mtwcme798wsfyahcxfx2t2leanlhxhken872qld892e7f4n29sz8pxuay39eejyk0m0xxz4tj5uv22d2slqqaw3rdd" [validator_account.metadata] email = "null@null.net" [validator_account.signatures] -tpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj = "signam1qrgen2xu6zm27mzjeycqhzjt4c0dun8jwqxhaj7d3yduqpxud80whuqpec2k5k5a40w0jfgzwec8483vrvnaa30ky9r2utaxccvh2wsr9em3es" +tpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc = "signam1qr3qcnzyz5e77y26uckd4nm6mdql0749dvtrrklgfpeknhg3qxm2ddj8gg0z4k57xngn88fukkepc7dzffn97tjhk7h76ux2y824elq9yevthj" [[bond]] -source = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" -validator = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +source = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" +validator = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" amount = "100000" [bond.signatures] -tpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj = "signam1qpama7hqj2lqleln7yhqa94s97mz8n8wqemtljwa9znfr5yq3uhrf33deeskf9alx6zdd8mzpuhrlc0gfr79hkkzhjqa7kw4a6j7r0sdxzqlj8" +tpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc = "signam1qqaucmk7nlfrqfk8pvzk63gkvalf76a7trel5j0yfeazlpx9zwezteflldzxtd890dcm9q3nclpgqkmwj05w8h7szep4lw79mk0napgvwnwz5a" diff --git a/genesis/localnet/src/pre-genesis/validator-0/unsigned-transactions.toml b/genesis/localnet/src/pre-genesis/validator-0/unsigned-transactions.toml index aa84f561ac..5848b78853 100644 --- a/genesis/localnet/src/pre-genesis/validator-0/unsigned-transactions.toml +++ b/genesis/localnet/src/pre-genesis/validator-0/unsigned-transactions.toml @@ -1,24 +1,22 @@ [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj"] +public_keys = ["tpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc"] [[validator_account]] -address = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" -vp = "vp_user" +address = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" commission_rate = "0.05" max_commission_rate_change = "0.01" net_address = "127.0.0.1:27656" -consensus_key = "tpknam1qr9u5py97pdmcvnrxhzuuv79ydv5rw7r9z402sucwt6h0lvmmmwqy2wrweg" -protocol_key = "tpknam1qrenhfdphzpszlr7fzand6qgmppge430g3a2lquqzhz64fkve5mq2hdfjaa" -tendermint_node_key = "tpknam1qpgcgptcjl22hl2te2uqnp33aqjmvfaud3a3f3sgtxezg7uu5rsv6d2flr3" -eth_hot_key = "tpknam1qypnh98mexms8edj8rcwu0cayx0459p39dwzsffxrr394mf4cse707qcctyrx" -eth_cold_key = "tpknam1qypz8zr0w8lsz3s98vh4p974xuxeedpecj9s2l3326r3kdz4tc0snrcpnc8yv" +consensus_key = "tpknam1qpal0gey94q784f09p4lmknyym23r8dyqvlsx7w5wfll9dzumtrmy6kzt9l" +protocol_key = "tpknam1qrtvl3s52trj2qacj3m38urvmfpattqjmqh5q6vtcmgd5z3qc3hqvvppyte" +tendermint_node_key = "tpknam1qqn3wqgdldslwagk6zzjnq8ewsw0wmzprajjqxtrfatyumtvjy6d6gc84f7" +eth_hot_key = "tpknam1qypv77znljd9w0mpm4s7ve3knxfqdvr9fu378mq94mtwjmhghh78zucchgk5m" +eth_cold_key = "tpknam1qypapqlvu9s7xegz6l8j4v3em043k7tydyrvrvllt7lhy973q88rrtqga4ed8" [validator_account.metadata] email = "null@null.net" [[bond]] -source = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" -validator = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +source = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" +validator = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" amount = "100000" diff --git a/genesis/localnet/src/pre-genesis/validator-0/validator-wallet.toml b/genesis/localnet/src/pre-genesis/validator-0/validator-wallet.toml index d7ceb76fb9..320edeffba 100644 --- a/genesis/localnet/src/pre-genesis/validator-0/validator-wallet.toml +++ b/genesis/localnet/src/pre-genesis/validator-0/validator-wallet.toml @@ -1,7 +1,7 @@ -consensus_key = "unencrypted:0037a44681b64d42497e2229516479f83e5344a7a30e8316bde45881a1ec745359" -eth_cold_key = "unencrypted:010d34fcb42383f0babe7c86203f07bf4134f0756a630eb07923f21c90cc068602" -tendermint_node_key = "unencrypted:002f2e94bb5834e18433343345baf47b2b5d4e1ef4d46ba0f876d3d2c89d831419" +consensus_key = "unencrypted:00aaf9f3b4f11ca0165551bc152ebf1eb533427ee8ecbf8361d12b9229db9d9f15" +eth_cold_key = "unencrypted:018903dbd93a20e1c75beaa11aeab7ea3b1296d198414aa1799b7b9f0438dce65d" +tendermint_node_key = "unencrypted:0085233d29ceb3419af5f3f3bc76fe36c6671a554131994917a2575d6a8d48fda4" [validator_keys] -protocol_keypair = "ED25519_SK_PREFIX00610677d4c52ab8ca5e8abe7dfb40246a271a03069fded6099763cbc41e04df02" -eth_bridge_keypair = "SECP256K1_SK_PREFIX01a81af251a711382d6b649a44b36ac5d4f41106f356e1f2fb33c001e91ffaa169" +protocol_keypair = "ED25519_SK_PREFIX00bd6845ae606a4a4903c6d2d59a81e40c160497016ee6345ce99e67145e27e765" +eth_bridge_keypair = "SECP256K1_SK_PREFIX01939e69be7a8cf8da78444d7a158bdf49c5fb8e1bc5a723f0dffceb1535aa1e69" diff --git a/genesis/localnet/src/pre-genesis/wallet.toml b/genesis/localnet/src/pre-genesis/wallet.toml index fbf083e87b..791ee5be35 100644 --- a/genesis/localnet/src/pre-genesis/wallet.toml +++ b/genesis/localnet/src/pre-genesis/wallet.toml @@ -5,44 +5,54 @@ [payment_addrs] [secret_keys] -albert-key = "unencrypted:000d5e9d7d66f0e4307edacde6e6578e31d331bcf234352647d00d20955102d3ce" -bertha-key = "unencrypted:0009eedb2e68fd69d6772bf02d92a10f85dfa7eac6fdad0ee589255756b25ab760" +albert-key = "unencrypted:0093450f762db86f6a1c554d3ec37d8db48c73a5e63fe2af43633dae79ccc03a6e" +bertha-key = "unencrypted:00690e35456411d95e41212f41ef83c22591ade92e23128b7b30e5dbbaf1090ca1" +christel = "unencrypted:0085461198b2549645fc869973eeef6189da3ba912a86929ba69e7c6357c10aa8c" christel-key = "unencrypted:00a08de8d33b9798328d2e4476fade49f515dc82754451fc6ef7060ea0bd1e8f1a" -daewon = "unencrypted:00d19e226c0e7d123d79f5908b5948d4c461b66a5f8aa95600c28b55ab6f5dc772" +daewon = "unencrypted:00372ef36a23741a2dbadca7ff50fc0a34d80e2355d958ec10fe9caca0bae02fb2" ester = "unencrypted:01369093e2035d84f72a7e5a17c89b7a938b5d08cc87b2289805e3afcc66ef9a42" -faucet-key = "unencrypted:00548aa8393422b88dce5f4be8ee0320638061c3e0649ada1b0dacbec4c0c75bb2" -validator-0-account-key = "unencrypted:0024204e13c51b26ed9b42c05647bc46b3821bb453e53d194962ede57ce5ec66ac" +faucet-key = "unencrypted:00ec176dd5594767f6d98d66393992c35949afacd3b923274d3bfedcef9b158019" +validator-0-account-key = "unencrypted:0010d8adca6c74f730973ecc33b055f41cb415b9e3db757adb4b1a73a580b6fff9" [public_keys] -albert-key = "ED25519_PK_PREFIXtpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha" -bertha-key = "ED25519_PK_PREFIXtpknam1qq52dx5e290wyh7ngdt6wudtyd502lg6ln49yvg3vz97e8j2ruux5e3yewq" +albert-key = "ED25519_PK_PREFIXtpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847" +bertha-key = "ED25519_PK_PREFIXtpknam1qrdn4pnry9tmgrth6azjuwv5f758974ej0j34xtye5wq4fqy202825vmlsn" +christel = "ED25519_PK_PREFIXtpknam1qz5h8kwndc7c260xcx2ud3aaegdzpkveyxndhl2zy7pjk0wnl3v2cw8kj07" christel-key = "ED25519_PK_PREFIXtpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs79" -daewon = "ED25519_PK_PREFIXtpknam1qzz4x4fammhdcfa0g8xw4udkq8s4n6kjhzlxh00ul3da05wuu9wkykqqvjm" +daewon = "ED25519_PK_PREFIXtpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6" ester = "SECP256K1_PK_PREFIXtpknam1qypvqpzu74nafjahlwyq272dj76qq9rz30dulyc94883tmj893mquqs74gxv4" -faucet-key = "ED25519_PK_PREFIXtpknam1qzh2d8vk9wvj2j63fa3cvjru9uldpdjctjjxpafl5r8vwwf56pdgyq0vra4" -validator-0-account-key = "ED25519_PK_PREFIXtpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj" +faucet-key = "ED25519_PK_PREFIXtpknam1qzm6ex7ernmgm49vsxnq7vtgzrvrkr5zcxjcduyesw982g08pwfez3er34a" +validator-0-account-key = "ED25519_PK_PREFIXtpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc" [derivation_paths] +albert-key = "m/44'/877'/0'/0'/0'" +bertha-key = "m/44'/877'/0'/0'/0'" +christel = "m/44'/877'/0'/0'/0'" +daewon = "m/44'/877'/0'/0'/0'" +faucet-key = "m/44'/877'/0'/0'/0'" +validator-0-account-key = "m/44'/877'/0'/0'/0'" [addresses] -albert = "tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu" -bertha = "tnam1q9rhgyv3ydq0zu3whnftvllqnvhvhm270qxay5tn" -christel = "tnam1q9sx4ekzqaq3xdxtruxkm764nhl00cvcsc7df5jf" -albert-key = "tnam1qrr8r00nrf6490ff9zgfz52xrnfhdja7rqvldl46" -bertha-key = "tnam1qqc2ge6tg7s03nlshjr5d79dqyjr33aa8g2mxyzm" +albert = "tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg" +albert-key = "tnam1qq4rfc3rzxd2ygt8xgg39tvrxewqhe4v8ym7pqtr" +bertha = "tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac" +bertha-key = "tnam1qqzr5d352sk4le7hz08jd566jtmvvxl0mulurga8" +christel = "tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03" christel-key = "tnam1qz0nvec686e9pks8ynhm5ddq8ke7j2eey50uagtr" -daewon = "tnam1qpca48f45pdtpcz06rue7k4kfdcjrvrux5cr3pwn" +daewon = "tnam1qqpp8xy5w0xe67l4vrl3f0wl6te6tgs4uv62syrt" ester = "tnam1qpm3dpsv76ttu382vfggtr7m8n00na3sfyzm2g2q" -faucet-key = "tnam1qzgcl2znamndmku7ujw6e79dmvd4v7rfd5c89dfz" -validator-0 = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +faucet-key = "tnam1qzcrqgul7fslkrny2jf6gzfmvul0zykayvftrfhz" +validator-0 = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" +validator-0-account-key = "tnam1qrexllzcc8jpcme0tjdtvuqcnytmmfsty50f898f" [pkhs] -30A4674B47A0F8CFF0BC8746F8AD012438C7BD3A = "bertha-key" -C671BDF31A7552BD2928909151461CD376CBBE18 = "albert-key" -71DA9D35A05AB0E04FD0F99F5AB64B7121B07C35 = "daewon" -918FA853EEE6DDDB9EE49DACF8ADDB1B5678696D = "faucet-key" -9F36671A3EB250DA0724EFBA35A03DB3E92B3925 = "christel-key" +0213989473CD9D7BF560FF14BDDFD2F3A5A215E3 = "daewon" +043A3634542D5FE7D713CF26D35A92F6C61BEFDF = "bertha-key" +2A34E223119AA22167321112AD83365C0BE6AC39 = "albert-key" +3A20C3A16DF6044483F9B87D1A0468E16B1481F2 = "christel" 7716860CF696BE44EA6250858FDB3CDEF9F63049 = "ester" -9D371C6D220F8A4C6D70F0D3F828698881AB2447 = "validator-0-account-key" +9F36671A3EB250DA0724EFBA35A03DB3E92B3925 = "christel-key" +B030239FF261FB0E645493A4093B673EF112DD23 = "faucet-key" +F26FFC58C1E41C6F2F5C9AB670189917BDA60B25 = "validator-0-account-key" [address_vp_types] diff --git a/genesis/localnet/transactions.toml b/genesis/localnet/transactions.toml index cb1523c515..49bbc29131 100644 --- a/genesis/localnet/transactions.toml +++ b/genesis/localnet/transactions.toml @@ -6,72 +6,67 @@ # 1. [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj"] +public_keys = ["tpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc"] [[validator_account]] -address = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" -vp = "vp_user" +address = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" commission_rate = "0.05" max_commission_rate_change = "0.01" net_address = "127.0.0.1:27656" [validator_account.consensus_key] -pk = "tpknam1qr9u5py97pdmcvnrxhzuuv79ydv5rw7r9z402sucwt6h0lvmmmwqy2wrweg" -authorization = "signam1qqxsgw7k5yu200657evhu7kuenf5zw86lvx8nw7wk9zrgt0tx3xpf492f2k054ml6zu6x7p6d3j6rmdm33747ptwrxtvmwdaenyqvvcp3v9gpn" +pk = "tpknam1qpal0gey94q784f09p4lmknyym23r8dyqvlsx7w5wfll9dzumtrmy6kzt9l" +authorization = "signam1qr3t5n54k2qnpecmfsy5klmmq7jtjs273fpxejdmvltd26ym4uwxr86wx4hlzmcs9qfmx7rlhvqyjfg9y7v3la6vqw8zdj4j03vyrmszmuglwg" [validator_account.protocol_key] -pk = "tpknam1qrenhfdphzpszlr7fzand6qgmppge430g3a2lquqzhz64fkve5mq2hdfjaa" -authorization = "signam1qpnjzsgnvgfnfjld89wtjtn7w843dhw39tktuxgw49tcyj678u03hdaufdsf6rakmrjfa6ywjnngy7hmwvwsgkjr60330w9jwl7azus20tcmwj" +pk = "tpknam1qrtvl3s52trj2qacj3m38urvmfpattqjmqh5q6vtcmgd5z3qc3hqvvppyte" +authorization = "signam1qzmhxyuwdcs325wpdcqz2cyexlhxphfvfkyhyeu6xjsa8qxdjkurf73v92n3x9jyv7latketzq6dkrskny7ceakz3nhkdquvz2cw9lsp8wyxjy" [validator_account.tendermint_node_key] -pk = "tpknam1qpgcgptcjl22hl2te2uqnp33aqjmvfaud3a3f3sgtxezg7uu5rsv6d2flr3" -authorization = "signam1qq8d8k43779lxsz3hx3pkpucetdd4kzrl56hk52nwa5dfu97y2gq9axxffftx726e5n8ch2na4c8wn98yxcjpzzdpdkj86655g4hynsgwf35af" +pk = "tpknam1qqn3wqgdldslwagk6zzjnq8ewsw0wmzprajjqxtrfatyumtvjy6d6gc84f7" +authorization = "signam1qrtqmyf8j7g4pxhdttzz5807hsxte2hkl0m7x500jr3ycnsf7m9eauxru56ec82ajwrw5mnt2uwwnqryt9t8ytsvdcxpvac20sj6casdm6wa8u" [validator_account.eth_hot_key] -pk = "tpknam1qypnh98mexms8edj8rcwu0cayx0459p39dwzsffxrr394mf4cse707qcctyrx" -authorization = "signam1q8t7shqzpmdwtfumrahs022mt96mazwq2d843sad4dgcvz9prlj6x37qp7nvhpluclq8ta4sjkg7da77e9xlvyh4eujc3v936egqqf4eqytrku9n" +pk = "tpknam1qypv77znljd9w0mpm4s7ve3knxfqdvr9fu378mq94mtwjmhghh78zucchgk5m" +authorization = "signam1q9z6fnrw9f2g9rs3yw5ddr9n2rlhnvfj6nfaykvkwu8w4n88tw20ghyms50373v5kr6rn08zcyqjje5qr02n448fejtns9q43u5kq38fqypzeul6" [validator_account.eth_cold_key] -pk = "tpknam1qypz8zr0w8lsz3s98vh4p974xuxeedpecj9s2l3326r3kdz4tc0snrcpnc8yv" -authorization = "signam1qxe6c5h7sfrsampxlhsxdkq33zmetwg45y2lqxxhf4v7sy7sa933xat3m9f4g76dpzvpnaedrdy4d7t5xfmwmu0u9cdgdu8pgwqx9k8zqyzkce99" +pk = "tpknam1qypapqlvu9s7xegz6l8j4v3em043k7tydyrvrvllt7lhy973q88rrtqga4ed8" +authorization = "signam1qyfky7u6mhw5049xfp6cq4mtwcme798wsfyahcxfx2t2leanlhxhken872qld892e7f4n29sz8pxuay39eejyk0m0xxz4tj5uv22d2slqqaw3rdd" [validator_account.metadata] email = "null@null.net" [validator_account.signatures] -tpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj = "signam1qrgen2xu6zm27mzjeycqhzjt4c0dun8jwqxhaj7d3yduqpxud80whuqpec2k5k5a40w0jfgzwec8483vrvnaa30ky9r2utaxccvh2wsr9em3es" +tpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc = "signam1qr3qcnzyz5e77y26uckd4nm6mdql0749dvtrrklgfpeknhg3qxm2ddj8gg0z4k57xngn88fukkepc7dzffn97tjhk7h76ux2y824elq9yevthj" [[bond]] -source = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" -validator = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +source = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" +validator = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" amount = "100000" [bond.signatures] -tpknam1qpg2tsrplvhu3fd7z7tq5ztc2ne3s7e2ahjl2a2cddufrzdyr752g666ytj = "signam1qpama7hqj2lqleln7yhqa94s97mz8n8wqemtljwa9znfr5yq3uhrf33deeskf9alx6zdd8mzpuhrlc0gfr79hkkzhjqa7kw4a6j7r0sdxzqlj8" +tpknam1qzcrjlea5ey5v56yvx4q0ptuz067rgd03cacwtg0f5tsemvlmdnr7tsazcc = "signam1qqaucmk7nlfrqfk8pvzk63gkvalf76a7trel5j0yfeazlpx9zwezteflldzxtd890dcm9q3nclpgqkmwj05w8h7szep4lw79mk0napgvwnwz5a" # 2. [[established_account]] -vp = "vp_user" threshold = 1 public_keys = ["tpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs79"] [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qq52dx5e290wyh7ngdt6wudtyd502lg6ln49yvg3vz97e8j2ruux5e3yewq"] +public_keys = ["tpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847"] [[established_account]] -vp = "vp_user" threshold = 1 -public_keys = ["tpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha"] +public_keys = ["tpknam1qrdn4pnry9tmgrth6azjuwv5f758974ej0j34xtye5wq4fqy202825vmlsn"] [[bond]] -source = "tnam1qxfj3sf6a0meahdu9t6znp05g8zx4dkjtgyn9gfu" -validator = "tnam1q9vhfdur7gadtwx4r223agpal0fvlqhywylf2mzx" +source = "tnam1qy0rydkctp5nvx5vnjq80rq0w23dn3mrt5c8lzmg" +validator = "tnam1qy5uswpdgykvmev526vrf8ewczjzwnr0qcyccjwh" amount = "20000" [bond.signatures] -tpknam1qrnw8mxyqlj60mykgevnldcj5mg2fya7fs5a8xqdkd2gwtxhef0zy8a2wha = "signam1qqv8vvt2yk3gpzth6f5qdtf2g889mk6jv0qrrj0np62czy0qrruj5pgezjhqfvs4vg5f9zmelngpy04c7klschc57upr7zlk9w7647sx4j7x9c" +tpknam1qrtpj7fldnq8dpjukye6jskjlr2f7xsk2atz5y3wa378yv8w0l8xy7rj847 = "signam1qpu3zdvx6t72uyq4g8q3yavnwwgp50mfvnsnle2ausuvyke2pns6yhujeh0525cs9m0a8h7m3fmswlg8ffq4kxryqpytac4yyv5f5espapz5vv" From 681ba17ad27983a5e001312a1d7d39e9d022dc90 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Fri, 9 Feb 2024 20:11:08 +0100 Subject: [PATCH 07/15] Adjusts vp user name in `tx_init_account` --- crates/namada/src/vm/host_env.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/namada/src/vm/host_env.rs b/crates/namada/src/vm/host_env.rs index 82495ab765..8181870935 100644 --- a/crates/namada/src/vm/host_env.rs +++ b/crates/namada/src/vm/host_env.rs @@ -1455,7 +1455,7 @@ where let storage = unsafe { env.ctx.storage.get() }; let write_log = unsafe { env.ctx.write_log.get() }; // //FIXME: not sure if this works - let hash_key = Key::wasm_hash("vp_user"); + let hash_key = Key::wasm_hash("vp_user.wasm"); let (vp_hash, gas) = storage .read(&hash_key) .map_err(TxRuntimeError::StateError)?; From 4e3804f2b63b910c2b736c60309e4ce3a673aac1 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Fri, 9 Feb 2024 21:18:34 +0100 Subject: [PATCH 08/15] Removes `init-chain` vp path arg from tests --- crates/tests/src/e2e/ledger_tests.rs | 6 ------ crates/tests/src/e2e/multitoken_tests/helpers.rs | 2 -- 2 files changed, 8 deletions(-) diff --git a/crates/tests/src/e2e/ledger_tests.rs b/crates/tests/src/e2e/ledger_tests.rs index 7f93e0f50c..4e1cb2d047 100644 --- a/crates/tests/src/e2e/ledger_tests.rs +++ b/crates/tests/src/e2e/ledger_tests.rs @@ -515,8 +515,6 @@ fn ledger_txs_and_queries() -> Result<()> { "update-account", "--address", BERTHA, - "--code-path", - VP_USER_WASM, "--signing-keys", BERTHA_KEY, "--node", @@ -544,8 +542,6 @@ fn ledger_txs_and_queries() -> Result<()> { "tpknam1qpqfzxu3gt05jx2mvg82f4anf90psqerkwqhjey4zlqv0qfgwuvkzt5jhkp", "--threshold", "1", - "--code-path", - VP_USER_WASM, "--alias", "Test-Account", "--signing-keys", @@ -560,8 +556,6 @@ fn ledger_txs_and_queries() -> Result<()> { &multisig_account, "--threshold", "2", - "--code-path", - VP_USER_WASM, "--alias", "Test-Account-2", "--signing-keys", diff --git a/crates/tests/src/e2e/multitoken_tests/helpers.rs b/crates/tests/src/e2e/multitoken_tests/helpers.rs index caddb88f41..3e65116229 100644 --- a/crates/tests/src/e2e/multitoken_tests/helpers.rs +++ b/crates/tests/src/e2e/multitoken_tests/helpers.rs @@ -43,8 +43,6 @@ pub fn init_multitoken_vp(test: &Test, rpc_addr: &str) -> Result { // Value obtained from // `namada::types::key::ed25519::tests::gen_keypair` "001be519a321e29020fa3cbfbfd01bd5e92db134305609270b71dace25b5a21168", - "--code-path", - &multitoken_vp_wasm_path, "--alias", multitoken_alias, "--gas-limit", From 1d15777bf2f6c9288209be3d9a8beda862c9a464 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Fri, 9 Feb 2024 21:19:28 +0100 Subject: [PATCH 09/15] Removes outdated test --- crates/tests/src/vm_host_env/mod.rs | 31 ----------------------------- 1 file changed, 31 deletions(-) diff --git a/crates/tests/src/vm_host_env/mod.rs b/crates/tests/src/vm_host_env/mod.rs index 2e1514b65f..ed289ea576 100644 --- a/crates/tests/src/vm_host_env/mod.rs +++ b/crates/tests/src/vm_host_env/mod.rs @@ -241,37 +241,6 @@ mod tests { tx::ctx().write_bytes(&vp_key, vp_hash).unwrap(); } - /// Test that a tx initializing a new account with validity predicate that - /// is not in the allowlist fails - #[test] - #[should_panic = "DisallowedVp"] - // FIXME: should probably remove this - fn test_tx_init_vp_not_allowed_rejected() { - // Initialize a tx environment - tx_host_env::init(); - - let vp_owner = address::testing::established_address_1(); - let keypair = key::testing::keypair_1(); - let public_key = keypair.ref_to(); - - tx_host_env::with(|tx_env| { - // let mut tx_env = TestTxEnv::default(); - tx_env.init_parameters( - None, - Some(vec!["some_hash".to_string()]), - None, - None, - ); - - // Spawn the accounts to be able to modify their storage - tx_env.spawn_accounts([&vp_owner]); - tx_env.init_account_storage(&vp_owner, vec![public_key.clone()], 1); - }); - - // Initializing a new account with the VP should fail - tx::ctx().init_account().unwrap(); - } - #[test] fn test_tx_get_metadata() { // The environment must be initialized first From 18b64cbeb3421b83167c4f91eefa0d2d8ce0e830 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Fri, 9 Feb 2024 23:47:52 +0100 Subject: [PATCH 10/15] Fixes tests --- crates/apps/src/lib/config/genesis.rs | 12 ------------ .../src/lib/config/genesis/transactions.rs | 4 ---- .../src/lib/node/ledger/shell/init_chain.rs | 18 ------------------ crates/benches/txs.rs | 1 - crates/namada/src/vm/host_env.rs | 7 ------- crates/tests/src/vm_host_env/ibc.rs | 9 ++++++++- crates/tests/src/vm_host_env/mod.rs | 2 -- crates/tests/src/vm_host_env/tx.rs | 18 ++---------------- genesis/localnet/balances.toml | 2 +- wasm/wasm_source/src/vp_implicit.rs | 1 - wasm/wasm_source/src/vp_user.rs | 11 +---------- 11 files changed, 12 insertions(+), 73 deletions(-) diff --git a/crates/apps/src/lib/config/genesis.rs b/crates/apps/src/lib/config/genesis.rs index 359679833a..2b95b00011 100644 --- a/crates/apps/src/lib/config/genesis.rs +++ b/crates/apps/src/lib/config/genesis.rs @@ -316,7 +316,6 @@ pub fn make_dev_genesis( use crate::config::genesis::chain::{finalize, DeriveEstablishedAddress}; use crate::wallet::defaults; - eprintln!("IN MAKE DEV GENESIS FILE"); //FIXME: remove let mut current_path = std::env::current_dir() .expect("Current directory should exist") .canonicalize() @@ -326,18 +325,14 @@ pub fn make_dev_genesis( current_path.pop(); } let chain_dir = current_path.join("genesis").join("localnet"); - eprintln!("BEFORE LOAD AND VALIDATE"); //FIXME: remove - // FIXME: error here in load and validate let templates = templates::load_and_validate(&chain_dir) .expect("Missing genesis files"); - eprintln!("AFTER LOAD AND VALIDATE"); //FIXME: remove let mut genesis = finalize( templates, ChainIdPrefix::from_str("test").unwrap(), DateTimeUtc::now(), Duration::from_secs(30).into(), ); - eprintln!("AFTER FINALIZE"); //FIXME: remove // Add Ethereum bridge params. genesis.parameters.eth_bridge_params = Some(templates::EthBridgeParams { @@ -353,7 +348,6 @@ pub fn make_dev_genesis( erc20_whitelist: vec![], }); - eprintln!("AFTER EHTEREUM"); //FIXME: remove // Use the default token address for matching tokens let default_tokens: HashMap = defaults::tokens() .into_iter() @@ -385,7 +379,6 @@ pub fn make_dev_genesis( )); bonds.retain(|bond| bond.source != fat_alberts_address); }; - eprintln!("AFTER ALBERT"); //FIXME: remove // fetch validator's balances let (first_val_balance, first_val_bonded) = { let nam_balances = genesis @@ -427,7 +420,6 @@ pub fn make_dev_genesis( ), }, }; - eprintln!("BEFORE VALIDATORS"); //FIXME: remove // Add other validators with randomly generated keys if needed for _val in 0..(num_validators - 1) { let consensus_keypair: common::SecretKey = @@ -456,9 +448,6 @@ pub fn make_dev_genesis( }; established_accounts.push(established_account_tx); - // FIXME: user utils::VP_USER.to_strin() instead of the string - // vp_user - let validator_account_tx = transactions::ValidatorAccountTx { address: StringEncoded::new(address.clone()), commission_rate: Dec::new(5, 2).expect("This can't fail"), @@ -510,7 +499,6 @@ pub fn make_dev_genesis( }); address }; - eprintln!("BEFORE NAM"); //FIXME: remove // credit nam tokens to validators such that they can bond { let nam_balances = genesis diff --git a/crates/apps/src/lib/config/genesis/transactions.rs b/crates/apps/src/lib/config/genesis/transactions.rs index c93f58adad..2e6ab12932 100644 --- a/crates/apps/src/lib/config/genesis/transactions.rs +++ b/crates/apps/src/lib/config/genesis/transactions.rs @@ -887,8 +887,6 @@ where &self, established_accounts: &[EstablishedAccountTx], ) -> (Vec, u8) { - eprintln!("EST ACCOUNTS: {:#?}", established_accounts); //FIXME: remove - eprintln!("SOURCE: {}", self.source); //FIXME: remove match &self.source { GenesisAddress::PublicKey(pk) => (vec![pk.raw.clone()], 1), GenesisAddress::EstablishedAddress(owner) => established_accounts @@ -1334,7 +1332,6 @@ pub fn validate_validator_account( let mut is_valid = { let maybe_threshold = { let established_addr = Address::Established(tx.address.raw.clone()); - eprintln!("ESTABLISHED ACCOUNTS: {:#?}", established_accounts); //FIXME: remove established_accounts.get(&established_addr).map(|(pks, t)| { let all_ed25519_keys = pks .iter() @@ -1391,7 +1388,6 @@ pub fn validate_validator_account( // Check keys authorizations let unsigned = UnsignedValidatorAccountTx::from(tx); - // FIXME: error here if !validate_signature( &unsigned, &tx.consensus_key.pk.raw, diff --git a/crates/apps/src/lib/node/ledger/shell/init_chain.rs b/crates/apps/src/lib/node/ledger/shell/init_chain.rs index 3777deb171..bfe6922ed8 100644 --- a/crates/apps/src/lib/node/ledger/shell/init_chain.rs +++ b/crates/apps/src/lib/node/ledger/shell/init_chain.rs @@ -97,7 +97,6 @@ where ))); } - eprintln!("BEFORE READ TOML FILE"); //FIXME: remove // Read the genesis files #[cfg(any( feature = "integration", @@ -117,7 +116,6 @@ where genesis::make_dev_genesis(_num_validators, &chain_dir) }; - eprintln!("AFTER READ TOML FILE"); //FIXME: remove #[cfg(all( any(test, feature = "benches"), not(feature = "integration") @@ -127,7 +125,6 @@ where let native_token = genesis.get_native_token().clone(); self.wl_storage.storage.native_token = native_token; } - eprintln!("BEFORE VALIDATION"); //FIXME: remove let mut validation = InitChainValidation::new(self, false); validation.run( init, @@ -137,7 +134,6 @@ where ); // propagate errors or panic validation.error_out()?; - eprintln!("AFTER VALIDATION"); //FIXME: remove // Init masp commitment tree and anchor let empty_commitment_tree: CommitmentTree = @@ -187,7 +183,6 @@ where H: StorageHasher + Sync + 'static, { pub fn run( - // FIXME: maybe error here &mut self, init: request::InitChain, genesis: genesis::chain::Finalized, @@ -517,7 +512,6 @@ where fn apply_genesis_txs_established_account( &mut self, genesis: &genesis::chain::Finalized, - // FIXME: remove if not needed vp_cache: &mut HashMap>, ) -> ControlFlow<()> { if let Some(txs) = genesis.transactions.established_account.as_ref() { @@ -534,19 +528,7 @@ where "Applying genesis tx to init an established account \ {address}" ); - eprintln!( - "Applying genesis tx to init an established account \ - {address}" - ); //FIXME: remove - // FIXME: can't we get directly the has of vp_user from storage - // without loading the code and recomputing it? - // FIXME: probably no need for .wasm - // let vp_hash_key = Key::wasm_hash("vp_user"); - // let code_hash: CodeHash = - // self.wl_storage.read(&vp_hash_key).unwrap().unwrap(); - // FIXME: remove if unneeded let vp_code = self.lookup_vp("vp_user", genesis, vp_cache)?; - eprintln!("AFTER VP USER LOOKUP"); //FIXME: remove let code_hash = CodeHash::sha256(&vp_code); self.wl_storage .write_bytes(&Key::validity_predicate(address), code_hash) diff --git a/crates/benches/txs.rs b/crates/benches/txs.rs index 8f377be4ae..6670fd2420 100644 --- a/crates/benches/txs.rs +++ b/crates/benches/txs.rs @@ -50,7 +50,6 @@ use namada_apps::bench_utils::{ VP_USER_WASM, }; use namada_apps::wallet::defaults; -// FIXME: check if all the dependencies of the bench crate are still needed fn transfer(c: &mut Criterion) { let mut group = c.benchmark_group("transfer"); diff --git a/crates/namada/src/vm/host_env.rs b/crates/namada/src/vm/host_env.rs index 8181870935..34602ce477 100644 --- a/crates/namada/src/vm/host_env.rs +++ b/crates/namada/src/vm/host_env.rs @@ -1454,17 +1454,10 @@ where let storage = unsafe { env.ctx.storage.get() }; let write_log = unsafe { env.ctx.write_log.get() }; - // //FIXME: not sure if this works let hash_key = Key::wasm_hash("vp_user.wasm"); let (vp_hash, gas) = storage .read(&hash_key) .map_err(TxRuntimeError::StateError)?; - // FIXME: remove if unused - // let hash_key = - // namada_core::types::storage::Key::wasm_code_name("vp_user". - // to_string()); let (vp_hash, gas) = storage - // .read(&hash_key) - // .map_err(TxRuntimeError::StateError)?; tx_charge_gas(env, gas)?; let code_hash = Hash::try_from( &vp_hash.ok_or(TxRuntimeError::StorageError( diff --git a/crates/tests/src/vm_host_env/ibc.rs b/crates/tests/src/vm_host_env/ibc.rs index 11a5c7338f..2b00bc774f 100644 --- a/crates/tests/src/vm_host_env/ibc.rs +++ b/crates/tests/src/vm_host_env/ibc.rs @@ -203,7 +203,7 @@ pub fn validate_multitoken_vp_from_tx<'a>( /// Initialize the test storage. Requires initialized [`tx_host_env::ENV`]. pub fn init_storage() -> (Address, Address) { - // wasm for init_account + // wasm for init_account, mock vp_user let code = TestWasms::VpAlwaysTrue.read_bytes(); let code_hash = Hash::sha256(&code); @@ -220,7 +220,14 @@ pub fn init_storage() -> (Address, Address) { .unwrap(); // store wasm code let key = Key::wasm_code(&code_hash); + let hash_key = Key::wasm_hash("vp_user.wasm"); + let code_name_key = Key::wasm_code_name("vp_user.wasm".to_owned()); env.wl_storage.storage.write(&key, code.clone()).unwrap(); + env.wl_storage.storage.write(&hash_key, code_hash).unwrap(); + env.wl_storage + .storage + .write(&code_name_key, code_hash) + .unwrap(); // block header to check timeout timestamp env.wl_storage diff --git a/crates/tests/src/vm_host_env/mod.rs b/crates/tests/src/vm_host_env/mod.rs index ed289ea576..29206185b1 100644 --- a/crates/tests/src/vm_host_env/mod.rs +++ b/crates/tests/src/vm_host_env/mod.rs @@ -209,7 +209,6 @@ mod tests { /// Test that a tx writing validity predicate that is not in the allowlist /// directly to storage fails - // FIXME: should probably remove this #[test] #[should_panic = "DisallowedVp"] fn test_tx_write_vp_not_allowed_rejected() { @@ -223,7 +222,6 @@ mod tests { let vp_hash = sha256(&vp_code); tx_host_env::with(|tx_env| { - // let mut tx_env = TestTxEnv::default(); tx_env.init_parameters( None, Some(vec!["some_hash".to_string()]), diff --git a/crates/tests/src/vm_host_env/tx.rs b/crates/tests/src/vm_host_env/tx.rs index 0d6e08347f..7b23a1553d 100644 --- a/crates/tests/src/vm_host_env/tx.rs +++ b/crates/tests/src/vm_host_env/tx.rs @@ -19,7 +19,7 @@ use namada::vm::wasm::{self, TxCache, VpCache}; use namada::vm::{self, WasmCacheRwAccess}; use namada::{account, token}; use namada_tx_prelude::transaction::TxSentinel; -use namada_tx_prelude::{BorshSerializeExt, Ctx, StorageWrite}; +use namada_tx_prelude::{BorshSerializeExt, Ctx}; use namada_vp_prelude::key::common; use tempfile::TempDir; @@ -62,28 +62,14 @@ pub struct TestTxEnv { } impl Default for TestTxEnv { fn default() -> Self { - eprintln!("In defauklt TestTxEnv"); //FIXME: remove let (vp_wasm_cache, vp_cache_dir) = wasm::compilation_cache::common::testing::cache(); let (tx_wasm_cache, tx_cache_dir) = wasm::compilation_cache::common::testing::cache(); - let mut wl_storage = WlStorage { + let wl_storage = WlStorage { storage: TestStorage::default(), write_log: WriteLog::default(), }; - // Mock vp_user in storage - let code_hash = Hash::zero(); - let code_key = Key::wasm_code(&code_hash); - let code_len_key = Key::wasm_code_len(&code_hash); - let hash_key = Key::wasm_hash("vp_user"); - let code_name_key = Key::wasm_code_name("vp_user".to_owned()); - - wl_storage.write_bytes(&code_key, vec![]).unwrap(); - wl_storage.write(&code_len_key, 0).unwrap(); - wl_storage.write(&hash_key, code_hash).unwrap(); - wl_storage.write(&code_name_key, code_hash).unwrap(); - wl_storage.commit_tx(); - wl_storage.commit_block().unwrap(); let mut tx = Tx::from_type(TxType::Raw); tx.header.chain_id = wl_storage.storage.chain_id.clone(); diff --git a/genesis/localnet/balances.toml b/genesis/localnet/balances.toml index d1d5e75e8d..12e0deced5 100644 --- a/genesis/localnet/balances.toml +++ b/genesis/localnet/balances.toml @@ -23,7 +23,7 @@ tnam1q8wnhp0jgpzewqnuwtvw28wj546sx4j73g3lq9ac = "2000000" tpknam1qrdn4pnry9tmgrth6azjuwv5f758974ej0j34xtye5wq4fqy202825vmlsn= "2000000" # christel tnam1q8qpqvc2g8aqmfmpkx7l5vttqdpsjf4yuvt5xz03 = "2000000" -tpknam1qz5h8kwndc7c260xcx2ud3aaegdzpkveyxndhl2zy7pjk0wnl3v2cw8kj07= "2000000" +tpknam1qqwfpuvn8x7yqtquejhppef4vddv9ghusec2rkaxav38amamxaxpgj9cs79 = "2000000" # daewon tpknam1qrtaguluxe2370dq8phr3t0d54d8nwg5scp6av7vfnhq04kt9d3fkzea5r6 = "100000000" # ester diff --git a/wasm/wasm_source/src/vp_implicit.rs b/wasm/wasm_source/src/vp_implicit.rs index f3a050ee4a..1ff673d233 100644 --- a/wasm/wasm_source/src/vp_implicit.rs +++ b/wasm/wasm_source/src/vp_implicit.rs @@ -292,7 +292,6 @@ mod tests { use namada::tx::{Code, Data, Signature}; use namada::types::dec::Dec; use namada::types::storage::Epoch; - use namada_test_utils::TestWasms; use namada_tests::log::test; use namada_tests::native_vp::pos::init_pos; use namada_tests::tx::{self, tx_host_env, TestTxEnv}; diff --git a/wasm/wasm_source/src/vp_user.rs b/wasm/wasm_source/src/vp_user.rs index 253a59f532..8bd4d0f014 100644 --- a/wasm/wasm_source/src/vp_user.rs +++ b/wasm/wasm_source/src/vp_user.rs @@ -134,7 +134,7 @@ fn validate_tx( KeyType::PoS => validate_pos_changes(ctx, &addr, key, &valid_sig)?, KeyType::PgfSteward(address) => address != &addr || *valid_sig, KeyType::GovernanceVote(voter) => voter != &addr || *valid_sig, - KeyType::Vp(owner) => !(owner == &addr), + KeyType::Vp(owner) => owner != &addr, KeyType::Masp | KeyType::Ibc => true, KeyType::Unknown => { // Unknown changes require a valid signature @@ -330,7 +330,6 @@ mod tests { use namada::tx::{Code, Data, Signature}; use namada::types::dec::Dec; use namada::types::storage::Epoch; - use namada_test_utils::TestWasms; // Use this as `#[test]` annotation to enable logging use namada_tests::log::test; use namada_tests::native_vp::pos::init_pos; @@ -1258,10 +1257,6 @@ mod tests { let mut tx_env = TestTxEnv::default(); let vp_owner = address::testing::established_address_1(); - let vp_code = TestWasms::VpAlwaysTrue.read_bytes(); - let vp_hash = sha256(&vp_code); - // for the update - tx_env.store_wasm_code(vp_code); // Spawn the accounts to be able to modify their storage tx_env.spawn_accounts([&vp_owner]); @@ -1298,10 +1293,6 @@ mod tests { let vp_owner = address::testing::established_address_1(); let keypair = key::testing::keypair_1(); let public_key = keypair.ref_to(); - let vp_code = TestWasms::VpAlwaysTrue.read_bytes(); - let vp_hash = sha256(&vp_code); - // for the update - tx_env.store_wasm_code(vp_code); // Spawn the accounts to be able to modify their storage tx_env.spawn_accounts([&vp_owner]); From 62aaf6cde2e08dadd5c4b14254fc495931a157f8 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Sat, 10 Feb 2024 00:14:51 +0100 Subject: [PATCH 11/15] Rebuilds masp proofs --- ...8C1AF37CB2AB705996B201CD65CE61004687D.bin} | Bin 2045 -> 2045 bytes ...2F6651B52D109E6C2E2663F55CADE9EF18521.bin} | Bin 8608 -> 8608 bytes ...582DAD9FBD3ACA2E0F8314642810FC958594E7.bin | Bin 10105 -> 10105 bytes ...6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin} | Bin 2045 -> 2045 bytes ...6B7FFCE09AD5DE24573B3F8478AF29245374E.bin} | Bin 2045 -> 2045 bytes ...F59077CA8F2E0C07061A81B524BD6EAE7983F1.bin | Bin 6910 -> 6910 bytes ...4D219F002CE532CB04A739F5542A347BBB09A.bin} | Bin 2045 -> 2045 bytes ...DB8CE4F984EEA5DE6991947DC46912C5EEEC72.bin | Bin 8392 -> 8392 bytes ...24E44F16753490CAF5B9CEF0616A91FBFAB3B.bin} | Bin 7650 -> 7650 bytes ...20CC60EF202BF7542AB928ADB4350282290BF.bin} | Bin 2045 -> 2045 bytes ...1FCD204E388AE7B522EA10F1E568F952DA2A1.bin} | Bin 2045 -> 2045 bytes ...0F3AD4FA4AB61D0B965BB9ED02971491A2B7FC.bin | Bin 2045 -> 0 bytes ...FFE3888E789F85E7B31DB3F165A63C37682F9.bin} | Bin 7875 -> 7875 bytes ...40A078140413A191075993EC58D2DBE0A847B.bin} | Bin 2045 -> 2045 bytes ...7D021076CCAB87F03830E24C283D06AECE910.bin} | Bin 2045 -> 2045 bytes ...6962FF1C92890FDB3429BF37B9158ED0346C0.bin} | Bin 6393 -> 6393 bytes ...83EF8B643F9895F19662338F7DE491CCC73CD.bin} | Bin 2045 -> 2045 bytes ...A448AE357D90E1F0D4C06CED5C9BBEDAC5665.bin} | Bin 2045 -> 2045 bytes ...ED7D14A1C9181B0D631419A25C9CA75656C6CC.bin | Bin 6910 -> 6910 bytes ...4F3F5FC329D52730145D65BF57759BFCAEB2AA.bin | Bin 0 -> 2045 bytes ...BCDE7BBA8F874A528B460D7DDD1733AD7DFBB0.bin | Bin 6910 -> 6910 bytes ...ACD82A32E6D36547D768CE069D04B068F20B0.bin} | Bin 6393 -> 6393 bytes ...DC5356710DE7B6F6FA2B23C19412005669DC2B.bin | Bin 10105 -> 10105 bytes ...5B41C7E656BFFA57D93F70CF3EB67CDB6244F.bin} | Bin 14387 -> 14387 bytes ...F16F9ACB8012B7BE4E96C916DB6C2FAEC0FF81.bin | Bin 6910 -> 6910 bytes ...EEFD1C3C60FDCC030120C7F468CBBDF895407.bin} | Bin 2045 -> 2045 bytes ...B2AE72DB2A4D6A9501CC5BF2AC923C6461EDA.bin} | Bin 4895 -> 4895 bytes ...D1EA04D7BA046A03D1F152089EB4D53AE0944.bin} | Bin 2045 -> 2045 bytes ...9BC3BBACE79DF98801EB8154EA1904597854A1.bin | Bin 4679 -> 4679 bytes ...3A915AEFFF08999A4049CB4E87A7E2713FF5E.bin} | Bin 5660 -> 5660 bytes ...70C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin} | Bin 2045 -> 2045 bytes 31 files changed, 0 insertions(+), 0 deletions(-) rename test_fixtures/masp_proofs/{3E93E8F4FC3498BA19EF4D4D70FD0A13DAD049EAA1ECA95234C8AB02601FC0F0.bin => 0121F20280B79AE194D0D25EA068C1AF37CB2AB705996B201CD65CE61004687D.bin} (72%) rename test_fixtures/masp_proofs/{BEDD60F57C8F73C0266B1DFF869384EF0421F46F7732EE62196DEB73ECB4C225.bin => 0C043F5888F6E0CB7DA3E8EC61F2F6651B52D109E6C2E2663F55CADE9EF18521.bin} (73%) rename test_fixtures/masp_proofs/{C614F20521BADE7CE91F2399B81E2DCE33145F68A217FD50B065966646F59116.bin => 25BDF17188976E8C1981FED780B6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin} (72%) rename test_fixtures/masp_proofs/{B0876E15DE7B2C742912E048F583E61BED82F25C4452CA41B769C3BABEB62D2B.bin => 312C09DE79B30B2B747B812ECAA6B7FFCE09AD5DE24573B3F8478AF29245374E.bin} (72%) rename test_fixtures/masp_proofs/{FDEF024F9FDF73B50BD5C98F056F77D3447A5965177C6D9C605886B0A08995DB.bin => 4D4328A27DB6F4627236FB5882D4D219F002CE532CB04A739F5542A347BBB09A.bin} (75%) rename test_fixtures/masp_proofs/{EA7A88B1429EFFF0AE7167F6FBEF52D368B771AD525817E722EA3E12B0A96971.bin => 55DEE92A5704E7472E2DAF64FD824E44F16753490CAF5B9CEF0616A91FBFAB3B.bin} (76%) rename test_fixtures/masp_proofs/{2B6C3CEF478B4971AF997B08C8D4D70154B89179E7DA6F14C700AAE1EC531E80.bin => 6170C14BA5BCD346C2C0F38CC7820CC60EF202BF7542AB928ADB4350282290BF.bin} (72%) rename test_fixtures/masp_proofs/{32D7D6A62781D64DCE2EF422788541CA9141D136D623086EF07F5350415C7C40.bin => 68141E47E010974061B96A04DCD1FCD204E388AE7B522EA10F1E568F952DA2A1.bin} (72%) delete mode 100644 test_fixtures/masp_proofs/6A12E11EEAA83A0D00BF7470DD0F3AD4FA4AB61D0B965BB9ED02971491A2B7FC.bin rename test_fixtures/masp_proofs/{CCDB111327E4189EC4C6FE2D429AFB3B6AE2AA3ADCACF75E6520A66B2F7D184C.bin => 793C7B6A921FEE9A8B4E277A731FFE3888E789F85E7B31DB3F165A63C37682F9.bin} (73%) rename test_fixtures/masp_proofs/{8FA9019476ABDD31BC3597C205553D0206DBD813B523E5124BDAFC020D0CD99E.bin => 83386C57F2FF254FF32798C40FB40A078140413A191075993EC58D2DBE0A847B.bin} (72%) rename test_fixtures/masp_proofs/{3FDD781F73CEEE5426EF9EF03811DFBCF2AAA7876CE5FACD48AD18CB552E7349.bin => 8EFB98EB5A0B06E3158E1BDB54A7D021076CCAB87F03830E24C283D06AECE910.bin} (75%) rename test_fixtures/masp_proofs/{5CB4E3EBDA94E19F0441C422AFC6F03AA4791EA9C43E03951DD472FF490F4880.bin => A1A4029FC0A83ACB7DC18F86BF96962FF1C92890FDB3429BF37B9158ED0346C0.bin} (75%) rename test_fixtures/masp_proofs/{F7D91D1E43AA598631284A69E9861C7F98EA4325D94989648024831E350D8F98.bin => A6ECAF0E1325C4C57E3EBBDA2DF83EF8B643F9895F19662338F7DE491CCC73CD.bin} (72%) rename test_fixtures/masp_proofs/{08703E9A7AE69CFFFDEAD8AE16503B92F698545B3FF57B2A849B891CD946CECC.bin => AABBD7E7732B5150042B75E5D42A448AE357D90E1F0D4C06CED5C9BBEDAC5665.bin} (73%) create mode 100644 test_fixtures/masp_proofs/B4A1744E64A4098869BF7502144F3F5FC329D52730145D65BF57759BFCAEB2AA.bin rename test_fixtures/masp_proofs/{BA6D5E36F9F37D37B5C2360C9D649914951D41972F12879CC3869237CCFF3B58.bin => BCC59F444DECAF403D363F32EB8ACD82A32E6D36547D768CE069D04B068F20B0.bin} (76%) rename test_fixtures/masp_proofs/{AF6B3A470013460A05E8A522EC0DF6893C1C09CF3101C402BFE1465005639F14.bin => C66DD87BF05FD14D98FD79FB8EA5B41C7E656BFFA57D93F70CF3EB67CDB6244F.bin} (79%) rename test_fixtures/masp_proofs/{F4F0D829373DDA78336CF39EBA3356453E412F862D949ABE9671C24A3903909E.bin => CE7FE3BCA1CC162ABC2EBA680B8EEFD1C3C60FDCC030120C7F468CBBDF895407.bin} (73%) rename test_fixtures/masp_proofs/{D1DF6FEDD8C02C1506E1DCA61CA81A7DF315190329C7C2F708876D51F60D2D60.bin => D3DECDC3DE60967FD481F65B940B2AE72DB2A4D6A9501CC5BF2AC923C6461EDA.bin} (75%) rename test_fixtures/masp_proofs/{C5EF7E4D76C16E75B400531D982A4E4AA763188BD9D5DDAC6E217228B95AD57F.bin => D9BD82C271B78B863BF46CD6BC5D1EA04D7BA046A03D1F152089EB4D53AE0944.bin} (73%) rename test_fixtures/masp_proofs/{EF7D15FBFB9CC557CC8F9D4D18F7858007C4DA521F8E3BF250A46E9342178EEB.bin => EBB3E1B6028182E722F604429423A915AEFFF08999A4049CB4E87A7E2713FF5E.bin} (74%) rename test_fixtures/masp_proofs/{59CC89A38C2D211F8765F502B6753FB3BE606A5729D43A6EA8F79007D34F6C60.bin => F8F7A102864F274F0D74641DCB970C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin} (73%) diff --git a/test_fixtures/masp_proofs/3E93E8F4FC3498BA19EF4D4D70FD0A13DAD049EAA1ECA95234C8AB02601FC0F0.bin b/test_fixtures/masp_proofs/0121F20280B79AE194D0D25EA068C1AF37CB2AB705996B201CD65CE61004687D.bin similarity index 72% rename from test_fixtures/masp_proofs/3E93E8F4FC3498BA19EF4D4D70FD0A13DAD049EAA1ECA95234C8AB02601FC0F0.bin rename to test_fixtures/masp_proofs/0121F20280B79AE194D0D25EA068C1AF37CB2AB705996B201CD65CE61004687D.bin index def38f92636cd7aabac5d985607a81f4ccb2ac32..8f66281d23068bd06d3bfe68ceb121c169f54aeb 100644 GIT binary patch delta 356 zcmey%|CfJ)iOAlKX5vWw4LF zJL`tXhO31~CgkRc-0SITOXyV#YiB#Tc@MKHbNwQ}`|=llpA5RIcxHjtR+Ww~-bYGy ze{%cdx~1t7Us*{{<^RI;rLyN_-93-)a#_r@XX`a-U(G!h_q{EAckk?KZC3fouhIKW zh}Ye7jQ1F;oP%f#PXitbw=_4(7unL>3R&P#er%(h^;dhvJ&ix|g) zPT{>vxFw{6wDbET{cEdiJ=0s}-kP^s<6ryXCAkKn`Z?Pt|I**XSt&Ssk-%#Q_3D39 ym-F-OILKYMan_4V^50n{8FxuMP72-ped+AZ*LS26W-*D~nB>Ydjbrjdb{PQN7^a^9 delta 356 zcmey%|CfJ)iAe0#t)glQ&rD{soR)I4x8B^x?%}i1!-m-cn*;*`1EXh|m12`P|GxCF zfQBQ}|H}kA>8$n_m!2v<(Tz5p3inF~48tJY=w+=0NvP!U!M^9z?N4w+I z?r%PPo5K3<*7a~hrE6}!kJgBJCruH*V>gu{_!Un}{DUQ(k0)ITl=&OP#`}{qC}g=^ zPSxM}0kf;>FFQ4cDDCd-b@W*EWOHXwfYIW!3|HeBrmt;_{87q&eW}|;F2l=>x0W2r zzq*_0*7^?diFc>SeB=z~Xn(xtr_IC0cbwwCtpo~-PrO$1y1q+-)$&7!;GCMcK1WBM y4ToEEdPLvOh}$@O`kag5pNa!DuT1xQ_vdY4b!P8J72VD2B_fzku}pr*E&~8GeWgPH diff --git a/test_fixtures/masp_proofs/BEDD60F57C8F73C0266B1DFF869384EF0421F46F7732EE62196DEB73ECB4C225.bin b/test_fixtures/masp_proofs/0C043F5888F6E0CB7DA3E8EC61F2F6651B52D109E6C2E2663F55CADE9EF18521.bin similarity index 73% rename from test_fixtures/masp_proofs/BEDD60F57C8F73C0266B1DFF869384EF0421F46F7732EE62196DEB73ECB4C225.bin rename to test_fixtures/masp_proofs/0C043F5888F6E0CB7DA3E8EC61F2F6651B52D109E6C2E2663F55CADE9EF18521.bin index c69e526ca6e2e69c9eb4c299c8824118f5d03925..867435380fe80c9e3e880bf4ddcae2be8cd891c6 100644 GIT binary patch delta 1519 zcmVmAh z2nrdagexK#pWRgB`?2LE0!MM4NFZ?MHo4&^hmCduO7Ni1y9EZnnM1M(F zjPa|^!)y%5X_;=}KKRl%pPEK7s>>h)K4+UZjyV;)Hd{-V8D06nReoHReYW7BE=~4! zblSMCSyvzrFoklDJ#!c3+_Wk@pL6FnGLFbcU9lajp6nH~9)i@kCG~?QJ8m2=)^Qq$ zd=~R;{z2LK3`h2J>>bCm&KZ>gQSx~fY^!;>TB$3q-9xL{QI#&OO2ONPvpY(8FP*4- zo$iSCo*FQ-QVrH>7C$H042-UUU#P?2H@SCCquwnoxH45Z7hZ=3P-Y%yzgcUXdI6CT zD3dP>2$SR-K!36LxJVS?4tW5X#r*MpD?dZI!ie;Hwxz$krf2GOX3poEsBtd=hDsWg zfYi)Io8hB^(%XxTxNgqBTRfm~{j5%Et{n;o^(fWdJeqityQC9j7^`1fx`*28vR7Y) zYD*7o@YDJcwGXj=4Me6JyHxKo;oMX|g(Lhnc#ly$6@M*Rj;#B%Ipw}jff(ff>)WE3 z#Kn{ppp^Q#Z?atD))A@5xB!0wONR^J8n33YTus$0}FUT`MsRMIe%PQ1g_9+7B`C8_PGDQG&)H;YoOnw zaSCZl`)CfJo^YGZ-f5(rW1VN^ZUjMIawU~ZNt6;kr zU_ef^`Z=jNRlK(t2$|vdvQc!tb=p80z<;BWVk20f5VNkyNa=E#2Ij`2@)Loi$JvWm7P>4I6Ytx*jlT5l26{y)^SdK6G`5Ep3~b{^&DpU~E05gi`7g>z`x z-!O$a$&a|nzQTXDXP}%$Y}Cr|Li&XfxHy~mVPvKC>m+0NEtZ3z?N?N=cBvyjUErSKDAnJ9BL7K4-gGwgPdwq z*0L^J=8ZY#vyaH0Ub$4JW~xAVqA`&(5N{xkPG#Zsn5{ol8PkXZ|0 VYe$@J3DK98>djgYWAw21t@cRG& delta 1519 zcmV^Z+Ejyip{DwfgJ%|PN>{7v_%FjkDeKnRO|R>bCm&KZ>gQICQlx(L5@@?jPXT3k2~FYMfG9D*Gz3gnURH54Ua znv^Oj_a7P$lL@%MN7JBgPu`uNACMQ=VTF4%2=U^4W(XD3)wE2HD6ZeFE!*_9@Bxt! zD3dP>2$SR-K!2io`%aih;2)T{oF`T63`@ZLBbdM4J%&JSdjkuz$!*Oc)1K!Hh=U&3 z_YU?LD*chPjy^Rd)`yF;)T7X^bZ zk{L*sl#evz_^JQxDXIk@jCw$6`aFQ^L{ML~uX&Ywgw#1loY8e6dhORusC@QfrHU_Q z2Y@#wM1T7Ys)Sb_Bj5=3_swW|C=~>nZLUeS!G@k;;4a}A0nkfo@*l&m-$`o^??Hbf z{C>Lpv*a)bwD=neSE#Q*-pg7V*vx8ABRm9h(O5=!F)8;X7A~OQigC_Btn@O1MpDP{ z0q8DCjp$O4}P$%&4|`37gdxtgEO>winEdfj_O#+Mq@JeM5=$%D`UPNSth zYEt%*x&lM!u--cP*pS*WP~xg6Ib*irPQAFZtN`5?*nCMx9b!E|D%@f_e6?8%N;=*- zdcSMIF(|K_8@9D0%~}#v^QnI_a1fV~AM=Q$c#?y3a+DYI3x$cJ@R&e9>-+JPRn@UJ zRDVFt_Awt+Q^cOSV1mb~ANq|sStP{cqV414vAihQU-VdREUpdxnA*@Cy>o=>3dV?P z-I#qb@+AxmOMTi=)r^0c8ZV3=7tYZ`m5xTV7nuUV?v0k_-k#sgO5I{uvp$gZEUm&d zvQcmHGel^;HIwzF;EM}IHl1?=&c6_!Y*=Am4V&m8hhE!|dT{At;xMTEe`4f6NUd87Kf`&q}kAD#S z@q#~-n~)M8ZGE#rppv|c5oeV*i|hb@AI{Ag4(;5qV+uy5h%c!T*iah$6~1xxkB@>; z2JBF%g56LipBXF4E0J;7vZ`=2@-^_2qR^I&qS?CSJ>ue{Jr$l=p}>qOkH<_jZ?w=& zQhrgDqi4Ifzu%t;u+aSV_R~ii`hUc0|0lcB24mWOG24z}4IIgZH@hrPnI++S`5SUO zk=ixp9b?9XRT+gpgGz@zoHOyxL#rH-@-w(@qE)@LARRsh$J_8#T5}8i`{VA#LlhG- z#&5*n#H}`$qb#jN{`M{nt~d#9#03V}){P@Q%Vbs!zP!1U8k+{?60>3-@ksMyb`ck% zZZ7+RWt`_}c_q3FBgSj+O3dHZyyQ7~4t7HCPSIn+XP V`z&X*R7JlkdfZR5Jq(j%Av_t?{?Gsb diff --git a/test_fixtures/masp_proofs/11BBC6FA2A8493A11DD5E488B2582DAD9FBD3ACA2E0F8314642810FC958594E7.bin b/test_fixtures/masp_proofs/11BBC6FA2A8493A11DD5E488B2582DAD9FBD3ACA2E0F8314642810FC958594E7.bin index f1341a945c5019cfe8e6110bd488d9330e7e544c..c94579c8bae200d449b610f4867229f65cbf8010 100644 GIT binary patch delta 1797 zcmV+g2m1K=PWeu-78oEyW^SoBH{4dOMB|mz=Id0PM2>>T16iExJ#29W+dVLoHW)!+ zGk5NEZDr=EXEu^+Qfuo~x3zUC`AXI|F2eaX68;FD03Ccv0qUJ;>!R<>XtOSQwt^s9 z)iXRd6P##hR`P(_1B7znnPHv}9JnWF#Uh50!Ue{)wbqJV6R2Sg*s#DPbFo>6r-uVGu8YLZ!Fy9Se@ zQ7o;LeUqRHM;{)aK21dOF^E8X36uXS8X{%{Z7!hxLQOkB*yp=C)?PArET-uxO8ogM znvmQfpQyYZy2Lj25V%LPxAVh6+8OcV8!LFf1pda>H*&J!%u?X+S{I0dz;(`^4y1&$ z47QeY}`m&e7(ZO ziGHoZT2M&o&Y3-R=Y}j}NMAPiR;SZCle&{d{Q=A?hX9cgAd?j$Ab+uRoB<{Jdsi`V zR0Q#bwm&V)PSMwB&0wB@EwVQlrKW!a9i=2?&YHBK8RAdmzzCAZG%+5Y5VB=Q$77>2 z>=Lxr(Sk>i>jdE5Gd8b}K&~uPv?0&ht<45MBnm1+q-_qWS#ub~`}H`Dj*(SWz*QH) z?o^j@AAQWzMjL zTv#H)$8FsJjUCj2IG15QpU?g8uuN2nElM^%UntMn0;anGgo)gHnkLM~u^OJ(iYnVS z2=*;%-^91VsR6O)nVa|Mqw2NaMJe{Af`EXv@RS&Qe+xhs6n|UaRaKydC^1lqSFG$Jr-oRa`!$g@sNo%u4lRw9~h!FI$@MqHGNRK znN0ZV+;CYy!ZV9`2?cqmlr}jeW6n6JdwfGntkzzy5cm3v2d=^1Rjxc1Bks$T%ayS# zVyiF@E-IbR@1d407`pK(N0-baG)qk!f zL_jA&DE=J4=Iqy)?k+o*fw+%E8Kc&!uf&~?&DKaNL4Q9i;Iddi-4t`}fLfctbF~Y^ z-v}qU@zu>ziucW^5?U&ZVs#EDW`wBhUvY>Oag*C&32*C7c;cN6t2z7!2%%A)Tpl{r zc|d4fvV-HH5Xwp4#Co7z-a84*p{r#ycP_AuG4dBd8D=U}thazC z?zy)?et(mh#ZKC^l28$_vMr6cq1sjSr}%NkaSc#F{W~rYv`aDE0d8YO=E+4sBQ%3f z4R10KFBEW(g;}p*ZID^EwsZZyAaTX>P4qJwE-e6JrYKdFU{}R`R3}Bv2S>mnL4HG# zizuTHfm4Z&*b|AG(i@0hA6=fF@-L7!G%wdGL4ScB0!LpMdJqVO^DLHtNQTMir;>#h zhj56KC>jPoYGtZrQ;?GLw#TVjZT?|`dpqIO`TG~YNnDWVMoxyR3J_ZdQvq_^lR&_~ zhb{Q6d0u;u)AXhAqKR4gP<)pwc?ZX^D=u9h^x?aOfr8~TTZcJpt%f`ngJnu&MU0}y zI)BZ=zV0PWD!Q`_=6Yrz>}odW@r50e<*cJ4+qjLL%{0t>zjTt_K?y20g@O2t9x0Y? zU9}OuC~U_U-!o1s@c+V%>;<#1h0|T5U*`@Qa^#Z|S8O^hsIvW^PH8>akj$PDb;UZF z_Vx8!|1wD&pU=M|bhoGWOYV`n*a`I>@qh1i_0-^ET?DTWU6_vz+VNPSn-E++vsWNG z)g2zKgw76(BP}}JQ>1dJUD(VP;j_a~xIihZ1RJYnVwhF5b$xnOZz#LR52Y}R8DJ7X4^QZ`8RV6v68s#xFWDEx{v n8!E>{bkWr7N*4o98H2Z$s%u+~CJHQ5UzBWq@$rHOlQkzq?00H) delta 1797 zcmV+g2m1K=PWeu-78oFEU8035!o+`-rYZWy3tv|v9c3_A78zo96a>==10REvHW)!+ z#V6w%IU+O8cFEe@F}F+VeiES0>$BWr=-=4l@&dgY%gQOKKH2v}<|r76g}?40cWE)VKCl#Xr(L+=QUp8n-uULw%sSgnJxqLFAn|6?b9jr~ zbP$00E8!lmBcUU*x-gF*&T~X7j3Tr98z5D}aTPAORShwqkSS9Y8SYDWD(oWChwyeFzcBeUjlzc{?YG3Z*; z%sk#QzixILgw}H?M5M=AMe`JW3(>K(rlyqLn^xjL)`OC$%u?X+S{I0dz;(`^4y1&$ z4g~s6#$NCg6YZ^F*M#vjK6K%xN#Il(Flh82^cRmW;WGujeptR>fo}LhK{8zhV z*4}{-^uKgh;Lvzc=6~05Qc!{u_yZ8q>6my-H9lv7gWfi&l^cRjCJ=#2P`5zaOU1+m zNRa_;Lc4qxo7zNft?c#(L9m(= zY!r4a%<4W|pmLl!kbZfV&|{9)0?2y`rY#<)=i@53GpME)Lu-d~Q-oh^UwC^{b3QKmyF-QJQ8hbuBS8P(4^(rdHo-&+rVs|F78Si$uORod+Or*%^QGC40cc;XuO=8`1&(=2oY;bLCcrqH#`**4x75}lRBnuiz48Dg@({ktIoBAbOl16 z;D1yyk6-gx0CVH{NscfzPI#DE``~MZI7n~{$QjmWJ7Ym!Q-kJI1_v@iw^c!~$Kz&P z2>RZG#N*lY8+5$2LtMolSJ1^71f)Fqi7#G|3j7mC|7<9%P_aZ)doHLVihbVCV{g!S zX|HN*fS9<*Nn&FGE^FiNj2! zgvge>K2zX(p=sgAm!!pI^OQ;`3zE1VWCXMm!kn`h&)+DW2;rn8w-se%;kEux8gLY9 z5c}U>7IfD3v|!oBS@F=iSpHgWaeqqv`ymE~?KFdO<9V6&>D zz|$`A1;7Ny0)kq1(&x^hLIlb4hZbnp@~6Q?EruB7d%|Q8p~w@ou(CmI8nP?IT1DWd nuYzS|KbI>)-n_=zT`2Cy(4MWLjtYC(lJ2C)se}OxlQkzqy-<6X diff --git a/test_fixtures/masp_proofs/C614F20521BADE7CE91F2399B81E2DCE33145F68A217FD50B065966646F59116.bin b/test_fixtures/masp_proofs/25BDF17188976E8C1981FED780B6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin similarity index 72% rename from test_fixtures/masp_proofs/C614F20521BADE7CE91F2399B81E2DCE33145F68A217FD50B065966646F59116.bin rename to test_fixtures/masp_proofs/25BDF17188976E8C1981FED780B6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin index 7f4e4c72645306c13eb4ed083c934ceab556bf95..323762261b3a6a30bed2a94238ddf829fcf4856d 100644 GIT binary patch delta 356 zcmey%|CfJ)iOAlKX5vW1@k`q+cWvggJ9<0Vq53G+PsHZmAQV#8il&U-P4`7Zd|6Y%T!T^g;VXQ z+gUE#l`5Zk@*~SDx6V$hxTagzzwG90xqrpExl=wA@B8YMvu;K3vH+b01uw!>j`XoE z*Wdq7|1h`Ds%6rrZZk5wCz1`Rd-u?^XnU4nO%M)akt>- z@#T*UIhVEUt&jFoFulII`UdBp85^Tg625MI}?KzckV}_i2!3z|m)`XKQ__ zo!pmywfp|s&u3C*-d!JUvTV}dpz3(%zinSmAIX_(@~~urTf5_hX>aCS5T6$6x=Hif zTCv~=+XoLFwDN;49l85!dX@UhN~8Y@*_HO)tHQIU@k>8k#CXbq=`{1?hwL%{IHIc< delta 356 zcmey%|CfJ)iAe0#t)glQ&rD{soR)I4x8B^x?%}i1!-m-cn*;*`1LN1;NhcrF@0jS; zrgrQ>e>bP?esAlZDZ0CuSFKx?wW-5o^B!hZ=K8+i>JvfJBXkq*yU*cDK5;?DpzA=R z^Y>1*Ku_^6Z;txPU*B`{Ur^th=Mssfe>QwvvQ1Mf`TE6oZ|cwQ{oCQONzlvtb#vVI zD4DVtGoWemMgbzDWldBAU z%Q(-oQ=sSavlN$e=Us$nwVJ1M7~SXPN?_$#_LMhpepJ0dMb_)`m~h4i-oBkKm!@~G zxLNZ!+r2)7jp<>ykiWducBEj7d6cO+2+4^sXE(G;jV z*7GxiE7TKW95ZaEHT%kJu> zPjz>Bm#3b4aQ8r|-0H0}U(b8{|Ew4L<~_`+%=J6_xQ7pOlj7l z*&gfeYd=z-xvyAT&*ejB>CvM#8=E7g|9QL-$#t>4`$GE$ck==Z3#Q_<`+mu{@A#xi zEpgs-?NUWyy^{MJ!NfW8l?)FBB@aH3*}Yv zc#Bn8*&3^CYBz))Ss|=2P4|THo3qN#lQ!vH{rafv__n9huW8v8)%vo>#2V_qzI;#q y^_$bzEhA#R+8_T diff --git a/test_fixtures/masp_proofs/493CCE9EF30CBA192D49EE26A1F59077CA8F2E0C07061A81B524BD6EAE7983F1.bin b/test_fixtures/masp_proofs/493CCE9EF30CBA192D49EE26A1F59077CA8F2E0C07061A81B524BD6EAE7983F1.bin index c0300a82b05d30de470ed6d1f09117e7d9f246a4..a270a88f303d25ec61c22503344767d07fd16aea 100644 GIT binary patch delta 1245 zcmV<31S0$XHU2fQUl1VI0y~RdR10c0J^88_7p}hBTK`ES*kLWXp2?)>GP`q=e-J@I zj4kA@0ShBDTf;r22MH8N=kn7(^`avygIC18gh}sK0&2<2`FE(XrGwE@^I^;otL)IB z4GE_w2NcyvLrU-+YqJ3nr2>CYnbGK)%3iyJc1mTD`A&+$_+DzIDq*v=dG9Uc>}Gd+ z(C-57`Vs`D8n{XC_jVbYi4p=r)&QA!EbAg5hFuqMZ26~+4YI4E%gD7_?^{6MCVnBg zKBp6o#pA(n{x=~^hUVlR!Ti9}L0BxR{Ux!5Cm#NxW6!DL>dY=-%CNH~6qEu{2nesd zuL3*8>cgJ>XX83dm}ENWY4G8S3lpp@qik0=cpZ>}C}_e^QND+a%oVyq=^daN9EeJ* z%B3)Qr!IkwCw#0p#H^T+TwGLsePn8~0FetQP98XgDuf?fAx2Pj(Kzd)i-e9vIXt-f_@wqdvO7p=V5fng#oOV>x$%q2N3ne0-_6mHKkX??!c{`L>UM#p5n9Ua_IT1@@Jotq? zZJ=+9f6(40tnY{t*3&cu1Y*|=e({**X4n>WArUiv-MtxPE#rj44XCKT(4Xi4yy0>h z4q1s*a?oafI)TGph)(*QVgFC*mog}BIcQ@g#|Gb#(o75W2FSg4i|It));ALYZ2`pT zwf46mK0X7N>o)eqL~iwrw?P_?uqf^}>0q7re|!yz#2%juwY|Y>xuqf!S5NnnVWfF; zk;7X`#P2=6V;YkAME%zUgcI&dnNCq3#yNnoctP2XpzV6&V?-vUxyi4SsYU3dUMywU zU5au8njQ#M1`F%eV!J@u%7yL_D0&M9XFlw8fNm?cIc?i9#XmqWePGteuxX)ot>GQb ze^VS|%PU!xU$M2g?oRg^mRuvfmOqOL2wOa_p?Z1Jj%z&g%#b`O`@d1;>SvgUR`*~cKC!tL(RVc;l#Kt~PEh!_MDe>#h%|~UzQ(m) z(ji=tA+hS(>4_hO8awe55z1)Nx9a@5VJr%7I~$*ft?0YHP%s*g;azDO1LNJ%e_yhh zC;G1?_y#qB8EN6oVKnUcHRTeeAc1q|txw?oE_8zzZLfeGET+7Yn1ZSB+;hA>(z~$r z0XekFqAJwl98|2QS+=}G%`5?QGGfI8`N>oeiHlt?G4fgxz_@QLF_LCBL!-+7(ROJL}-t( zaI%U)CuzuRh|n}_6dV`NfbmR0a8CfHFfaL- z9StXyD;Yr=X2Iqdyqe{ox5Ai*{*z=iiwlO8%MD^bX+g+ZH92STX37x82Nn-xQ*G}D Hlgb)2q_SiW delta 1245 zcmV<31S0$XHU2fQUl1U6)Q1PdHC?q1(kf~>p!y~UsNHF#Gg1p?<~F0*lZBq%*v6%gQI~mu`dW-7u@sn&G{}VQssf*{MMga!@@0r zdxEcg&t8gROZuKTWtH**V*6|ggvniiHe36QWzZ7~%ypLC85g22J;Q5p@h$^{ zkVEjD?phIODo{ATIGzh$OJ2NDaPwy>p4PF2Cm#NxW6!DL>dY=-%CNH~6qEu{0`G5Y znz(>W1&aoMzl(wy70Fe_Ynlo}N$843CsX{5Q8iZ=!tSx{2@& z`0!>df1AuR5~#qFKKfBf7cR&5(mk-^%sCqh^)*Ha3l*v_!o;5MAP)c(@|dFWMA%>H zG}Qf)MoRUQAwLLKf1Uu5ngx5vuQ7Yr&J+Qc18C<`=~Wr<)2cz7jB@O-@xlEF+B)0=-WNm#aH2@;COjdLO2e=V5zLqIfK^<$O;O)DT=YNn#X`OqpH8R(-B z&>Nm3Q~f8_#TQiNtzB_7jBdzrd=)|1-dug+L>jDeO7qIDJEATkKLZ!lR=4&mm?SSc9DNsYW)xG3t?}>+Y+k~k_M312^$Or%mQ;Et#NmnT z|93y>evUmG(0VC_&O27ry)!YX2dO-fWcqU~=cQf2sPzBh&-mf5a7q z_dvO7@%H$!pMX{&b;fW{W`phUbH*hjp=TY^S=QU05)SHZa4vY3%%xTHo)lkeK2e6F zNqAAJJB}It>59*>+qKNMV?JR(2oAS>KVF;pNELAheGo9ES0bo?o4ExLuk91e?;;%- z{}=Ux}U)&(0kde|^qV3S~AU|^h|%4%@o!JM|2 zg%X};ylu~4=s%y8uC&8d&PXCCOt9Q%^B!hZ=K40~KSv7ZR)5aci~HPud9F>{;YIKB zl$3mzTmAm@UPo}+q3+ow7o4X>2#50iKD75;#1hSIqUq_^LR?I?hI%fEQJa6kwR80c zkvGdifCEQ=++x-@Sy=~`Hnl{QuxIXUbDH7k;pJ>wa z-_NkJY0bm>YZIl4_AYr)WcBdL*I=8IEmyWh?N@qOAds-{9N(pH9oyF($=h`EuWEJX zk%sestd+UL++MRKnm@}-kK3oDHZ|U~K7O)A{mCVT(aQ_7JQo~WKB@Tg`42AIPfnjJ zl6*M#nW=K%{O$J~CS3Y_O|p#fH{;ic`(0ZFwC;Ub#q?F6ea%s(`5coUvdaJfkZ`Zp diff --git a/test_fixtures/masp_proofs/5355FAACD2BC8B1D4E226738EADB8CE4F984EEA5DE6991947DC46912C5EEEC72.bin b/test_fixtures/masp_proofs/5355FAACD2BC8B1D4E226738EADB8CE4F984EEA5DE6991947DC46912C5EEEC72.bin index f51df98d8b34b8dc51276f71cc04edf41d261ebd..a26daf24402b714dd85c96bce44de89d3e39361e 100644 GIT binary patch delta 1470 zcmV;v1ws1ALC8U{K@}hsg4h#s(+8xo-x0HXTx636)$!|J?g3I#&kL9&^;#p7VHH7P ziM#A!;3pSF`nN7LE0oFS0fxv3qlJTaMnoa*An?{AJL&(Yc)V-6>gWyjzq7^m+CoOZ zmWc+%8v)$4Vi#b{0ums7pGLZq$fm#VZ=!VQGuP_jnBAv!mIP{!NDa2FkFx_7qym5H z5V9B`YsPsm5x2^m_2OSRlmWkYfy;>Xok79}G^a>znP0PKRcg|0oq1DxpiO!+`;!51 zu4xscG#AJ`a&oMdg8}~tttY?>Wg}%-BFOnm!@|W4`^y8OaEId{tQgjfhHJUiUCX_r z$a-tKL@te?>V@!aOjA@CUL^6{k?*r68I=N2`rQGT#b!Hd3v7?qDIZPukZi4VII%Qw zp&6-)9^=+URsc5el;an9ai%^0i6++X+JHI_j z&1r51f*1czVU`9yGGD@T+CrTS$b}+}la%Vaw7x)-Y6BP$)ot0`;ml5fl~_F{EFM#) z!P+vRJ`ZmKvJpLjJQU33#^hV*y}lbqGDJcwT&s7DD+D`Tf4=Q)@Koq-mm8RZ4&d7I zPq&LRhP4owRZM0?c$EOCHqpSx;##r6+Fe4T@2!eb2A2bX?Xhg5uWXFf#hX?yTfvA& z)iAdRz5ew#+d)0^1n$R$O=_y?SCZ8P0`M;|bB@h;i*TM1c9&cvp&Da`5??`hC}r|; zh?~^-H`caWe;Nw1h6|jRw++~#6z39--o9d<=p!plV(!*LpQp>UE@RLlB zJR-rzoAP0c{*1 ztMH8}TO_O##{1K4f3*{)GkeC&I(V)rtK8I_&f(o+3SUgFiIwl8^% z)njDf=d`@FgOZ@|l(JXV7`k!bfx0y7;xB__lJJXPwN)zi|h zO!5^X@IxlusSoF>sj$NcfXOdhSD>;%dk)um<~dJC`^G zf69vM#6$Y3+$9#m{v!)oJuH`ZZ3;t|#EfY_$}s8VbEohMUaOC^iKpHYqc2 z`TT4BZs-hZH5_il9)z`5?G#+D(1V5(OB3?~ye($+6dP9&vQM%c-EIVM1$dD*gHq>= zWembsV*|9xSn!mb;dIik866~)KJMXFe{Be_RQv^aan+LsW_56l7J6rHz|Hec`7zXB zqFG&#O3J+G-Ub5U1?*=nQc2G`2O)#lzD85C7r7n=*SFX*LRU|M- z3-_7n{g7S}w$v{GQx?kO?;^*R^VO!#7D-t(4kV>~+dfl1Z&9q~SnF3WuqXT|NO7JC z0LdoYemLsFPH{Ax2C?HUN>=Z^A}2?wm*#Q#G2Ur5bb(|W3_qMj=u;_aFYcQNo9J~9 YgwV<#I=vt+wzT(PD2!Pf4wH-^JOSm|^Z)<= delta 1470 zcmV;v1ws1ALC8U{K@}i626SSxtG=8YS4aU9naJF7ptfpEF0`h3*nbO;v}WX!VHH7P z$CdYDN9h1jXNkE4VE~%Fg1L%~IbMYf=Uat??yaP>FIkbgL+aab4159oc40#IGMbBd z3paPdg$g;(F1^LK0?fo5E83*b1GDrwKJ1fp=jl7{!nGKzIu`ECuk>!ZNV5YLqym2^ zFdcLF=D45e^V@!aOjA@CUL^6{k?*r68I=N2o+!>3-EJhKaEXoL-ubIfAP;WQl&>5B zU}ou&hOTD$tEU@spp)PcW?HP+W(9w`d+gU=TH$Y=TR?a2 z`n_F_sa*`d+Njlvhw(jwUJgf(GQ14M4)_FNys}MB>bQ(-Xqr^u{Nwt34XG5in zaa!8xw--XWI>Q~L4SFtg1lc^_&V^*rh)H^pugIcW`7$n4e>O3VH$uHrDrzc57iznfVyrNbE{)J2#yeY`)bPMMmzsrQx$+<}uJN{1DQNkukq$`!R0V^VanbBlvO5 zUz(K-4T_yK+fw0!3|rRCeWuk|)Tcp?$jInp5tzZ0! zD&;@Qf9uuNP|PtKjuc)0T%m4Y+irJ*m*VaCGgotRep2B5HbP|hi4l|w=*(TaL9X0F zG8aDU_Q&g-ABzmSjLW#d`@BMA6UK{#p+{L?8hYgRUJ}eOqqgW_Zk5tF_j}e??UXJ$ zv2tf5h%ZI~v*-ee7VPcrX#puF(i;6qv#e(%e+v^2XNr!9qd0xjNR_8~bOZd?n*}tD z+k!b(1i=M2M8Q(J`BL)6d?~xaq4w#8=HzOfq)dQli)n10a04hul=`d-z4|N4U}U7{ z^d<@W7>+!W;=30S+9W=y(lMa5^%psWaC8KGQX*gN)UnSHQ%j|Xw8XDT=583(`tB8q zf9I%bE}~RDd6Vfe;b`JRhSu&d5J=&I#n`^&)G!2HH|hye?8hf_%MT2~$tdgYb1dpT zeh*ubph(z*SSIC9LU^~&#(1Q%SHPC12%LH-xk*Z<3N3Q!ePTZtJebRS3i`%#nNZP9 zy<@w1s*#3cB7_BBhm`z<{H?jD{mgp}e-zyv;>Yg*{*MOcLNzbb7&_RpVYt_kUUhQM zKMGvKs=G;z`PtHt2&9ujX|syfe)c$xZL21hkRLHTKUIgs+IkVw-ko4D_9I+zD6^my z9vQpnh{|~Fsw|lxTp+q~KSo6&j+ervMBty9i7JgP5ET|f-Mz~XIiG*YYbT-INIS#N zc)OCtcD7M55y(^1qO}TeK*k)6&ipL;9H-Ufk!Z(j`wNp@ytt!?jDABu;`xwUus%AE YQ^sg^OhvG|=FGe2z*XJs0+Wm&JagyYp8x;= diff --git a/test_fixtures/masp_proofs/EA7A88B1429EFFF0AE7167F6FBEF52D368B771AD525817E722EA3E12B0A96971.bin b/test_fixtures/masp_proofs/55DEE92A5704E7472E2DAF64FD824E44F16753490CAF5B9CEF0616A91FBFAB3B.bin similarity index 76% rename from test_fixtures/masp_proofs/EA7A88B1429EFFF0AE7167F6FBEF52D368B771AD525817E722EA3E12B0A96971.bin rename to test_fixtures/masp_proofs/55DEE92A5704E7472E2DAF64FD824E44F16753490CAF5B9CEF0616A91FBFAB3B.bin index 749c5cac25f9a44e1941c99c83a223086408f652..a6e8ae8ef1be3cbc36cd539f86ebbefe0b092005 100644 GIT binary patch delta 1449 zcmZvU`9Bj10KnPioc1tBO0MLlYZT*|a^%X{H20A!a`Sj*D@%@zjLp%Mrb zFL_hOEAd~7{{#JBjR10#-ESLm<|p52?4*w2>%z&~af&rwbADxGsaptN)V2JV5(p*f zZQRgRq9E!8Lu7$Oj&!JxYY)x`OPZNYBYjrgH%ZUs(ZCKZKGG+S z*JPamVr2<El2ui^@k5l z&6&dhV69w$!hI(B%@h4*xS1Nkhk-@zl=o86*h_5CAXIQgtbyc)S2Q`C=UbXd&~95f&jFoO8Pj{X4m@|&Ry=f>$sZau4Tz1oNxU?xb6-==u47+ z!pLmCP?$}bj|WPBYp%OkM|^p*y1q02eyC62R5~@+X%z1G=3Y+yJ0>d7yRQmGUk|NY z0ZKO_DRlqcQtQ6>lnW!aarZHv=VJRl0+I4&7X}f=eCh0Tc1~rt`KO7OfH18Wr*oU5xXqn$jbE}@M!ZG0* z)c~PGYh1Knk&AeIbpqp_*@F6|@sCg++SL5>Qb>C8mvlQZ_TH&wKQc7yE&{LYY)NLl zb@Lx;I*M`e#N;sJ#jvHx^(EG~oi3^bS_OD(6OpEEO9=0>giifbUeugR8`#j0EA_e> z7!E7&J_0B#<6)i#HC>1dlacmqqj83$ehcLIqm-U=r&K)}q>xDXmkku8*eiewVJFd-k0G%L?% zG)srY)uZriiz9YUQ*zXt<%ArIq(}SbWt?(%ztuX%zRFd!O+s%iGy zG;^9fihNUe_W;vI?rIiH>OQk_qHRa3;0t0M!vuL={!L&m`@-lUNM@pCoOdWXq7S3} zB#LI18(wOY6KT+Fa;9AkJjCkSgF8a+w%Bc z88!&pspKOXPku`L;Zl4!8a;BZq=b_t5({asXaugqjZ~V@`WEeCh0mQ?)TYC(SfORx uYpNSI*Q4&00YI`M0m!J}_S68k3q}r-amD-_A~kChdv;)T063p^M(009!o$J< delta 1449 zcmZvU`9Bj10Ki3zxtXOoBKK`dhneF&P2^s#MNiS*h{&DEX7ZcEHU|1Ct+3hSL2ShFPcg2weT2 za@vDdxu1&v1IwR{gy##qobs=^nQsT3)vgWs)SJ&nz)DMY+q6%t8-{`4dPJ(cokp}0 zDNwTXpXC*Pb?95qEdpIS%kB4$^&7a-k_SVmg+O9DtgO(Z`^Jl-BPRHeW;bGKdr(xxo}ywEmvV% zSYu(W=~BA>YJz-h3RLom|EPLc!0Es=sKUS6MmjAAyR&T-N`H#r=*idJwHkjYUEUY2 zPEZ|M+2={8wKz`o3MWB^ONutiX*zImx1x0F;6j1M{!?XH%4c@X^V2@((+m&Dqwc)K@+RbuEX3fg%z$+~`LL9I)zR4-P^~Yegc?OO-fGF${eRR{W-sivoY9BIF zspq>#28B&{3Y;uapltP*o1Bau_9j*5L_k*$VI!C2Yf$u zN7Ws$T!1bQDQ+V-83@1#yh+xv2wvUz^9`8op!Y$rWfE+32iVhd zrt0&!8f&%jg86nN%2AiQsW-gcpcy{qKpc;+g4#5#qk$dVVraLk^IQ-1A(>}%ky|mJ zx;#NYn7f7c(~Ia+reaQxNRDR5#ayu%;sa?qzT0rLq&jOS#c-q4mSQx{fiaLL>G-JE)5$nrEtdlL z4GaFl-G|>rSLh^=`FO*vHYhDRX|yQ28EosC7-1t_RRPvrTsSc*-V$YrcC;E^(uD0_ z&p<$~ZOgT%hx?~C_kcwps=Fh>79_TGT^!|ul6u;} zd0442r*4>e!gv)>iNJv}k6~frGN)MR`1fEf{q(3jGx=N+0%kh&`stWqGa#;pMSRwo z5n|uR|BQ`!0bz(L?iQ_xcr%8}JRPiB)d5bX#)n^U7dEO24se9BYQTL19-c>+5u8_! zJzl9=SoPkQ^h;p2bB{L08Ph`oG%Bvz8AoBoc2&HoK|L&TEoUd8^0Gc#`JGT?sH$LH zJqHnp7d0#5d`BrJ$?YZk+eyi-<{M*B*iVQfN+xqOJ8_bfRbJipy$huv=~xFPA*jg& z#pj2al*b6J@o)Tege(-miw6Rc-QOB%4V4XRQurMj<->K95^q4}9+wezz+@sV7BXKH zA2N~K#C?yf$AHmiQ%hpSkV&g5dCf%qXgNH0b_k~3J=OfA=?F(+CxbqvOK8((3Bmbk uI1ckIX@@=#YkR}oI#3>Sv}5SSI-xe7gQp}&{FPpfH5!VJ2NFBgjQ;~N{l|6y diff --git a/test_fixtures/masp_proofs/2B6C3CEF478B4971AF997B08C8D4D70154B89179E7DA6F14C700AAE1EC531E80.bin b/test_fixtures/masp_proofs/6170C14BA5BCD346C2C0F38CC7820CC60EF202BF7542AB928ADB4350282290BF.bin similarity index 72% rename from test_fixtures/masp_proofs/2B6C3CEF478B4971AF997B08C8D4D70154B89179E7DA6F14C700AAE1EC531E80.bin rename to test_fixtures/masp_proofs/6170C14BA5BCD346C2C0F38CC7820CC60EF202BF7542AB928ADB4350282290BF.bin index 5679503701b2232697959f396ac971b9043debd7..131f131ae33eaa35271ad651b357db4735d63e84 100644 GIT binary patch delta 356 zcmey%|CfJ)iOAlKX5vW62T7g+PjM#ZhzRk|0&lzq2HVR=Wbc5-mm`kWW8R$Y>~$8eQzFHCj?&j z#L@78>7+{0iQWAUZ;n+jowN7n!4FOu6PNsR;z;=yxo7erh5)BkeddeY@77%ml9aj; zrW8Abp=h2B( y4u(${xa#9H{r)&ht7vX&<@*)z?(V0BjBj<*??*N)k66znxL1d11<&M%>@onjkf@sg delta 356 zcmey%|CfJ)iAe0#t)glQ&rD{soR)I4x8B^x?%}i1!-m-cn*;*`1EcdUnN`mZGOWD* zuE0viHB(yoXtpxqjW+$cUpI^=HMV_&M?m^zt8n{WfQM z|5?A;5*J@OPusc3=X_h+^F^E=h1VSE%e=qSY2v(P{ffaU7dCP_O8Gdg+wo@}!J(d3_sV`#2HB++%JJ!Bka(Usm zwY8nwG;ZeT)hns0`fBeGDSa4vL4`Ac=mv=j{bS8m>Zcct8!#7ONV6eXG`Up yv@5=!*AnL_w|_$7H21kxnOBY<`E4;}ld)pC{>Be(g=h1E7j-b5W|{nuT?PQXT&2YT diff --git a/test_fixtures/masp_proofs/32D7D6A62781D64DCE2EF422788541CA9141D136D623086EF07F5350415C7C40.bin b/test_fixtures/masp_proofs/68141E47E010974061B96A04DCD1FCD204E388AE7B522EA10F1E568F952DA2A1.bin similarity index 72% rename from test_fixtures/masp_proofs/32D7D6A62781D64DCE2EF422788541CA9141D136D623086EF07F5350415C7C40.bin rename to test_fixtures/masp_proofs/68141E47E010974061B96A04DCD1FCD204E388AE7B522EA10F1E568F952DA2A1.bin index f89ba4a869d29a9db5a8a32af9005052a21a74ec..a867229ff6b4b04c8b4c6f99cf3ce2b0a6737ece 100644 GIT binary patch delta 356 zcmey%|CfJ)iHQE~r?J=8Z9Z0hcVBPH-w>}U)&(0kde|^qV3S~AU|`&G^-uhgIVXZR zL?#sMc`Uyq`B%}eV^WQ?7hiss{?^I<>E=Dms?7B(Py7=PJ<1<#@s-o~W7_Yt&yy;m z3TM_!vwsO)dZ|r8W#dhW;zcD35A2O>3n(}|65A8SdFO=YL#osHVBxa@7d-D~>!J$$q7Ctu(8_L&IL~5jk@*dck%dcrTx++x2*lcd27k zH~+oICn|DsH7%d!@80%*PglWDQ+ZW>%N5+;{+7t-SNVm%mA!kg@aBQ%-%YYMecC2; z;6PWRu*y>3qD|_TR!hvWy16m_kA-;aLbW%W%=o_~NB&3)ZtwWZbd!DZLv|Se-?g+j diff --git a/test_fixtures/masp_proofs/6A12E11EEAA83A0D00BF7470DD0F3AD4FA4AB61D0B965BB9ED02971491A2B7FC.bin b/test_fixtures/masp_proofs/6A12E11EEAA83A0D00BF7470DD0F3AD4FA4AB61D0B965BB9ED02971491A2B7FC.bin deleted file mode 100644 index c98770ccbbf2b4a6d882a90a2c515ee6093d350e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#JF^G8ZVUS6P1idwTMUd*`j52&K;c`)g|Vm&j%3=8AMKW_b9O6{w6M z_UcwqHHBv;vsq3{x!GH9?qm1x0f{rb2AV~bLGoO`p!R|(ux1be(#-Jk!9;PXm$NIU zhMZ+E;c&n9fLAE=>9@QIlb;#iR}wgpQ?!*~C|6YJuGf6Fr#{>|D|*t*YnS+(|LF6}`@>o1XhQZd)#vM+-DIz|yE;?7Z%Pg0F)=Q~^GpZlvR(N0 zbhT_*_tbA7hmV308v;x~pL3}%S6f#4|0O68K*^es*wl$5KQW4}GMlksSNz($rNLg0 z<9?mrns$_HufiJLg~dwoH)2k>GVxtt_MUu^#XWb5me%6M`fHpDx?i_FndefFdh+wC zua@;XvWHWDDCdXwco?#o>nP>_ne@WKmC^E4(Wie&J_e^|Fi)~jdhZfH+vTFu>{qk& zj_f(T;_^e5yXLI(FK^pWJ;CH{Uby}RU6F?QrUp-PD}_7Ge%s`pH|4w5#DB(@pB%a* zUvuaC{MF}#mOj^daYM3pM&WuPIZes#4B?0im08?*EncUdL@~0kgamcl+}K*ZV|M)e zuf|I^+zV-UC=@#4v{~M6G5hnQT2q30G^Lrlzb*9-OA_G`~!Yo`ajUw&|I|8u$E^&doC=KtTF z;BFgqW!96Zh{C6QWo)tkGPP#2~Su)=iJkyg5vuL|!EOt4e*5AB$#+ z&m1xqVtA_A6u_6+^P`i^6PD$+4?Il+)hhJ-np&z{ea&3BXd~}95yzroik5;aYV$& zdoqT%gjqh?_;0y-o4cyFyKW2Dk)5f1@vl988J@V(%yFM}(}OAdTpASoFdc(sU;?k@oM;yE|^Iv+_-;uQB{_JRi{`?cn?d(Obbs9 zagl{KWmZ3ZcI|rbXVoI7Svw~G(>$PiIoa;%ja66q?kdXMe_#Dhpw)KPDK?RP8!U|; zB%e15R%Y|AJEFO&amEpL(*oY3)o%L~O(fa(PL<#|C&l?q|Mvpc3)eO?*vnl>ofDdV zd3xAXO(DaIHpd3vm5+*~v=_cm%E;Q3P-kSQoo=0SUHa^wXDpkxa3wkUevTEmYAAj%lUgMADMVnFW&6QzE*Bcij#NdseA7#En>};iOPgag1%m&r{mw83pIHbm Ok-=3flm{xUKmY(C*WX+K diff --git a/test_fixtures/masp_proofs/CCDB111327E4189EC4C6FE2D429AFB3B6AE2AA3ADCACF75E6520A66B2F7D184C.bin b/test_fixtures/masp_proofs/793C7B6A921FEE9A8B4E277A731FFE3888E789F85E7B31DB3F165A63C37682F9.bin similarity index 73% rename from test_fixtures/masp_proofs/CCDB111327E4189EC4C6FE2D429AFB3B6AE2AA3ADCACF75E6520A66B2F7D184C.bin rename to test_fixtures/masp_proofs/793C7B6A921FEE9A8B4E277A731FFE3888E789F85E7B31DB3F165A63C37682F9.bin index 52d932fb6b550098943af12ed4ef8936114a9330..edf7a378810327fa32284eb7c4f43ca7d4e0cdf8 100644 GIT binary patch delta 1428 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 diff --git a/test_fixtures/masp_proofs/8FA9019476ABDD31BC3597C205553D0206DBD813B523E5124BDAFC020D0CD99E.bin b/test_fixtures/masp_proofs/83386C57F2FF254FF32798C40FB40A078140413A191075993EC58D2DBE0A847B.bin similarity index 72% rename from test_fixtures/masp_proofs/8FA9019476ABDD31BC3597C205553D0206DBD813B523E5124BDAFC020D0CD99E.bin rename to test_fixtures/masp_proofs/83386C57F2FF254FF32798C40FB40A078140413A191075993EC58D2DBE0A847B.bin index e1ad4e3fc4c47025c7ade25eab7325e6db2cb9bc..1a1bf083790577ffc3c38012eee2cfb9301c5563 100644 GIT binary patch delta 356 zcmey%|CfJ)iHQE~r?J=8Z9Z0hcVBPH-w>}U)&(0kde|^qV3S~AU|=kMyN0dgapc@v zN$Wc|&Ypkn-1JM0k)eUJe;?p3DatXqxOoq=Dsz30WKMTr{h}YVh2*800RZ)sP|wAlQqUFODA_6C-Nv%mgVsxH@>e$CZh z?R2B`5#dVq&6=}j>ltZVe)VbYR8to|@37gBeQQy&^Ry+!jUr)eOU0beNUJaC|8{Qg zTD=yhwDYMe>Khd8{!Z=hy7)KrtG*_qPtThLdK295a-=eM9>2|__3`$3sWaM%ua~R3 zyO}+|`J!h+#zMRL^@c|l8b}o!a{hVCBx|2&{p{5y2Oeyjw4Kj{x98G}CwgZW{809C z_b`?zbCsVfb%M$I-TK?>e3j15xS{om`PC_}N6+3k{$kOT4G~RblHr^DkX;4<;u5Wr delta 356 zcmey%|CfJ)iO8PQtNt3g_RWYn8}jSn(TFQz87wiIHUA|4Yzme1zDeq1+vTHhwk z1Q`c@#yz&FQUZE^CNEj|Mb~lH`RV1w=eXNN{TyS$4oqk`UO2l`|N062N2eD}Q&ybS zcj?IX?`D5}>Kii6)DwkdOaeb2+ibCQX-C7-ds{D0$hi4QiZ$ILcGqHC$-k2~>Gtrt z%$m<4a(!j7+K=z{{H1Qr6{VFCc$Hr#D)zak8D>_A<418|Rnw&3l+tnd>+0RA90S6=;jyeWYsh#H+21e>f}x z9a$Qf^1Y-UKX-Eb-*HmXuH2&MJgvU$HG`k+5T28US`p8aW@08$ksC~tN#B`TfBu) zeaGg97g@L&>L)(XPPx!3F#Gb?SW}^y2FE*>J?Q`Smce~`uhRoLjclElYi{(aJp5Af z^vT-mksH-Txjv>z9}ZP`zMq|M7~6 z{9k9TGFx{$uie!3ZG*Pm^{E%G+02>Ib A+yDRo delta 356 zcmey%|CfJ)iAe0#t)glQ&rD{soR)I4x8B^x?%}i1!-m-cn*;*`1LL!;;$KppMedhe zy^5`BnYfj0O(=`Lf8d4}PJg6&cP{JQyoXtpxqiF-hU7nr+V|T(e3P#1W0dTg^!1GB z$y`~g4PCsVz@4Gi=890^Dya>#e>A>Z+xvaG@*SnietW_hc75Ho>-R+K zXKi@}KTCD@{+cMe;Bu}JPve8*FLv0jG5Il&I2142uCvB>-M)=v z{ZvYnJ8-c9P=de7?y2d!zFRr}9DlOE4aOCv3)Ci(uHC7SsS@5_lTr>rL07}KzqG4k z#haTvB&&o)n~ril$3+llGLD=|chB885dzHxn(R-(hQvW$e7ips<4~=fDS~`n{^HRB zFy}HfcaXEx4)g*bmG*ke7GMtk4MR)I3@7uRH;!p+54=GB9Y#Ny;jO~vv*;0|0#QH| z@PDQ-HscY6Fu|>ig~i;Ce9?MDJ%sI{6W109d5+?ya;>Mv!7~bPA<7@?M(ZK>cvExN zMtWHfeor7}?gdEL$UWRN zD59ybd#1y%QUcPu=c`uWGm=&|iaMZj3;GI0SEmd8Skl|76}fex`#2B9587J!Rwu?$ zTz{4OPuL6tt2jYjk-3Ui_`$p2t?)7=T7p0Y4AKky-+#pljcL9t#0}1S^w@sAxdMoL ze#o#~*i#b-vo~3POhjHOEG410lv;T`K~!*RyOa|3P@$@(hG&@7 zc$QA=??G9-P!pBt!N#y*GJehdtO%m&3Fd<627YTbnH$Pjn%6>sWJOFv1s?Ly%YqsE z-DMNd(|?QA&!-kQ3HhhKIUv` z{{?q%#}gc9&`P#a?pseY*~l6SsQHv%my35IGVnSWsF*}t4vg|Dbn8X21G78<8AnY` zmw&1Wjf?-LWd;5Eh7XDp#Td7qq4;h5cv|Js;k_P{b(3LtK=S!tST(T|6?Rur)$n3h zgIKPvuOq0^d7%2_|Ym2|fLCxxMcJK-<}+&_#IVV=?}|>wj9_+i^WDGrDp-3&0Id7`R@<`VM)BlAT(V zI^Rvj4MS$)|4w?mZB*?hf$r%BMBD!y9FswVi|tjn3lq1B{61e@e!o-;wx!k z?gj5`>j@th)51uRofVqsdCL41e47eER6?LFaQ7m delta 1198 zcmV;f1X26>G5Il&I263gs{JuVj+k7{RQln?SkxA11h}zG(G4}c%c}h`MUI$U%~bl~ z#aPr9Xau+cGo9Pxe0j**(tKu>RO1k)OlM+KkrK_C`Fv!Ge2 zBcc82ZQ46@V`~|?$%9**D1_2-$2VFw~#Le}! z0t?fiF2A$X4)g*bFjKPp4$4%C?(>phNJY=VCIIXs>mgF6lsePN3v^z-v*;0|0#P$p zNaaI2W-i7zeUqI<>(Z!^*}JfB8$!d6DJOx0NOtA1u*fomw9oS%^+h#Tla%;@ zVA>(Js8w-&m$4}PhR?qBu;EvYkdB4T4K_k|QwQ&w_ZNedw9eIQb)$=6PEQY7e7Rz2 z6oYojuf23U;vwsd&)DL=k7I4Oh#Y4>#yFZAB~y zj2+2x1h4uZK9?5gHWQa1bG5;*)xUr!2gqmj5WEfq^KI*w`#Jj z)RL~9_<#NVq?Iu^pprdNsUncO8aXA@<+oiRwSOyX(qQ++fn&}??TTw7rbnSE%fpJJl_pd}5ngmc1U59r_aPO1(X%m^?- zcLdw5*Bzn6u!iz*F_V5zTe*Id;0qn#klrHjr+`;*5JwvqIv&ED>|J;+jMb~Q&;l8)^&>BM>pIfVitn9 zFU+Q-fZ&O)ndq4+*klOIf1nueM5rWT^KckQaw6KR5Gh_tZkKpjVTFbH=vpg?)G#nG(~v$Lo@YxK zzb1dT8f3(XO`yds^PC+EOvDL?tJgqs=zkcS_el81(MQ9K4Umf6vBbnSBlMr-vhStC zC~7N)iaJKH=U;%zu;@>S{S@hWHNeUvFb(Cr&S>V2NJq3Tmt!jnGTNHYOsCwHKrEJb zE(&m6kb^8@hi$c5i3BrwPbdE(H4f{Tx-LT-6F)ic^V01HXCM%1$}1zpk{)TsZU|3D&jl#a#&59ws28L;WZE8tW8+~zmI>Pq6DAD7;dc-|}X`x75^%%qz=O7X0^EaR1!bZ0n%M zcQ5a-^|UuPtoIjX`n=G~Exw0GHgc0$o2vWPiB;=(GTqr{ak)?Zn#!H%oc{RGLb%7 delta 356 zcmey%|CfJ)iAe0#t)glQ&rD{soR)I4x8B^x?%}i1!-m-cn*;*`1LFjhDSy{He7dsp zy;fmj(w{{V6MXi?ayp7{vkkSLF*_`A^B!hZ=K7_t!Y$XbJ-xl6Hr}sR(9Af`_vgO3 z$Ey^-UV1-=Be?2f^Ss4xpj>aF;-o#kvmN4BivUFX*F!_(ki=_F*f^+*guCO)rFa5Mbe$BbB z=Ua@wMe~+Tt2bHB$xssfA@aLVeR$aA7A^(hnMLVSe?4lVb&F@ y-gai%Ecf?p408@hDPQBeGM6!^*Z+0canqX8%SLf;U(Px7!LOd_HrM2b>@omS}U)&(0kde|^qV3S~AU|=-WJ^YD@#pMtCyr#K%Kx-r zQ}TSZ{q82|Q|75xFJ$cdG`BVP)s>gCycw)`9nNFXj=bKeWSJZ#lPP1zTeWp^qpn$Lv|Sew*RnO delta 356 zcmey%|CfJ)iO8PQtNt3g_RWYn8}jSn(TFQz87w2V7iN2H7+3!c=nHf_~ zn3OI%Ss>K<^mS`r$L{!|`d0}(Ox17F;z~C@=RTFgvhygX^)rz(W*r^f(@!)Xy>bA-fC!M7OW! diff --git a/test_fixtures/masp_proofs/AC96BF36E1775448D1058D650EED7D14A1C9181B0D631419A25C9CA75656C6CC.bin b/test_fixtures/masp_proofs/AC96BF36E1775448D1058D650EED7D14A1C9181B0D631419A25C9CA75656C6CC.bin index 5be2bb293b867afe92e945df3000cc5b77139187..42883270f3fb20990145d147d15d5db3096940a3 100644 GIT binary patch delta 1245 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 Hlgb)2R4H8x diff --git a/test_fixtures/masp_proofs/B4A1744E64A4098869BF7502144F3F5FC329D52730145D65BF57759BFCAEB2AA.bin b/test_fixtures/masp_proofs/B4A1744E64A4098869BF7502144F3F5FC329D52730145D65BF57759BFCAEB2AA.bin new file mode 100644 index 0000000000000000000000000000000000000000..5bf788f095c16669a72cb188d44b8ad67dd5bd68 GIT binary patch literal 2045 zcmaF;9|9N|7#JF^G8ZVUS6P1idwTMUd*`j52&K;c`)g|Vm&j%3=8AMKW_b9O6{w71 z??yB6BnG48O+r`lyVS2wV_LAb8zj!~8fX?#2FY{%g4zqFz?wk>NHfFB2NT7mUe2zZ z8giDwgv0&X174xfr{D4>Onzp3UrFFZPSI9|jq`r+n$0a=O{|L#{w>c~_%~};Ve4|Q zo&Cpz&P8#ktzF`C{-e(??+<64qY2r=RG+VNc9XrnP>_ne@WKmC^E4(Wie&J_e^|Fi)~jdhZfH+vTFu>{qk& zj_f(T;_^e5yXLI(FK^pWJ;CH{Uby}RU6F?QrUp-PD}_7Ge%s`pH|4w5#DB(@pB%a* zUvuaC{MF}#mOj^daYM3pM&WuPIZes#4B?0im08?*EncUdL@~0kgamcl+}K*ZV|M)e zuf|I^+zV-UC=@#4v{~M6G5hnQT2q30G^Lrlzb*9-OA_G`~!Yo`ajUw&|I|8u$E^&doC=KtTF z;BFgqW!96Zh{C6QWo)tkGPP#2~Su)=iJkyg5vuL|!EOt4e*5AB$#+ z&m1xqVtA_A6u_6+^P`i^6PD$+4?Il+)hhJ-np&z{ea&3BXd~}95yzroik5;aYV$& zdoqT%gjqh?_;0y-o4cyFyKW2Dk)5f1@vl988J@V(%yFM}(}OAdTpASoFdc(sU;?k@oM;QH6^pS@{)?QO>+gqu(%P^?j_r=gwWyw;MIK!{7PKE-bs=I~_Zst*1)THFNt#dM z*7t4twjl7G(VnC39AA%Ga63H-m+G5on8fqD>T*iMszn>_zWm4}dAr_JU#jqpv+LKD zqGzfTzKf{dV_C-aK%v*yl3#S?@`qx4p7(U^C#}4g->Q7naBrtktnmByzSg%k&Ix!H zydgZ};Mf0mdEWhu6PV58eC>3^wYx^Ey|-{ooEdbkNb=+Hx~)z2%O#?hsC>PuveMjD z;LqZZYoedI1$z#an4vf8^9FXip_u!yb15RYR5%use-J@I ze+g9}w61R&*E=U+J-LpL@Ki=Kih#pIV=V+DN$;9$0*%6>ammEK4Vr3LAS^YREb=ld zSTZ4JkMl_N`JxlNm9qg6qym3-%e>RlZ+mshU^@Cc1pXpmxp|=j2o3o{7C|EeUoXqI zn<`AclaXqC`4hdL!z=>=2zcJXQr{xILod`dIOf{b$edomU%L9@L0z_72w970@)F=- zZJD&zV9K`>K)bOI=22Qh8CfNQ$e-*tdq&?iOQKYb0a7pV!6tmrnU}L96qN!|7{70v zeX@giY%+N5O<_TRlKT2^L?rl)HLWF9-`rVTO{_-{+IJz(zQuQSCBA{I4{4%rHX<6V zuSfH*T|;_><@1YoKxKy9Uq^{igde2r0Fe)kI94!}A}^o&nv| zFMZ760i5*cz=+8qx0^q8glAstYxvj`rWSp{mam(m!N0#J0jS<1z&+0BK{tJkhlcxK z;(C>ve>K%WB*COD_yNm|s7GF_R~$R^Rh0>w4C9VBX%@#w`x<6EqLTRL^%^I4lk614OnmRSZs7N@?7x*RK#=qSZ;i-r$r7;Ny_R&9utg6mLVwNvvZw1f#z@5| zen&|cO3uEP4H@um*0s?l095umw%?@{fIi1*==8YcP_%bauI~UBeJezW(=Fs{RE0 zFm3OZCW9}<91e+V=3hI}G|jToj{b|`i_1&8RTYE46~T2eT`aiW=86CP{qn~~1GCj@ z!_}A=L512d8k+;WKDpVM+iXXV^X4K2&TG+(HReJiB^Se ztz|{7Nnawd58ikf!#*yTfN=*y%b2rCTsv%kq_1LWzI09^mjdF=~1<7e;-kd{|U-Ypy2+Yj12dr_2>X|wW Hlgb)2CBSPC delta 1245 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 delta 2474 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 diff --git a/test_fixtures/masp_proofs/CACACE8116D02510B49229AC45F16F9ACB8012B7BE4E96C916DB6C2FAEC0FF81.bin b/test_fixtures/masp_proofs/CACACE8116D02510B49229AC45F16F9ACB8012B7BE4E96C916DB6C2FAEC0FF81.bin index e9457b5eb5db3b67c6a08dfa5fa8f9746b7b6c3d..f326ce2d6701231c9a412d24a2be195ead9fa98c 100644 GIT binary patch delta 1245 zcmV<31S0$XHU2fQUl1Uw`z*+(5rPU4F_UtKm$LwKh5idW=CHR4T8xi<=!(gce-J@I z0KIty{9iLSKky5Hb&75hXC!YqXkN>}i>Ot`{tzck0?I(At=p}wzJBZ2mn?anx;@-z zd2F{XwB-=&o%6bV7_$Kpqym4+D6$$+XP#T=A&3{u+Hc5g!3w5>qBT>cv8_A1zsEU0 zJ+aF5ye=M;roQmfWP{;TXhh(vkGsWMpe&u+s!S@PKi?*1b)Qk@fPA@U*E>*Lt6W&{IFxKWLA5_ceqb6+P6yt2s!=2dy^p>IkXOn9zf9Vqno<_M z;MbPIA;s@e!x!0EU4KN%vhjpk>`43tSnWBf*FIs4=vb0?RJkl8kETS1*{9B6DZ~hl z<=%x$2)Oj1)bZ2zIW`m*3veLxHdA39e-e1pe}oKy7Oq3l6*>YmnUt1Gv9~5do7qjf z@U01tH7raC#2P}mLifJz>bA?0x^pKxd8G@Lfv>kjcJk~kt~hTukvg+A?lTO$=L=B~ z_qdB`QpM=3h`Kf;AX4;p(!^ZCLAsa(+LW?p=&!m?51#=Pur*^1%;$>(MDSn5_TVD{ ze`|j0Sgkz?(ftviLwt*Zn#Suh4>3F9|_M{i{KNLn7;7&fLCLkVK}( zjSMh+{_zcTYzeyC-Ud=6p?jO`uSBbBYgFtW=3CV2@RzHxBx5K1DRyyc_FgJ8eJtLX z=+GcWw3%RV_(~InsK+lXz%is-O^mF}e~@(V2dL!opL3MR1$S!M$IMWi1GqETrGiN3 zLf`lJ{9Jc!bs3s;+)myP?>9T0$4h+q+cOiO-_zQK{h-9JOL1$9IiEtwSQv?eu~6QB z0VdYbC8lhXy6!XSo!*Bu@WVp#snN`*?7H}L!R*|k?f~_BQ8h$Tp{a;d^=UE;e`kSB zWQ~&sxxxU7=VCtu2e0ieGR>Ly{xeY?6ySixOx?e(A{`xVcYYquJPOS2H0jIQJ= z_ed`hkyZ<@IcEF^K>Q6(!i|yXf5@rVls?nRNgjWJ2Eu93#f=6achUv$E~0%Lhs{9`Fl0T42quWifJYbkC) zAM_DfMwh>>ef?S7<+A}1qym2zl)ez&DZqDV5ixw!B}Gld8isDl_G0?8U`!_hAo%%6 z{`~4>j;7C?-Fghggbl><`FwkfFQBo|8HD?V&Vo}P<@8hyrAb}!o;%4AFtZ6S+K|3_ z2^H)~j(<@|tDU-v9pDQG?qHJ29k0FeMDq0B91a(cH}sreC?{X zDt+lsER)bp`6}iT&SPqKG{Sm$?B!`fA0agUFw*d5~R~9gWg{50{E+Dc&i7i zl_qAzF>v2>36)`l2-DY&WqRA(s`VHr}utl za?qZ&qw?0Z7Q!6jx~#`{{Zu0NI0P33MZ^8s#UN)9^zD965sKWkK;H)g2OY-WQdNDJ ze*no=@ZSq?$f#z{ZRJF5#u;~8kT<6FNi#OP#c`(!{LENL@WOpud!7XhficC)>@l9s znGZ?6G@*4nK}RHpQ-pgqtJm8*UMyipUcH|AcUs`UHn$)=Y~k>!S3imdmmSN9DJ<0P z80=Ahv}uSLVnYK6m~_G;>xoS39 zygSG71Ga(o;+aFH%-W@r#mr_vdlF0EcNFY2!aBk7C=E&#i!M?F7;o`^=X%+#e>NPp z!AGKnKHm{d&7;`@2e3C1Pn8_hU#nSqeNhok((jVN9ZUW)*H!Bm1LLdCDAw66&Dypg zkDJN%N|=j+ZX}I958QBwzp|Y8{YevR#bcX#dKxDx@a5vJ!RnrYq=*u&qBjg8&s_Qj zDs>Q1Wsc?uV8D?V3>sf)stbbNe~agwu+9Fy0oA+V9!}nZS>?2O@|l6N1MyT4pf0BP zw&5B|#VVgwc!TG3o)yJWg%aI1q|U~cVeR(gw>XFssp>7N5^mMNA+ylLyLrMkSxv`b zQYP~wz4e}((!I9;%envI1gE~q_2i8ln2}Qh0e}|W!lbD z`&2UDDvD0KE`QYbPwD}gS8r}eZ`fAB;TXl3v-jA(gb%q_o*IQ*W`FYe!Tjpg`rgYP zY^x6cdf>tP`mZM9=k8Wb>YEm-A-1gRS6@JPVQJ#SLtIIMU(4Qp^ZpszruFgVWO_38izs+GmQgqQi?QfEk>o(0>?lL_wGvQqM!W$iIk9Hna&%8D7 zw94HZtO13rlPA8Lw0i~jmbeI(CHB`cC&;{X2$=mLVX5zb2}@h1&AgKzvdaJfmxHRp delta 356 zcmey%|CfJ)iAe0#t)glQ&rD{soR)I4x8B^x?%}i1!-m-cn*;*`17lFop#v@j*?O8j83in;9!tCuBsJDGOC?;e~Su|?2#F=&eU)%}%y+9#n#L5+DK61)1ADNj50=uS)N??&0Q z?`|Hm4z%2;-wCTd&T_aUIna(4VJD>5C6tiQ!&=2x{=R*J&?34&s^fy4lYj|AAUXqg(3?&p zObI??h+)yd+4e>gt!m;}i!u(3e?kKcu(RR`^a3CuEl%%?vTep`MHO$3w?NR4Y-QbxLU5`AWFMi2fYoxLQ~{9?D3P5A zlN%5qf1&4q!~PaGt=~fo%K|~4@G*Iex>oJ^80t$`189EF)af9x-I@NI~bMy2U#A-IkWTjznoRO#bK znXvhC_%sz5{j`Qc`^`8m902H}3DX~XGwuOYp{W|@qQMHZKbCU$diL61_Sgj8vc^#L zdiK!bPK6n+vNI&V{H-^euaBZ(*WiBcV-RAPtq_7wkYXr!C>o_$6(VB%_S|p$!`Tb< ze<=!wPp)Fab-p9By7kihV?Z1lwf}VP_=8@rEn(DiwgroA?HLo96S5*fUm%1^yd

k|NHoWpmbr-I__4Wld#vl9{GC=ENA_@(zy|zPrEe}g+OvhY$i1VhK`p-jQBw5;U zQ;EjbmaA+%{%QH8w*Wmt8)*L_O!8EbbIC!PW*)-$Jp}j~u|Ts$Lh7h4O-}?pe_=VO z<;b!_`Zb)ra=!88GQ-=~Ty^{43(OyK}h?l)Oe2l&3YVKGy?b6N1{ujSV t9wfA}Q#<-*NFlnZ``QP7RI9>EJwGQbb%o5kLu#(q&z9~eTQ8alYj|AAZ=cukhyl4 z*SN)yq8o|>UmFDNLANUgV9QrgWi$dlwzJ|1^a3Et`Z`Eaez%F7kAJmy@NG)(Aj%s_ z3(pPC?hCDX%gXMv_6(!~Q9B8aS8TLbt4a+_akAj2+n*xMS1N!3gZ&$(LNxj#2z~LZm;sRxD3P5A zlN%5qf0MD$JuFZ{`4?>&w2dCY3U6;Kc>PmcN0_RML{X4!u+F*(1xt>UIGHXTSMjQc z*0mz$Fbi&jS1kCF)FZx|8iL<{T?2$puF};-QY@qjFmeh~r|q89zE4T(XmD^4Isk%~ z3()|m#x4dwRBq5YPZ-~=5#8|}J2Y*z%r3y2f0}#%ITa|zH`u#vTltY!JJzEJyoI%jLqBta zE6$XhXBH0mycMO}5$t_?@}xRo-627iJm89QvxqOQc-&GEJ}q_>Nb^GTM~FQY>!)D? z$*_)o(Tf=(%kMoqO#JEpdPWMLoY^Zce`VjVi)MF&2`r|HH*0^;iQ85B9xib4xd4(n zk06B>8DPRPu^Yi!Q{$rU%{ zM6!vs7ggy7ITbp+O4GQ3(0&j6GA5+qO<$7cWl diff --git a/test_fixtures/masp_proofs/C5EF7E4D76C16E75B400531D982A4E4AA763188BD9D5DDAC6E217228B95AD57F.bin b/test_fixtures/masp_proofs/D9BD82C271B78B863BF46CD6BC5D1EA04D7BA046A03D1F152089EB4D53AE0944.bin similarity index 73% rename from test_fixtures/masp_proofs/C5EF7E4D76C16E75B400531D982A4E4AA763188BD9D5DDAC6E217228B95AD57F.bin rename to test_fixtures/masp_proofs/D9BD82C271B78B863BF46CD6BC5D1EA04D7BA046A03D1F152089EB4D53AE0944.bin index bbcbb1afcf4da5deaa55a1c479836edcb33662bd..2c85e8336e1952fd463aa63665dbd07b11987681 100644 GIT binary patch delta 356 zcmey%|CfJ)iHQE~r?J=8Z9Z0hcVBPH-w>}U)&(0kde|^qV3S~AU|_6#JXbnu)xCoT z?u%VEyb>&)(D!i1mp?o=Ed)hc&y?=lym=3^Ds%nR=*ug%SFB1>IMnIguJCY~%*DcI zSJ)h^LgxJJXtngW+9;trq(54vrkx8Fi8~kxydQ<1C;#zXN57oo?`H^%zMVP8pfP5ZSi+I z11{HbaEmyLY_wkN{zG@`hXy`Jsl#?}vb2kr^?w(-xO(G+w(o|o+Lk<6$5mGmCJP53EX5fe5KXj9 zFu1!KCs~RL_^8gF30^q!632W0Qja0_o__xVaV8mY1q^m3b2 zDfCB5toSK1&0Xdwgjk1JeURN0z?!1p^$Qe{lo4fh7nVve1=aiqyjwK5=TfHn#dz~d zD)?Aa%zhU1#SGw;lcf-+Trc7mimT{`+tM!eZ-+2TooJAs`RNb*rwV#t_IiRGy(sU5 ze+>qqZu*C{AM}C))O-}Z%iAA0qFbYEq>IhN3v4GNk+oPv2?lEMBmSJ4PX0~!NGIpB z%lQzz8H>d93d`3ZzBwe<%h1yB!OV}!g#z5;_gVl|Zw7!kTqY>_0>BYo^RXHgwONFf z?%U>4FdtbpyxuF+Djj`eCaOn0ynM}Fe|vg4)2P(LeIC@`QIu-zkcM3qf;cZUy=}gI zOA5Ym)=Gq+Sl#`>i1h7cL-2aj*S26ct(K@MBoyCAn#(9s`pj5+o#lz!$~qvj*UvpNa%0wA^yeUcv93d5ClxG{In z3fIb-6a{kc!&3Z)j8BXcA1$*^45R{4zwnb;8`(1#aTPVt7i(p6-ym!~k(BHNSBBk| z4?ZC+>7yyua2At+X5{5`jX}R`yc@RxJTS((cxm_}_DF%P-e&*?rh#lV$I4WQz!gHAvusR>Bsh-Qxs4W*pn)X-zr4*_(XJSI^fXkogkjUsfI5VNe~(Qwm)_ zNr6N!jto@=N*Lb~so_V}E~SJG4GM|`5lAN&eGP_}YkhloX#%`da4`m%&v{@rHSc zKl_ul!t#@!>9$4}DuJ^**OE`jmdz~;BW0od;+^O~0A>~sB|+^seEMemqZqahh+u7B zUylB|h#@QQaIHe_GmlDs`l(bkcgU#;e>!x49x{8|E-#D&W@F&ng@kVhtyl|QClV=j zDl5Dhs@9M}&;xH&5Om-2GM?zTx8^hTxG;*|1lh1?;B*0-9SG~6q83kjpBYr4Wr~Ny zt}DaU=iz~NnF6>Z^q^uy%YI1I_+|R7LLTrM+ou&oE-B}}f#~%mC6-BXO1H$jf8vtw zUlyenar#caAu~LIJ$xVKWNbc$(2DG;hZTQkZgr103m7Hatwo8^-v|N^>X}Q5fc$)E z7v5<`6w_Z#9qmxPV=ZAVeqXiOJ4T8s<2vq?8HG8xc8N~pOzP}8d>doIvqr`oqxfik zMu&d4W4>iFng{erPWqydv75+rG6z5@UN diff --git a/test_fixtures/masp_proofs/EF7D15FBFB9CC557CC8F9D4D18F7858007C4DA521F8E3BF250A46E9342178EEB.bin b/test_fixtures/masp_proofs/EBB3E1B6028182E722F604429423A915AEFFF08999A4049CB4E87A7E2713FF5E.bin similarity index 74% rename from test_fixtures/masp_proofs/EF7D15FBFB9CC557CC8F9D4D18F7858007C4DA521F8E3BF250A46E9342178EEB.bin rename to test_fixtures/masp_proofs/EBB3E1B6028182E722F604429423A915AEFFF08999A4049CB4E87A7E2713FF5E.bin index eced833b3989e55804b8c7d352d8e0c3ec791206..40167acc518aaa9ce577e9d57fbd6455d535ba54 100644 GIT binary patch delta 1106 zcmV-Y1g-m=ESxNmI27+NDL5uwCTdEGP0>D>T(2Nh`^uWYf}SgTgbqfK6|N$1%*@LtDr+lYI+8L79fRm){T- z5visVCq+3c--8D|&)g{hZ@iO1MWbBjwgSEmH|7|rm)XdAPfYGr+CG#=s!P?uZJUQB zkS5QtDp0fk3-kgYtcp)u*3C(HMPG{|`}km1pES|1K5NHB28nDGJZIYpvl9~#7GLh>6dZ*s`U(mS{}gS;DkIP0KoomaQeYN{d60fy5%oh0Q;io0wLIq zCKS&fecooq|3Ft2xDyal>R#=ZJhNA|GIGwe%ZTIxB( zhuor;IB=H^UM9=>Yi-I5U54OwcTR!(jmPQ0&gS`9sWGCve$mEUjPrbYbARpwqRf?6 zM#zsH60e7hb*G4&{=`NA_rL+nTm&p75p1DWS6P$}*UWhR zZJkV6AR_g|T3?N%YClZbiLkvGy5eND+^MA!K!_AEX8x1?%bSU`71RL6 zr-4fbi7Gsq>mi4s;zS2zr-s!-pW>05O;%4hI}$Zg@1>%a;I5uk;%LU2;yBE#6ZtQ_ zK|SylSAphNpMrHxz+I;!jm9oB>mtiDH$y7v%j~kD-}4+VQYnvZKbLhue9Du|YZkH=g6Rg< zaCht))L1uvX670vF^_7gviONv?vv1uw_m1%&=}kffM2Da>P;|H@;Tt^R?6 zl?y0lPYe;%X`>SaezWO;HBk8O&*rL@YQf%~E{5|4zrvZ*TYrhzPA}qj@VbY|mYKTP zINnhJq;`)^f*FO;PTSxAKP^S-Ute4Y117ZU_}h~8rmI~1F2bCsSw?xee*9u-OoAL3 zW61uY72{4_S_U&GD7nRCxFFMKVB0zT(lYI+8LD?4F#eCpk zvAQGUM$3g(DEt|8bo0M>HKt?17Jtb)MFKb1LEh2N1GP%{Qq-k9C|r=vX}y0sz}~k2 zaf^a>DQ~m?3-kgY+Xsv(GjBvX?C^wEvxHi<;Rb>0gV#^V)lQWLHIqMLNtgM8gJ%TjsBF*gQYE#LG9jKR;U~esQ zgOy3yhbtQV9~}}sF?JtMCx^6CizFs)VYoR6#m)!cHwG}!4S0BM+=T|H9swci^m=Yo zopGUQU9a6-E73O_^jX;?0!=+PmVcU_HJB)ExB)w(6PL4w^rkI@P@+ek@?U7Q3x)>8 zQMwcQ6?)vX?d<5&x*F!l0}TVT$BiS<)-L8HgGv-x2kPU}haToGX8UPg1Y|2JkN`50 zj5p?pQi05q&~qImKzXDOuQzoEK|O_@N^jxgz0K$U7fQ7~o3UFc-Y_-u0Dt-msviwM z`l;PV4+mc?YC#{%d_ACebYZg*<1t7M!Hwln+~+|Z4d1Lx)G9b(Acu&er7$Zwl7+<{ z*LcC$Co!^gd97IjS;PUMurs)rUw9*yghq)4bb>Ek_j&Fqo;)h~saOJ|lcOtp*KbExuo)~s0G(8=RicSw zZ2qGRyyP(-`2I!B=vqLYZ&cg*147$_XN}CgMy(b{S5gX(;VRPz1Ap!`CyN})4s7eK zs^emijlG`x7wwOhGN>Z1EFUDtCn;^Qn>YrC9^z#pV|tnRxXn^P-5rEa>wcpxCUse; z#~B~1^YZI86Jx@Cw_4h+OO9;QK8BzQSUR)sdIA81K$n6-5o^hPLu59RH)1}$tPG#Y z9iW5Ijo2ZCCBvmQoqzs0BN7C(o(K=RSti;-qPW4C;2Y}==<6h2gi>9T!clmi6tq>~ zszos|1>{^!M%7mv;`8*45hr(I4X&&yD>qsDDY6<_Hrk~(Faf83_mIcL%~f(&y`>WD z#UQ?27QKSVmR6nsKVGGkcB9oyj=7iDh<#OQoj7rk4RQUDr+?uLF5v_R`{w4)A8fN( z`yjX!q>)<9q9t3G;e9UoCf%#~h^brNF&m}$)rn3fy;z>8VqgK{D9aDf0$P0N9mJ0$ z`ms8gf_^1;iCdIu?OB!Wl629x*|B)>cnZvX%Q diff --git a/test_fixtures/masp_proofs/59CC89A38C2D211F8765F502B6753FB3BE606A5729D43A6EA8F79007D34F6C60.bin b/test_fixtures/masp_proofs/F8F7A102864F274F0D74641DCB970C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin similarity index 73% rename from test_fixtures/masp_proofs/59CC89A38C2D211F8765F502B6753FB3BE606A5729D43A6EA8F79007D34F6C60.bin rename to test_fixtures/masp_proofs/F8F7A102864F274F0D74641DCB970C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin index 983fb8860de46d718b97dd347b9db6d18fb3e830..b10984eabf1d2069037d80060c8fe598e5b16164 100644 GIT binary patch delta 356 zcmey%|CfJ)iOAlKX5vWyRPT_ zqKM#0UK0hk%{_OOH~G}coI?jPsRuM0mme%#BHc`5OT=KlUEJxS~ich&`( zM*esI75URTz=uUS_f69TiEbNRXEV#`w+asPJ}aBLymYsg>X#%-rw_(I7c=O}9Jf?( zR*N`vHNAXtJu6E{gJaEBcNrOuu>BG80d6h+ECKyFy_39`zpoT{^`OYoeWv14&TYwi zWSm;snzL6PJkNUawIJf9`rCrX=3U57}h^Tq>|~ From 3a878f225dba11c59aecace464bbfd9217e87d52 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Sat, 10 Feb 2024 00:23:48 +0100 Subject: [PATCH 12/15] Changelog #2561 --- .changelog/unreleased/SDK/2561-remove-update-vp.md | 3 +++ .changelog/unreleased/improvements/2561-remove-update-vp.md | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 .changelog/unreleased/SDK/2561-remove-update-vp.md create mode 100644 .changelog/unreleased/improvements/2561-remove-update-vp.md diff --git a/.changelog/unreleased/SDK/2561-remove-update-vp.md b/.changelog/unreleased/SDK/2561-remove-update-vp.md new file mode 100644 index 0000000000..ff78b36dc4 --- /dev/null +++ b/.changelog/unreleased/SDK/2561-remove-update-vp.md @@ -0,0 +1,3 @@ +- `InitAccount` and `UpdateAccount` don't require `vp_code_hash` anymore. + `TxInitAccount`. `TxUpdateAccount` and `TxInitValidator` don't have a path to + the vp code anymore. ([\#2561](https://github.com/anoma/namada/pull/2561)) \ No newline at end of file diff --git a/.changelog/unreleased/improvements/2561-remove-update-vp.md b/.changelog/unreleased/improvements/2561-remove-update-vp.md new file mode 100644 index 0000000000..9dccd33f2d --- /dev/null +++ b/.changelog/unreleased/improvements/2561-remove-update-vp.md @@ -0,0 +1,2 @@ +- Removed custom vps for established accounts. + ([\#2561](https://github.com/anoma/namada/pull/2561)) \ No newline at end of file From 723e09a044c62dd7370f351763ce9afa37b00cf7 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Tue, 13 Feb 2024 17:50:56 +0100 Subject: [PATCH 13/15] Allow vp updates in `vp_user` --- wasm/wasm_source/src/vp_user.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/wasm/wasm_source/src/vp_user.rs b/wasm/wasm_source/src/vp_user.rs index 8bd4d0f014..681c56e71e 100644 --- a/wasm/wasm_source/src/vp_user.rs +++ b/wasm/wasm_source/src/vp_user.rs @@ -134,7 +134,14 @@ fn validate_tx( KeyType::PoS => validate_pos_changes(ctx, &addr, key, &valid_sig)?, KeyType::PgfSteward(address) => address != &addr || *valid_sig, KeyType::GovernanceVote(voter) => voter != &addr || *valid_sig, - KeyType::Vp(owner) => owner != &addr, + KeyType::Vp(owner) => { + let has_post: bool = ctx.has_key_post(key)?; + if owner == &addr { + has_post && *valid_sig + } else { + true + } + } KeyType::Masp | KeyType::Ibc => true, KeyType::Unknown => { // Unknown changes require a valid signature From 497cbe12a5cab8754ca75b98bf968b6ce29be321 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Wed, 14 Feb 2024 15:58:31 +0100 Subject: [PATCH 14/15] Adds vp update check in `vp_user` --- wasm/wasm_source/src/vp_user.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/wasm/wasm_source/src/vp_user.rs b/wasm/wasm_source/src/vp_user.rs index 681c56e71e..71c7493375 100644 --- a/wasm/wasm_source/src/vp_user.rs +++ b/wasm/wasm_source/src/vp_user.rs @@ -337,6 +337,7 @@ mod tests { use namada::tx::{Code, Data, Signature}; use namada::types::dec::Dec; use namada::types::storage::Epoch; + use namada_test_utils::TestWasms; // Use this as `#[test]` annotation to enable logging use namada_tests::log::test; use namada_tests::native_vp::pos::init_pos; @@ -1256,10 +1257,10 @@ mod tests { } } - /// Test that a validity predicate update without a valid signature is + /// Test that a threhsold update without a valid signature is /// rejected. #[test] - fn test_unsigned_vp_update_rejected() { + fn test_unsigned_threshold_update_rejected() { // Initialize a tx environment let mut tx_env = TestTxEnv::default(); @@ -1301,6 +1302,11 @@ mod tests { let keypair = key::testing::keypair_1(); let public_key = keypair.ref_to(); + let vp_code = TestWasms::VpAlwaysTrue.read_bytes(); + let vp_hash = sha256(&vp_code); + // for the update + tx_env.store_wasm_code(vp_code); + // Spawn the accounts to be able to modify their storage tx_env.spawn_accounts([&vp_owner]); tx_env.init_account_storage(&vp_owner, vec![public_key.clone()], 1); @@ -1310,6 +1316,15 @@ mod tests { // Update threshold in a transaction let threshold_key = account::threshold_key(address); tx::ctx().write(&threshold_key, 10).unwrap(); + // Update the vp + tx::ctx() + .write( + &namada::core::types::storage::Key::validity_predicate( + address, + ), + vp_hash, + ) + .unwrap(); }); let pks_map = AccountPublicKeysMap::from_iter(vec![public_key]); From 34309063c0f58a4ee8a1e6c6509ffb8bd440e07f Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Wed, 28 Feb 2024 17:36:19 +0100 Subject: [PATCH 15/15] Fixes merge errors --- crates/tests/src/e2e/setup.rs | 2 +- ...A068C1AF37CB2AB705996B201CD65CE61004687D.bin | Bin 2045 -> 0 bytes ...61F2F6651B52D109E6C2E2663F55CADE9EF18521.bin | Bin 8608 -> 0 bytes ...B2582DAD9FBD3ACA2E0F8314642810FC958594E7.bin | Bin 10105 -> 0 bytes ...80B6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin | Bin 2045 -> 0 bytes ...CAA6B7FFCE09AD5DE24573B3F8478AF29245374E.bin | Bin 2045 -> 0 bytes ...A1F59077CA8F2E0C07061A81B524BD6EAE7983F1.bin | Bin 6910 -> 0 bytes ...82D4D219F002CE532CB04A739F5542A347BBB09A.bin | Bin 2045 -> 0 bytes ...EADB8CE4F984EEA5DE6991947DC46912C5EEEC72.bin | Bin 8392 -> 0 bytes ...FD824E44F16753490CAF5B9CEF0616A91FBFAB3B.bin | Bin 7650 -> 0 bytes ...C7820CC60EF202BF7542AB928ADB4350282290BF.bin | Bin 2045 -> 0 bytes ...DCD1FCD204E388AE7B522EA10F1E568F952DA2A1.bin | Bin 2045 -> 0 bytes ...731FFE3888E789F85E7B31DB3F165A63C37682F9.bin | Bin 7875 -> 0 bytes ...0FB40A078140413A191075993EC58D2DBE0A847B.bin | Bin 2045 -> 0 bytes ...54A7D021076CCAB87F03830E24C283D06AECE910.bin | Bin 2045 -> 0 bytes ...BF96962FF1C92890FDB3429BF37B9158ED0346C0.bin | Bin 6393 -> 0 bytes ...2DF83EF8B643F9895F19662338F7DE491CCC73CD.bin | Bin 2045 -> 0 bytes ...D42A448AE357D90E1F0D4C06CED5C9BBEDAC5665.bin | Bin 2045 -> 0 bytes ...0EED7D14A1C9181B0D631419A25C9CA75656C6CC.bin | Bin 6910 -> 0 bytes ...144F3F5FC329D52730145D65BF57759BFCAEB2AA.bin | Bin 2045 -> 0 bytes ...C3BCDE7BBA8F874A528B460D7DDD1733AD7DFBB0.bin | Bin 6910 -> 0 bytes ...EB8ACD82A32E6D36547D768CE069D04B068F20B0.bin | Bin 6393 -> 0 bytes ...4ADC5356710DE7B6F6FA2B23C19412005669DC2B.bin | Bin 10105 -> 0 bytes ...8EA5B41C7E656BFFA57D93F70CF3EB67CDB6244F.bin | Bin 14387 -> 0 bytes ...45F16F9ACB8012B7BE4E96C916DB6C2FAEC0FF81.bin | Bin 6910 -> 0 bytes ...0B8EEFD1C3C60FDCC030120C7F468CBBDF895407.bin | Bin 2045 -> 0 bytes ...940B2AE72DB2A4D6A9501CC5BF2AC923C6461EDA.bin | Bin 4895 -> 0 bytes ...BC5D1EA04D7BA046A03D1F152089EB4D53AE0944.bin | Bin 2045 -> 0 bytes ...809BC3BBACE79DF98801EB8154EA1904597854A1.bin | Bin 4679 -> 0 bytes ...9423A915AEFFF08999A4049CB4E87A7E2713FF5E.bin | Bin 5660 -> 0 bytes ...CB970C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin | Bin 2045 -> 0 bytes wasm/wasm_source/src/vp_user.rs | 4 +--- 32 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 test_fixtures/masp_proofs/0121F20280B79AE194D0D25EA068C1AF37CB2AB705996B201CD65CE61004687D.bin delete mode 100644 test_fixtures/masp_proofs/0C043F5888F6E0CB7DA3E8EC61F2F6651B52D109E6C2E2663F55CADE9EF18521.bin delete mode 100644 test_fixtures/masp_proofs/11BBC6FA2A8493A11DD5E488B2582DAD9FBD3ACA2E0F8314642810FC958594E7.bin delete mode 100644 test_fixtures/masp_proofs/25BDF17188976E8C1981FED780B6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin delete mode 100644 test_fixtures/masp_proofs/312C09DE79B30B2B747B812ECAA6B7FFCE09AD5DE24573B3F8478AF29245374E.bin delete mode 100644 test_fixtures/masp_proofs/493CCE9EF30CBA192D49EE26A1F59077CA8F2E0C07061A81B524BD6EAE7983F1.bin delete mode 100644 test_fixtures/masp_proofs/4D4328A27DB6F4627236FB5882D4D219F002CE532CB04A739F5542A347BBB09A.bin delete mode 100644 test_fixtures/masp_proofs/5355FAACD2BC8B1D4E226738EADB8CE4F984EEA5DE6991947DC46912C5EEEC72.bin delete mode 100644 test_fixtures/masp_proofs/55DEE92A5704E7472E2DAF64FD824E44F16753490CAF5B9CEF0616A91FBFAB3B.bin delete mode 100644 test_fixtures/masp_proofs/6170C14BA5BCD346C2C0F38CC7820CC60EF202BF7542AB928ADB4350282290BF.bin delete mode 100644 test_fixtures/masp_proofs/68141E47E010974061B96A04DCD1FCD204E388AE7B522EA10F1E568F952DA2A1.bin delete mode 100644 test_fixtures/masp_proofs/793C7B6A921FEE9A8B4E277A731FFE3888E789F85E7B31DB3F165A63C37682F9.bin delete mode 100644 test_fixtures/masp_proofs/83386C57F2FF254FF32798C40FB40A078140413A191075993EC58D2DBE0A847B.bin delete mode 100644 test_fixtures/masp_proofs/8EFB98EB5A0B06E3158E1BDB54A7D021076CCAB87F03830E24C283D06AECE910.bin delete mode 100644 test_fixtures/masp_proofs/A1A4029FC0A83ACB7DC18F86BF96962FF1C92890FDB3429BF37B9158ED0346C0.bin delete mode 100644 test_fixtures/masp_proofs/A6ECAF0E1325C4C57E3EBBDA2DF83EF8B643F9895F19662338F7DE491CCC73CD.bin delete mode 100644 test_fixtures/masp_proofs/AABBD7E7732B5150042B75E5D42A448AE357D90E1F0D4C06CED5C9BBEDAC5665.bin delete mode 100644 test_fixtures/masp_proofs/AC96BF36E1775448D1058D650EED7D14A1C9181B0D631419A25C9CA75656C6CC.bin delete mode 100644 test_fixtures/masp_proofs/B4A1744E64A4098869BF7502144F3F5FC329D52730145D65BF57759BFCAEB2AA.bin delete mode 100644 test_fixtures/masp_proofs/B7F07D43391B6255171E6853C3BCDE7BBA8F874A528B460D7DDD1733AD7DFBB0.bin delete mode 100644 test_fixtures/masp_proofs/BCC59F444DECAF403D363F32EB8ACD82A32E6D36547D768CE069D04B068F20B0.bin delete mode 100644 test_fixtures/masp_proofs/BE09EB8FF98C0CAF7BA8278C4ADC5356710DE7B6F6FA2B23C19412005669DC2B.bin delete mode 100644 test_fixtures/masp_proofs/C66DD87BF05FD14D98FD79FB8EA5B41C7E656BFFA57D93F70CF3EB67CDB6244F.bin delete mode 100644 test_fixtures/masp_proofs/CACACE8116D02510B49229AC45F16F9ACB8012B7BE4E96C916DB6C2FAEC0FF81.bin delete mode 100644 test_fixtures/masp_proofs/CE7FE3BCA1CC162ABC2EBA680B8EEFD1C3C60FDCC030120C7F468CBBDF895407.bin delete mode 100644 test_fixtures/masp_proofs/D3DECDC3DE60967FD481F65B940B2AE72DB2A4D6A9501CC5BF2AC923C6461EDA.bin delete mode 100644 test_fixtures/masp_proofs/D9BD82C271B78B863BF46CD6BC5D1EA04D7BA046A03D1F152089EB4D53AE0944.bin delete mode 100644 test_fixtures/masp_proofs/E1D883F9C9E7FD5C51D39AE1809BC3BBACE79DF98801EB8154EA1904597854A1.bin delete mode 100644 test_fixtures/masp_proofs/EBB3E1B6028182E722F604429423A915AEFFF08999A4049CB4E87A7E2713FF5E.bin delete mode 100644 test_fixtures/masp_proofs/F8F7A102864F274F0D74641DCB970C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin diff --git a/crates/tests/src/e2e/setup.rs b/crates/tests/src/e2e/setup.rs index 1e73e52c3c..c5b3b20b6c 100644 --- a/crates/tests/src/e2e/setup.rs +++ b/crates/tests/src/e2e/setup.rs @@ -1229,7 +1229,7 @@ where #[allow(dead_code)] pub mod constants { // Paths to the WASMs used for tests - pub use namada_sdk::tx::{TX_IBC_WASM, TX_TRANSFER_WASM, VP_USER_WASM}; + pub use namada_sdk::tx::{TX_IBC_WASM, TX_TRANSFER_WASM}; // User addresses aliases pub const ALBERT: &str = "Albert"; diff --git a/test_fixtures/masp_proofs/0121F20280B79AE194D0D25EA068C1AF37CB2AB705996B201CD65CE61004687D.bin b/test_fixtures/masp_proofs/0121F20280B79AE194D0D25EA068C1AF37CB2AB705996B201CD65CE61004687D.bin deleted file mode 100644 index 8f66281d23068bd06d3bfe68ceb121c169f54aeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#J2++&s9pG^Q^5_%@Gtn<^8|HV>BNn!8sE))a;8_f}er_+Em+$P5@&b~G>a&Ma!z$X?FCa{%^(7#nc?MwiQ-Z(XID-Q zIm=+e;ePD_uTbdIZ+R0YKQq3sByb|9Xe-0Uc|Ul~=9aG}*2M?^mS-&do3*R3b-CBh z{$oPtqBzvnF7Y}4(dU=e1ekz6=Tcv;wygC3OHd$yk~Jf-sS`(jVtoF!*SYmw*UQe^SvN#B zTrE5@AvaItUQbtBLa$m_JKM>ogGw2lk60xRw#F_OUng=XJ$h2oF-^|pdz#+#pFR9r zxn4*1aOw}`{O}$RLpF0ArTjmWURby?TAnKU^e@TB;M5G}Nft`)UE*iETy&Z}KPu+P zp3^Hn`rOOeb^ke+RKu#>hxuvtlC?7m*9*yMN_J-mM_j1P;?8UFI`t%qk%c8BsN3eo*6JOzm%tra z2OS^%cpC1=9%z+ib2BhGJ9GETs@rbM*H%u?=j~iOJ?Q=NgLC_z%LT9hAnG#z|Lz2L z+n_76o1VFD%cBH3S6>WlnXG*f)$ zuo+D%oM-BB%>B{?#>|I@b`&jl+q3u_!*-RHt5YUyoge(~SDww)dztem{&?H+>GRRa z2~Q@@@~JzJQgFn>hiCqAam_6zU77dI=kMfaXN^$aZo79weTYK-a-;v*4~sv{`5itv zASFJayEgS=Qa>d=XGp8GGAm+aKkfc^`~kuXl2)dmFIpe8+B;z2|GC zv%D6aH$42$g-DlQZ}ZI7UwPqnS~~L1ZME+Q^wuAl%W~kbv0?3;dFqQJB0k=e zF}x+r^3leB%hlW5RlVJHTeyzwOzn$*?eWX-#Fb`_`>dNDOxfqspx`IBdR0gCL%w^< zmzuAMc&i<>tiQlx*9V2mYeMCIo!FPt&1@y>opuk^j!8GhZegns_olPj)wBXTQxJ zMOXEuSxb&QYM63Vv-+deWU<6P|DFqNyQCj!$(L{=)B*L3b6; zEYRAj((%RnNXhO`Zhu_2G+p8=E9t5HUzomB_MEJ{=h0m*i<$Opy(aCexyRzZw}tQS zon5WXDnI!(dcO(rx_izMmY5rAu2OU8M{4QzB83cLwbiF*`mqH*`SZ5jHu$J&_Ttw( ziq0?31irBBSj9AR24lm)hc&xdx3@W;T6!S1;%S-qdrQ%M3#2}OIyqCQ?!$RWZ;9C! zELSfc4`C7Gc+e@lcL}$IbdYv_f24nHm91xb%iLS@R%`rgKfEN@AXGnR`{ZBxdpIiv zXDz8wd->o(4MaY_C=t0dztiN{Hyo4+re-TC^CRKhGKu^W?Ir*XiF LWN_6A<-phgdV zNb`RFuHH9y=FWKEy!YR8&3tElW6xguyJyX3#ooI4hoJl=sDE9YXV{ni-f#9g-YbtX zvL+Q&n3l%u7GV_0!3ZGtF1^K2UUcXBzD7q0hEsY|+?IG9H?Mk&Fmz@Bb6%+hb$XvV zTVYp42i27!OH{>rND)!b773b~p{}4eZcDI&Z2e{He`4gvqJ9W!99_oX5y!Dg&(<%FwN38V-W$ZImwB-+8s;I1x$kX+u*_3pRi0~xsP&4B6H;8DZmEk?Yzcn%FO05zoQn@hu z5g!l)&`jh^Ou2xtD^p0@?r}}<%9jk<?d>E~DY`&`5oxW}!-;0y3WQQx7 z@;Vw&0f_nq3Ev|Ud|9(lACE#yG00lHV_pNkB{musJaLag4^YBxR2We75JO$sGKrx~z;Tl*%c(Vjhf?_J3Gw!gt+qfd zBa#c5RV0)8#hIk(=(ObwFWleSLFQXn%sG#%j0O$x@m2GLjJ@0*rSh^+OT+Z|TWRz0 z(;^=cQ)ozE$96v^!0CollM-Gp+j)H3B=}KxF610%14|>a7Vjeka(KV+K6x{J3|x(Vmx$>a*%u^QD7plVjib4yhlj zHqqn4a!n=xK4adRW;W+z=i8`8t${1CVEB-+mC`LV z2B1OMqYoi(Yb~PwMl3MXv%72y^`tqG#$0mFl|0v{P#X}n`d}sX=xbk#KlO64U4c9P zoLz^C5%qh@EHF(+dmRW+i195-RmN4Z+}23MaG6+=vr2+)l+9o#5?D6JN5PGNjGfSx zvnKON*jZUiT`}~u)~rH;2?wL+IDi}jGP&XaaEv3L!qsUWpE~!j-X3^|?-rnL$7KCo zKyVn?BC}QI2gD1QoUbjQR*|)nNm%?0ud@>Rs}n94mMnPV`H~J-V1P%Y0A;)x$+?*p zJ@G33D-OK2Cw`RWJuJhM+iO)GeHXxb{ zwkY~gi)1mfp@m*3qI{0XJzX;}%aR9q%lEL869FP4ugQ{!Gn=Y7cyH*(l-Ae>?AM=> z6=7?2rn@#s=ZOR6jyL0#K}FqTpmr9u*~JX|xLS?K46=9pbFbgKWuXB8-_y-UrWj;8 zC3R!Z3Yc-yXPDVNjVfp7Rg=UeIYV#g0AGy$XF~%J5m}as#-Snl`AATh&xfcPc^<^X9xI+IYtpC1o zYviRNO)DmoUa-4681rJaq0o1b>hfol`l0-|Ol|n#5U%Y=O_QN$q@Pi^}lOjuQN`NnHmhzvZhK zH~1+y(x-TEz*t3syWezl8c%j7;qqK{s$$F<0Hv$Ypd6a+A@`IWh$y^XpEi9{{4_^o zSuwzNu}j-d3amAc%q_~^#luvqts1A!Y4IB89F?6nx5A)zHVN^3rU?{O<;t~9-|8p5 z5;If8D_3IdEkEHVttH_KIdm&YUsMIU)*D`3lJ^k2$Q;DXx{3J~`{oVSgVZ%6{Qp#eZ-D1^quwdw-5c`5m$5 z+VOr3{agP&(G$`2cl>Y6DZN#`1~W>>M+SH}6C3VbTzwu$k5qW@85G~Z=YM>xo1y^3jlQylQdz1}lq;y3z7koIBD6!cX9THuSNnZ5s9mAa!pGuBo_j(7iN8*(6HvB#_FqiM#E!_JY^^D9qMJ0;%y+WZYFVUbg{NaVmES|B2 zAwXgLp~>bHhCI7W4KXR+Of59 zDbmoQ?DDD;!yyV0xW#KHvl(KXXjqw5%7%iJiWq*YZMFEj6tDgJKLGd;qAOG-#e!jO z$tA3rujdI*cXx))+n8*^3S#a_O%eaj4qAyHD5ETQvQ0x65wfg8aO&%qH0x79c!NTv zs^G;@#&q&8oc;6g|7{2UFP-|gQT=CK@xONJrus>IFT@Hh3@hPk&;90PpR7s1*ej19 zdl~|NIdX3E$Ep9nx$(dL?+-u2V=G|Ice&a4@#RO|i-P)}CaM3nH)|`JOF?$p>qA94 zC&IBg-q-Tc!DHdE(Gp=4^PJ%gV<7Uw?EgpH(YP`Y0qwdwnBpDb+ zy4Z}hUuaW*_VpeUT_NttI8jbK*ojcHa^gFftsYN+dule{#A;e}$}S6dd@LG96Vs1N zvxxS6yEPEJ>O46}LEgXVr zK|j=Ea6Q}ggkn8>6MFX>$a}jdT3m#EgmFxBsRiMTaozn=gsOcuu`>JUEP#>6wUisf zsvY-b!Mp4LNa5&AYYadYE-JJ+@K5%OJ{dgTzbYzXMXO^JjVA zX-kf+7IrmbY1=6?m2#%A60eYUF!U7P&?iPqtWR_8qf#y5ar&ABchF^M^dqw&uIM=; zjLQ2`m%N$;FOtN^MiAyt_1*4Mokgr^Sds>%?=AG?x!*KX6jGIa65EHQbgNi%MQ_~kDSsYbtP?{m%k9`S82L}iE`nwH-ogc#9C&3<&_)!dE@FK<3#M#p5Fml#a2O#R9X)#FD4XCX6%}Ns9(W& z_%Y*nZoUagNsHtfWBxL{jaC|5>VLQ%o4dNQKxvEZwS*_@vt;D!*vbY@18@jf>^c(< zdIZzrr_f2I0MNzFQ}0KLP&5naDkW0upS8n$_2PZ%K4)^NoVYsAAcnFUzPksdSX*BvQ2glh z2J7z^pIF!O|y8Hu^%yvpz;<7RmLB>kCj$; z6~cN*%`9nKo;QH!O9?RN2*@VuH7_sczg=<_Mu-IXp>KSq7=BjPuNEt+M-6V@&amN2 z%p6;sUy2AH*fE(>SGg=@xi7o#xi@TrOU_NJdWF%MNMyU1uUPnLGR3HHESQ3{6U4eR z3GXSPcNES;D^N<|w{7?$06z0`jNbo|oD7 zS;~sf3s<;@HkGYt-7$XNUfA+5H^Zf=lXwD)h zCxQ4E< zRhQS+oNvDAY&N`}`p$tHHCPcG_hNETHWir@Fh2k4H3B}|rYn}|a8&}eDx<^0KE5-x zAeQ1D+muUYN>%(!w=raHvr6k(kd+dV?f%3$Ni9*OFGwbzrb%Ou5BW($B8cfy$URC; zjDk}qvgD#hWVQ9NKh?_3)_iu-`wwyCnQ`Y0c2#=I(o?u_f%rSl`@sF=GwC(Nj!J!UDOKWRS!dHV{DjU2~snQ=} zjySs|9A!5(4)GjR%*<4Ub6#Ux)LqB;Wul>H8wdfHSZ=CcWgGH=_MKcnk?t6-6SYu>-zTZ}s~)^xx~?r|e26b8xUmTd z>QG~Qvw{URzJl39bP&B?a<4~J6^9pe=Hh72VwwX5VSxZ`nh~86- zvQb;g`{8pZh?_P6(MJ&L%%vO$k~?-;x%&nIm|8}!K`7JQz2_*mpaWs~UFLS)%YoEl zf(dLi#_Ij4NKOaEAjqq4yp~|x$?lE$$NdcD_4eb1GPPI3mtpDMERH_nJ4da>*wco?fY5^t&nSo6@8&R37dy91n?Z`(GWs`nphXJxywnnty- zpc}&;5;w_udk(FP$KbzsTw_2ERyNgk!SY>e}DnG@MWn!5PLhUn6JyMzok?6> z)~B%Hn1Z#|o%4;%KeuOI?PL7IWs=DkL@`z2bu1eJI+dkrAf~5wBvaQClhvN&st&}r zEU8`TSJ&T;PMeU>(KiM;S`}ZH72azCzQ%{Xd^NzQe zO-?xz0yB5CG%8$+<}!DAT-i02X?b0**^?D<-=ad=v7lMt_0Y^at-1p_AxPXV!KCtZ z-IG;OorR(|Dcp{A{_h@Z;P)zW3=%bwQdO{PPhEUGFp3A=7x}Dv%?0IB5Q^$~J{5wO zc)Y~0Zi~7u5k4R`HE>HbVt zL~|Xpk*1Nob#`AU7kQh?$fK)UoP3Vxx@9QzgYhjDg+aPge74noWJx38+OO$} z>cnfG+R<8(coPwWOajxaG^VS#bk|;stW`(#u0w+&PE^zzD{!w{>jMX*PhGgNm`Xk+ z^Wrgc^Itx*`M{sZo+k)OdcbI|T2Igp3FG)M)=P0z_hF71MnGM;4;YI7Bol*7M$P`BtUQ*65yWH z-n;I(Rktb+_r9Ih|Mp9B0b`=?7 zHKzW0HT?|bkkfI1=+VFYfBC}WFT$@(NYcurl^Vu2P9vn_ZCq9jNrT=_ck4dK$4FMjpa3;v_Loei zyW6`Dw2T!S*h^z$_Eyl~XOu~D9^QVR!sca&iPr^;yi%mO%?W;VxK3*==^j-Ngd7!nT z$csyS^|<2A+YFic4y-1&Cg_yyz8607lZ|Q4Mu5C)ucMuwYnpHgjISi!@h{q5Q(;zv za}HGgl~VP}fz_w^yv*9LDNSy9XLOl2sXyCvkLBt;EB*POv#c8$H5in%&ZB#ZUf#k1 zASSNmSx)>sxzwqQZ1k6(Qq2%@xwgtJ6Aru>O3pZh{ofvUs?0y0X;Xn7D15Eo+i)af zno{{U=VGYr1RqNq+Hs$P`TUP_BvNk0q{0PV*f5X)fORR@nESCI{3z&&G^~8g$GT~A z7<*#wY_0!%tytp;8&LZk*7ht|n)3>Scy`>IRQZiy!`hc63;-_x!Sa=*6&oP-!Ahw2 zvjP}&LRtAx@_tP_JNmzj{2NYVXfSNq#G5MF2wnIeJ<%nO~{9D%1s^5pJi@& zAf{ufG|u~y0m@#zP>G+_aOFbkX{8TVD;@~;@w1}koHcsD8p zT(ngJb;v9#c|Vlc0OSXjPA|Xpl@-GW?fN%w_p=?coLMm7htTQas8-eM00AzGwmolc zmV;ggcdC=PeOWe_F{5j{#N9IC)~}H`PBR0nVWY%z)Drn3r$FjB$u|iwnQ{@au&h6x zGaYkTeUB6Z#PaAHLd;QNjeGZAb6Yc!M}B@3Cf>NbaT68}io^)ifDQq_(RNv9M?np+ z@SAu3!*xgSH}A8^ZN-K0M5Fzw%GB)gac3ckmDg>~7^X~XKeTOlfU zEjCawAS%+xbvPlC(A-xy0L#plfr|#Y>Ye8Z9o1MRhEKT0YoOyT5AP)4h`?Ei8z5Q% z^nA2aaY$;J%SPs=PAtm&)Rg&iZNrW;gDd;;t2V$diH9h|2JhZRmlAguBc27lS2KjD ze&prk-0@zcA0aIu)S;oIFIGl{NZ06Ok`i=!!ek!t(uAa#N389!-7(l1ppvBjSxHRV z{@Z-So1c+_D^Up-+^Ukg_+$%rSgoV3tNe^#a%Q7OkWLf=ce?#6h1T1OT8*PY0B1!d)NiLnvFmE#j_2 zggeg5Vf?={`3hujW z=j0`xD`%@8pk#l${-M?%YW<(NoA$P;V-?XpP_ z6E!zLowtf}X6+>e)?VuL=U)%1W4=u}bPb_htiAgAH=5Pt*b zH$!>q%Hw_5Z05zwy*uK92GCuiyFA)#)YQbQJ(|gwAay$Fk_b3N%-4lRC1p9{qXFKk z4~}b6GgxC)ALiw0o;G!0f3na+!>{q@Qe|KJ$}9n>68aJxBIqhET-pjc#U_qIkCe@i z&Mr$3C6sd_GTa3KSYq(g;`?i)BPsioEKAerXZ$d9CbN&7%@M=}_T1#@0Ib(|6*W^C zInM$=&)l`EQ>ONWvQgd&t%QGc)m-LE0 z%3hJ5p6vOKV&wJs@(*>Ij2F1KWZ&vFq^Hi_Mg0TNzoJ;7-k|03YuQsPk<3R3(He?$ z5G{+#FK&KQsg5eT^1=AX^_Slt!u=uKAHw}_ghRemyNU^Z&dRx$e#&?2l6i=?+fd-6 zcluO?X8Og~p8~Kbd#I*1xw($;hAC$c+5tD;WphG=aEyv83P(UK&fo@+$~nk$tJqJN z|E#83xl;>St|xFQTnWWpNWSg6MV1l+O!YHSP}F=*UWmdD!yUc3-51^*xepOfcVxw@ zMZ(=B0vHr_tR+5iMIdmBlZjw8svh~G;AB4gG%>#{|CU8R5(_}K5}K3TP#v^$yq~yd z;EB2?!grRocy)L_$e@qz|DGB^gS4l|Ao1mzm|}F@**p zKpVEi8=bGCW*i9fmRvQ$oeD>lfl%Kz7q=x2dMRiQQtaQ0p@2sqC~X<_j3Lw>03jp#T^xj(5Uhf_(z#wOf%fPfWz4(aknAr(71&R3 zBx-U2EOo$}zZ3kU{xetLw?+ML*?FC75LR4{p(O7W#dxC&%dfuE4`C3w|AuVRyrws1X2I(v51q~vlS5z zZ-Yy!cQH9)Vw?sz4f)yArZqSnyPfNl^8B20=LhJr?d55l`UVIqlV*=c3X=VBTQj|pKSofhyRFL0QVwL0sb)G z{;2qL+^&huzcn0SFwZT_Pw>{xPUj+Y88O0rE62P5hoYU{Zipr-b>P`>OUpu>F+rs{ z))KUj)}zoYYZ#Ld{W-~{5Wi8}4`-|jSAPs+kC8pS8&>z+0pk>(v50oY2bd=KP0?na!;nQco;S(&25!BZ#Dqc257CTU*! z-u-+jw}@7v6VNeOCuFYWIgOf}UY5;I{#L~M-A0r|(Uh`h*$nJYBD%%B3>(^s=kxHh z%$;si%)lMo;LSsKiuBH9IhU5}h>@Hwg@KEFS>496QxiA3?{NB6lbx@8wRH2hDFmB3 zCvh7*Dvc_2dt`a7WLa%fP7So5-Ca@~iX2B{TUW0GaRh0d;Z?r=E!Xw*%>o;s zwY@pzK@gWEE#8I(Z2&n_Sv-6TsDwf;B(MjEyoqZG+{CbU>HA4<_@&&R>!ne7OHR^< zwl_ZjfuxHkQsMVIP8B0r`tKsuf6Df&X@r;+@RdLGNheL>^0G83-G@uMNO5p2vW#u5 z4)_4`>XA%I!#?uqUPezs=luAh%od-Pz(pkSrTyg^om858Qu#c{)^ydRA5Ve3_2B^t zHOy03BW2FzVWP#DJ+5(AB4-ycHthQ$x`HfcfiX7SqLYf(4I8R&hZ0lGLO~l|uTEP& zf^6b@uR@zRiNke>+C!TgqXT@JTx2mR<`LKXhKk&RK>S%E|;?2hWj&^qh|I){~E{l)xa-g#5 z6Fvr8|FAN(i6ruUWkFy)un5@L$&n10^pIvwph+jReP*Fc8grP7=;^0aonqPi7B72J zjtoCt8O!N=phx8DgRajb1`1--I-LN*yMCwuXDt(|WBU5zm-?s*5m+O-jtKRnh@$)Si&*gl#X(&9v7KoB;i<#X6dJx281mM)4doM&E~v2XT) zh>Rs=c(g@Rj?FL&0VDCbLkNybq1QMeUHCfg9SgrPbGyPY{P*m8L*1@h^%PF$t}`Ub z=q$u9HRbGLuZr38zDhFMI_J&66lTh}J#ikn$}BMZiN>7iY@$|(3;mWtPj2t%_uL>T zqnV!AD#p@-br%LNOop_(*~~5UbEzl1UfhyC(aaC2 z{2kx9EBP@&sy;8{wJHm8V3l5hH_?pt6%CK@u?fO9u(fd)0%kG5n$x=5t!O=<55g?n zp0suFhS@JnjXPx`hZf%CLO^k@xBG&KQmIea)_78-q*#0G4)Ub<#u~Wgb5Kr}qh0TV z-LBNf$YMNRbr>W3fR*lPu!a&;3NpJ9JWs2i2Q1K&Q0MKO?j67{;q89eXC#lsYwA?!{kkZkXqgrf=DW3@%n@sZ9?8zeAU$qAV0u zmcHPO5f4NIKQWQf*dRHxy?c~Y77}0D?*c8DaQU*7e`8em31iAlS*0$ld{5aq$ajO= zF5A?0`9Wft^n8b$*|!(zad?5>y>V+?WAn^_I3~Q$Yq9{lG@?sg(K7GV7i2R&u8sHo z#w0=xRD?d1grJAW&nZw95@k=ooom24LCO`+k!fml2E{o650|^t!{m;^kibnZ7WJ30 zrICBD(3fw|c#^;-ppeeUkIizM)uxDTqcxvCAzBox7(8UaAd*w)!rGMY-M5v-9haNf zp#ovgPIEn#6&x{cat%a70fIsNqdmJGPV9rzRxn()gWIya?KBDD4<$I<)D~AbiQ8>2 zcYnw}Jkk{H*ke8eyzMujoO=zmK|hHKC3kp!*j1>fqeV5qWpa+{y7oy?C$ijbldk~Y zv*Rbed3t7cM~XO36npOnT^=C~{%Y@w=%Dzwhd;pm2MxGkBM<(MChNrcg;={ElJ0h( zshIg{tPb7jx~RePTb}5Ijq{e-AIVms&Dk2-o>s2CuF^{k>qBdDmFt;URM|KfJ7guC z#&yg3`J*~(z2I1sox4?_%xARD@Wj5V9rH~O|0d==8Q&E4M6}k>wuQp#_fuXf3#~B% z-n-vl{OsmKAvf!yOo(uI@#+$~7Ck&C)p4Z<=jOYR6Tm_*qP*m5jz|Kzr|hiXPdR)l z>qbw1J?rpdM+nwTPMSE(p1*=u_AP6Mvz&-w$ki!*aIx2XuGMVHDev=-_?z8+Qq4Sq zoHOy{2KT#Jf+)>ek5Dd1hRj|7{?Gz7M0x0v$MyB`zHNsXY+$c-nPZ@0|IS@!I(`Zo&1|j`O&&>C&O_+Fs|5hOW z!~O1!$M2qYGZ#@031l%^bS9}% zXY6Wy50b$j*8+)2soL6o+Qj`QT3PN?LCZ#)X<#ATZ4TtsgIrB`1OguDEW5>4ddCmD zI*`7 z7kotQYCtaC_;3SR!BQO43LokXtHZ`%+dvh3!+uWQ?Lo<5%Z3c&O=);&XvY$9H$#P8`EaPfmb+1zcqUGAl1%qP7cthuI;RQM3% zUBtFsBaRm(`E91MK8Y~MRKHeA(vV@2$Jz|zNpE^u=P|4;QCebIAEHh|T+UOsmXRfi z6zAA>KMGMt$oKd;A5!;HTAW^j;gOWelS0IVnL2cLX2gz zQBQo0(BpfkL0+Fn3&!9EDt*WK{Del_?L;NM0aJp77dE|3MCGxmTMVHac*Pv;^^vmg zc0LwF@Fxmtk$QmSC;5#*|98ggLTI09VN&VL9BUv z*q{lV7sL{zHcVPIZK3oh9c>c9;G7|q<>oXsJZK|pVtdiD_Ep85+prs!n)rhd8*Z~A z=PJC5rOe)_j5v_zjSALlE?jm(*W^h3dUNL#{nl2GhaQ02(53PfHyIl%oJBc>eA%mj*TAB{w?RBAj!2~L=1Y|;`zZ0-zsj473ILBR!k3Lg*qB9lZIC4#Iei9arC zvUQ}&!1>WUJV0n`4)%k%SKcV);FU^L zH9D>#iYC1KDp~I)PX#8y^Z) z>_xt$j2GZ}4S{lQuCEQBxa27cr+R^&Z520)C#juFXxEhIr(V}{n-<1M^*F}a$ym$h zdPRA-Mxsr+0MPsk%G!uY>;xbyXic-!z0!DToM@}*gIc>dBLs;$3zqImeTTgKam?F| z{di&6kZAr9!R!#X%dQn2f<3Alu+vAO#fTC*r^EO%hvKpl)l&PVUj&*E zni1~N$3n`@-pJWIygU{hFs*G#lFrJHp*&r?;x?KDHd;Oi^;9fi&9|L5hSZKYJKX2v z!b>-!7{;Tx6LO{zY0v4oBL!kaRnj+YnbnSliF7QQrs+<>=jY)l|9&s{@3)Zu*nbW7 S|FQpL`_*0l5|qCb+?*dx@ diff --git a/test_fixtures/masp_proofs/25BDF17188976E8C1981FED780B6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin b/test_fixtures/masp_proofs/25BDF17188976E8C1981FED780B6A240DF2C8850CB3EFA5BE60A026B5166BD9D.bin deleted file mode 100644 index 323762261b3a6a30bed2a94238ddf829fcf4856d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#Lc-7u&zA64<=jVCf~#Z=w>W!5+C=duLQs9O!+bJ$)+&NDT<=-DoDB z#9)-XN$5&`m-_W-Obga_gC$-A%_7DisGV>MtQkarZOB~et>$xUk9FV)OS8Wx%43f% zk6)3M63xSzsGzd!>+Eky%Wu4w(A6pJW?D+Di$fz1zKvzsAgj1OXyI4sT$RItp6_%2 z+ zp z!RY~~;Z8&6DLG!Rn9LrSH;2yqsA{!DMlMqNtXrAK?Jm8|2Tzs791{qxIF|Hl%V8^} z?41)`7tX9+pztr-v9y%Gt}kD|Aob5uYi{<4J%$}2T=@s{4y#=dJ)vYPdCqwM|I_zh zXSmCKC~_-!6SBB^2h;Pr%NBf(^$iYM`PXl$q0PjJ*`lrAC#Y0Q+c7_Qa)aU0zD9R> zrOyk*CfWWt{m^Z_w(dor_Zxr5DR}+Zs93b}gwX}Y_NezItG|7{&6ayqxAm>;#uAPE z>+%tX`PWpPmNyCQcCvl`#-8b0jwsinM{@Cr$2YWyG?l*id*n{h3D*V3*u=i94v0A3 zK4Gcem6wxKR_wf^?d2aLsCJ}$*7SXBOc8z7OrK9~xw@h3leF#rLtaxNdwrFEo#WQ$ z6AuaxTc+gIw6NH$zBx}OLa|LxboQEQFR!in6{xm8G*^3K>`M7H?`yUnKCYIw{A1mZ zemYyO1!d7*!{=db;tQp@I5@yTVex%Aydc2i$%Ffm-3wdBa7 zhABrit3O&z7EA2&@43*nOZt&kzHwgM=k1G67QfzI^wvnuqvN-f>cMjvl}j0e7do%? zYGYo;cf;Y4`jx)OvV*_67o820t8h~(k`5r4so<3glrdwCLfzr+>CRg>E>qZLs;I-l zsdm)uESK#{mCro+k>!O7GU-#d8JS&jO)EBrwQWcgcHPJ<&gRv0>4uo9yRE$W^$oAgE6`mBNHgH*v(>Y; zzSK_c%fH%vf9>ZpDKqb`k2YC0>2FYVyz}3-FQ<>>%r$vfGQq9g@xrt>b1sNa3w7P3 z`E9LOaD?rHhYni#L6?r){WZNxePyN5e}(Ky`|efYS=0EXA1-1%<#3uARvN=9ZxA0; HT7dunI$GDV diff --git a/test_fixtures/masp_proofs/312C09DE79B30B2B747B812ECAA6B7FFCE09AD5DE24573B3F8478AF29245374E.bin b/test_fixtures/masp_proofs/312C09DE79B30B2B747B812ECAA6B7FFCE09AD5DE24573B3F8478AF29245374E.bin deleted file mode 100644 index 38d565b7a6aed8269f6224e0f5990ce00d709efa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 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 DfTZ(9 diff --git a/test_fixtures/masp_proofs/4D4328A27DB6F4627236FB5882D4D219F002CE532CB04A739F5542A347BBB09A.bin b/test_fixtures/masp_proofs/4D4328A27DB6F4627236FB5882D4D219F002CE532CB04A739F5542A347BBB09A.bin deleted file mode 100644 index 1c21b2f06b86fb9370e7c7d4a39869fbc2a2a5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#QjulAG4vpE6mypj>itzbseNSxz0L77a9@QIlb;#iR}wgpQ?!*~C|6YJuGf6Fr#{>|D| z*t*YnS+(|LF6}`@>o1XhQZd)#vM+-DIz|yE;?7Z%Pg0F)=Q~^GpZl zvR(N0bhT_*_tbA7hmV308v;x~pL3}%S6f#4|0O68Kxvzi*wl$5KQYcvWi`0)U{2f1 zLJ7|^-nQp2^q`QbethHU0KO8I{#y|8d)v^-Vx>0gqM!KoR{lPr|pyTs3Sx#$$V zZHsdC-qR~|N>cQ9mFho_GS7a+zh_UnC%@z3_=g>ff?~~Aeqs0)>7F;`yVk^i#+RQQ zx+Gt7=llHC=Y*C%*Lrb7vUWz{dLcPY$?go{hzpfj+<7ftr=CPHvao~%b=%z7TD@a- z{QIxQOE=sLX?G|TI^wih-fl7b^P^f-*NWKI6evF0@NL<2Pq#FsnY+I&^$$xD^U-2l zshqfEllg12or^M5CzakP3T;?fG|4OWO|+WJG5t;%$-+2`)moNfH@@X~&)FShlVKFB zki}c~pyQ(-Ps1JA1Ff=bZU!c2XYPJkb=z(E+REwqyq#;O2fbf@aBlx|x#0C5L|x|p z-<{xY8+2vXlcjcLJ+wn6yua#F8|$pmT$98gv7y#YkI%e0OrS(wB>SsMeUTrF zW{S@oHls;}^GrRCxnG*VnECL~j-usmdlsK#*sjuYb;^XT^Mn8W%Cot8FLVCHA8%Ve zeLgxl;mO2VK6M9D3XXXA@XS9huDQjeEAzhj{GI<P#rFZTD`d4^hZpZuCF5hKCaFHmsd9PknJj z#K(IwhPQ-SKHB(ixq6$ss<*pt3)hjIseSRUJ$@OUxYEpVpLNrNDf?U+6#V2?uj+_? z$ain~Qu8$tZ?%J#^%r>T`k-)mO{m+ynXN=zrW;fy^56M%=8I_13hkf11^Zj9 zICog{pA}r1wdBa7hABrit3O&z7EA2&@43*nOZt&kzHwgM=k1G67QfzI^wvnuqvN-f z>cMjvl}j0e7do%?YGYo;cf;Y4`jx)OvV*_67o820t8h~(k`5r4snF||Hs(J^3g=dT z&en_j+d^8P-w_g%yi&26IT>DNMB zOtyx4E{Rc_f5EkL^#_qR%R=P-91WY+d;avg^O8B~`^uLWHR-T_@MT>vfoGpvLc=Db z1qWCYBc{CAx?@?>9ffr>CpK)qCuOlV|IV~KY!esWy|Va5;9c_->$?4=rbJ{eSRl0e z?)ljGm)w@uDjJk_`fXqoYB=!L%rK~Lk@OZVcLlb`$x+AL3?8_Kl^@vjoL}eu{j3X@ z&PB4QPUYLK@}fM+***V{#-3j?Ib0uhEPi4clD;v%^F+Gss;viK*6>}rkkbEnntkqZ QUsGmSkqoX{p&S?+03~SGL;wH) diff --git a/test_fixtures/masp_proofs/5355FAACD2BC8B1D4E226738EADB8CE4F984EEA5DE6991947DC46912C5EEEC72.bin b/test_fixtures/masp_proofs/5355FAACD2BC8B1D4E226738EADB8CE4F984EEA5DE6991947DC46912C5EEEC72.bin deleted file mode 100644 index a26daf24402b714dd85c96bce44de89d3e39361e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8392 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 diff --git a/test_fixtures/masp_proofs/55DEE92A5704E7472E2DAF64FD824E44F16753490CAF5B9CEF0616A91FBFAB3B.bin b/test_fixtures/masp_proofs/55DEE92A5704E7472E2DAF64FD824E44F16753490CAF5B9CEF0616A91FBFAB3B.bin deleted file mode 100644 index a6e8ae8ef1be3cbc36cd539f86ebbefe0b092005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7650 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 diff --git a/test_fixtures/masp_proofs/6170C14BA5BCD346C2C0F38CC7820CC60EF202BF7542AB928ADB4350282290BF.bin b/test_fixtures/masp_proofs/6170C14BA5BCD346C2C0F38CC7820CC60EF202BF7542AB928ADB4350282290BF.bin deleted file mode 100644 index 131f131ae33eaa35271ad651b357db4735d63e84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#JF^G8ZVUS6P1idwTMUd*`j52&K;c`)g|Vm&j%3=8AMKW|(4H4phdl zccYnj5`$6lCZQ|&UFz4TF)diz4H9Q~4K#}=gK|!FKpti zXDZoK^71z)R8?F%`*w|aq~$(_PXUZuLSmoK-~L|UTv$01u`VvidcnByj!E+6ayy=e zi%x|fo?l|xE0))IG-b{8Ye(+e60(P>K40hTCVQ>j)tTyjQ)(EGiE$a8XF52S?ZUUG zt7Xf&r+x!Dd=!k>5MToOoJ)PV+OpFBFF}C-O4f|TrcNCBiSgUtttN}#+4Jl23X`4HL^5l(w>To-_WU=8xr6KDL)+5Uq)eat zVr!!8hbv+!#+Rp5sTQjbAN+JoLqt*k|;Ogs5J5ImT$q&|ME{%cp9)q(%?P2U7$+)1mU}W9|Rm$ELidT`;=D0O;P!B z92Yu1=I*Iheid|kmgNJ!+-4_o2H%u0h*~r!qyIQXPx|YYnBMJwXJ({zAnO|l8gY*Ai);w>soSPZU ze>=h9$Md}N7gDy}`yah7(cd|d=Ss!>6JHPX?N+;A(X&qM*Uu$iW_;l*WA=@?VLJ0p z%<9=*2I2gtCiV#Ys*k+(DDdM8H9oOV|28eW{I_0=lQDEhzvEQXOFx@SZJzSn_I1Bd ze|g&5?@P0m9C_3*<)~)$N2|$ViGBV(7ut47KhnxK&WroJeeucS*Sm|}8p(Nd{FYKZ zcrK%IDP!bG``$dZP6)j4iKF2G(@B-06TABz-W;o5I%n_CgCCqSCNBBs#F6qZa?j*L3;|B7 z`pg%(->thCBq?5&{Z?84pW zZwDPNKgkyw8d$qNIDPfOlUI{jUa0;*wb=Q$z>hSAD;7MxsZzOJAC(e3nHu*@o@05k zsD5VBP5blDqZ6wf44*J?)yHZ2{c)C7(cIL^_bcGt-A@Y{-|D8{k8D^Tv7SkAug(e{ PSdk2_TA>_JX$1lR_wMm& diff --git a/test_fixtures/masp_proofs/68141E47E010974061B96A04DCD1FCD204E388AE7B522EA10F1E568F952DA2A1.bin b/test_fixtures/masp_proofs/68141E47E010974061B96A04DCD1FCD204E388AE7B522EA10F1E568F952DA2A1.bin deleted file mode 100644 index a867229ff6b4b04c8b4c6f99cf3ce2b0a6737ece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#QZ)ugiRSV_w1MTRCg4PJO;NB<+mY#upyChOZ(Ol+XHiFdTZ#4OGUU zfBR|dwRM}1mEYahoANirYl?NjMvyqeYoJ*~8DuB&1!^yt0&4~lAk7RfA50XNdO5pt zYRFjz6At%l4|s(_pMJ}mF!`DBeIY9*-iFZyQ?$R`=-<|9uwm-JkNA+F587~ zPgl#9bx-{Ua`-41u_3?&^f{OMa$t}zf(rCFwSDNmZjK@Z#mv`b_dyH7zHb2 z@zy=)_~^&ea7Xq)t1O$FfyvpKyI)q_c3Zx-a(X^*=i2E(@0TB(+y7iHc>M=am-+v9 zC%D@NU77VHDx&b|suFV#?T`uYue#L6I%_o7Br!;AsCCohGj9$PD3KS*{;E=6-#pf8dtF&C5GGXid;D5jJY_8tRoIml$+m=tC zk4{c_GI5qq-GP*XBOX3H^N)*bZZYY~yl*~#CqFxDgz|RVy&LL76!MoF{m*__{9(@T z@W}xw@d4e{DLZq1_-^8M?mp*>fU3&a+g98DDDTYsVDx&ulT+Q>fL-T1cB||? zUn`yEwdlOz;m6i%47Vyoy8L>ZXSV*z3%AqKk#}yZeLtYL{>WUG1BZdsKe^SbI-(!) z-CMrYd`-k#?Vx4-1s=OTC|q6>D);NezMO7mD-oCJ29=5YcRro@B3AbE-(SAezf!C0 zdtWWB;8>cqYDw@pfzAip3XKK)kO1)z>BBhOeFW5PSLpJ<<^MB|1d;88U<9r*X`M&dKfBVV* z+ZcZ+Z+aGTGuk0&d(ne+8Q;#?} P*kDC6xN3!Rn4vTP>@D>d diff --git a/test_fixtures/masp_proofs/793C7B6A921FEE9A8B4E277A731FFE3888E789F85E7B31DB3F165A63C37682F9.bin b/test_fixtures/masp_proofs/793C7B6A921FEE9A8B4E277A731FFE3888E789F85E7B31DB3F165A63C37682F9.bin deleted file mode 100644 index edf7a378810327fa32284eb7c4f43ca7d4e0cdf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7875 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 T6J_{dMKZW*g>pcp6$k(TN8jRT diff --git a/test_fixtures/masp_proofs/8EFB98EB5A0B06E3158E1BDB54A7D021076CCAB87F03830E24C283D06AECE910.bin b/test_fixtures/masp_proofs/8EFB98EB5A0B06E3158E1BDB54A7D021076CCAB87F03830E24C283D06AECE910.bin deleted file mode 100644 index 115ce85956aeb5879c75aaa8db51539a6d6bdfee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#QjulAG4vpE6mypj>itzbseNSxz0L77aer_+Em+$P5@&b~G>a&M%ue1ekz6=Tcv;wygC3OHd$yk~Jf-sS`(jV!Zi@J=b#{gZZ`QbethHU0KO8I{#y|8d)v^-Vx>0gqM!KoR{lPr|pyTs3Sx#%?e;8%eo zdrq&=DM``aRjU6y$~^lO|DHYRp8SrB;~#b`3W_yf`Gw(IqxJYrCA%|(BQ8{Cap$#ooq7_*$ifm5)NONPYxR!V@$bJH zFWqo2q}`!V=!ny1dAr5z&yQ+VT`OW+Q=s^0!?$JAJ>AljX72vB)ITgq%twoHrE=nu zP3Eu7b}q_Lom6_GD70Z^(Il_fH_>V?$Mid8Bn#s#R%=;`-T0Q{J!f~2O@>jhLKbh` zgN~1WJPmhb546g%xfz(8ow@sE)or)sYb&Sc^LDPC9`t_s!MXj<<$~9L5OtaVe|Lhr zZP1ljPog3UpROt~_s|ZR@cybxZLG6Kb4?P1#D-coJwEg1Fo6&NKBm=6-1cW9Gv{JBpUO?OA+|VY^Dp)hQFU&JX_gE6?WYz0CO&f4pt^^!e!I zgeMbc`P3aqDLCTc!!!T5xaJm1Yy$#rPzGJt_-t)E6 zSze3I8yLZr*Dw|Qpkue@+OEggC1w%Ydtdh3tOWjS!z*sylaJoUv95g+f# z7~T?Q`Do+6X~_ zOU>6rywwg`)?eVU>x07OHKB69PVCF+X0{S>nQl;-$baY4nJ==}xl^TQhAIgEUD++> zU+c3pYsryE4O5P4R)4gbESA{k-*cgDm-Hj8eB->h&)XNDEPlPa=&g~QN5^j|)r03U zDwi?_FLYk()yBMx?}o!8^(%dmWe0zCFFG40SK+2oBppCFQ=!!@n|3NNS%nI;#qK^* zwRz&z*2X^^7J-f|4NUo7QjecIx&3d1!{kwGj1@mlwD;F=b=(xC>fmmeg z8J1Q5f2b|q!l=Gu^TUfQ+zb;RXs29g6_|bbYpkizOoQW{%O3RqdduKGz1Qi1oJO|J z%QZK8RUUpRdHQ7S^~jCtqFf)-qz{KGJl{}q?)$_un`SI=40^Ba%eLOU_!~5ck^|rIZ Miezxr3gy7q0G}ez$p8QV diff --git a/test_fixtures/masp_proofs/A1A4029FC0A83ACB7DC18F86BF96962FF1C92890FDB3429BF37B9158ED0346C0.bin b/test_fixtures/masp_proofs/A1A4029FC0A83ACB7DC18F86BF96962FF1C92890FDB3429BF37B9158ED0346C0.bin deleted file mode 100644 index 31d28dcbfde8ed918ca36bc523c6d3be654db5c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6393 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 diff --git a/test_fixtures/masp_proofs/A6ECAF0E1325C4C57E3EBBDA2DF83EF8B643F9895F19662338F7DE491CCC73CD.bin b/test_fixtures/masp_proofs/A6ECAF0E1325C4C57E3EBBDA2DF83EF8B643F9895F19662338F7DE491CCC73CD.bin deleted file mode 100644 index e6b3415b7baa21b22ea86cf67d17cf675274601c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#J?`iT-AOx#sQjElpdMADQ-TUN|@6;e;s~p#p46wl=#3GBg}pQrFAO zuy>=GcoKtA@+P4x`CaPQr!g&9+YQvt!0;Mq7I6kyMmHAyfm;3lKUgz}0BL5(ThpEZZnD?fU7e}kH>HO0m>8Ggd8UJN z*)Dv0x>~lZd+Ilk!$-l04FM*g&$-l>t1T=2{}L1kprp-6Z0f|3pBR}Q1a3Ke$M)7| zqZyC2K5Cp#^}muU>>ZP~(zZSN{GOBxdSXkpu5Eu)``|Up^DxB_|M&i7N_@M0MYxQ7 z4o>&Y=bWrwC=#5w;eVrBzHVXHW3>RjGS~0H8~@JCWZ+JD89wvhvAJHarXSyN`U~$i zZ;f8wwexoE@XqQocGxHNKz{z5hpT7S^)NIal1=z^TAVP zF~`y_3< z|B%;|$X;LNU+1{>`NV_5!+g+RJNeeg&$n56#t{7`sw_ z&HI||hmWhJE&o{eV|mN1)#sF2Iu$d&MEOMAlCP+=b@q`h^}M`x>#Nh1`>e`1FUib0 zU?gWQA8%h@UUnujk0(BJ(rkHVHm2m8#}`f7%$h%8eqQLG?fGkesMKz1oF%4k-z5TtS1R*c-Yoc*np%;0 zWtqx?{~inOpZl6^9rXC_OX%v9b~7y{*2STb2j9lBY>-u4AGGkR zbgs(bK+pHNe{MgXUB%6kaX!9hfRjHbGWKQVD!b=O$b|1{Dx zBV+dU+jV}+uYRu5k$R=GIa{*eIA4d=z8EKm;|k?bn^f3#Nq<;)$a#a_PSHRA%qs(! zC#x5V1Sf9z-{_XFTiEqjEr74g^?UHfzcVu#xKmz+&-{06uGg#S$9J6m!n@7ebKjcF z!aH}Y*RA-q;#f{%r4YM9ihg^6=lWj>5AWY&H!C^%ds2ks$HTR&I~tuj&2rsRt6Q(f zCp=x+?)Ce;{nLbX4~1)%aeL_8@H~`N5)m){XXY98;+c2fA6RnICPV&EHeWMqyY8Qs zXLTF>+59H`&@bM1Eqwk373TiP2$@w$t8^1T>MnY6{Z~%zyaR5+e7myedM01IsWRcu zJm-)@^Y8Ec;PimgaHpa3lpL>DOlA+vn?vV)RJB?nBNr)s)~(Frc9-7fgQv=3jtK-; z983DO<*=1f_Rfi}3ujg@Q23YaSX#b0huKa^}ht)2Ko=~!t zJZHTB|LOa$Gu-7q6uA|=30YjdgX#I*WedK?`UVHB{Oh;W&}QPqY|+;56I80D?U)}t zxxsL0U!%Lc(&q(YlWc#Se(1JdTlb>R`;EWj6uf?HR4iI~!sr5Hd(``q)!)9}X3IUQ z+xk{^V~Ixob@>Rx{A;RC%bSFDJJ~*eW6$(0N0e*PBf0p*;~QE;no3{%J#we$gzJK1 zY+_$l2SglipRiQ#%FD?qD|X(|_VN!AR69~WYx+Jmrieakrq3t0T-{LiN!oV*A+ITs zy}ru7&T;GWi3f#;EmQJpT3BpW-<&5Cq1dJ;I(yBum)F+(3RGJknyWoAcBTB9_chxO zA6H9T{;}@I@|Ihx&ndNZDrSC(@`<=5Ur}l6>?2$1d3o*DSEnoYS(R~Kl9_eDNX}e7 z-oC!P>`Y`HPkiR2+49V6OvyKoFPgNOHGjhVywE?}^Vj}RseRn3Sv2Wze6*_eCFVH~ zCd)0&T5{x3!<3_%)gP@UizW8?_grY(CH+V%-#9Ps^Y+Cji(l_9dTS)-(eYbK_29XT z%B76K3!T?`wJ|T_yW#Li{YqbC*}-4ki_V70Rk*1XNe2+lRA_a}R;^XnzHVfF-c@$# zcG$ElHdhrVp4t4#h~uqp*7IF*CN*KYn$V_u`5lRVLe;->E_ubAiPnC-I-7TH8Ei^NGj_~f4Yki-xw(dIa zaNGC{@s ze#CB0wIavz2i?Xs-%Q!~ZZEkraakevmmMr#oIk_^gr@Z$)i+veU;OJG@B1ws-&tTq LGPr7ma$tf0dOO_) diff --git a/test_fixtures/masp_proofs/AC96BF36E1775448D1058D650EED7D14A1C9181B0D631419A25C9CA75656C6CC.bin b/test_fixtures/masp_proofs/AC96BF36E1775448D1058D650EED7D14A1C9181B0D631419A25C9CA75656C6CC.bin deleted file mode 100644 index 42883270f3fb20990145d147d15d5db3096940a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6910 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 DJm~(B diff --git a/test_fixtures/masp_proofs/BCC59F444DECAF403D363F32EB8ACD82A32E6D36547D768CE069D04B068F20B0.bin b/test_fixtures/masp_proofs/BCC59F444DECAF403D363F32EB8ACD82A32E6D36547D768CE069D04B068F20B0.bin deleted file mode 100644 index b4ea786fd3338f8077ac969adea4cb50e8e51cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6393 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 diff --git a/test_fixtures/masp_proofs/BE09EB8FF98C0CAF7BA8278C4ADC5356710DE7B6F6FA2B23C19412005669DC2B.bin b/test_fixtures/masp_proofs/BE09EB8FF98C0CAF7BA8278C4ADC5356710DE7B6F6FA2B23C19412005669DC2B.bin deleted file mode 100644 index 34419b5ec7c72b0287d2ee663e224da87d407541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10105 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 E0AODPMgRZ+ diff --git a/test_fixtures/masp_proofs/CE7FE3BCA1CC162ABC2EBA680B8EEFD1C3C60FDCC030120C7F468CBBDF895407.bin b/test_fixtures/masp_proofs/CE7FE3BCA1CC162ABC2EBA680B8EEFD1C3C60FDCC030120C7F468CBBDF895407.bin deleted file mode 100644 index 75fe990f1dcc1403d102747c023a0f3fe042786b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#J2++&s9pG^Q^5_%@Gtn<^8|HV>BNn!8sE))a;8_f}}Xckch$#eaJ+6$(@nn46eGsDXV6UC)o&aRvq za+bk_!~NO=UZK#Z-|{9*er9}MN#I0I(N>0y^M3G}%`IO|tcwr+Ezel^H)~g6>vFH1 z{l|pPMRBODUE*{8qt7qz4`-dD3E9I`pRaRvlfBmN>P+>%DK(78#JCL4Gaa1EcH!I8 z)v{&XQ@?>6J_<%`2rvPC&ZWLwZCUC6m!LoZC2K}vQzwr6#CZIUx=)OWw%EIh2q!5a z-(SoBSEhBb2`%HG-Wy5yIKG|Nbv^f6*+r2mM7V;Mw z)a%F|PW_>rAKv3($Y!pil>cYa3kz39%Tq<4{w4VsoSMNr$wKM9OZ;q?i%zp&&C)xv z=k$t?KKF8V-G9y{)v#*!VgB2Zhg=xCZ}~_IFnX-*Ts0|5*gbE`cdd#4j4wYqbV`6xbs@PPCbcYWMK&j>bAMDwR*?w`1fCp zmu|Qh((X_wbi`@1yxn5<=SQ`wt`)JZDNua0;oGw5o^EMMGk1Sm>K~RQ=A*^9QaN$S zCiB;3I~QfBPAa`o6xy(|Xp&d#n`kwcWBQ#kl7(>=tF+zd?4&fNX7>bBeRwUyKJc{|rm4|>1+;N1S_a>46Ah`P-GzdOO* zHt5Q%Cs7fFPgj+gduWGDcz@NUHr83Axh9E0VneN)9-n!0m_UiVNcLBi`XWCT%@m(G zY(|p`=b3sObH6l!G4tV}9YxFC_AEZfuwA9)>XZpv=Li4$m1lGHUgrFXKi;-{`h0Y9 z!jp-!eCiIQ6ddvJ;hBG2Tyu*_SLS{5`8)a9StFFU+wR>^AEJ=I+~|My!{QHfeuqyE zNQn>Vu1?vR^TX#WUs>mWmUZ_zUj$TD#@@Et_D6YV-Up-C>z$nH-UjSC-?3X|@A+Ek zEU!i94G%xIUSqgbA=2g7+dQ-NS6;ZCmX5r0TkZP+z4b@tvK%;UY*;&Ip8Dd5h>!PV z3~vdue6;c3a`iTMRd09Q7Oo>ZQ~Tmyd;Bsyaiy8#KI^6jQ}($uDEP^(Ueyu(kni5| zrRHlQ-f9Oe>o4%w^+DnCnozl4C-&uZGh2zcOgE@ZcMjv zl}j0e7do%?YGYo;cf;Y4`jx)OvV*_67o820t8h~(k`5r8snF_{?smB;^D-U#kGo ze10&$dbPgyvIpC$!@nMQ@cyfb__@1PllrEGYKSfC`qdZEU09m<@DNv$;McOZ-@Jdu zwrRcm!(!;@WU;j0w5pKfvGvjCZByig&Tn&AkQ80CPy3tX*R^=ChcCqy(KP!Wr_W@%n33t9Rg;5NLcFoU&7LMGcT-2 L23M_64vY-|rjF6l diff --git a/test_fixtures/masp_proofs/D3DECDC3DE60967FD481F65B940B2AE72DB2A4D6A9501CC5BF2AC923C6461EDA.bin b/test_fixtures/masp_proofs/D3DECDC3DE60967FD481F65B940B2AE72DB2A4D6A9501CC5BF2AC923C6461EDA.bin deleted file mode 100644 index 65f3da7ec3b907127047a0cfa5b58a076d5997af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4895 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 Q4^||Dt5zrnR9b-m06ym6Jpcdz diff --git a/test_fixtures/masp_proofs/E1D883F9C9E7FD5C51D39AE1809BC3BBACE79DF98801EB8154EA1904597854A1.bin b/test_fixtures/masp_proofs/E1D883F9C9E7FD5C51D39AE1809BC3BBACE79DF98801EB8154EA1904597854A1.bin deleted file mode 100644 index b3d88a00b24bdd4975298625a875b87a46f6e201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4679 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 J@ZSOJe*lWj)QkWC diff --git a/test_fixtures/masp_proofs/EBB3E1B6028182E722F604429423A915AEFFF08999A4049CB4E87A7E2713FF5E.bin b/test_fixtures/masp_proofs/EBB3E1B6028182E722F604429423A915AEFFF08999A4049CB4E87A7E2713FF5E.bin deleted file mode 100644 index 40167acc518aaa9ce577e9d57fbd6455d535ba54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5660 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 qq$ceY2;V>YzJI^#-yY|$&A$MR+L7J> diff --git a/test_fixtures/masp_proofs/F8F7A102864F274F0D74641DCB970C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin b/test_fixtures/masp_proofs/F8F7A102864F274F0D74641DCB970C88AD7611D8CC9FE33E25AF7BEF4FAA0869.bin deleted file mode 100644 index b10984eabf1d2069037d80060c8fe598e5b16164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2045 zcmaF;9|9N|7#I$nU}N2WY|V;mW$#~x=gHaJkZ?ZD>9b_+7qjYr6X!mxVR-nJ6{w71 z??yB6BnG48O+r`lyVS2wV_LAb8zj!~8fX?#2FY{%g4zqFz?wk>NHfFB2NT7mUe2zZ z8giDwgv0&X174xfr{D4>Onzp3UrFFZPSI9|jq`r+n$0a=O{|L#{w>c~_%~};Ve4|Q zo&Cpz&P8#ktzF`C{-e(??+<64qY2r=RG+VNc9XrVwcpiZk6K-sz_CP)@z!UF>8$6PZ5-6C zzRTC^$R1App`0Jy<6+2VuA`LyXVMD`S4PWIMW6m9`52sAg$*Y?q5pvtP~9 zJF@5Wiiv+1S1ia8zq8!%v()L>{ei-_xLry#S=62|Em3Z9nV0LHH|4w5#DB(@pB%a* zUvuaC{MF}#mOj^daYM3pM&WuPIZes#4B?0im08?*EncUdL@~0kgamcl+}K*ZV|M)e zuf|I^+zV-UC=@#4v{~M6G5hnQT2q30G^Lrlzb*9-OA_G`~!Yo`ajUw&|I|8u$E^&doC=KtTF z;BFgqW!96Zh{C6QWo)tkGPP#2~Su)=iJkyg5vuL|!EOt4e*5AB$#+ z&m1xqVtA_A6u_6+^P`i^6PD$+4?Il+)hhJ-np&z{ea&3BXd~}95yzroik5;aYV$& zdoqT%gjqh?_;0y-o4cyFyKW2Dk)5f1@vl988J@V(%yFM}(}OAdTpASoFdc&lv-)W5z`X^7k1| zVDV`PUYfP!$fJfSM>VTIT1^&9?DOxr(6&qZkygHOUfk#Hi%%B6-d*(8NY10Xu1SS8MN-t!n4H zpT6Or`N0DTy&o;sI?DXI-FayHnW_5tKcy2v$CnnOLuFjeo3-) z`e6KXF@vtmaZ3efwTMGk)5|BbvV=4^)@*f`k>Lp2A0Z#$*5c0+(4W&g$$RqnQ04$i@*8l(j diff --git a/wasm/wasm_source/src/vp_user.rs b/wasm/wasm_source/src/vp_user.rs index 9ac39b9695..cdc2e18698 100644 --- a/wasm/wasm_source/src/vp_user.rs +++ b/wasm/wasm_source/src/vp_user.rs @@ -1319,9 +1319,7 @@ mod tests { // Update the vp tx::ctx() .write( - &namada::core::types::storage::Key::validity_predicate( - address, - ), + &namada::storage::Key::validity_predicate(address), vp_hash, ) .unwrap();