diff --git a/Cargo.lock b/Cargo.lock index b624a6fb021..53290c5a424 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4228,6 +4228,7 @@ version = "0.22.0" dependencies = [ "async-trait", "borsh 1.0.0-alpha.4", + "borsh-ext", "criterion", "ferveo-common", "masp_primitives", diff --git a/apps/src/lib/config/genesis.rs b/apps/src/lib/config/genesis.rs index fa4440f33ad..d081846aad6 100644 --- a/apps/src/lib/config/genesis.rs +++ b/apps/src/lib/config/genesis.rs @@ -3,7 +3,6 @@ use std::collections::{BTreeMap, HashMap}; use borsh::{BorshDeserialize, BorshSerialize}; -use borsh_ext::BorshSerializeExt; use derivative::Derivative; use namada::core::ledger::governance::parameters::GovernanceParameters; use namada::core::ledger::pgf::parameters::PgfParameters; @@ -750,7 +749,7 @@ pub mod genesis_config { } #[derive(Debug, BorshSerialize, BorshDeserialize)] -#[borsh_init(init)] +#[borsh(init=init)] pub struct Genesis { pub genesis_time: DateTimeUtc, pub native_token: Address, @@ -1167,7 +1166,7 @@ pub fn genesis(num_validators: u64) -> Genesis { #[cfg(test)] pub mod tests { - use borsh::BorshSerialize; + use borsh_ext::BorshSerializeExt; use namada::types::address::testing::gen_established_address; use namada::types::key::*; use rand::prelude::ThreadRng; diff --git a/apps/src/lib/node/ledger/shell/init_chain.rs b/apps/src/lib/node/ledger/shell/init_chain.rs index 346104527e9..67710985ad7 100644 --- a/apps/src/lib/node/ledger/shell/init_chain.rs +++ b/apps/src/lib/node/ledger/shell/init_chain.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use std::hash::Hash; +use borsh_ext::BorshSerializeExt; #[cfg(not(feature = "mainnet"))] use namada::core::ledger::testnet_pow; use namada::ledger::eth_bridge::EthBridgeStatus; diff --git a/apps/src/lib/node/ledger/shell/mod.rs b/apps/src/lib/node/ledger/shell/mod.rs index 7a33b487628..4235796359f 100644 --- a/apps/src/lib/node/ledger/shell/mod.rs +++ b/apps/src/lib/node/ledger/shell/mod.rs @@ -26,7 +26,8 @@ use std::path::{Path, PathBuf}; #[allow(unused_imports)] use std::rc::Rc; -use borsh::{BorshDeserialize, BorshSerialize}; +use borsh::BorshDeserialize; +use borsh_ext::BorshSerializeExt; use masp_primitives::transaction::Transaction; use namada::core::ledger::eth_bridge; use namada::ledger::eth_bridge::{EthBridgeQueries, EthereumOracleConfig}; diff --git a/apps/src/lib/node/ledger/shell/prepare_proposal.rs b/apps/src/lib/node/ledger/shell/prepare_proposal.rs index d2a475e525f..207ae3816bd 100644 --- a/apps/src/lib/node/ledger/shell/prepare_proposal.rs +++ b/apps/src/lib/node/ledger/shell/prepare_proposal.rs @@ -507,7 +507,7 @@ mod test_prepare_proposal { #[cfg(feature = "abcipp")] use std::collections::{BTreeSet, HashMap}; - use borsh::BorshSerialize; + use borsh_ext::BorshSerializeExt; use namada::core::ledger::storage_api::collections::lazy_map::{ NestedSubKey, SubKey, }; diff --git a/apps/src/lib/node/ledger/shell/queries.rs b/apps/src/lib/node/ledger/shell/queries.rs index 0cd5ed41f2b..0e8bfc5f559 100644 --- a/apps/src/lib/node/ledger/shell/queries.rs +++ b/apps/src/lib/node/ledger/shell/queries.rs @@ -1,6 +1,6 @@ //! Shell methods for querying state -use borsh::BorshSerialize; +use borsh_ext::BorshSerializeExt; use ferveo_common::TendermintValidator; use namada::ledger::pos::into_tm_voting_power; use namada::ledger::queries::{RequestCtx, ResponseQuery}; diff --git a/apps/src/lib/node/ledger/shell/vote_extensions/bridge_pool_vext.rs b/apps/src/lib/node/ledger/shell/vote_extensions/bridge_pool_vext.rs index 1c7419a4e1d..00f2d8c708e 100644 --- a/apps/src/lib/node/ledger/shell/vote_extensions/bridge_pool_vext.rs +++ b/apps/src/lib/node/ledger/shell/vote_extensions/bridge_pool_vext.rs @@ -270,7 +270,7 @@ where mod test_bp_vote_extensions { #[cfg(feature = "abcipp")] use borsh::BorshDeserialize; - use borsh::BorshSerialize; + use borsh_ext::BorshSerializeExt; #[cfg(not(feature = "abcipp"))] use namada::core::ledger::eth_bridge::storage::bridge_pool::get_key_from_hash; #[cfg(not(feature = "abcipp"))] diff --git a/apps/src/lib/node/ledger/shell/vote_extensions/eth_events.rs b/apps/src/lib/node/ledger/shell/vote_extensions/eth_events.rs index 4c21494ee97..ab3d2154306 100644 --- a/apps/src/lib/node/ledger/shell/vote_extensions/eth_events.rs +++ b/apps/src/lib/node/ledger/shell/vote_extensions/eth_events.rs @@ -448,7 +448,7 @@ mod test_vote_extensions { #[cfg(feature = "abcipp")] use borsh::BorshDeserialize; - use borsh::BorshSerialize; + use borsh_ext::BorshSerializeExt; use namada::core::ledger::storage_api::collections::lazy_map::{ NestedSubKey, SubKey, }; diff --git a/apps/src/lib/node/ledger/storage/rocksdb.rs b/apps/src/lib/node/ledger/storage/rocksdb.rs index 78b95af5d29..1e2d74fbf3e 100644 --- a/apps/src/lib/node/ledger/storage/rocksdb.rs +++ b/apps/src/lib/node/ledger/storage/rocksdb.rs @@ -40,7 +40,8 @@ use std::str::FromStr; use std::sync::Mutex; use ark_serialize::Write; -use borsh::{BorshDeserialize, BorshSerialize}; +use borsh::BorshDeserialize; +use borsh_ext::BorshSerializeExt; use data_encoding::HEXLOWER; use namada::core::types::ethereum_structs; use namada::ledger::storage::types::PrefixIterator; diff --git a/apps/src/lib/node/ledger/tendermint_node.rs b/apps/src/lib/node/ledger/tendermint_node.rs index ddf195f530c..0833f7c3a73 100644 --- a/apps/src/lib/node/ledger/tendermint_node.rs +++ b/apps/src/lib/node/ledger/tendermint_node.rs @@ -3,7 +3,7 @@ use std::path::{Path, PathBuf}; use std::process::Stdio; use std::str::FromStr; -use borsh::BorshSerialize; +use borsh_ext::BorshSerializeExt; use namada::types::chain::ChainId; use namada::types::key::*; use namada::types::storage::BlockHeight; @@ -24,7 +24,6 @@ use crate::facade::tendermint::{block, Genesis}; use crate::facade::tendermint_config::{ Error as TendermintError, TendermintConfig, }; - /// Env. var to output Tendermint log to stdout pub const ENV_VAR_TM_STDOUT: &str = "NAMADA_CMT_STDOUT"; diff --git a/benches/Cargo.toml b/benches/Cargo.toml index 244363f9b72..7aedfdf5f8e 100644 --- a/benches/Cargo.toml +++ b/benches/Cargo.toml @@ -44,6 +44,7 @@ path = "host_env.rs" [dependencies] async-trait.workspace = true borsh.workspace = true +borsh-ext.workspace = true ferveo-common.workspace = true masp_primitives.workspace = true masp_proofs.workspace = true diff --git a/benches/host_env.rs b/benches/host_env.rs index e77f1b3458d..c2bc8475e56 100644 --- a/benches/host_env.rs +++ b/benches/host_env.rs @@ -1,4 +1,4 @@ -use borsh::BorshSerialize; +use borsh_ext::BorshSerializeExt; use criterion::{criterion_group, criterion_main, Criterion}; use namada::core::types::account::AccountPublicKeysMap; use namada::core::types::address; diff --git a/benches/lib.rs b/benches/lib.rs index 3a17427376c..c3538e42237 100644 --- a/benches/lib.rs +++ b/benches/lib.rs @@ -20,6 +20,7 @@ use std::ops::{Deref, DerefMut}; use std::path::PathBuf; use borsh::{BorshDeserialize, BorshSerialize}; +use borsh_ext::BorshSerializeExt; use masp_primitives::transaction::Transaction; use masp_primitives::zip32::ExtendedFullViewingKey; use masp_proofs::prover::LocalTxProver; @@ -545,7 +546,7 @@ impl Clone for WrapperTempDir { #[derive(BorshSerialize, BorshDeserialize, Debug, Clone, Default)] pub struct BenchShieldedUtils { - #[borsh_skip] + #[borsh(skip)] context_dir: WrapperTempDir, } diff --git a/encoding_spec/src/main.rs b/encoding_spec/src/main.rs index cc1082f38be..4365fd4a018 100644 --- a/encoding_spec/src/main.rs +++ b/encoding_spec/src/main.rs @@ -15,17 +15,15 @@ #![deny(rustdoc::broken_intra_doc_links)] #![deny(rustdoc::private_intra_doc_links)] -use std::collections::{BTreeMap, HashMap, HashSet}; +use std::collections::{BTreeMap, HashSet}; use std::io::Write; use std::iter::Extend; -use borsh::{schema, BorshSchema, schema_container_of}; use borsh::schema::{BorshSchemaContainer, Declaration, Definition}; +use borsh::{schema, schema_container_of}; use itertools::Itertools; use lazy_static::lazy_static; use madato::types::TableRow; -use namada::eth_bridge::ethers::core::k256::elliptic_curve::weierstrass::add; -use namada::eth_bridge::ethers::utils::rlp::decode_list; use namada::ledger::parameters::Parameters; use namada::types::address::Address; use namada::types::key::ed25519::{PublicKey, Signature}; @@ -61,11 +59,9 @@ lazy_static! { } fn btree(b: &BorshSchemaContainer) -> BTreeMap { - let mut btree = BTreeMap::new(); - for (dec, def) in b.definitions() { - btree.insert(dec.clone(), def.clone()); - } - btree + b.definitions() + .map(|(x, y)| (x.clone(), y.clone())) + .collect() } fn main() -> Result<(), Box> { @@ -105,7 +101,7 @@ fn main() -> Result<(), Box> { // Merge type definitions - let mut definitions= btree(&address_schema); + let mut definitions = btree(&address_schema); // TODO check for conflicts (same name, different declaration) definitions.extend(btree(&token_amount_schema)); @@ -360,7 +356,11 @@ fn definition_to_table(name: &Declaration, def: schema::Definition) -> Table { } } }; - Table { name: name.to_string(), desc, rows } + Table { + name: name.to_string(), + desc, + rows, + } } /// Format a type to markdown. For internal types, adds anchors. diff --git a/ethereum_bridge/src/parameters.rs b/ethereum_bridge/src/parameters.rs index 7bc0ed42f22..054cfe6e003 100644 --- a/ethereum_bridge/src/parameters.rs +++ b/ethereum_bridge/src/parameters.rs @@ -2,7 +2,6 @@ use std::num::NonZeroU64; use borsh::{BorshDeserialize, BorshSerialize}; -use borsh_ext::BorshSerializeExt; use eyre::{eyre, Result}; use namada_core::ledger::eth_bridge::storage::whitelist; use namada_core::ledger::storage; @@ -379,6 +378,7 @@ where #[cfg(test)] mod tests { + use borsh_ext::BorshSerializeExt; use eyre::Result; use namada_core::ledger::storage::testing::TestWlStorage; use namada_core::types::ethereum_events::EthAddress; diff --git a/ethereum_bridge/src/protocol/transactions/bridge_pool_roots.rs b/ethereum_bridge/src/protocol/transactions/bridge_pool_roots.rs index 3dbc2310c9b..7b475306c60 100644 --- a/ethereum_bridge/src/protocol/transactions/bridge_pool_roots.rs +++ b/ethereum_bridge/src/protocol/transactions/bridge_pool_roots.rs @@ -1,6 +1,5 @@ use std::collections::{HashMap, HashSet}; -use borsh::BorshSerialize; use borsh_ext::BorshSerializeExt; use eyre::Result; use namada_core::ledger::eth_bridge::storage::bridge_pool::get_signed_root_key; @@ -186,7 +185,7 @@ where mod test_apply_bp_roots_to_storage { use std::collections::BTreeSet; - use borsh::{BorshDeserialize, BorshSerialize}; + use borsh::BorshDeserialize; use namada_core::ledger::eth_bridge::storage::bridge_pool::{ get_key_from_hash, get_nonce_key, }; diff --git a/ethereum_bridge/src/protocol/transactions/ethereum_events/events.rs b/ethereum_bridge/src/protocol/transactions/ethereum_events/events.rs index f9b4bdbcbf4..e0a42d9c600 100644 --- a/ethereum_bridge/src/protocol/transactions/ethereum_events/events.rs +++ b/ethereum_bridge/src/protocol/transactions/ethereum_events/events.rs @@ -4,7 +4,6 @@ use std::collections::{BTreeSet, HashSet}; use std::str::FromStr; use borsh::BorshDeserialize; -use borsh_ext::BorshSerializeExt; use eyre::{Result, WrapErr}; use namada_core::hints; use namada_core::ledger::eth_bridge::storage::bridge_pool::{ @@ -613,7 +612,7 @@ mod tests { use std::collections::HashMap; use assert_matches::assert_matches; - use borsh::BorshSerialize; + use borsh_ext::BorshSerializeExt; use eyre::Result; use namada_core::ledger::eth_bridge::storage::bridge_pool::get_pending_key; use namada_core::ledger::parameters::{ diff --git a/ethereum_bridge/src/protocol/transactions/read.rs b/ethereum_bridge/src/protocol/transactions/read.rs index c065d7cba4c..257c045e333 100644 --- a/ethereum_bridge/src/protocol/transactions/read.rs +++ b/ethereum_bridge/src/protocol/transactions/read.rs @@ -1,6 +1,5 @@ //! Helpers for reading from storage use borsh::BorshDeserialize; -use borsh_ext::BorshSerializeExt; use eyre::{eyre, Result}; use namada_core::ledger::storage::traits::StorageHasher; use namada_core::ledger::storage::{DBIter, WlStorage, DB}; @@ -56,7 +55,6 @@ where #[cfg(test)] mod tests { use assert_matches::assert_matches; - use borsh::BorshSerialize; use borsh_ext::BorshSerializeExt; use namada_core::ledger::storage::testing::TestWlStorage; use namada_core::ledger::storage_api::StorageWrite; diff --git a/ethereum_bridge/src/protocol/transactions/update.rs b/ethereum_bridge/src/protocol/transactions/update.rs index 751515d88d0..69530c03153 100644 --- a/ethereum_bridge/src/protocol/transactions/update.rs +++ b/ethereum_bridge/src/protocol/transactions/update.rs @@ -1,6 +1,5 @@ //! Helpers for writing to storage use borsh::{BorshDeserialize, BorshSerialize}; -use borsh_ext::BorshSerializeExt; use eyre::Result; use namada_core::ledger::storage::{DBIter, StorageHasher, WlStorage, DB}; use namada_core::ledger::storage_api::StorageWrite; diff --git a/ethereum_bridge/src/test_utils.rs b/ethereum_bridge/src/test_utils.rs index 7a2e4cb6853..3d31cc77d1a 100644 --- a/ethereum_bridge/src/test_utils.rs +++ b/ethereum_bridge/src/test_utils.rs @@ -3,7 +3,6 @@ use std::collections::HashMap; use std::num::NonZeroU64; -use borsh::BorshSerialize; use borsh_ext::BorshSerializeExt; use namada_core::ledger::eth_bridge::storage::bridge_pool::get_key_from_hash; use namada_core::ledger::eth_bridge::storage::whitelist; diff --git a/ethereum_bridge/src/vp.rs b/ethereum_bridge/src/vp.rs index d10425602d1..ed678ff03b5 100644 --- a/ethereum_bridge/src/vp.rs +++ b/ethereum_bridge/src/vp.rs @@ -1,4 +1,3 @@ - use borsh_ext::BorshSerializeExt; use namada_core::ledger::storage::{self as ledger_storage, StorageHasher}; use namada_core::ledger::storage_api::StorageWrite; diff --git a/shared/src/ledger/eth_bridge/bridge_pool.rs b/shared/src/ledger/eth_bridge/bridge_pool.rs index 4e3f94cff4b..719c9019352 100644 --- a/shared/src/ledger/eth_bridge/bridge_pool.rs +++ b/shared/src/ledger/eth_bridge/bridge_pool.rs @@ -6,7 +6,6 @@ use std::collections::HashMap; use std::io::Write; use std::sync::Arc; -use borsh::BorshSerialize; use borsh_ext::BorshSerializeExt; use ethbridge_bridge_contract::Bridge; use ethers::providers::Middleware; diff --git a/shared/src/ledger/ibc/vp/context.rs b/shared/src/ledger/ibc/vp/context.rs index e8a82c1d2a9..519e1ae2330 100644 --- a/shared/src/ledger/ibc/vp/context.rs +++ b/shared/src/ledger/ibc/vp/context.rs @@ -2,7 +2,6 @@ use std::collections::{BTreeSet, HashMap, HashSet}; -use borsh::BorshSerialize; use borsh_ext::BorshSerializeExt; use namada_core::ledger::ibc::storage::is_ibc_key; use namada_core::ledger::ibc::{IbcCommonContext, IbcStorageContext}; diff --git a/shared/src/ledger/ibc/vp/mod.rs b/shared/src/ledger/ibc/vp/mod.rs index 2b3b93898b1..6774d28db21 100644 --- a/shared/src/ledger/ibc/vp/mod.rs +++ b/shared/src/ledger/ibc/vp/mod.rs @@ -7,7 +7,6 @@ use std::collections::{BTreeSet, HashSet}; use std::rc::Rc; use std::time::Duration; -use borsh_ext::BorshSerializeExt; use context::{PseudoExecutionContext, VpValidationContext}; use namada_core::ledger::ibc::{ Error as ActionError, IbcActions, TransferModule, ValidationParams, @@ -292,7 +291,7 @@ mod tests { use std::convert::TryFrom; use std::str::FromStr; - use borsh::BorshSerialize; + use borsh_ext::BorshSerializeExt; use namada_core::ledger::gas::TxGasMeter; use prost::Message; use sha2::Digest; diff --git a/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs b/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs index 4294f33b158..250bb6e6d07 100644 --- a/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs +++ b/shared/src/ledger/native_vp/ethereum_bridge/bridge_pool_vp.rs @@ -16,7 +16,6 @@ use std::collections::BTreeSet; use std::marker::PhantomData; use borsh::BorshDeserialize; -use borsh_ext::BorshSerializeExt; use eyre::eyre; use namada_core::hints; use namada_core::ledger::eth_bridge::storage::bridge_pool::{ @@ -589,7 +588,8 @@ where mod test_bridge_pool_vp { use std::env::temp_dir; - use borsh::BorshSerialize; + use borsh::BorshDeserialize; + use borsh_ext::BorshSerializeExt; use namada_core::ledger::eth_bridge::storage::bridge_pool::get_signed_root_key; use namada_core::ledger::gas::TxGasMeter; use namada_core::types::address; diff --git a/shared/src/ledger/native_vp/ethereum_bridge/nut.rs b/shared/src/ledger/native_vp/ethereum_bridge/nut.rs index 2a1ea22bdd4..6dbb79d7883 100644 --- a/shared/src/ledger/native_vp/ethereum_bridge/nut.rs +++ b/shared/src/ledger/native_vp/ethereum_bridge/nut.rs @@ -121,6 +121,7 @@ mod test_nuts { use std::env::temp_dir; use assert_matches::assert_matches; + use borsh_ext::BorshSerializeExt; use namada_core::ledger::storage::testing::TestWlStorage; use namada_core::ledger::storage_api::StorageWrite; use namada_core::types::address::testing::arb_non_internal_address; @@ -135,7 +136,6 @@ mod test_nuts { use crate::ledger::gas::{TxGasMeter, VpGasMeter}; use crate::vm::wasm::VpCache; use crate::vm::WasmCacheRwAccess; - use borsh_ext::BorshSerializeExt; /// Run a VP check on a NUT transfer between the two provided addresses. fn check_nut_transfer(src: Address, dst: Address) -> Option { diff --git a/shared/src/ledger/native_vp/ethereum_bridge/vp.rs b/shared/src/ledger/native_vp/ethereum_bridge/vp.rs index b4a7d74715f..4e3b6fc828d 100644 --- a/shared/src/ledger/native_vp/ethereum_bridge/vp.rs +++ b/shared/src/ledger/native_vp/ethereum_bridge/vp.rs @@ -164,6 +164,7 @@ mod tests { use std::default::Default; use std::env::temp_dir; + use borsh_ext::BorshSerializeExt; use namada_core::ledger::eth_bridge; use namada_core::ledger::eth_bridge::storage::bridge_pool::BRIDGE_POOL_ADDRESS; use namada_core::ledger::eth_bridge::storage::wrapped_erc20s; @@ -190,7 +191,6 @@ mod tests { use crate::types::transaction::TxType; use crate::vm::wasm::VpCache; use crate::vm::WasmCacheRwAccess; - use borsh_ext::BorshSerializeExt; const ARBITRARY_OWNER_A_ADDRESS: &str = "atest1d9khqw36x9zyxwfhgfpygv2pgc65gse4gy6rjs34gfzr2v69gy6y23zpggurjv2yx5m52sesu6r4y4"; diff --git a/shared/src/ledger/native_vp/multitoken.rs b/shared/src/ledger/native_vp/multitoken.rs index 43fcc2c99ae..c110484a211 100644 --- a/shared/src/ledger/native_vp/multitoken.rs +++ b/shared/src/ledger/native_vp/multitoken.rs @@ -139,6 +139,7 @@ where mod tests { use std::collections::BTreeSet; + use borsh_ext::BorshSerializeExt; use namada_core::ledger::gas::TxGasMeter; use super::*; @@ -158,7 +159,6 @@ mod tests { }; use crate::types::transaction::TxType; use crate::vm::wasm::compilation_cache::common::testing::cache as wasm_cache; - use borsh_ext::BorshSerializeExt; const ADDRESS: Address = Address::Internal(InternalAddress::Multitoken); diff --git a/shared/src/ledger/protocol/mod.rs b/shared/src/ledger/protocol/mod.rs index fa2bc2eefbe..2033590bde2 100644 --- a/shared/src/ledger/protocol/mod.rs +++ b/shared/src/ledger/protocol/mod.rs @@ -2,7 +2,6 @@ use std::collections::BTreeSet; use std::panic; -use borsh::BorshSerialize; use borsh_ext::BorshSerializeExt; use eyre::{eyre, WrapErr}; use masp_primitives::transaction::Transaction; diff --git a/shared/src/ledger/queries/router.rs b/shared/src/ledger/queries/router.rs index 7f001bb49bf..4ed2ffa1610 100644 --- a/shared/src/ledger/queries/router.rs +++ b/shared/src/ledger/queries/router.rs @@ -6,7 +6,6 @@ //! all the `println!`s in this module. use thiserror::Error; -use borsh_ext::BorshSerializeExt; /// Router error. #[allow(missing_docs)] @@ -836,14 +835,15 @@ macro_rules! router { #[cfg(test)] mod test_rpc_handlers { + use borsh_ext::BorshSerializeExt; + use crate::ledger::queries::{ EncodedResponseQuery, RequestCtx, RequestQuery, ResponseQuery, }; use crate::ledger::storage::{DBIter, StorageHasher, DB}; - use crate::ledger::storage_api::{self, ResultExt}; + use crate::ledger::storage_api; use crate::types::storage::Epoch; use crate::types::token; - use borsh_ext::BorshSerializeExt; /// A little macro to generate boilerplate for RPC handler functions. /// These are implemented to return their name as a String, joined by diff --git a/shared/src/ledger/queries/shell.rs b/shared/src/ledger/queries/shell.rs index a3cf1572e41..ef5a8d73315 100644 --- a/shared/src/ledger/queries/shell.rs +++ b/shared/src/ledger/queries/shell.rs @@ -1,6 +1,6 @@ pub(super) mod eth_bridge; -use borsh::{BorshDeserialize, BorshSerialize}; +use borsh::BorshDeserialize; use borsh_ext::BorshSerializeExt; use masp_primitives::asset_type::AssetType; use masp_primitives::merkle_tree::MerklePath; @@ -574,7 +574,8 @@ where #[cfg(test)] mod test { - use borsh::{BorshDeserialize, BorshSerialize}; + use borsh::BorshDeserialize; + use borsh_ext::BorshSerializeExt; use namada_test_utils::TestWasms; use crate::ledger::queries::testing::TestClient; @@ -586,7 +587,6 @@ mod test { use crate::types::transaction::decrypted::DecryptedTx; use crate::types::transaction::TxType; use crate::types::{address, token}; - use borsh_ext::BorshSerializeExt; #[test] fn test_shell_queries_router_paths() { diff --git a/shared/src/ledger/queries/shell/eth_bridge.rs b/shared/src/ledger/queries/shell/eth_bridge.rs index e0bfd7b25bf..3f2b04df4b4 100644 --- a/shared/src/ledger/queries/shell/eth_bridge.rs +++ b/shared/src/ledger/queries/shell/eth_bridge.rs @@ -648,7 +648,6 @@ mod test_ethbridge_router { use std::collections::BTreeMap; use assert_matches::assert_matches; - use borsh::BorshSerialize; use namada_core::ledger::eth_bridge::storage::bridge_pool::{ get_pending_key, get_signed_root_key, BridgePoolTree, }; diff --git a/shared/src/ledger/wallet/keys.rs b/shared/src/ledger/wallet/keys.rs index edda27a90a6..141de245fb3 100644 --- a/shared/src/ledger/wallet/keys.rs +++ b/shared/src/ledger/wallet/keys.rs @@ -5,6 +5,7 @@ use std::marker::PhantomData; use std::str::FromStr; use borsh::{BorshDeserialize, BorshSerialize}; +use borsh_ext::BorshSerializeExt; use data_encoding::HEXLOWER; use orion::{aead, kdf}; use serde::{Deserialize, Serialize}; @@ -12,7 +13,6 @@ use thiserror::Error; use zeroize::Zeroizing; use crate::ledger::wallet::WalletUtils; -use borsh_ext::BorshSerializeExt; const ENCRYPTED_KEY_PREFIX: &str = "encrypted:"; const UNENCRYPTED_KEY_PREFIX: &str = "unencrypted:"; diff --git a/shared/src/vm/host_env.rs b/shared/src/vm/host_env.rs index 25b1f360fc0..ca4d2274522 100644 --- a/shared/src/vm/host_env.rs +++ b/shared/src/vm/host_env.rs @@ -4,7 +4,8 @@ use std::collections::BTreeSet; use std::convert::TryInto; use std::num::TryFromIntError; -use borsh::{BorshDeserialize, BorshSerialize}; +use borsh::BorshDeserialize; +use borsh_ext::BorshSerializeExt; use namada_core::ledger::gas::{GasMetering, TxGasMeter}; use namada_core::types::internal::KeyVal; use thiserror::Error; @@ -30,7 +31,6 @@ use crate::types::token::{ use crate::vm::memory::VmMemory; use crate::vm::prefix_iter::{PrefixIteratorId, PrefixIterators}; use crate::vm::{HostRef, MutHostRef}; -use borsh_ext::BorshSerializeExt; /// These runtime errors will abort tx WASM execution immediately #[allow(missing_docs)] @@ -999,8 +999,8 @@ where let write_log = unsafe { env.ctx.write_log.get() }; for event in write_log.get_ibc_events() { if event.event_type == event_type { - let value = borsh::to_vec(event) - .map_err(TxRuntimeError::EncodingError)?; + let value = + borsh::to_vec(event).map_err(TxRuntimeError::EncodingError)?; let len: i64 = value .len() .try_into() @@ -1456,8 +1456,7 @@ where let code_hash = Hash::try_from(&code_hash[..]) .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(); + let addr_bytes = addr.serialize_to_vec(); tx_charge_gas(env, gas)?; let gas = env .memory @@ -1620,8 +1619,7 @@ where .map_err(TxRuntimeError::StorageError)?; Ok(match header { Some(h) => { - let value = h - .serialize_to_vec(); + let value = h.serialize_to_vec(); let len: i64 = value .len() .try_into() @@ -1696,8 +1694,7 @@ where vp_host_fns::add_gas(gas_meter, gas)?; Ok(match header { Some(h) => { - let value = h - .serialize_to_vec(); + let value = h.serialize_to_vec(); let len: i64 = value .len() .try_into() diff --git a/shared/src/vm/wasm/memory.rs b/shared/src/vm/wasm/memory.rs index 95c9e232cf6..9b04160556e 100644 --- a/shared/src/vm/wasm/memory.rs +++ b/shared/src/vm/wasm/memory.rs @@ -5,6 +5,7 @@ use std::ptr::NonNull; use std::str::Utf8Error; use std::sync::Arc; +use borsh_ext::BorshSerializeExt; use namada_core::ledger::gas::VM_MEMORY_ACCESS_GAS_PER_BYTE; use thiserror::Error; use wasmer::{ @@ -18,7 +19,6 @@ use wasmer_vm::{ use crate::proto::Tx; use crate::vm::memory::VmMemory; use crate::vm::types::VpInput; -use borsh_ext::BorshSerializeExt; #[allow(missing_docs)] #[derive(Error, Debug)] @@ -86,8 +86,7 @@ pub fn write_tx_inputs( tx_data: &Tx, ) -> Result { let tx_data_ptr = 0; - let tx_data_bytes = - tx_data.serialize_to_vec(); + let tx_data_bytes = tx_data.serialize_to_vec(); let tx_data_len = tx_data_bytes.len() as _; write_memory_bytes(memory, tx_data_ptr, tx_data_bytes)?; @@ -137,13 +136,11 @@ pub fn write_vp_inputs( let data_ptr = addr_ptr + addr_len; let data_len = data_bytes.len() as _; - let keys_changed_bytes = keys_changed - .serialize_to_vec(); + let keys_changed_bytes = keys_changed.serialize_to_vec(); let keys_changed_ptr = data_ptr + data_len; let keys_changed_len = keys_changed_bytes.len() as _; - let verifiers_bytes = - verifiers.serialize_to_vec(); + let verifiers_bytes = verifiers.serialize_to_vec(); let verifiers_ptr = keys_changed_ptr + keys_changed_len; let verifiers_len = verifiers_bytes.len() as _; diff --git a/shared/src/vm/wasm/run.rs b/shared/src/vm/wasm/run.rs index da82904154f..7ebb3a63850 100644 --- a/shared/src/vm/wasm/run.rs +++ b/shared/src/vm/wasm/run.rs @@ -30,7 +30,6 @@ use crate::vm::wasm::{memory, Cache, CacheName, VpCache}; use crate::vm::{ validate_untrusted_wasm, WasmCacheAccess, WasmValidationError, }; -use borsh_ext::BorshSerializeExt; const TX_ENTRYPOINT: &str = "_apply_tx"; const VP_ENTRYPOINT: &str = "_validate_tx"; @@ -570,7 +569,7 @@ fn get_gas_rules() -> wasm_instrument::gas_metering::ConstantCostRules { #[cfg(test)] mod tests { - use borsh::BorshSerialize; + use borsh_ext::BorshSerializeExt; use itertools::Either; use namada_test_utils::TestWasms; use test_log::test; diff --git a/tests/src/e2e/ledger_tests.rs b/tests/src/e2e/ledger_tests.rs index 9a1e23c5275..e011049e103 100644 --- a/tests/src/e2e/ledger_tests.rs +++ b/tests/src/e2e/ledger_tests.rs @@ -16,7 +16,7 @@ use std::str::FromStr; use std::sync::Arc; use std::time::{Duration, Instant}; -use borsh::BorshSerialize; +use borsh_ext::BorshSerializeExt; use color_eyre::eyre::Result; use data_encoding::HEXLOWER; use namada::types::address::Address; diff --git a/tests/src/native_vp/eth_bridge_pool.rs b/tests/src/native_vp/eth_bridge_pool.rs index 47ffdaaecfe..bdca72323a7 100644 --- a/tests/src/native_vp/eth_bridge_pool.rs +++ b/tests/src/native_vp/eth_bridge_pool.rs @@ -2,7 +2,8 @@ mod test_bridge_pool_vp { use std::path::PathBuf; - use borsh::{BorshDeserialize, BorshSerialize}; + use borsh::BorshDeserialize; + use borsh_ext::BorshSerializeExt; use namada::core::ledger::eth_bridge::storage::bridge_pool::BRIDGE_POOL_ADDRESS; use namada::ledger::eth_bridge::{ wrapped_erc20s, Contracts, Erc20WhitelistEntry, EthereumBridgeConfig, diff --git a/tests/src/vm_host_env/ibc.rs b/tests/src/vm_host_env/ibc.rs index db890b00ec1..6e6dd09472e 100644 --- a/tests/src/vm_host_env/ibc.rs +++ b/tests/src/vm_host_env/ibc.rs @@ -85,7 +85,6 @@ use namada::types::token::{self, Amount, DenominatedAmount}; use namada::vm::{wasm, WasmCacheRwAccess}; use namada_core::ledger::gas::TxGasMeter; use namada_test_utils::TestWasms; -use namada_tx_prelude::BorshSerialize; use namada_tx_prelude::borsh_ext::BorshSerializeExt; use crate::tx::*; diff --git a/tests/src/vm_host_env/mod.rs b/tests/src/vm_host_env/mod.rs index 4d3610efec4..76f8b694a10 100644 --- a/tests/src/vm_host_env/mod.rs +++ b/tests/src/vm_host_env/mod.rs @@ -21,6 +21,7 @@ mod tests { use std::collections::BTreeSet; use std::panic; + use borsh_ext::BorshSerializeExt; use itertools::Itertools; use namada::ibc::core::Msg; use namada::ledger::ibc::storage as ibc_storage; @@ -41,9 +42,7 @@ mod tests { use namada_test_utils::TestWasms; use namada_tx_prelude::address::InternalAddress; use namada_tx_prelude::chain::ChainId; - use namada_tx_prelude::{ - Address, BorshSerialize, StorageRead, StorageWrite, - }; + use namada_tx_prelude::{Address, StorageRead, StorageWrite}; use namada_vp_prelude::account::AccountPublicKeysMap; use namada_vp_prelude::VpEnv; use prost::Message; diff --git a/tests/src/vm_host_env/tx.rs b/tests/src/vm_host_env/tx.rs index b6adad186bd..6bf46c96c18 100644 --- a/tests/src/vm_host_env/tx.rs +++ b/tests/src/vm_host_env/tx.rs @@ -18,12 +18,12 @@ use namada::vm::prefix_iter::PrefixIterators; use namada::vm::wasm::run::Error; use namada::vm::wasm::{self, TxCache, VpCache}; use namada::vm::{self, WasmCacheRwAccess}; -use namada_tx_prelude::{storage_api, BorshSerialize, Ctx}; +use namada_tx_prelude::borsh_ext::BorshSerializeExt; +use namada_tx_prelude::{storage_api, Ctx}; use namada_vp_prelude::key::common; use tempfile::TempDir; use crate::vp::TestVpEnv; -use namada_tx_prelude::borsh_ext::BorshSerializeExt; /// Tx execution context provides access to host env functions static mut CTX: Ctx = unsafe { Ctx::new() }; diff --git a/vp_prelude/src/lib.rs b/vp_prelude/src/lib.rs index 2278da8ac9a..2d7b71451a8 100644 --- a/vp_prelude/src/lib.rs +++ b/vp_prelude/src/lib.rs @@ -14,6 +14,7 @@ use std::convert::TryFrom; use std::marker::PhantomData; pub use borsh::{BorshDeserialize, BorshSerialize}; +pub use borsh_ext; use borsh_ext::BorshSerializeExt; pub use namada_core::ledger::governance::storage as gov_storage; pub use namada_core::ledger::pgf::storage as pgf_storage; diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 4edaef87c47..89a94656bfb 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -37,18 +37,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "aes" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" -dependencies = [ - "cfg-if 1.0.0", - "cipher 0.3.0", - "cpufeatures", - "opaque-debug 0.3.0", -] - [[package]] name = "aes" version = "0.8.3" @@ -377,15 +365,15 @@ checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" [[package]] name = "bellman" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4dd656ef4fdf7debb6d87d4dd92642fcbcdb78cbf6600c13e25c87e4d1a3807" +checksum = "9afceed28bac7f9f5a508bca8aeeff51cdfa4770c0b967ac55c621e2ddfd6171" dependencies = [ "bitvec 1.0.1", "blake2s_simd", "byteorder", - "ff 0.12.1", - "group 0.12.1", + "ff", + "group", "pairing", "rand_core 0.6.4", "subtle 2.4.1", @@ -411,14 +399,14 @@ dependencies = [ [[package]] name = "bip0039" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0830ae4cc96b0617cc912970c2b17e89456fecbf55e8eed53a956f37ab50c41" +checksum = "bef0f0152ec5cf17f49a5866afaa3439816207fd4f0a224c0211ffaf5e278426" dependencies = [ - "hmac 0.11.0", - "pbkdf2 0.9.0", + "hmac 0.12.1", + "pbkdf2 0.10.1", "rand 0.8.5", - "sha2 0.9.9", + "sha2 0.10.6", "unicode-normalization", "zeroize", ] @@ -517,7 +505,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5", + "block-padding", "byte-tools", "byteorder", "generic-array 0.12.4", @@ -541,16 +529,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "block-modes" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e" -dependencies = [ - "block-padding 0.2.1", - "cipher 0.3.0", -] - [[package]] name = "block-padding" version = "0.1.5" @@ -560,20 +538,14 @@ dependencies = [ "byte-tools", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "bls12_381" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +checksum = "d7bc6d6292be3a19e6379786dac800f551e5865a5bb51ebbe3064ab80433f403" dependencies = [ - "ff 0.12.1", - "group 0.12.1", + "ff", + "group", "pairing", "rand_core 0.6.4", "subtle 2.4.1", @@ -581,10 +553,11 @@ dependencies = [ [[package]] name = "borsh" -version = "0.9.4" -source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" dependencies = [ - "borsh-derive 0.9.4", + "borsh-derive 0.9.3", "hashbrown 0.11.2", ] @@ -598,13 +571,24 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "borsh" +version = "1.0.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41898277107b0d3f027593697912977397eba6ac39a55bdd2eb02c1d5d5013b5" +dependencies = [ + "borsh-derive 1.0.0-alpha.4", + "cfg_aliases", +] + [[package]] name = "borsh-derive" -version = "0.9.4" -source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ - "borsh-derive-internal 0.9.4", - "borsh-schema-derive-internal 0.9.4", + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -623,10 +607,25 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-derive" +version = "1.0.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413cb435569fe499e89235f758304e0e7198016baa351d8f5827ea0f40526ce0" +dependencies = [ + "once_cell", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.16", + "syn_derive", +] + [[package]] name = "borsh-derive-internal" -version = "0.9.4" -source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ "proc-macro2", "quote", @@ -644,10 +643,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-ext" +version = "1.0.0-alpha.4" +source = "git+https://github.com/heliaxdev/borsh-ext?tag=v1.0.0-alpha.4#6bebf357002f96574ac37a28f547b6c88e91b799" +dependencies = [ + "borsh 1.0.0-alpha.4", +] + [[package]] name = "borsh-schema-derive-internal" -version = "0.9.4" -source = "git+https://github.com/heliaxdev/borsh-rs.git?rev=cd5223e5103c4f139e0c54cf8259b7ec5ec4073a#cd5223e5103c4f139e0c54cf8259b7ec5ec4073a" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ "proc-macro2", "quote", @@ -761,6 +769,15 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher 0.4.4", +] + [[package]] name = "cc" version = "1.0.79" @@ -779,6 +796,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chacha20" version = "0.8.2" @@ -1200,16 +1223,6 @@ dependencies = [ "subtle 2.4.1", ] -[[package]] -name = "crypto-mac" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" -dependencies = [ - "generic-array 0.14.7", - "subtle 2.4.1", -] - [[package]] name = "ct-codecs" version = "1.1.1" @@ -1507,9 +1520,9 @@ dependencies = [ "base16ct", "crypto-bigint", "digest 0.10.6", - "ff 0.13.0", + "ff", "generic-array 0.14.7", - "group 0.13.0", + "group", "pkcs8", "rand_core 0.6.4", "sec1", @@ -1627,7 +1640,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ - "aes 0.8.3", + "aes", "ctr", "digest 0.10.6", "hex", @@ -2007,14 +2020,14 @@ dependencies = [ "bincode", "blake2", "blake2b_simd", - "borsh 0.9.4", + "borsh 0.9.3", "digest 0.10.6", "ed25519-dalek", "either", "ferveo-common", "group-threshold-cryptography", "hex", - "itertools", + "itertools 0.10.5", "measure_time", "miracl_core", "num 0.4.0", @@ -2041,23 +2054,13 @@ dependencies = [ "serde_bytes", ] -[[package]] -name = "ff" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" -dependencies = [ - "bitvec 1.0.1", - "rand_core 0.6.4", - "subtle 2.4.1", -] - [[package]] name = "ff" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ + "bitvec 1.0.1", "rand_core 0.6.4", "subtle 2.4.1", ] @@ -2107,12 +2110,12 @@ dependencies = [ [[package]] name = "fpe" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd910db5f9ca4dc3116f8c46367825807aa2b942f72565f16b4be0b208a00a9e" +checksum = "26c4b37de5ae15812a764c958297cfc50f5c010438f60c6ce75d11b802abd404" dependencies = [ - "block-modes", - "cipher 0.3.0", + "cbc", + "cipher 0.4.4", "libm", "num-bigint 0.4.3", "num-integer", @@ -2318,25 +2321,14 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "group" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" -dependencies = [ - "ff 0.12.1", - "memuse", - "rand_core 0.6.4", - "subtle 2.4.1", -] - [[package]] name = "group" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", + "ff", + "memuse", "rand_core 0.6.4", "subtle 2.4.1", ] @@ -2356,7 +2348,7 @@ dependencies = [ "blake2b_simd", "chacha20 0.8.2", "hex", - "itertools", + "itertools 0.10.5", "miracl_core", "rand 0.8.5", "rand_core 0.6.4", @@ -2515,16 +2507,6 @@ dependencies = [ "digest 0.9.0", ] -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac 0.11.1", - "digest 0.9.0", -] - [[package]] name = "hmac" version = "0.12.1" @@ -2826,10 +2808,10 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "index-set" -version = "0.7.1" -source = "git+https://github.com/heliaxdev/index-set?tag=v0.7.1#dc24cdbbe3664514d59f1a4c4031863fc565f1c2" +version = "0.8.0" +source = "git+https://github.com/heliaxdev/index-set?tag=v0.8.0#0c218cc300c1bb7a1acf34f21b6e9d489df5fda8" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "serde", ] @@ -2922,6 +2904,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.6" @@ -2939,14 +2930,14 @@ dependencies = [ [[package]] name = "jubjub" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +checksum = "8499f7a74008aafbecb2a2e608a3e13e4dd3e84df198b604451efe93f2de6e61" dependencies = [ "bitvec 1.0.1", "bls12_381", - "ff 0.12.1", - "group 0.12.1", + "ff", + "group", "rand_core 0.6.4", "subtle 2.4.1", ] @@ -3123,9 +3114,9 @@ dependencies = [ [[package]] name = "masp_note_encryption" version = "0.2.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=449a7295fe24d96456ece24c223ca9eb76b0e6ba#449a7295fe24d96456ece24c223ca9eb76b0e6ba" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "chacha20 0.9.1", "chacha20poly1305", "cipher 0.4.4", @@ -3136,19 +3127,19 @@ dependencies = [ [[package]] name = "masp_primitives" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=449a7295fe24d96456ece24c223ca9eb76b0e6ba#449a7295fe24d96456ece24c223ca9eb76b0e6ba" dependencies = [ - "aes 0.7.5", + "aes", "bip0039", "bitvec 1.0.1", "blake2b_simd", "blake2s_simd", "bls12_381", - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "byteorder", - "ff 0.12.1", + "ff", "fpe", - "group 0.12.1", + "group", "hex", "incrementalmerkletree", "jubjub", @@ -3159,7 +3150,7 @@ dependencies = [ "num-traits", "rand 0.8.5", "rand_core 0.6.4", - "sha2 0.9.9", + "sha2 0.10.6", "subtle 2.4.1", "zcash_encoding", ] @@ -3167,15 +3158,15 @@ dependencies = [ [[package]] name = "masp_proofs" version = "0.9.0" -source = "git+https://github.com/anoma/masp?rev=50acc5028fbcd52a05970fe7991c7850ab04358e#50acc5028fbcd52a05970fe7991c7850ab04358e" +source = "git+https://github.com/anoma/masp?rev=449a7295fe24d96456ece24c223ca9eb76b0e6ba#449a7295fe24d96456ece24c223ca9eb76b0e6ba" dependencies = [ "bellman", "blake2b_simd", "bls12_381", "directories", "getrandom 0.2.9", - "group 0.12.1", - "itertools", + "group", + "itertools 0.11.0", "jubjub", "lazy_static", "masp_primitives", @@ -3337,7 +3328,8 @@ version = "0.22.0" dependencies = [ "async-trait", "bimap", - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", + "borsh-ext", "circular-queue", "clru", "data-encoding", @@ -3348,7 +3340,7 @@ dependencies = [ "ethers", "eyre", "futures", - "itertools", + "itertools 0.10.5", "loupe", "masp_primitives", "masp_proofs", @@ -3399,7 +3391,8 @@ dependencies = [ "ark-ec", "ark-serialize", "bech32 0.8.1", - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", + "borsh-ext", "chrono", "data-encoding", "derivative", @@ -3415,7 +3408,7 @@ dependencies = [ "ics23", "impl-num-traits", "index-set", - "itertools", + "itertools 0.10.5", "libsecp256k1 0.7.0", "masp_primitives", "namada_macros", @@ -3448,10 +3441,11 @@ dependencies = [ name = "namada_ethereum_bridge" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", + "borsh-ext", "ethers", "eyre", - "itertools", + "itertools 0.10.5", "namada_core", "namada_macros", "namada_proof_of_stake", @@ -3477,7 +3471,7 @@ dependencies = [ name = "namada_proof_of_stake" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "data-encoding", "derivative", "namada_core", @@ -3491,7 +3485,7 @@ dependencies = [ name = "namada_test_utils" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "namada_core", "strum", ] @@ -3530,7 +3524,8 @@ dependencies = [ name = "namada_tx_prelude" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", + "borsh-ext", "masp_primitives", "namada_core", "namada_macros", @@ -3544,7 +3539,7 @@ dependencies = [ name = "namada_vm_env" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "masp_primitives", "namada_core", ] @@ -3553,7 +3548,8 @@ dependencies = [ name = "namada_vp_prelude" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", + "borsh-ext", "namada_core", "namada_macros", "namada_proof_of_stake", @@ -3566,7 +3562,7 @@ dependencies = [ name = "namada_wasm" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "getrandom 0.2.9", "masp_primitives", "namada", @@ -3791,9 +3787,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -3858,11 +3854,11 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "pairing" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" dependencies = [ - "group 0.12.1", + "group", ] [[package]] @@ -3942,6 +3938,19 @@ dependencies = [ "subtle 2.4.1", ] +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "ff", + "group", + "rand 0.8.5", + "static_assertions", + "subtle 2.4.1", +] + [[package]] name = "paste" version = "1.0.12" @@ -3959,11 +3968,11 @@ dependencies = [ [[package]] name = "pbkdf2" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05894bce6a1ba4be299d0c5f29563e08af2bc18bb7d48313113bed71e904739" +checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" dependencies = [ - "crypto-mac 0.11.1", + "digest 0.10.6", "password-hash", ] @@ -4232,7 +4241,7 @@ checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ "bytes", "heck", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -4253,7 +4262,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", @@ -4420,21 +4429,36 @@ dependencies = [ ] [[package]] -name = "redjubjub" -version = "0.5.0" +name = "reddsa" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6039ff156887caf92df308cbaccdc058c9d3155a913da046add6e48c4cdbd91d" +checksum = "78a5191930e84973293aa5f532b513404460cd2216c1cfb76d08748c15b40b02" dependencies = [ "blake2b_simd", "byteorder", - "digest 0.9.0", + "group", + "hex", "jubjub", + "pasta_curves", "rand_core 0.6.4", "serde", "thiserror", "zeroize", ] +[[package]] +name = "redjubjub" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a60db2c3bc9c6fd1e8631fee75abc008841d27144be744951d6b9b75f9b569c" +dependencies = [ + "rand_core 0.6.4", + "reddsa", + "serde", + "thiserror", + "zeroize", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -5194,9 +5218,9 @@ dependencies = [ [[package]] name = "sparse-merkle-tree" version = "0.3.1-pre" -source = "git+https://github.com/heliaxdev/sparse-merkle-tree?rev=e086b235ed6e68929bf73f617dd61cd17b000a56#e086b235ed6e68929bf73f617dd61cd17b000a56" +source = "git+https://github.com/heliaxdev/sparse-merkle-tree?rev=df7ec062e7c40d5e76b136064e9aaf8bd2490750#df7ec062e7c40d5e76b136064e9aaf8bd2490750" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "cfg-if 1.0.0", "ics23", "sha2 0.9.9", @@ -5320,6 +5344,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6eef0000c4a12ecdfd7873ea84a8b5aab5e44db72e38e07b028a25386f29a5" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.16", +] + [[package]] name = "tap" version = "1.0.1" @@ -5790,7 +5826,7 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" name = "tx_template" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "getrandom 0.2.9", "namada_tests", "namada_tx_prelude", @@ -5913,7 +5949,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" name = "vp_template" version = "0.22.0" dependencies = [ - "borsh 0.9.4", + "borsh 1.0.0-alpha.4", "getrandom 0.2.9", "namada_tests", "namada_vp_prelude", @@ -6693,8 +6729,8 @@ dependencies = [ [[package]] name = "zcash_encoding" -version = "0.0.0" -source = "git+https://github.com/zcash/librustzcash?rev=43c18d0#43c18d000fcbe45363b2d53585d5102841eff99e" +version = "0.2.0" +source = "git+https://github.com/zcash/librustzcash?rev=bd7f9d7#bd7f9d7c3ce5cfd14af169ffe0e1c5c903162f46" dependencies = [ "byteorder", "nonempty", diff --git a/wasm/Cargo.toml b/wasm/Cargo.toml index 8453ea48ca1..0f834ca7291 100644 --- a/wasm/Cargo.toml +++ b/wasm/Cargo.toml @@ -9,10 +9,10 @@ members = [ [patch.crates-io] # TODO temp patch for , and more tba. -borsh = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} -borsh-derive = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} -borsh-derive-internal = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} -borsh-schema-derive-internal = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} +#borsh = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} +#borsh-derive = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} +#borsh-derive-internal = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} +#borsh-schema-derive-internal = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} [profile.release] # smaller and faster wasm (https://rustwasm.github.io/book/reference/code-size.html#compiling-with-link-time-optimizations-lto) diff --git a/wasm/wasm_source/Cargo.toml b/wasm/wasm_source/Cargo.toml index 313d1750b24..8d04d89accd 100644 --- a/wasm/wasm_source/Cargo.toml +++ b/wasm/wasm_source/Cargo.toml @@ -44,7 +44,7 @@ once_cell = {version = "1.8.0", optional = true} wee_alloc = "0.4.5" getrandom = { version = "0.2", features = ["custom"] } # branch = "murisi/namada-integration" -masp_primitives = { git = "https://github.com/anoma/masp", rev = "50acc5028fbcd52a05970fe7991c7850ab04358e", optional = true } +masp_primitives = { git = "https://github.com/anoma/masp", rev = "449a7295fe24d96456ece24c223ca9eb76b0e6ba", optional = true } ripemd = "0.1" [dev-dependencies] diff --git a/wasm/wasm_source/src/tx_bond.rs b/wasm/wasm_source/src/tx_bond.rs index f4a100342fd..775e7d0e915 100644 --- a/wasm/wasm_source/src/tx_bond.rs +++ b/wasm/wasm_source/src/tx_bond.rs @@ -32,6 +32,7 @@ mod tests { arb_established_address, arb_non_internal_address, }; use namada_tx_prelude::address::InternalAddress; + use namada_tx_prelude::borsh_ext::BorshSerializeExt; use namada_tx_prelude::chain::ChainId; use namada_tx_prelude::key::testing::arb_common_keypair; use namada_tx_prelude::key::RefTo; diff --git a/wasm/wasm_source/src/tx_bridge_pool.rs b/wasm/wasm_source/src/tx_bridge_pool.rs index 828e4da0422..7354fb654aa 100644 --- a/wasm/wasm_source/src/tx_bridge_pool.rs +++ b/wasm/wasm_source/src/tx_bridge_pool.rs @@ -1,8 +1,9 @@ //! A tx for adding a transfer request across the Ethereum bridge //! into the bridge pool. -use borsh::{BorshDeserialize, BorshSerialize}; +use borsh::BorshDeserialize; use eth_bridge::storage::{bridge_pool, native_erc20_key}; use eth_bridge_pool::{GasFee, PendingTransfer, TransferToEthereum}; +use namada_tx_prelude::borsh_ext::BorshSerializeExt; use namada_tx_prelude::*; #[transaction(gas = 100000)] diff --git a/wasm/wasm_source/src/tx_change_validator_commission.rs b/wasm/wasm_source/src/tx_change_validator_commission.rs index cecbd2bb3ce..581d9d8dcf0 100644 --- a/wasm/wasm_source/src/tx_change_validator_commission.rs +++ b/wasm/wasm_source/src/tx_change_validator_commission.rs @@ -28,6 +28,7 @@ mod tests { use namada_tests::native_vp::TestNativeVpEnv; use namada_tests::tx::*; use namada_tx_prelude::address::testing::arb_established_address; + use namada_tx_prelude::borsh_ext::BorshSerializeExt; use namada_tx_prelude::chain::ChainId; use namada_tx_prelude::key::testing::arb_common_keypair; use namada_tx_prelude::key::RefTo; diff --git a/wasm/wasm_source/src/tx_unbond.rs b/wasm/wasm_source/src/tx_unbond.rs index 91a246106bb..7ca5f46ebfe 100644 --- a/wasm/wasm_source/src/tx_unbond.rs +++ b/wasm/wasm_source/src/tx_unbond.rs @@ -30,6 +30,7 @@ mod tests { use namada_tests::native_vp::TestNativeVpEnv; use namada_tests::tx::*; use namada_tx_prelude::address::InternalAddress; + use namada_tx_prelude::borsh_ext::BorshSerializeExt; use namada_tx_prelude::chain::ChainId; use namada_tx_prelude::key::testing::arb_common_keypair; use namada_tx_prelude::key::RefTo; diff --git a/wasm/wasm_source/src/tx_withdraw.rs b/wasm/wasm_source/src/tx_withdraw.rs index 3b809940055..d9f47dba23a 100644 --- a/wasm/wasm_source/src/tx_withdraw.rs +++ b/wasm/wasm_source/src/tx_withdraw.rs @@ -32,6 +32,7 @@ mod tests { arb_established_address, arb_non_internal_address, }; use namada_tx_prelude::address::InternalAddress; + use namada_tx_prelude::borsh_ext::BorshSerializeExt; use namada_tx_prelude::chain::ChainId; use namada_tx_prelude::key::testing::arb_common_keypair; use namada_tx_prelude::key::RefTo; diff --git a/wasm/wasm_source/src/vp_masp.rs b/wasm/wasm_source/src/vp_masp.rs index a3e6f33eef3..b33d367c1cf 100644 --- a/wasm/wasm_source/src/vp_masp.rs +++ b/wasm/wasm_source/src/vp_masp.rs @@ -4,6 +4,7 @@ use masp_primitives::asset_type::AssetType; use masp_primitives::transaction::components::I128Sum; /// Multi-asset shielded pool VP. use namada_vp_prelude::address::masp; +use namada_vp_prelude::borsh_ext::BorshSerializeExt; use namada_vp_prelude::storage::Epoch; use namada_vp_prelude::*; use ripemd::{Digest, Ripemd160}; diff --git a/wasm/wasm_source/src/vp_testnet_faucet.rs b/wasm/wasm_source/src/vp_testnet_faucet.rs index ee09faa0066..beeeb866783 100644 --- a/wasm/wasm_source/src/vp_testnet_faucet.rs +++ b/wasm/wasm_source/src/vp_testnet_faucet.rs @@ -118,6 +118,7 @@ mod tests { use namada_tests::vp::*; use namada_tx_prelude::{StorageWrite, TxEnv}; use namada_vp_prelude::account::AccountPublicKeysMap; + use namada_vp_prelude::borsh_ext::BorshSerializeExt; use namada_vp_prelude::key::RefTo; use proptest::prelude::*; use storage::testing::arb_account_storage_key_no_vp;