diff --git a/Cargo.lock b/Cargo.lock index 1014985bf..ef6868582 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -409,6 +409,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "autocfg" version = "1.2.0" @@ -598,6 +607,12 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" version = "1.6.0" @@ -703,6 +718,12 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + [[package]] name = "colorchoice" version = "1.0.0" @@ -768,6 +789,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" + [[package]] name = "crossbeam-deque" version = "0.8.5" @@ -925,6 +952,12 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "encoding_rs" version = "0.8.33" @@ -934,6 +967,29 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "env_filter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1113,6 +1169,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1138,6 +1203,20 @@ dependencies = [ "hashbrown 0.14.3", ] +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version", + "serde", + "spin", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.4.1" @@ -1211,6 +1290,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "hyper" version = "0.14.28" @@ -1638,6 +1723,7 @@ dependencies = [ "num-complex", "rand", "rand_core", + "serde", "sha3", "winter-crypto", "winter-math", @@ -1665,6 +1751,23 @@ dependencies = [ "miden-stdlib 0.9.1", ] +[[package]] +name = "miden-mock" +version = "0.2.0" +source = "git+https://github.com/0xPolygonMiden/miden-base.git?branch=next#1d32f951e29c2e12526520f734aaba02555e8f79" +dependencies = [ + "env_logger", + "hex", + "miden-lib 0.2.0", + "miden-objects 0.2.0", + "miden-processor 0.9.1", + "miden-prover 0.9.1", + "postcard", + "rand", + "rand_pcg", + "winter-rand-utils", +] + [[package]] name = "miden-node" version = "0.2.0" @@ -1805,6 +1908,7 @@ dependencies = [ "figment", "hex", "miden-lib 0.2.0", + "miden-mock", "miden-node-proto 0.2.0", "miden-node-utils 0.2.0", "miden-objects 0.2.0", @@ -1819,6 +1923,7 @@ dependencies = [ "tonic", "tracing", "tracing-subscriber", + "winter-rand-utils", ] [[package]] @@ -1878,11 +1983,13 @@ name = "miden-objects" version = "0.2.0" source = "git+https://github.com/0xPolygonMiden/miden-base.git?branch=next#1d32f951e29c2e12526520f734aaba02555e8f79" dependencies = [ + "log", "miden-assembly 0.9.1", "miden-core 0.9.1", "miden-crypto 0.9.1", "miden-processor 0.9.1", "miden-verifier 0.9.1", + "serde", "winter-rand-utils", ] @@ -2353,6 +2460,18 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "postcard" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +dependencies = [ + "cobs", + "embedded-io", + "heapless", + "serde", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -2565,6 +2684,16 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_pcg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core", + "serde", +] + [[package]] name = "rand_xorshift" version = "0.3.0" @@ -2880,6 +3009,21 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strsim" version = "0.11.0" diff --git a/store/src/db/mod.rs b/store/src/db/mod.rs index fdec24365..66fc68543 100644 --- a/store/src/db/mod.rs +++ b/store/src/db/mod.rs @@ -1,13 +1,11 @@ use std::fs::{self, create_dir_all}; use deadpool_sqlite::{Config as SqliteConfig, Hook, HookError, Pool, Runtime}; -use miden_node_proto::domain::accounts::{AccountHashUpdate, AccountInfo}; +use miden_node_proto::domain::accounts::{AccountDetailsUpdate, AccountHashUpdate, AccountInfo}; use miden_objects::{ block::BlockNoteTree, crypto::{hash::rpo::RpoDigest, merkle::MerklePath, utils::Deserializable}, notes::Nullifier, - transaction::AccountDetails, - utils::Serializable, BlockHeader, GENESIS_BLOCK, }; use rusqlite::vtab::array; diff --git a/store/src/db/tests.rs b/store/src/db/tests.rs index a689b4c0f..d7d99dffb 100644 --- a/store/src/db/tests.rs +++ b/store/src/db/tests.rs @@ -1,13 +1,11 @@ use miden_lib::transaction::TransactionKernel; -use miden_mock::mock::account::{ - generate_account_seed, mock_account_code, AccountSeedType, ACCOUNT_ID_FUNGIBLE_FAUCET_ON_CHAIN, - ACCOUNT_ID_NON_FUNGIBLE_FAUCET_ON_CHAIN, -}; -use miden_node_proto::domain::accounts::AccountDetailsUpdate; +use miden_mock::mock::account::{generate_account_seed, mock_account_code, AccountSeedType}; +use miden_node_proto::domain::accounts::{AccountDetailsUpdate, AccountHashUpdate}; use miden_objects::{ accounts::{ - Account, AccountDelta, AccountId, AccountStorage, AccountStorageDelta, AccountType, - AccountVaultDelta, + Account, AccountDelta, AccountId, AccountStorage, AccountStorageDelta, AccountVaultDelta, + ACCOUNT_ID_FUNGIBLE_FAUCET_ON_CHAIN, ACCOUNT_ID_NON_FUNGIBLE_FAUCET_ON_CHAIN, + ACCOUNT_ID_OFF_CHAIN_SENDER, ACCOUNT_ID_REGULAR_ACCOUNT_UPDATABLE_CODE_OFF_CHAIN, }, assets::{Asset, AssetVault, FungibleAsset, NonFungibleAsset, NonFungibleAssetDetails}, block::BlockNoteTree, @@ -17,7 +15,6 @@ use miden_objects::{ BlockHeader, Felt, FieldElement, Word, ONE, ZERO, }; use rusqlite::{vtab::array, Connection}; -use winter_rand_utils::rand_array; use super::{sql, AccountInfo, Note, NoteCreated, NullifierInfo}; use crate::db::migrations; @@ -188,7 +185,7 @@ fn test_sql_select_accounts() { let res = sql::upsert_accounts( &transaction, &[AccountDetailsUpdate { - account_id, + account_id: account_id.try_into().unwrap(), final_state_hash: account_hash, details: None, }], @@ -196,9 +193,7 @@ fn test_sql_select_accounts() { ); assert_eq!(res.unwrap(), 1, "One element must have been inserted"); transaction.commit().unwrap(); - let mut accounts = sql::select_accounts(&mut conn).unwrap(); - accounts.sort_by_key(|acc| acc.account_id); - state.sort_by_key(|acc| acc.account_id); + let accounts = sql::select_accounts(&mut conn).unwrap(); assert_eq!(accounts, state); } } @@ -533,9 +528,6 @@ fn test_db_account() { let block_num = 1; create_block(&mut conn, block_num); - let (account_id, _seed) = - generate_account_seed(AccountSeedType::RegularAccountUpdatableCodeOnChain); - // test empty table let account_ids = vec![ACCOUNT_ID_REGULAR_ACCOUNT_UPDATABLE_CODE_OFF_CHAIN, 1, 2, 3, 4, 5]; let res = sql::select_accounts_by_block_range(&mut conn, 0, u32::MAX, &account_ids).unwrap(); @@ -549,7 +541,7 @@ fn test_db_account() { let row_count = sql::upsert_accounts( &transaction, &[AccountDetailsUpdate { - account_id, + account_id: account_id.try_into().unwrap(), final_state_hash: account_hash, details: None, }], diff --git a/store/src/errors.rs b/store/src/errors.rs index 96128f9ce..78e7e455d 100644 --- a/store/src/errors.rs +++ b/store/src/errors.rs @@ -51,8 +51,6 @@ pub enum DatabaseError { DeserializationError(DeserializationError), #[error("Corrupted data: {0}")] CorruptedData(String), - #[error("Account error: {0}")] - AccountError(AccountError), #[error("Block applying was broken because of closed channel on state side: {0}")] ApplyBlockFailedClosedChannel(RecvError), #[error("Account {0} not found in the database")] @@ -73,12 +71,6 @@ impl From for DatabaseError { } } -impl From for DatabaseError { - fn from(value: AccountError) -> Self { - Self::AccountError(value) - } -} - // INITIALIZATION ERRORS // =================================================================================================