From 647345148cded2731bb8822fd4ce5956db6f7b8e Mon Sep 17 00:00:00 2001 From: jns-ps <1234562+jns-ps@users.noreply.github.com> Date: Wed, 18 Dec 2024 12:42:40 +0100 Subject: [PATCH] refactor: move tree in own crate (#179) * refactor: tree in its own crate * tests: tree tests in their own file * chore: Incorporate changes in zkvm elf --- Cargo.lock | 20 +- Cargo.toml | 3 + crates/common/Cargo.toml | 5 +- crates/common/src/digest.rs | 23 +- crates/common/src/lib.rs | 5 - crates/common/src/tree/mod.rs | 332 ------------------ crates/node_types/prover/Cargo.toml | 1 + crates/node_types/prover/src/prover/mod.rs | 23 +- crates/node_types/prover/src/prover/tests.rs | 4 +- crates/node_types/prover/src/webserver.rs | 15 +- crates/tree/Cargo.toml | 25 ++ crates/{common => tree}/src/hasher.rs | 32 +- .../tree => tree/src}/key_directory_tree.rs | 12 +- crates/tree/src/lib.rs | 20 ++ .../{common/src/tree => tree/src}/proofs.rs | 41 ++- .../src/tree => tree/src}/snarkable_tree.rs | 35 +- crates/tree/src/tests.rs | 304 ++++++++++++++++ crates/zk/sp1/Cargo.toml | 1 + crates/zk/sp1/src/main.rs | 12 +- elf/riscv32im-succinct-zkvm-elf | Bin 1928632 -> 1960968 bytes 20 files changed, 460 insertions(+), 453 deletions(-) delete mode 100644 crates/common/src/tree/mod.rs create mode 100644 crates/tree/Cargo.toml rename crates/{common => tree}/src/hasher.rs (73%) rename crates/{common/src/tree => tree/src}/key_directory_tree.rs (84%) create mode 100644 crates/tree/src/lib.rs rename crates/{common/src/tree => tree/src}/proofs.rs (82%) rename crates/{common/src/tree => tree/src}/snarkable_tree.rs (89%) create mode 100644 crates/tree/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 77ac9086..d3abb5dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4826,9 +4826,6 @@ version = "0.1.0" dependencies = [ "anyhow", "celestia-types", - "jmt", - "log", - "prism-errors", "prism-keys", "prism-serde", "rand", @@ -4906,6 +4903,7 @@ dependencies = [ "prism-errors", "prism-keys", "prism-storage", + "prism-tree", "serde", "sp1-sdk", "tokio", @@ -4931,6 +4929,7 @@ name = "prism-sp1" version = "0.1.0" dependencies = [ "prism-common", + "prism-tree", "sp1-zkvm", ] @@ -4969,6 +4968,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "prism-tree" +version = "0.1.0" +dependencies = [ + "anyhow", + "jmt", + "log", + "prism-common", + "prism-errors", + "prism-keys", + "prism-serde", + "serde", + "sha2 0.10.8", +] + [[package]] name = "proc-macro-crate" version = "1.3.1" diff --git a/Cargo.toml b/Cargo.toml index 33c71fed..c018660c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ default-members = [ "crates/da", "crates/serde", "crates/keys", + "crates/tree", ] members = [ @@ -40,6 +41,7 @@ members = [ "crates/da", "crates/serde", "crates/keys", + "crates/tree", ] resolver = "2" @@ -117,6 +119,7 @@ prism-prover = { path = "crates/node_types/prover" } prism-tests = { path = "crates/tests" } prism-keys = { path = "crates/keys" } prism-serde = { path = "crates/serde" } +prism-tree = { path = "crates/tree" } prism-lightclient = { path = "crates/node_types/lightclient" } [patch.crates-io] diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 20dfba28..dcb0f6e8 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -8,7 +8,6 @@ repository.workspace = true [dependencies] # prism -prism-errors.workspace = true prism-keys.workspace = true # serde @@ -18,13 +17,11 @@ serde.workspace = true # celestia celestia-types.workspace = true -# tree -jmt.workspace = true +# digest sha2.workspace = true # misc anyhow.workspace = true -log.workspace = true rand.workspace = true [features] diff --git a/crates/common/src/digest.rs b/crates/common/src/digest.rs index eeab671c..cc0d0af8 100644 --- a/crates/common/src/digest.rs +++ b/crates/common/src/digest.rs @@ -1,13 +1,12 @@ use anyhow::Result; -use jmt::RootHash; use serde::{Deserialize, Serialize}; -use crate::hasher::Hasher; use prism_serde::{ base64::FromBase64, hex::{FromHex, ToHex}, raw_or_hex, }; +use sha2::{Digest as _, Sha256}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Copy)] pub struct Digest(#[serde(with = "raw_or_hex")] pub [u8; 32]); @@ -18,17 +17,17 @@ impl Digest { } pub fn hash(data: impl AsRef<[u8]>) -> Self { - let mut hasher = Hasher::new(); + let mut hasher = Sha256::new(); hasher.update(data.as_ref()); - Self(hasher.finalize()) + Self(hasher.finalize().into()) } pub fn hash_items(items: &[impl AsRef<[u8]>]) -> Self { - let mut hasher = Hasher::new(); + let mut hasher = Sha256::new(); for item in items { hasher.update(item.as_ref()); } - Self(hasher.finalize()) + Self(hasher.finalize().into()) } pub const fn zero() -> Self { @@ -52,18 +51,6 @@ impl From<[u8; N]> for Digest { } } -impl From for RootHash { - fn from(val: Digest) -> RootHash { - RootHash::from(val.0) - } -} - -impl From for Digest { - fn from(val: RootHash) -> Digest { - Digest(val.0) - } -} - impl AsRef<[u8]> for Digest { fn as_ref(&self) -> &[u8] { &self.0 diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index c6e4d4a2..a9882db6 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -1,12 +1,7 @@ pub mod digest; pub mod hashchain; -pub mod hasher; pub mod operation; pub mod transaction; -pub mod tree; - -#[macro_use] -extern crate log; #[cfg(feature = "test_utils")] pub mod transaction_builder; diff --git a/crates/common/src/tree/mod.rs b/crates/common/src/tree/mod.rs deleted file mode 100644 index f53806a3..00000000 --- a/crates/common/src/tree/mod.rs +++ /dev/null @@ -1,332 +0,0 @@ -use crate::hashchain::Hashchain; - -mod key_directory_tree; -mod proofs; -mod snarkable_tree; - -pub use key_directory_tree::*; -pub use proofs::*; -pub use snarkable_tree::*; - -/// Enumerates possible responses when fetching tree values -#[derive(Debug)] -pub enum HashchainResponse { - /// When a hashchain was found, provides the value and its corresponding membership-proof - Found(Hashchain, MembershipProof), - - /// When no hashchain was found for a specific key, provides the corresponding non-membership-proof - NotFound(NonMembershipProof), -} - -#[cfg(all(test, feature = "test_utils"))] -mod tests { - use std::sync::Arc; - - use jmt::{mock::MockTreeStore, KeyHash}; - use prism_keys::SigningKey; - - use super::{HashchainResponse::*, *}; - use crate::{digest::Digest, hasher::Hasher, transaction_builder::TransactionBuilder}; - - #[test] - fn test_insert_and_get() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - let Proof::Insert(insert_proof) = tree.process_transaction(service_tx).unwrap() else { - panic!("Processing transaction did not return the expected insert proof"); - }; - assert!(insert_proof.verify().is_ok()); - - let account_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); - - let Proof::Insert(insert_proof) = tree.process_transaction(account_tx).unwrap() else { - panic!("Processing transaction did not return the expected insert proof"); - }; - assert!(insert_proof.verify().is_ok()); - - let Found(hashchain, membership_proof) = - tree.get(KeyHash::with::("acc_1")).unwrap() - else { - panic!("Expected hashchain to be found, but was not found.") - }; - - let test_hashchain = - tx_builder.get_hashchain("acc_1").expect("Getting builder hashchain should work"); - - assert_eq!(&hashchain, test_hashchain); - assert!(membership_proof.verify().is_ok()); - } - - #[test] - fn test_insert_for_nonexistent_service_fails() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_signing_key = SigningKey::new_ed25519(); - - let invalid_account_tx = tx_builder - .create_account_with_random_key( - "acc_1", - "service_id_that_does_not_exist", - &service_signing_key, - ) - .build(); - - let insertion_result = tree.process_transaction(invalid_account_tx); - assert!(insertion_result.is_err()); - } - - #[test] - fn test_insert_with_invalid_service_challenge_fails() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - - // The correct way was to use the key from service registration, - // but here we want things to break - let incorrect_service_signing_key = SigningKey::new_ed25519(); - - let initial_acc_signing_key = SigningKey::new_ed25519(); - - let acc_with_invalid_challenge_tx = tx_builder - .create_account( - "key_1", - "service_1", - &incorrect_service_signing_key, - initial_acc_signing_key, - ) - .build(); - - let Proof::Insert(insert_proof) = tree.process_transaction(service_tx).unwrap() else { - panic!("Processing service registration failed") - }; - assert!(insert_proof.verify().is_ok()); - - let create_account_result = tree.process_transaction(acc_with_invalid_challenge_tx); - assert!(create_account_result.is_err()); - } - - #[test] - fn test_insert_duplicate_key() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - let account_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); - let account_with_same_id_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").build(); - - let Proof::Insert(insert_proof) = tree.process_transaction(service_tx).unwrap() else { - panic!("Processing service registration failed") - }; - assert!(insert_proof.verify().is_ok()); - - let Proof::Insert(insert_proof) = tree.process_transaction(account_tx).unwrap() else { - panic!("Processing Account creation failed") - }; - assert!(insert_proof.verify().is_ok()); - - let create_acc_with_same_id_result = tree.process_transaction(account_with_same_id_tx); - assert!(create_acc_with_same_id_result.is_err()); - } - - #[test] - fn test_update_existing_key() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - let acc_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); - - tree.process_transaction(service_tx).unwrap(); - tree.process_transaction(acc_tx).unwrap(); - - let key_tx = tx_builder.add_random_key_verified_with_root("acc_1").commit(); - - let Proof::Update(update_proof) = tree.process_transaction(key_tx).unwrap() else { - panic!("Processing key update failed") - }; - assert!(update_proof.verify().is_ok()); - - let get_result = tree.get(KeyHash::with::("acc_1")).unwrap(); - let test_hashchain = tx_builder.get_hashchain("acc_1").unwrap(); - - assert!(matches!(get_result, Found(hc, _) if &hc == test_hashchain)); - } - - #[test] - fn test_update_non_existing_key() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - - tree.process_transaction(service_tx).unwrap(); - - // This is a signing key not known to the storage yet - let random_signing_key = SigningKey::new_ed25519(); - // This transaction shall be invalid, because it is signed with an unknown key - let invalid_key_tx = tx_builder.add_random_key("acc_1", &random_signing_key, 0).build(); - - let result = tree.process_transaction(invalid_key_tx); - assert!(result.is_err()); - } - - #[test] - fn test_get_non_existing_key() { - let tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - - let result = tree.get(KeyHash::with::("non_existing_id")).unwrap(); - - let NotFound(non_membership_proof) = result else { - panic!("Hashchain found for key while it was expected to be missing"); - }; - - assert!(non_membership_proof.verify().is_ok()); - } - - #[test] - fn test_multiple_inserts_and_updates() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - let acc1_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); - let acc2_tx = - tx_builder.create_account_with_random_key_signed("acc_2", "service_1").commit(); - - tree.process_transaction(service_tx).unwrap(); - - tree.process_transaction(acc1_tx).unwrap(); - tree.process_transaction(acc2_tx).unwrap(); - - // Do insert and update accounts using the correct key indices - let key_1_tx = tx_builder.add_random_key_verified_with_root("acc_1").commit(); - tree.process_transaction(key_1_tx).unwrap(); - - let data_1_tx = - tx_builder.add_unsigned_data_verified_with_root("acc_2", b"unsigned".to_vec()).commit(); - tree.process_transaction(data_1_tx).unwrap(); - - let data_2_tx = tx_builder - .add_randomly_signed_data_verified_with_root("acc_2", b"signed".to_vec()) - .commit(); - tree.process_transaction(data_2_tx).unwrap(); - - let get_result1 = tree.get(KeyHash::with::("acc_1")).unwrap(); - let get_result2 = tree.get(KeyHash::with::("acc_2")).unwrap(); - - let test_hashchain_acc1 = tx_builder.get_hashchain("acc_1").unwrap(); - let test_hashchain_acc2 = tx_builder.get_hashchain("acc_2").unwrap(); - - assert!(matches!(get_result1, Found(hc, _) if &hc == test_hashchain_acc1)); - assert!(matches!(get_result2, Found(hc, _) if &hc == test_hashchain_acc2)); - } - - #[test] - fn test_interleaved_inserts_and_updates() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - let acc1_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); - let acc2_tx = - tx_builder.create_account_with_random_key_signed("acc_2", "service_1").commit(); - - tree.process_transaction(service_tx).unwrap(); - tree.process_transaction(acc1_tx).unwrap(); - - let add_key_to_1_tx = tx_builder.add_random_key_verified_with_root("acc_1").commit(); - tree.process_transaction(add_key_to_1_tx).unwrap(); - - tree.process_transaction(acc2_tx).unwrap(); - - let add_key_to_2_tx = tx_builder.add_random_key_verified_with_root("acc_2").commit(); - let last_proof = tree.process_transaction(add_key_to_2_tx).unwrap(); - - // Update account_2 using the correct key index - let Proof::Update(update_proof) = last_proof else { - panic!("Expetced insert proof for transaction"); - }; - - let get_result1 = tree.get(KeyHash::with::("acc_1")).unwrap(); - let get_result2 = tree.get(KeyHash::with::("acc_2")).unwrap(); - - let test_hashchain_acc1 = tx_builder.get_hashchain("acc_1").unwrap(); - let test_hashchain_acc2 = tx_builder.get_hashchain("acc_2").unwrap(); - - assert!(matches!(get_result1, Found(hc, _) if &hc == test_hashchain_acc1)); - assert!(matches!(get_result2, Found(hc, _) if &hc == test_hashchain_acc2)); - assert_eq!( - Digest::from(update_proof.new_root), - tree.get_commitment().unwrap() - ); - } - - #[test] - fn test_root_hash_changes() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - let account1_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); - - tree.process_transaction(service_tx).unwrap(); - - let root_before = tree.get_current_root().unwrap(); - tree.process_transaction(account1_tx).unwrap(); - let root_after = tree.get_current_root().unwrap(); - - assert_ne!(root_before, root_after); - } - - #[test] - fn test_batch_writing() { - let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); - let mut tx_builder = TransactionBuilder::new(); - - let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); - let account1_tx = - tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); - let account2_tx = - tx_builder.create_account_with_random_key_signed("acc_2", "service_1").commit(); - - tree.process_transaction(service_tx).unwrap(); - - println!("Inserting acc_1"); - tree.process_transaction(account1_tx).unwrap(); - - println!("Tree state after first insert: {:?}", tree.get_commitment()); - - // Try to get the first value immediately - let get_result1 = tree.get(KeyHash::with::("acc_1")); - println!("Get result for key1 after first write: {:?}", get_result1); - - println!("Inserting acc_2"); - tree.process_transaction(account2_tx).unwrap(); - - println!("Tree state after 2nd insert: {:?}", tree.get_commitment()); - - // Try to get both values - let get_result1 = tree.get(KeyHash::with::("acc_1")).unwrap(); - let get_result2 = tree.get(KeyHash::with::("acc_2")).unwrap(); - - println!("Final get result for key1: {:?}", get_result1); - println!("Final get result for key2: {:?}", get_result2); - - let test_hashchain_acc1 = tx_builder.get_hashchain("acc_1").unwrap(); - let test_hashchain_acc2 = tx_builder.get_hashchain("acc_2").unwrap(); - - assert!(matches!(get_result1, Found(hc, _) if &hc == test_hashchain_acc1)); - assert!(matches!(get_result2, Found(hc, _) if &hc == test_hashchain_acc2)); - } -} diff --git a/crates/node_types/prover/Cargo.toml b/crates/node_types/prover/Cargo.toml index f2cc323f..af10a470 100644 --- a/crates/node_types/prover/Cargo.toml +++ b/crates/node_types/prover/Cargo.toml @@ -26,6 +26,7 @@ anyhow = { workspace = true } jmt = { workspace = true } prism-common = { workspace = true, features = ["test_utils"] } prism-storage = { workspace = true } +prism-tree = { workspace = true } prism-errors = { workspace = true } prism-keys = { workspace = true } prism-da = { workspace = true } diff --git a/crates/node_types/prover/src/prover/mod.rs b/crates/node_types/prover/src/prover/mod.rs index 65ffae2c..988da1da 100644 --- a/crates/node_types/prover/src/prover/mod.rs +++ b/crates/node_types/prover/src/prover/mod.rs @@ -2,18 +2,16 @@ use anyhow::{anyhow, bail, Context, Result}; use ed25519_consensus::{SigningKey, VerificationKey}; use jmt::KeyHash; use keystore_rs::create_signing_key; -use prism_common::{ - digest::Digest, - hashchain::Hashchain, - hasher::Hasher, - transaction::Transaction, - tree::{ - Batch, - HashchainResponse::{self, *}, - KeyDirectoryTree, Proof, SnarkableTree, - }, -}; +use prism_common::{digest::Digest, hashchain::Hashchain, transaction::Transaction}; use prism_errors::DataAvailabilityError; +use prism_storage::database::Database; +use prism_tree::{ + hasher::TreeHasher, + key_directory_tree::KeyDirectoryTree, + proofs::{Batch, Proof}, + snarkable_tree::SnarkableTree, + HashchainResponse::{self, *}, +}; use std::{self, collections::VecDeque, sync::Arc}; use tokio::{ sync::{broadcast, RwLock}, @@ -23,7 +21,6 @@ use tokio::{ use crate::webserver::{WebServer, WebServerConfig}; use prism_common::operation::Operation; use prism_da::{DataAvailabilityLayer, FinalizedEpoch}; -use prism_storage::Database; use sp1_sdk::{ProverClient, SP1ProvingKey, SP1Stdin, SP1VerifyingKey}; pub const PRISM_ELF: &[u8] = include_bytes!("../../../../../elf/riscv32im-succinct-zkvm-elf"); @@ -459,7 +456,7 @@ impl Prover { pub async fn get_hashchain(&self, id: &String) -> Result { let tree = self.tree.read().await; - let key_hash = KeyHash::with::(id); + let key_hash = KeyHash::with::(id); tree.get(key_hash) } diff --git a/crates/node_types/prover/src/prover/tests.rs b/crates/node_types/prover/src/prover/tests.rs index a136d38b..cf6618bc 100644 --- a/crates/node_types/prover/src/prover/tests.rs +++ b/crates/node_types/prover/src/prover/tests.rs @@ -1,11 +1,11 @@ use super::*; -use prism_common::{transaction_builder::TransactionBuilder, tree::Proof}; +use prism_common::transaction_builder::TransactionBuilder; use prism_keys::{SigningKey, VerifyingKey}; use std::{self, sync::Arc, time::Duration}; use tokio::spawn; use prism_da::memory::InMemoryDataAvailabilityLayer; -use prism_storage::{inmemory::InMemoryDatabase, Database}; +use prism_storage::inmemory::InMemoryDatabase; // Helper function to create a test prover instance async fn create_test_prover() -> Arc { diff --git a/crates/node_types/prover/src/webserver.rs b/crates/node_types/prover/src/webserver.rs index f9a2723f..81a69f3b 100644 --- a/crates/node_types/prover/src/webserver.rs +++ b/crates/node_types/prover/src/webserver.rs @@ -11,9 +11,12 @@ use jmt::proof::{SparseMerkleNode, SparseMerkleProof}; use prism_common::{ digest::Digest, hashchain::{Hashchain, HashchainEntry}, - hasher::Hasher, transaction::Transaction, - tree::{HashchainResponse, Proof, UpdateProof}, +}; +use prism_tree::{ + hasher::TreeHasher, + proofs::{Proof, UpdateProof}, + HashchainResponse, }; use serde::{Deserialize, Serialize}; use std::{self, sync::Arc}; @@ -80,13 +83,13 @@ pub struct JmtProofResponse { pub siblings: Vec, } -impl From> for JmtProofResponse { - fn from(proof: SparseMerkleProof) -> Self { - let leaf_hash = proof.leaf().map(|node| node.hash::()).map(Digest::new); +impl From> for JmtProofResponse { + fn from(proof: SparseMerkleProof) -> Self { + let leaf_hash = proof.leaf().map(|node| node.hash::()).map(Digest::new); let sibling_hashes = proof .siblings() .iter() - .map(SparseMerkleNode::hash::) + .map(SparseMerkleNode::hash::) .map(Digest::new) .collect(); Self { diff --git a/crates/tree/Cargo.toml b/crates/tree/Cargo.toml new file mode 100644 index 00000000..0005baf8 --- /dev/null +++ b/crates/tree/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "prism-tree" +version.workspace = true +authors.workspace = true +edition.workspace = true +description.workspace = true +homepage.workspace = true +repository.workspace = true +license.workspace = true +keywords.workspace = true +readme.workspace = true + +[dependencies] +jmt.workspace = true +sha2.workspace = true +serde.workspace = true +log.workspace = true +anyhow.workspace = true +prism-common = { workspace = true, features = ["test_utils"] } +prism-errors.workspace = true +prism-keys.workspace = true +prism-serde.workspace = true + +[features] +default = [] diff --git a/crates/common/src/hasher.rs b/crates/tree/src/hasher.rs similarity index 73% rename from crates/common/src/hasher.rs rename to crates/tree/src/hasher.rs index 75dc6b3c..be3b0d47 100644 --- a/crates/common/src/hasher.rs +++ b/crates/tree/src/hasher.rs @@ -2,23 +2,23 @@ use jmt::SimpleHasher; use serde::{ser::SerializeTupleStruct, Deserialize, Serialize}; #[derive(Debug, Clone, Default)] -pub struct Hasher(sha2::Sha256); +pub struct TreeHasher(sha2::Sha256); -impl Hasher { - pub fn new() -> Self { +impl SimpleHasher for TreeHasher { + fn new() -> Self { Self(sha2::Sha256::new()) } - pub fn update(&mut self, data: &[u8]) { + fn update(&mut self, data: &[u8]) { self.0.update(data); } - pub fn finalize(self) -> [u8; 32] { + fn finalize(self) -> [u8; 32] { self.0.finalize() } } -impl Serialize for Hasher { +impl Serialize for TreeHasher { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, @@ -27,7 +27,7 @@ impl Serialize for Hasher { } } -impl<'de> Deserialize<'de> for Hasher { +impl<'de> Deserialize<'de> for TreeHasher { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -35,7 +35,7 @@ impl<'de> Deserialize<'de> for Hasher { struct Sha256WrapperVisitor; impl<'de> serde::de::Visitor<'de> for Sha256WrapperVisitor { - type Value = Hasher; + type Value = TreeHasher; fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { formatter.write_str("a Sha256Wrapper") @@ -45,24 +45,10 @@ impl<'de> Deserialize<'de> for Hasher { where A: serde::de::SeqAccess<'de>, { - Ok(Hasher::default()) + Ok(TreeHasher::default()) } } deserializer.deserialize_tuple_struct("Sha256Wrapper", 0, Sha256WrapperVisitor) } } - -impl SimpleHasher for Hasher { - fn new() -> Self { - Self::new() - } - - fn update(&mut self, data: &[u8]) { - self.update(data); - } - - fn finalize(self) -> [u8; 32] { - self.finalize() - } -} diff --git a/crates/common/src/tree/key_directory_tree.rs b/crates/tree/src/key_directory_tree.rs similarity index 84% rename from crates/common/src/tree/key_directory_tree.rs rename to crates/tree/src/key_directory_tree.rs index 9ca02cce..c7fd2483 100644 --- a/crates/common/src/tree/key_directory_tree.rs +++ b/crates/tree/src/key_directory_tree.rs @@ -4,12 +4,12 @@ use jmt::{ storage::{NodeBatch, TreeReader, TreeUpdateBatch, TreeWriter}, JellyfishMerkleTree, KeyHash, RootHash, }; +use prism_common::digest::Digest; use std::sync::Arc; -use crate::{digest::Digest, hasher::Hasher}; +use crate::hasher::TreeHasher; -pub const SPARSE_MERKLE_PLACEHOLDER_HASH: Digest = - Digest::new(*b"SPARSE_MERKLE_PLACEHOLDER_HASH__"); +pub const SPARSE_MERKLE_PLACEHOLDER_HASH: KeyHash = KeyHash(*b"SPARSE_MERKLE_PLACEHOLDER_HASH__"); /// Wraps a [`JellyfishMerkleTree`] to provide a key-value store for [`Hashchain`]s with batched insertions. /// This is prism's primary data structure for storing and retrieving [`Hashchain`]s. @@ -17,7 +17,7 @@ pub struct KeyDirectoryTree where S: TreeReader + TreeWriter, { - pub(crate) jmt: JellyfishMerkleTree, Hasher>, + pub(crate) jmt: JellyfishMerkleTree, TreeHasher>, pub(crate) epoch: u64, pending_batch: Option, db: Arc, @@ -30,7 +30,7 @@ where pub fn new(store: Arc) -> Self { let tree = Self { db: store.clone(), - jmt: JellyfishMerkleTree::, Hasher>::new(store), + jmt: JellyfishMerkleTree::, TreeHasher>::new(store), pending_batch: None, epoch: 0, }; @@ -48,7 +48,7 @@ where } Self { db: store.clone(), - jmt: JellyfishMerkleTree::, Hasher>::new(store), + jmt: JellyfishMerkleTree::, TreeHasher>::new(store), pending_batch: None, epoch, } diff --git a/crates/tree/src/lib.rs b/crates/tree/src/lib.rs new file mode 100644 index 00000000..70ecf12f --- /dev/null +++ b/crates/tree/src/lib.rs @@ -0,0 +1,20 @@ +pub mod hasher; +pub mod key_directory_tree; +pub mod proofs; +pub mod snarkable_tree; + +use prism_common::hashchain::Hashchain; +use proofs::{MembershipProof, NonMembershipProof}; + +/// Enumerates possible responses when fetching tree values +#[derive(Debug)] +pub enum HashchainResponse { + /// When a hashchain was found, provides the value and its corresponding membership-proof + Found(Hashchain, MembershipProof), + + /// When no hashchain was found for a specific key, provides the corresponding non-membership-proof + NotFound(NonMembershipProof), +} + +#[cfg(test)] +mod tests; diff --git a/crates/common/src/tree/proofs.rs b/crates/tree/src/proofs.rs similarity index 82% rename from crates/common/src/tree/proofs.rs rename to crates/tree/src/proofs.rs index e9957022..e1d64109 100644 --- a/crates/common/src/tree/proofs.rs +++ b/crates/tree/src/proofs.rs @@ -3,15 +3,14 @@ use jmt::{ proof::{SparseMerkleProof, UpdateMerkleProof}, KeyHash, RootHash, }; -use prism_serde::binary::ToBinary; -use serde::{Deserialize, Serialize}; -use std::convert::Into; - -use crate::{ +use prism_common::{ digest::Digest, hashchain::{Hashchain, HashchainEntry}, - hasher::Hasher, }; +use prism_serde::binary::ToBinary; +use serde::{Deserialize, Serialize}; + +use crate::hasher::TreeHasher; #[derive(Serialize, Deserialize)] /// Represents a contiguous stream of [`Proof`]s leading from [`Batch::prev_root`] to [`Batch::new_root`]. @@ -43,7 +42,7 @@ pub struct InsertProof { /// Post-insertion root hash of the tree pub new_root: Digest, /// Proof that the new hashchain is correctly inserted into the tree - pub membership_proof: SparseMerkleProof, + pub membership_proof: SparseMerkleProof, /// The new hashchain entry that was inserted. pub new_entry: HashchainEntry, @@ -58,7 +57,7 @@ impl InsertProof { let serialized_hashchain = hashchain.encode_to_bytes()?; self.membership_proof.clone().verify_existence( - self.new_root.into(), + RootHash(self.new_root.0), self.non_membership_proof.key, serialized_hashchain, )?; @@ -70,17 +69,17 @@ impl InsertProof { #[derive(Debug, Clone, Serialize, Deserialize)] /// Represents an update proof for an existing [`Hashchain`], updating it with a new [`HashchainEntry`]. pub struct UpdateProof { - pub old_root: RootHash, - pub new_root: RootHash, + pub old_root: Digest, + pub new_root: Digest, pub key: KeyHash, pub old_hashchain: Hashchain, pub new_entry: HashchainEntry, /// Inclusion proof of [`UpdateProof::old_hashchain`] - pub inclusion_proof: SparseMerkleProof, + pub inclusion_proof: SparseMerkleProof, /// Update proof for [`UpdateProof::key`] to be updated with [`UpdateProof::new_entry`] - pub update_proof: UpdateMerkleProof, + pub update_proof: UpdateMerkleProof, } impl UpdateProof { @@ -89,7 +88,11 @@ impl UpdateProof { // Verify existence of old value. // Otherwise, any arbitrary hashchain could be set as old_hashchain. let old_serialized_hashchain = self.old_hashchain.encode_to_bytes()?; - self.inclusion_proof.verify_existence(self.old_root, self.key, old_serialized_hashchain)?; + self.inclusion_proof.verify_existence( + RootHash(self.old_root.0), + self.key, + old_serialized_hashchain, + )?; let mut hashchain_after_update = self.old_hashchain.clone(); // Append the new entry and verify it's validity @@ -98,8 +101,8 @@ impl UpdateProof { // Ensure the update proof corresponds to the new hashchain value let new_serialized_hashchain = hashchain_after_update.encode_to_bytes()?; self.update_proof.clone().verify_update( - self.old_root, - self.new_root, + RootHash(self.old_root.0), + RootHash(self.new_root.0), vec![(self.key, Some(new_serialized_hashchain))], )?; @@ -110,7 +113,7 @@ impl UpdateProof { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MembershipProof { pub root: Digest, - pub proof: SparseMerkleProof, + pub proof: SparseMerkleProof, pub key: KeyHash, pub value: Hashchain, } @@ -118,19 +121,19 @@ pub struct MembershipProof { impl MembershipProof { pub fn verify(&self) -> Result<()> { let value = self.value.encode_to_bytes()?; - self.proof.verify_existence(self.root.into(), self.key, value) + self.proof.verify_existence(RootHash(self.root.0), self.key, value) } } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct NonMembershipProof { pub root: Digest, - pub proof: SparseMerkleProof, + pub proof: SparseMerkleProof, pub key: KeyHash, } impl NonMembershipProof { pub fn verify(&self) -> Result<()> { - self.proof.verify_nonexistence(self.root.into(), self.key) + self.proof.verify_nonexistence(RootHash(self.root.0), self.key) } } diff --git a/crates/common/src/tree/snarkable_tree.rs b/crates/tree/src/snarkable_tree.rs similarity index 89% rename from crates/common/src/tree/snarkable_tree.rs rename to crates/tree/src/snarkable_tree.rs index f49edb71..fe53750f 100644 --- a/crates/common/src/tree/snarkable_tree.rs +++ b/crates/tree/src/snarkable_tree.rs @@ -3,17 +3,22 @@ use jmt::{ storage::{TreeReader, TreeWriter}, KeyHash, }; +use log::debug; use prism_errors::DatabaseError; use prism_serde::binary::{FromBinary, ToBinary}; -use std::convert::Into; -use crate::{ +use prism_common::{ digest::Digest, hashchain::{Hashchain, HashchainEntry}, - hasher::Hasher, operation::{Operation, ServiceChallenge, ServiceChallengeInput}, transaction::Transaction, - tree::{HashchainResponse::*, *}, +}; + +use crate::{ + hasher::TreeHasher, + key_directory_tree::KeyDirectoryTree, + proofs::{InsertProof, MembershipProof, NonMembershipProof, Proof, UpdateProof}, + HashchainResponse::{self, *}, }; /// Represents a tree that can be used to verifiably store and retrieve [`Hashchain`]s. @@ -28,12 +33,12 @@ pub trait SnarkableTree: Send + Sync { impl SnarkableTree for KeyDirectoryTree where - S: Send + Sync + TreeReader + TreeWriter, + S: TreeReader + TreeWriter + Send + Sync, { fn process_transaction(&mut self, transaction: Transaction) -> Result { match &transaction.entry.operation { Operation::AddKey { .. } | Operation::RevokeKey { .. } | Operation::AddData { .. } => { - let key_hash = KeyHash::with::(&transaction.id); + let key_hash = KeyHash::with::(&transaction.id); debug!("updating hashchain for user id {}", transaction.id); let proof = self.update(key_hash, transaction.entry)?; @@ -51,7 +56,7 @@ where "Id of transaction needs to be equal to operation id" ); - let account_key_hash = KeyHash::with::(id); + let account_key_hash = KeyHash::with::(id); // Verify that the account doesn't already exist if matches!(self.get(account_key_hash)?, Found(_, _)) { @@ -61,7 +66,7 @@ where ))); } - let service_key_hash = KeyHash::with::(service_id); + let service_key_hash = KeyHash::with::(service_id); let Found(service_hashchain, _) = self.get(service_key_hash)? else { bail!("Failed to get hashchain for service ID {}", service_id); @@ -98,7 +103,7 @@ where "Id of transaction needs to be equal to operation id" ); - let key_hash = KeyHash::with::(id); + let key_hash = KeyHash::with::(id); debug!("creating new hashchain for service id {}", id); @@ -109,13 +114,13 @@ where } fn insert(&mut self, key: KeyHash, entry: HashchainEntry) -> Result { - let old_root = self.get_current_root()?; + let old_root = self.get_commitment()?; let (None, non_membership_merkle_proof) = self.jmt.get_with_proof(key, self.epoch)? else { bail!("Key already exists"); }; let non_membership_proof = NonMembershipProof { - root: old_root.into(), + root: old_root, proof: non_membership_merkle_proof, key, }; @@ -133,7 +138,7 @@ where let (_, membership_proof) = self.jmt.get_with_proof(key, self.epoch)?; Ok(InsertProof { - new_root: new_root.into(), + new_root: Digest(new_root.0), new_entry: entry, non_membership_proof, membership_proof, @@ -163,8 +168,8 @@ where self.write_batch()?; Ok(UpdateProof { - old_root, - new_root, + old_root: Digest(old_root.0), + new_root: Digest(new_root.0), inclusion_proof, old_hashchain, key, @@ -174,7 +179,7 @@ where } fn get(&self, key: KeyHash) -> Result { - let root = self.get_current_root()?.into(); + let root = self.get_commitment()?; let (value, proof) = self.jmt.get_with_proof(key, self.epoch)?; match value { diff --git a/crates/tree/src/tests.rs b/crates/tree/src/tests.rs new file mode 100644 index 00000000..1637ea90 --- /dev/null +++ b/crates/tree/src/tests.rs @@ -0,0 +1,304 @@ +use std::sync::Arc; + +use jmt::{mock::MockTreeStore, KeyHash}; +use prism_common::transaction_builder::TransactionBuilder; +use prism_keys::SigningKey; + +use crate::{ + hasher::TreeHasher, key_directory_tree::KeyDirectoryTree, proofs::Proof, + snarkable_tree::SnarkableTree, HashchainResponse::*, +}; + +#[test] +fn test_insert_and_get() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + let Proof::Insert(insert_proof) = tree.process_transaction(service_tx).unwrap() else { + panic!("Processing transaction did not return the expected insert proof"); + }; + assert!(insert_proof.verify().is_ok()); + + let account_tx = + tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); + + let Proof::Insert(insert_proof) = tree.process_transaction(account_tx).unwrap() else { + panic!("Processing transaction did not return the expected insert proof"); + }; + assert!(insert_proof.verify().is_ok()); + + let Found(hashchain, membership_proof) = + tree.get(KeyHash::with::("acc_1")).unwrap() + else { + panic!("Expected hashchain to be found, but was not found.") + }; + + let test_hashchain = + tx_builder.get_hashchain("acc_1").expect("Getting builder hashchain should work"); + + assert_eq!(&hashchain, test_hashchain); + assert!(membership_proof.verify().is_ok()); +} + +#[test] +fn test_insert_for_nonexistent_service_fails() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_signing_key = SigningKey::new_ed25519(); + + let invalid_account_tx = tx_builder + .create_account_with_random_key( + "acc_1", + "service_id_that_does_not_exist", + &service_signing_key, + ) + .build(); + + let insertion_result = tree.process_transaction(invalid_account_tx); + assert!(insertion_result.is_err()); +} + +#[test] +fn test_insert_with_invalid_service_challenge_fails() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + + // The correct way was to use the key from service registration, + // but here we want things to break + let incorrect_service_signing_key = SigningKey::new_ed25519(); + + let initial_acc_signing_key = SigningKey::new_ed25519(); + + let acc_with_invalid_challenge_tx = tx_builder + .create_account( + "key_1", + "service_1", + &incorrect_service_signing_key, + initial_acc_signing_key, + ) + .build(); + + let Proof::Insert(insert_proof) = tree.process_transaction(service_tx).unwrap() else { + panic!("Processing service registration failed") + }; + assert!(insert_proof.verify().is_ok()); + + let create_account_result = tree.process_transaction(acc_with_invalid_challenge_tx); + assert!(create_account_result.is_err()); +} + +#[test] +fn test_insert_duplicate_key() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + let account_tx = + tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); + let account_with_same_id_tx = + tx_builder.create_account_with_random_key_signed("acc_1", "service_1").build(); + + let Proof::Insert(insert_proof) = tree.process_transaction(service_tx).unwrap() else { + panic!("Processing service registration failed") + }; + assert!(insert_proof.verify().is_ok()); + + let Proof::Insert(insert_proof) = tree.process_transaction(account_tx).unwrap() else { + panic!("Processing Account creation failed") + }; + assert!(insert_proof.verify().is_ok()); + + let create_acc_with_same_id_result = tree.process_transaction(account_with_same_id_tx); + assert!(create_acc_with_same_id_result.is_err()); +} + +#[test] +fn test_update_existing_key() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + let acc_tx = tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); + + tree.process_transaction(service_tx).unwrap(); + tree.process_transaction(acc_tx).unwrap(); + + let key_tx = tx_builder.add_random_key_verified_with_root("acc_1").commit(); + + let Proof::Update(update_proof) = tree.process_transaction(key_tx).unwrap() else { + panic!("Processing key update failed") + }; + assert!(update_proof.verify().is_ok()); + + let get_result = tree.get(KeyHash::with::("acc_1")).unwrap(); + let test_hashchain = tx_builder.get_hashchain("acc_1").unwrap(); + + assert!(matches!(get_result, Found(hc, _) if &hc == test_hashchain)); +} + +#[test] +fn test_update_non_existing_key() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + + tree.process_transaction(service_tx).unwrap(); + + // This is a signing key not known to the storage yet + let random_signing_key = SigningKey::new_ed25519(); + // This transaction shall be invalid, because it is signed with an unknown key + let invalid_key_tx = tx_builder.add_random_key("acc_1", &random_signing_key, 0).build(); + + let result = tree.process_transaction(invalid_key_tx); + assert!(result.is_err()); +} + +#[test] +fn test_get_non_existing_key() { + let tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + + let result = tree.get(KeyHash::with::("non_existing_id")).unwrap(); + + let NotFound(non_membership_proof) = result else { + panic!("Hashchain found for key while it was expected to be missing"); + }; + + assert!(non_membership_proof.verify().is_ok()); +} + +#[test] +fn test_multiple_inserts_and_updates() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + let acc1_tx = tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); + let acc2_tx = tx_builder.create_account_with_random_key_signed("acc_2", "service_1").commit(); + + tree.process_transaction(service_tx).unwrap(); + + tree.process_transaction(acc1_tx).unwrap(); + tree.process_transaction(acc2_tx).unwrap(); + + // Do insert and update accounts using the correct key indices + let key_1_tx = tx_builder.add_random_key_verified_with_root("acc_1").commit(); + tree.process_transaction(key_1_tx).unwrap(); + + let data_1_tx = + tx_builder.add_unsigned_data_verified_with_root("acc_2", b"unsigned".to_vec()).commit(); + tree.process_transaction(data_1_tx).unwrap(); + + let data_2_tx = tx_builder + .add_randomly_signed_data_verified_with_root("acc_2", b"signed".to_vec()) + .commit(); + tree.process_transaction(data_2_tx).unwrap(); + + let get_result1 = tree.get(KeyHash::with::("acc_1")).unwrap(); + let get_result2 = tree.get(KeyHash::with::("acc_2")).unwrap(); + + let test_hashchain_acc1 = tx_builder.get_hashchain("acc_1").unwrap(); + let test_hashchain_acc2 = tx_builder.get_hashchain("acc_2").unwrap(); + + assert!(matches!(get_result1, Found(hc, _) if &hc == test_hashchain_acc1)); + assert!(matches!(get_result2, Found(hc, _) if &hc == test_hashchain_acc2)); +} + +#[test] +fn test_interleaved_inserts_and_updates() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + let acc1_tx = tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); + let acc2_tx = tx_builder.create_account_with_random_key_signed("acc_2", "service_1").commit(); + + tree.process_transaction(service_tx).unwrap(); + tree.process_transaction(acc1_tx).unwrap(); + + let add_key_to_1_tx = tx_builder.add_random_key_verified_with_root("acc_1").commit(); + tree.process_transaction(add_key_to_1_tx).unwrap(); + + tree.process_transaction(acc2_tx).unwrap(); + + let add_key_to_2_tx = tx_builder.add_random_key_verified_with_root("acc_2").commit(); + let last_proof = tree.process_transaction(add_key_to_2_tx).unwrap(); + + // Update account_2 using the correct key index + let Proof::Update(update_proof) = last_proof else { + panic!("Expetced insert proof for transaction"); + }; + + let get_result1 = tree.get(KeyHash::with::("acc_1")).unwrap(); + let get_result2 = tree.get(KeyHash::with::("acc_2")).unwrap(); + + let test_hashchain_acc1 = tx_builder.get_hashchain("acc_1").unwrap(); + let test_hashchain_acc2 = tx_builder.get_hashchain("acc_2").unwrap(); + + assert!(matches!(get_result1, Found(hc, _) if &hc == test_hashchain_acc1)); + assert!(matches!(get_result2, Found(hc, _) if &hc == test_hashchain_acc2)); + assert_eq!(update_proof.new_root, tree.get_commitment().unwrap()); +} + +#[test] +fn test_root_hash_changes() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + let account1_tx = + tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); + + tree.process_transaction(service_tx).unwrap(); + + let root_before = tree.get_current_root().unwrap(); + tree.process_transaction(account1_tx).unwrap(); + let root_after = tree.get_current_root().unwrap(); + + assert_ne!(root_before, root_after); +} + +#[test] +fn test_batch_writing() { + let mut tree = KeyDirectoryTree::new(Arc::new(MockTreeStore::default())); + let mut tx_builder = TransactionBuilder::new(); + + let service_tx = tx_builder.register_service_with_random_keys("service_1").commit(); + let account1_tx = + tx_builder.create_account_with_random_key_signed("acc_1", "service_1").commit(); + let account2_tx = + tx_builder.create_account_with_random_key_signed("acc_2", "service_1").commit(); + + tree.process_transaction(service_tx).unwrap(); + + println!("Inserting acc_1"); + tree.process_transaction(account1_tx).unwrap(); + + println!("Tree state after first insert: {:?}", tree.get_commitment()); + + // Try to get the first value immediately + let get_result1 = tree.get(KeyHash::with::("acc_1")); + println!("Get result for key1 after first write: {:?}", get_result1); + + println!("Inserting acc_2"); + tree.process_transaction(account2_tx).unwrap(); + + println!("Tree state after 2nd insert: {:?}", tree.get_commitment()); + + // Try to get both values + let get_result1 = tree.get(KeyHash::with::("acc_1")).unwrap(); + let get_result2 = tree.get(KeyHash::with::("acc_2")).unwrap(); + + println!("Final get result for key1: {:?}", get_result1); + println!("Final get result for key2: {:?}", get_result2); + + let test_hashchain_acc1 = tx_builder.get_hashchain("acc_1").unwrap(); + let test_hashchain_acc2 = tx_builder.get_hashchain("acc_2").unwrap(); + + assert!(matches!(get_result1, Found(hc, _) if &hc == test_hashchain_acc1)); + assert!(matches!(get_result2, Found(hc, _) if &hc == test_hashchain_acc2)); +} diff --git a/crates/zk/sp1/Cargo.toml b/crates/zk/sp1/Cargo.toml index 593f4140..9d31d519 100644 --- a/crates/zk/sp1/Cargo.toml +++ b/crates/zk/sp1/Cargo.toml @@ -8,4 +8,5 @@ repository.workspace = true [dependencies] prism-common = { workspace = true } +prism-tree = { workspace = true } sp1-zkvm = { workspace = true } diff --git a/crates/zk/sp1/src/main.rs b/crates/zk/sp1/src/main.rs index 5669ef0b..2b0e0041 100644 --- a/crates/zk/sp1/src/main.rs +++ b/crates/zk/sp1/src/main.rs @@ -1,10 +1,8 @@ #![no_main] sp1_zkvm::entrypoint!(main); -use prism_common::{ - digest::Digest, - tree::{Batch, Proof}, -}; +use prism_common::digest::Digest; +use prism_tree::proofs::{Batch, Proof}; pub fn main() { let batch = sp1_zkvm::io::read::(); @@ -14,12 +12,12 @@ pub fn main() { for proof in batch.proofs.iter() { match proof { Proof::Update(p) => { - assert_eq!(current, Digest::new(p.old_root.into())); + assert_eq!(current, Digest::new(p.old_root.0)); assert!(p.verify().is_ok()); - current = Digest::new(p.new_root.into()); + current = Digest::new(p.new_root.0); } Proof::Insert(p) => { - assert_eq!(current, p.non_membership_proof.root); + assert_eq!(current, Digest::new(p.non_membership_proof.root.0)); assert!(p.verify().is_ok()); current = p.new_root; } diff --git a/elf/riscv32im-succinct-zkvm-elf b/elf/riscv32im-succinct-zkvm-elf index ccb2b931fe455d1070ae2e941a6451392a28fd93..aed78087b0a4463a6400444460fd7832931f32b4 100755 GIT binary patch delta 243833 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�+fQO(; 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 ug_}upWL==>rq6Xl4Cg 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