From d6087aa652cdade57b90448692beeb7328cdcc61 Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Tue, 17 Dec 2024 21:58:20 +0100 Subject: [PATCH 1/9] feat: replacing Hashchain with Account --- crates/common/src/account.rs | 151 ++++++++ crates/common/src/hashchain.rs | 375 ------------------- crates/common/src/lib.rs | 2 +- crates/common/src/operation.rs | 23 +- crates/common/src/transaction.rs | 29 +- crates/common/src/transaction_builder.rs | 157 ++++---- crates/node_types/prover/src/prover/mod.rs | 20 +- crates/node_types/prover/src/prover/tests.rs | 5 +- crates/node_types/prover/src/webserver.rs | 62 +-- crates/tree/src/key_directory_tree.rs | 4 +- crates/tree/src/lib.rs | 10 +- crates/tree/src/proofs.rs | 51 ++- crates/tree/src/snarkable_tree.rs | 76 ++-- crates/tree/src/tests.rs | 50 +-- 14 files changed, 394 insertions(+), 621 deletions(-) create mode 100644 crates/common/src/account.rs delete mode 100644 crates/common/src/hashchain.rs diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs new file mode 100644 index 00000000..b9e6abec --- /dev/null +++ b/crates/common/src/account.rs @@ -0,0 +1,151 @@ +use anyhow::{anyhow, Result}; +use prism_keys::{Signature, SigningKey, VerifyingKey}; +use serde::{Deserialize, Serialize}; + +use crate::{ + operation::{Operation, ServiceChallenge}, + transaction::Transaction, +}; + +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Hash, Default)] +pub struct Account { + pub id: String, + pub nonce: u64, + pub valid_keys: Vec, + pub signed_data: Vec<(VerifyingKey, Vec)>, + + /// Only set when the account is a service + pub service_challenge: Option, +} + +impl Account { + pub fn prepare_transaction( + &self, + operation: Operation, + sk: &SigningKey, + ) -> Result { + let vk = sk.verifying_key(); + match operation { + Operation::CreateAccount { .. } | Operation::RegisterService { .. } => {} + _ => { + if !self.valid_keys.contains(&vk) { + return Err(anyhow!("Invalid key")); + } + } + } + + let mut tx = Transaction { + id: self.id.clone(), + nonce: self.nonce, + operation, + signature: Signature::Placeholder, + vk, + }; + + tx.sign(sk)?; + + Ok(tx) + } + + pub fn process_transaction(&mut self, tx: &Transaction) -> Result<()> { + self.validate_transaction(tx)?; + self.process_operation(&tx.operation)?; + self.nonce += 1; + Ok(()) + } + + pub fn validate_transaction(&self, tx: &Transaction) -> Result<()> { + if tx.nonce != self.nonce { + return Err(anyhow!( + "Nonce does not match. {} != {}", + tx.nonce, + self.nonce + )); + } + + match tx.operation { + Operation::CreateAccount { .. } | Operation::RegisterService { .. } => {} + _ => { + if tx.id != self.id { + return Err(anyhow!("Transaction ID does not match account ID")); + } + if !self.valid_keys.contains(&tx.vk) { + return Err(anyhow!("Invalid key")); + } + } + } + + let msg = tx.get_signature_payload()?; + tx.vk.verify_signature(&msg, &tx.signature)?; + + self.validate_operation(&tx.operation)?; + + Ok(()) + } + + pub fn validate_operation(&self, operation: &Operation) -> Result<()> { + match operation { + Operation::AddKey { key } => { + if self.valid_keys.contains(key) { + return Err(anyhow!("Key already exists")); + } + } + Operation::RevokeKey { key } => { + if !self.valid_keys.contains(key) { + return Err(anyhow!("Key does not exist")); + } + } + Operation::AddData { + data, + data_signature, + } => { + // if the data is externally signed + data_signature.verifying_key.verify_signature(data, &data_signature.signature)?; + } + Operation::CreateAccount { .. } | Operation::RegisterService { .. } => { + if !self.is_empty() { + return Err(anyhow!("Account already exists")); + } + } + } + Ok(()) + } + + pub fn process_operation(&mut self, operation: &Operation) -> Result<()> { + self.validate_operation(operation)?; + + match operation { + Operation::AddKey { key } => { + self.valid_keys.push(key.clone()); + } + Operation::RevokeKey { key } => { + self.valid_keys.retain(|k| k != key); + } + Operation::AddData { + data, + data_signature, + } => { + self.signed_data.push((data_signature.verifying_key.clone(), data.clone())); + } + Operation::CreateAccount { id, key, .. } => { + self.id = id.clone(); + self.valid_keys.push(key.clone()); + } + Operation::RegisterService { + id, + creation_gate, + key, + } => { + self.id = id.clone(); + self.valid_keys.push(key.clone()); + self.service_challenge = Some(creation_gate.clone()); + } + } + + Ok(()) + } + + pub fn is_empty(&self) -> bool { + self.nonce == 0 + } +} diff --git a/crates/common/src/hashchain.rs b/crates/common/src/hashchain.rs deleted file mode 100644 index 47f17670..00000000 --- a/crates/common/src/hashchain.rs +++ /dev/null @@ -1,375 +0,0 @@ -use anyhow::{anyhow, bail, ensure, Result}; -use prism_keys::{Signature, SigningKey, VerifyingKey}; -use prism_serde::binary::ToBinary; -use serde::{Deserialize, Serialize}; -use std::ops::{Deref, DerefMut}; - -use crate::{ - digest::Digest, - operation::{ - HashchainSignatureBundle, Operation, ServiceChallenge, ServiceChallengeInput, - SignatureBundle, - }, -}; - -#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] -pub struct Hashchain { - pub entries: Vec, -} - -impl IntoIterator for Hashchain { - type Item = HashchainEntry; - type IntoIter = std::vec::IntoIter; - - fn into_iter(self) -> Self::IntoIter { - self.entries.into_iter() - } -} - -impl<'a> IntoIterator for &'a Hashchain { - type Item = &'a HashchainEntry; - type IntoIter = std::slice::Iter<'a, HashchainEntry>; - - fn into_iter(self) -> Self::IntoIter { - self.entries.iter() - } -} - -impl<'a> IntoIterator for &'a mut Hashchain { - type Item = &'a mut HashchainEntry; - type IntoIter = std::slice::IterMut<'a, HashchainEntry>; - - fn into_iter(self) -> Self::IntoIter { - self.entries.iter_mut() - } -} - -impl Deref for Hashchain { - type Target = Vec; - - fn deref(&self) -> &Self::Target { - &self.entries - } -} - -impl DerefMut for Hashchain { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.entries - } -} - -impl Hashchain { - pub fn empty() -> Self { - Self { - entries: Vec::new(), - } - } - - pub fn from_entry(entry: HashchainEntry) -> Result { - let mut hc = Hashchain::empty(); - hc.add_entry(entry)?; - Ok(hc) - } - - pub fn get_key_at_index(&self, idx: usize) -> Result<&VerifyingKey> { - self.entries - .get(idx) - .and_then(|entry| entry.operation.get_public_key()) - .ok_or_else(|| anyhow!("No public key found at index {}", idx)) - } - - pub fn is_key_invalid(&self, key: &VerifyingKey) -> bool { - for entry in self.iter().rev() { - if let Some(entry_key) = entry.operation.get_public_key() { - if key.eq(entry_key) { - match entry.operation { - Operation::RevokeKey { .. } => return true, - Operation::AddKey { .. } - | Operation::CreateAccount { .. } - | Operation::RegisterService { .. } => return false, - _ => {} - } - } - } - } - true - } - - pub fn get(&self, idx: usize) -> &HashchainEntry { - &self.entries[idx] - } - - pub fn last_hash(&self) -> Digest { - self.last().map_or(Digest::zero(), |entry| entry.hash) - } - - /// Validates and adds a new entry to the hashchain. - /// This method is ran in circuit. - pub fn add_entry(&mut self, entry: HashchainEntry) -> Result<()> { - self.validate_new_entry(&entry)?; - self.entries.push(entry); - Ok(()) - } - - pub fn register_service( - &mut self, - id: String, - creation_gate: ServiceChallenge, - key: VerifyingKey, - signing_key: &SigningKey, - ) -> Result { - let entry = HashchainEntry::new_register_service(id, creation_gate, key, signing_key); - self.add_entry(entry.clone())?; - Ok(entry) - } - - pub fn create_account( - &mut self, - id: String, - service_id: String, - challenge: ServiceChallengeInput, - key: VerifyingKey, - signing_key: &SigningKey, - ) -> Result { - let entry = HashchainEntry::new_create_account(id, service_id, challenge, key, signing_key); - self.add_entry(entry.clone())?; - Ok(entry) - } - - pub fn add_key( - &mut self, - key: VerifyingKey, - signing_key: &SigningKey, - key_idx: usize, - ) -> Result { - let entry = HashchainEntry::new_add_key(key, self.last_hash(), signing_key, key_idx); - self.add_entry(entry.clone())?; - Ok(entry) - } - - pub fn revoke_key( - &mut self, - key: VerifyingKey, - signing_key: &SigningKey, - key_idx: usize, - ) -> Result { - let entry = HashchainEntry::new_revoke_key(key, self.last_hash(), signing_key, key_idx); - self.add_entry(entry.clone())?; - Ok(entry) - } - - pub fn add_data( - &mut self, - data: Vec, - data_signature: Option, - signing_key: &SigningKey, - key_idx: usize, - ) -> Result { - let entry = HashchainEntry::new_add_data( - data, - data_signature, - self.last_hash(), - signing_key, - key_idx, - ); - self.add_entry(entry.clone())?; - Ok(entry) - } - - /// Validates that the new entry is valid and can be added to the hashchain. - /// This method is ran in circuit. - fn validate_new_entry(&self, entry: &HashchainEntry) -> Result<()> { - entry.validate_operation()?; - - let last_hash = self.last_hash(); - if entry.previous_hash != last_hash { - bail!( - "Previous hash for new entry must be the last hash - prev: {}, last: {}", - entry.previous_hash, - last_hash - ) - } - - let verifying_key = self.verifying_key_for_entry(entry)?; - - match entry.operation { - Operation::CreateAccount { .. } | Operation::RegisterService { .. } => { - if !self.entries.is_empty() { - bail!("CreateAccount/RegisterService must be the first entry"); - } - } - Operation::AddData { .. } | Operation::AddKey { .. } | Operation::RevokeKey { .. } => { - if self.entries.is_empty() { - bail!("CreateAccount/RegisterService must be the first entry"); - } - - if self.is_key_invalid(verifying_key) { - bail!("Invalid key at index {}", &entry.signature_bundle.key_idx); - } - } - } - - entry.validate_hash()?; - entry.validate_signature(verifying_key) - } - - fn verifying_key_for_entry<'a>( - &'a self, - entry: &'a HashchainEntry, - ) -> Result<&'a VerifyingKey> { - match &entry.operation { - Operation::CreateAccount { key, .. } | Operation::RegisterService { key, .. } => { - Ok(key) - } - Operation::AddData { .. } | Operation::AddKey { .. } | Operation::RevokeKey { .. } => { - self.get_key_at_index(entry.signature_bundle.key_idx) - } - } - } - - pub fn is_empty(&self) -> bool { - self.entries.is_empty() - } - - pub fn len(&self) -> usize { - self.entries.len() - } -} - -#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] -// A [`HashchainEntry`] represents a single entry in an account's hashchain. -// The value in the leaf of the corresponding account's node in the IMT is the hash of the last node in the hashchain. -pub struct HashchainEntry { - pub hash: Digest, - pub previous_hash: Digest, - pub operation: Operation, - pub signature_bundle: HashchainSignatureBundle, -} - -impl HashchainEntry { - pub fn new( - operation: Operation, - previous_hash: Digest, - signing_key: &SigningKey, - key_idx: usize, - ) -> Self { - let serialized_operation = - operation.encode_to_bytes().expect("Serializing operation should work"); - let hash = - Digest::hash_items(&[serialized_operation.as_slice(), &previous_hash.to_bytes()]); - - let signature_bundle = HashchainSignatureBundle { - signature: signing_key.sign(hash.as_ref()), - key_idx, - }; - - Self { - hash, - previous_hash, - operation, - signature_bundle, - } - } - - pub fn new_genesis(operation: Operation, signing_key: &SigningKey) -> Self { - Self::new(operation, Digest::zero(), signing_key, 0) - } - - pub fn new_register_service( - id: String, - creation_gate: ServiceChallenge, - key: VerifyingKey, - signing_key: &SigningKey, - ) -> Self { - let operation = Operation::RegisterService { - id, - creation_gate, - key, - }; - Self::new_genesis(operation, signing_key) - } - - pub fn new_create_account( - id: String, - service_id: String, - challenge: ServiceChallengeInput, - key: VerifyingKey, - signing_key: &SigningKey, - ) -> Self { - let operation = Operation::CreateAccount { - id, - service_id, - challenge, - key, - }; - Self::new_genesis(operation, signing_key) - } - - pub fn new_add_key( - key: VerifyingKey, - prev_hash: Digest, - signing_key: &SigningKey, - key_idx: usize, - ) -> Self { - let operation = Operation::AddKey { key }; - Self::new(operation, prev_hash, signing_key, key_idx) - } - - pub fn new_revoke_key( - key: VerifyingKey, - prev_hash: Digest, - signing_key: &SigningKey, - key_idx: usize, - ) -> Self { - let operation = Operation::RevokeKey { key }; - Self::new(operation, prev_hash, signing_key, key_idx) - } - - pub fn new_add_data( - data: Vec, - data_signature: Option, - prev_hash: Digest, - signing_key: &SigningKey, - key_idx: usize, - ) -> Self { - let operation = Operation::AddData { - data, - data_signature, - }; - Self::new(operation, prev_hash, signing_key, key_idx) - } - - pub fn validate_hash(&self) -> Result<()> { - let pristine_entry = self.without_signature(); - - let serialized_operation = pristine_entry.operation.encode_to_bytes()?; - let pristine_entry_hash = Digest::hash_items(&[ - serialized_operation.as_slice(), - &pristine_entry.previous_hash.to_bytes(), - ]); - - ensure!( - self.hash == pristine_entry_hash, - "Hashchain entry has incorrect hash" - ); - Ok(()) - } - - pub fn validate_signature(&self, verifying_key: &VerifyingKey) -> Result<()> { - verifying_key.verify_signature(self.hash.as_ref(), &self.signature_bundle.signature) - } - - pub fn validate_operation(&self) -> Result<()> { - self.operation.validate_basic() - } - - pub fn without_signature(&self) -> Self { - Self { - signature_bundle: HashchainSignatureBundle { - key_idx: self.signature_bundle.key_idx, - signature: Signature::Placeholder, - }, - ..self.clone() - } - } -} diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index a9882db6..03d00aed 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -1,5 +1,5 @@ +pub mod account; pub mod digest; -pub mod hashchain; pub mod operation; pub mod transaction; diff --git a/crates/common/src/operation.rs b/crates/common/src/operation.rs index d62c424f..dc045831 100644 --- a/crates/common/src/operation.rs +++ b/crates/common/src/operation.rs @@ -27,7 +27,7 @@ pub enum Operation { AddData { #[serde(with = "raw_or_b64")] data: Vec, - data_signature: Option, + data_signature: SignatureBundle, }, /// Adds a key to an existing account. AddKey { key: VerifyingKey }, @@ -35,25 +35,6 @@ pub enum Operation { RevokeKey { key: VerifyingKey }, } -#[derive(Clone, Serialize, Deserialize, Default, Debug, PartialEq)] -/// Represents a signature bundle, which includes the index of the key -/// in the user's hashchain and the associated signature. -pub struct HashchainSignatureBundle { - /// Index of the key in the hashchain - pub key_idx: usize, - /// The actual signature - pub signature: Signature, -} - -impl HashchainSignatureBundle { - pub fn empty_with_idx(idx: usize) -> Self { - HashchainSignatureBundle { - key_idx: idx, - signature: Signature::Placeholder, - } - } -} - #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] /// Represents a signature including its. pub struct SignatureBundle { @@ -70,7 +51,7 @@ pub enum ServiceChallengeInput { Signed(Signature), } -#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Hash)] pub enum ServiceChallenge { Signed(VerifyingKey), } diff --git a/crates/common/src/transaction.rs b/crates/common/src/transaction.rs index 530c01e0..391d5b80 100644 --- a/crates/common/src/transaction.rs +++ b/crates/common/src/transaction.rs @@ -1,13 +1,36 @@ +use anyhow::{anyhow, Result}; use celestia_types::Blob; -use prism_serde::binary::FromBinary; +use prism_keys::{Signature, SigningKey, VerifyingKey}; +use prism_serde::binary::{FromBinary, ToBinary}; use serde::{Deserialize, Serialize}; -use crate::hashchain::HashchainEntry; +use crate::operation::Operation; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] pub struct Transaction { pub id: String, - pub entry: HashchainEntry, + pub operation: Operation, + pub nonce: u64, + pub signature: Signature, + pub vk: VerifyingKey, +} + +impl Transaction { + pub fn get_signature_payload(&self) -> Result> { + let mut tx = self.clone(); + tx.signature = Signature::Placeholder; + tx.encode_to_bytes().map_err(|e| anyhow!(e)) + } + + pub fn sign(&mut self, sk: &SigningKey) -> Result { + if let Signature::Placeholder = self.signature { + let sig = sk.sign(&self.get_signature_payload()?); + self.signature = sig.clone(); + Ok(sig) + } else { + Err(anyhow!("Transaction already signed")) + } + } } impl TryFrom<&Blob> for Transaction { diff --git a/crates/common/src/transaction_builder.rs b/crates/common/src/transaction_builder.rs index 8cba3807..5705ea4c 100644 --- a/crates/common/src/transaction_builder.rs +++ b/crates/common/src/transaction_builder.rs @@ -1,9 +1,9 @@ use std::collections::HashMap; use crate::{ + account::Account, digest::Digest, - hashchain::{Hashchain, HashchainEntry}, - operation::{ServiceChallenge, ServiceChallengeInput, SignatureBundle}, + operation::{Operation, ServiceChallenge, ServiceChallengeInput, SignatureBundle}, transaction::Transaction, }; use prism_keys::{SigningKey, VerifyingKey}; @@ -23,14 +23,10 @@ impl UncommittedTransaction<'_> { /// Commits and returns a transaction, updating the builder. Subsequent transactions /// built with the same builder will have the correct previous hash. pub fn commit(self) -> Transaction { - let hc = self - .builder - .hashchains - .entry(self.transaction.id.clone()) - .or_insert_with(Hashchain::empty); + let acc = self.builder.accounts.entry(self.transaction.id.clone()).or_default(); - hc.add_entry(self.transaction.entry.clone()) - .expect("Adding transaction entry to hashchain should work"); + acc.process_transaction(&self.transaction) + .expect("Adding transaction entry to account should work"); match self.post_commit_action { PostCommitAction::UpdateStorageOnly => (), @@ -53,8 +49,8 @@ impl UncommittedTransaction<'_> { } pub struct TransactionBuilder { - /// Simulated hashchain storage that is mutated when transactions are applied - hashchains: HashMap, + /// Simulated account storage that is mutated when transactions are applied + accounts: HashMap, /// Remembers private keys of services to simulate account creation via an external service service_keys: HashMap, /// Remembers private keys of accounts to simulate actions on behalf of these accounts @@ -63,12 +59,12 @@ pub struct TransactionBuilder { impl Default for TransactionBuilder { fn default() -> Self { - let hashchains = HashMap::new(); + let accounts = HashMap::new(); let service_keys = HashMap::new(); let account_keys = HashMap::new(); Self { - hashchains, + accounts, service_keys, account_keys, } @@ -80,8 +76,8 @@ impl TransactionBuilder { Self::default() } - pub fn get_hashchain(&self, id: &str) -> Option<&Hashchain> { - self.hashchains.get(id) + pub fn get_account(&self, id: &str) -> Option<&Account> { + self.accounts.get(id) } pub fn register_service_with_random_keys(&mut self, id: &str) -> UncommittedTransaction { @@ -97,18 +93,17 @@ impl TransactionBuilder { signing_key: SigningKey, ) -> UncommittedTransaction { let vk: VerifyingKey = signing_key.clone().into(); - let entry = HashchainEntry::new_register_service( - id.to_string(), - ServiceChallenge::from(challenge_key.clone()), - vk, - &signing_key, - ); + let op = Operation::RegisterService { + id: id.to_string(), + creation_gate: ServiceChallenge::Signed(vk.clone()), + key: vk.clone(), + }; + + let account = Account::default(); + let transaction = account.prepare_transaction(op, &signing_key).unwrap(); UncommittedTransaction { - transaction: Transaction { - id: id.to_string(), - entry, - }, + transaction, builder: self, post_commit_action: PostCommitAction::RememberServiceKey(id.to_string(), challenge_key), } @@ -158,19 +153,18 @@ impl TransactionBuilder { let hash = Digest::hash_items(&[id.as_bytes(), service_id.as_bytes(), &vk.to_bytes()]); let signature = service_signing_key.sign(&hash.to_bytes()); - let entry = HashchainEntry::new_create_account( - id.to_string(), - service_id.to_string(), - ServiceChallengeInput::Signed(signature), - vk.clone(), - &signing_key, - ); + let op = Operation::CreateAccount { + id: id.to_string(), + service_id: service_id.to_string(), + challenge: ServiceChallengeInput::Signed(signature.clone()), + key: vk.clone(), + }; + + let account = Account::default(); + let transaction = account.prepare_transaction(op, &signing_key).unwrap(); UncommittedTransaction { - transaction: Transaction { - id: id.to_string(), - entry, - }, + transaction, builder: self, post_commit_action: PostCommitAction::RememberAccountKey(id.to_string(), signing_key), } @@ -181,17 +175,12 @@ impl TransactionBuilder { panic!("No existing account key for {}", id) }; - self.add_random_key(id, &account_signing_key, 0) + self.add_random_key(id, &account_signing_key) } - pub fn add_random_key( - &mut self, - id: &str, - signing_key: &SigningKey, - key_idx: usize, - ) -> UncommittedTransaction { + pub fn add_random_key(&mut self, id: &str, signing_key: &SigningKey) -> UncommittedTransaction { let random_key = SigningKey::new_ed25519().into(); - self.add_key(id, random_key, signing_key, key_idx) + self.add_key(id, random_key, signing_key) } pub fn add_key_verified_with_root( @@ -203,7 +192,7 @@ impl TransactionBuilder { panic!("No existing account key for {}", id) }; - self.add_key(id, key, &account_signing_key, 0) + self.add_key(id, key, &account_signing_key) } pub fn add_key( @@ -211,17 +200,14 @@ impl TransactionBuilder { id: &str, key: VerifyingKey, signing_key: &SigningKey, - key_idx: usize, ) -> UncommittedTransaction { - let last_hash = self.hashchains.get(id).map_or(Digest::zero(), Hashchain::last_hash); + let account = self.accounts.get(id).cloned().unwrap_or_default(); + let op = Operation::AddKey { key: key.clone() }; - let entry = HashchainEntry::new_add_key(key, last_hash, signing_key, key_idx); + let transaction = account.prepare_transaction(op, signing_key).unwrap(); UncommittedTransaction { - transaction: Transaction { - id: id.to_string(), - entry, - }, + transaction, builder: self, post_commit_action: PostCommitAction::UpdateStorageOnly, } @@ -236,7 +222,7 @@ impl TransactionBuilder { panic!("No existing account key for {}", id) }; - self.revoke_key(id, key, &account_signing_key, 0) + self.revoke_key(id, key, &account_signing_key) } pub fn revoke_key( @@ -244,17 +230,14 @@ impl TransactionBuilder { id: &str, key: VerifyingKey, signing_key: &SigningKey, - key_idx: usize, ) -> UncommittedTransaction { - let last_hash = self.hashchains.get(id).map_or(Digest::zero(), Hashchain::last_hash); + let account = self.accounts.get(id).cloned().unwrap_or_default(); + let op = Operation::RevokeKey { key: key.clone() }; - let entry = HashchainEntry::new_revoke_key(key, last_hash, signing_key, key_idx); + let transaction = account.prepare_transaction(op, signing_key).unwrap(); UncommittedTransaction { - transaction: Transaction { - id: id.to_string(), - entry, - }, + transaction, builder: self, post_commit_action: PostCommitAction::UpdateStorageOnly, } @@ -265,10 +248,9 @@ impl TransactionBuilder { id: &str, value: Vec, signing_key: &SigningKey, - key_idx: usize, ) -> UncommittedTransaction { let value_signing_key = SigningKey::new_ed25519(); - self.add_signed_data(id, value, &value_signing_key, signing_key, key_idx) + self.add_signed_data(id, value, &value_signing_key, signing_key) } pub fn add_randomly_signed_data_verified_with_root( @@ -286,13 +268,12 @@ impl TransactionBuilder { value: Vec, value_signing_key: &SigningKey, signing_key: &SigningKey, - key_idx: usize, ) -> UncommittedTransaction { let value_signature_bundle = SignatureBundle { verifying_key: value_signing_key.verifying_key(), signature: value_signing_key.sign(&value), }; - self.add_pre_signed_data(id, value, value_signature_bundle, signing_key, key_idx) + self.add_pre_signed_data(id, value, value_signature_bundle, signing_key) } pub fn add_signed_data_verified_with_root( @@ -314,9 +295,8 @@ impl TransactionBuilder { value: Vec, value_signature: SignatureBundle, signing_key: &SigningKey, - key_idx: usize, ) -> UncommittedTransaction { - self.add_data(id, value, Some(value_signature), signing_key, key_idx) + self.add_data(id, value, value_signature, signing_key) } pub fn add_pre_signed_data_verified_with_root( @@ -325,58 +305,69 @@ impl TransactionBuilder { value: Vec, value_signature: SignatureBundle, ) -> UncommittedTransaction { - self.add_data_verified_with_root(id, value, Some(value_signature)) + self.add_data_verified_with_root(id, value, value_signature) } - pub fn add_unsigned_data( + pub fn add_internally_signed_data( &mut self, id: &str, value: Vec, signing_key: &SigningKey, - key_idx: usize, ) -> UncommittedTransaction { - self.add_data(id, value, None, signing_key, key_idx) + let bundle = SignatureBundle { + verifying_key: signing_key.verifying_key(), + signature: signing_key.sign(&value), + }; + self.add_data(id, value, bundle, signing_key) } - pub fn add_unsigned_data_verified_with_root( + pub fn add_internally_signed_data_verified_with_root( &mut self, id: &str, value: Vec, ) -> UncommittedTransaction { - self.add_data_verified_with_root(id, value, None) + let Some(account_signing_key) = self.account_keys.get(id).cloned() else { + panic!("No existing account key for {}", id) + }; + + let bundle = SignatureBundle { + verifying_key: account_signing_key.verifying_key(), + signature: account_signing_key.sign(&value), + }; + + self.add_data_verified_with_root(id, value, bundle) } fn add_data_verified_with_root( &mut self, id: &str, value: Vec, - value_signature: Option, + value_signature: SignatureBundle, ) -> UncommittedTransaction { let Some(account_signing_key) = self.account_keys.get(id).cloned() else { panic!("No existing account key for {}", id) }; - self.add_data(id, value, value_signature, &account_signing_key, 0) + self.add_data(id, value, value_signature, &account_signing_key) } fn add_data( &mut self, id: &str, data: Vec, - data_signature: Option, + data_signature: SignatureBundle, signing_key: &SigningKey, - key_idx: usize, ) -> UncommittedTransaction { - let last_hash = self.hashchains.get(id).map_or(Digest::zero(), Hashchain::last_hash); + let account = self.accounts.get(id).cloned().unwrap_or_default(); + let op = Operation::AddData { + data, + data_signature, + }; - let entry = - HashchainEntry::new_add_data(data, data_signature, last_hash, signing_key, key_idx); + let transaction = account.prepare_transaction(op, signing_key).unwrap(); UncommittedTransaction { - transaction: Transaction { - id: id.to_string(), - entry, - }, + transaction, builder: self, post_commit_action: PostCommitAction::UpdateStorageOnly, } diff --git a/crates/node_types/prover/src/prover/mod.rs b/crates/node_types/prover/src/prover/mod.rs index 988da1da..8e50db8a 100644 --- a/crates/node_types/prover/src/prover/mod.rs +++ b/crates/node_types/prover/src/prover/mod.rs @@ -2,7 +2,7 @@ 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, transaction::Transaction}; +use prism_common::{account::Account, digest::Digest, transaction::Transaction}; use prism_errors::DataAvailabilityError; use prism_storage::database::Database; use prism_tree::{ @@ -10,7 +10,7 @@ use prism_tree::{ key_directory_tree::KeyDirectoryTree, proofs::{Batch, Proof}, snarkable_tree::SnarkableTree, - HashchainResponse::{self, *}, + AccountResponse::{self, *}, }; use std::{self, collections::VecDeque, sync::Arc}; use tokio::{ @@ -454,7 +454,7 @@ impl Prover { tree.get_commitment().context("Failed to get commitment") } - pub async fn get_hashchain(&self, id: &String) -> Result { + pub async fn get_account(&self, id: &String) -> Result { let tree = self.tree.read().await; let key_hash = KeyHash::with::(id); @@ -476,19 +476,19 @@ impl Prover { bail!("Batcher is disabled, cannot queue transactions"); } - // validate against existing hashchain if necessary, including signature checks - match transaction.entry.operation { + // validate against existing account if necessary, including signature checks + match transaction.operation { Operation::RegisterService { .. } | Operation::CreateAccount { .. } => { - Hashchain::empty().add_entry(transaction.entry.clone())? + Account::default().validate_transaction(&transaction)?; } Operation::AddKey { .. } | Operation::RevokeKey { .. } | Operation::AddData { .. } => { - let hc_response = self.get_hashchain(&transaction.id).await?; + let account_response = self.get_account(&transaction.id).await?; - let Found(mut hc, _) = hc_response else { - bail!("Hashchain not found for id: {}", transaction.id) + let Found(account, _) = account_response else { + bail!("Account not found for id: {}", transaction.id) }; - hc.add_entry(transaction.entry.clone())?; + account.validate_transaction(&transaction)?; } }; diff --git a/crates/node_types/prover/src/prover/tests.rs b/crates/node_types/prover/src/prover/tests.rs index cf6618bc..90034736 100644 --- a/crates/node_types/prover/src/prover/tests.rs +++ b/crates/node_types/prover/src/prover/tests.rs @@ -77,9 +77,8 @@ async fn test_process_transactions() { let revoke_transaction = transaction_builder .revoke_key( "test_account", - create_account_transaction.entry.operation.get_public_key().cloned().unwrap(), + create_account_transaction.operation.get_public_key().cloned().unwrap(), &new_key, - 1, ) .commit(); let proof = prover.process_transaction(revoke_transaction).await.unwrap(); @@ -104,7 +103,7 @@ async fn test_execute_block_with_invalid_tx() { tx_builder.revoke_key_verified_with_root("account_id", new_key_vk).commit(), // and adding in same block. // both of these transactions are valid individually, but when processed together it will fail. - tx_builder.add_random_key("account_id", &new_key_1, 1).build(), + tx_builder.add_random_key("account_id", &new_key_1).build(), ]; let proofs = prover.execute_block(transactions).await.unwrap(); diff --git a/crates/node_types/prover/src/webserver.rs b/crates/node_types/prover/src/webserver.rs index 81a69f3b..85fc3439 100644 --- a/crates/node_types/prover/src/webserver.rs +++ b/crates/node_types/prover/src/webserver.rs @@ -9,14 +9,13 @@ use axum::{ }; use jmt::proof::{SparseMerkleNode, SparseMerkleProof}; use prism_common::{ - digest::Digest, - hashchain::{Hashchain, HashchainEntry}, - transaction::Transaction, + account::Account, digest::Digest, operation::Operation, transaction::Transaction, }; +use prism_keys::{Signature, VerifyingKey}; use prism_tree::{ hasher::TreeHasher, proofs::{Proof, UpdateProof}, - HashchainResponse, + AccountResponse, }; use serde::{Deserialize, Serialize}; use std::{self, sync::Arc}; @@ -57,7 +56,22 @@ pub struct EpochData { #[derive(Deserialize, Debug, ToSchema)] pub struct TransactionRequest { pub id: String, - pub entry: HashchainEntry, + pub operation: Operation, + pub nonce: u64, + pub signature: Signature, + pub vk: VerifyingKey, +} + +impl From for Transaction { + fn from(tx: TransactionRequest) -> Self { + Transaction { + id: tx.id, + operation: tx.operation, + nonce: tx.nonce, + signature: tx.signature, + vk: tx.vk, + } + } } #[derive(Serialize, Deserialize, ToSchema)] @@ -73,7 +87,7 @@ pub struct UserKeyRequest { #[derive(Serialize, Deserialize, ToSchema)] pub struct UserKeyResponse { - pub hashchain: Option, + pub account: Option, pub proof: JmtProofResponse, } @@ -101,7 +115,7 @@ impl From> for JmtProofResponse { #[derive(OpenApi)] #[openapi( - paths(post_transaction, get_hashchain, get_commitment), + paths(post_transaction, get_account, get_commitment), components(schemas( TransactionRequest, EpochData, @@ -126,7 +140,7 @@ impl WebServer { let app = Router::new() .route("/transaction", post(post_transaction)) - .route("/get-hashchain", post(get_hashchain)) + .route("/get-account", post(get_account)) .route("/get-current-commitment", get(get_commitment)) .merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi())) .layer(CorsLayer::permissive()) @@ -162,13 +176,9 @@ impl WebServer { )] async fn post_transaction( State(session): State>, - Json(update_input): Json, + Json(tx_request): Json, ) -> impl IntoResponse { - let transaction = Transaction { - id: update_input.id.clone(), - entry: update_input.entry.clone(), - }; - match session.validate_and_queue_update(transaction).await { + match session.validate_and_queue_update(tx_request.into()).await { Ok(_) => ( StatusCode::OK, "Entry update queued for insertion into next epoch", @@ -182,48 +192,48 @@ async fn post_transaction( } } -/// The /get-hashchain endpoint returns all added keys for a given user id. +/// The /get-account endpoint returns all added keys for a given user id. /// /// If the ID is not found in the database, the endpoint will return a 400 response with the message "Could not calculate values". /// #[utoipa::path( post, - path = "/get-hashchain", + path = "/get-account", request_body = UserKeyRequest, responses( (status = 200, description = "Successfully retrieved valid keys", body = UpdateKeyResponse), (status = 400, description = "Bad request") ) )] -async fn get_hashchain( +async fn get_account( State(session): State>, Json(request): Json, ) -> impl IntoResponse { - let get_hashchain_result = session.get_hashchain(&request.id).await; - let Ok(hashchain_response) = get_hashchain_result else { + let get_account_result = session.get_account(&request.id).await; + let Ok(account_response) = get_account_result else { return ( StatusCode::INTERNAL_SERVER_ERROR, format!( - "Failed to retrieve hashchain or non-membership-proof: {}", - get_hashchain_result.unwrap_err() + "Failed to retrieve account or non-membership-proof: {}", + get_account_result.unwrap_err() ), ) .into_response(); }; - match hashchain_response { - HashchainResponse::Found(hashchain, membership_proof) => ( + match account_response { + AccountResponse::Found(account, membership_proof) => ( StatusCode::OK, Json(UserKeyResponse { - hashchain: Some(hashchain), + account: Some(*account), proof: JmtProofResponse::from(membership_proof.proof), }), ) .into_response(), - HashchainResponse::NotFound(non_membership_proof) => ( + AccountResponse::NotFound(non_membership_proof) => ( StatusCode::OK, Json(UserKeyResponse { - hashchain: None, + account: None, proof: JmtProofResponse::from(non_membership_proof.proof), }), ) diff --git a/crates/tree/src/key_directory_tree.rs b/crates/tree/src/key_directory_tree.rs index c7fd2483..549a9cf5 100644 --- a/crates/tree/src/key_directory_tree.rs +++ b/crates/tree/src/key_directory_tree.rs @@ -11,8 +11,8 @@ use crate::hasher::TreeHasher; 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. +/// Wraps a [`JellyfishMerkleTree`] to provide a key-value store for [`Account`]s with batched insertions. +/// This is prism's primary data structure for storing and retrieving [`Account`]s. pub struct KeyDirectoryTree where S: TreeReader + TreeWriter, diff --git a/crates/tree/src/lib.rs b/crates/tree/src/lib.rs index 70ecf12f..4969313b 100644 --- a/crates/tree/src/lib.rs +++ b/crates/tree/src/lib.rs @@ -3,16 +3,16 @@ pub mod key_directory_tree; pub mod proofs; pub mod snarkable_tree; -use prism_common::hashchain::Hashchain; +use prism_common::account::Account; 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), +pub enum AccountResponse { + /// When an account was found, provides the value and its corresponding membership-proof + Found(Box, MembershipProof), - /// When no hashchain was found for a specific key, provides the corresponding non-membership-proof + /// When no account was found for a specific key, provides the corresponding non-membership-proof NotFound(NonMembershipProof), } diff --git a/crates/tree/src/proofs.rs b/crates/tree/src/proofs.rs index e1d64109..88098459 100644 --- a/crates/tree/src/proofs.rs +++ b/crates/tree/src/proofs.rs @@ -3,10 +3,7 @@ use jmt::{ proof::{SparseMerkleProof, UpdateMerkleProof}, KeyHash, RootHash, }; -use prism_common::{ - digest::Digest, - hashchain::{Hashchain, HashchainEntry}, -}; +use prism_common::{account::Account, digest::Digest, transaction::Transaction}; use prism_serde::binary::ToBinary; use serde::{Deserialize, Serialize}; @@ -29,7 +26,7 @@ pub enum Proof { } #[derive(Debug, Clone, Serialize, Deserialize)] -/// Represents an insertion proof for a newly created hashchain. +/// Represents an insertion proof for a newly created account. /// Currently, this proof is generated by /// [`crate::operation::Operation::CreateAccount`] and /// [`crate::operation::Operation::RegisterService`] operations. @@ -41,11 +38,11 @@ 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 + /// Proof that the new account is correctly inserted into the tree pub membership_proof: SparseMerkleProof, - /// The new hashchain entry that was inserted. - pub new_entry: HashchainEntry, + /// The new account that was inserted. + pub tx: Transaction, } impl InsertProof { @@ -53,13 +50,15 @@ impl InsertProof { pub fn verify(&self) -> Result<()> { self.non_membership_proof.verify().context("Invalid NonMembershipProof")?; - let hashchain = Hashchain::from_entry(self.new_entry.clone())?; - let serialized_hashchain = hashchain.encode_to_bytes()?; + let mut account = Account::default(); + account.process_operation(&self.tx.operation)?; + + let serialized_account = account.encode_to_bytes()?; self.membership_proof.clone().verify_existence( RootHash(self.new_root.0), self.non_membership_proof.key, - serialized_hashchain, + serialized_account, )?; Ok(()) @@ -67,18 +66,19 @@ impl InsertProof { } #[derive(Debug, Clone, Serialize, Deserialize)] -/// Represents an update proof for an existing [`Hashchain`], updating it with a new [`HashchainEntry`]. +/// Represents an update proof for an existing [`Account`]. pub struct UpdateProof { 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 old_account: Account, + pub tx: Transaction, + + /// Inclusion proof of [`UpdateProof::old_account`] pub inclusion_proof: SparseMerkleProof, - /// Update proof for [`UpdateProof::key`] to be updated with [`UpdateProof::new_entry`] + /// Update proof for [`UpdateProof::key`] to be updated with [`UpdateProof::tx`] pub update_proof: UpdateMerkleProof, } @@ -86,24 +86,23 @@ impl UpdateProof { /// The method called in circuit to verify the state transition to the new root. pub fn verify(&self) -> Result<()> { // 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()?; + // Otherwise, any arbitrary account could be set as old_account. + let old_serialized_account = self.old_account.encode_to_bytes()?; self.inclusion_proof.verify_existence( RootHash(self.old_root.0), self.key, - old_serialized_hashchain, + old_serialized_account, )?; - let mut hashchain_after_update = self.old_hashchain.clone(); - // Append the new entry and verify it's validity - hashchain_after_update.add_entry(self.new_entry.clone())?; + let mut new_account = self.old_account.clone(); + new_account.process_operation(&self.tx.operation)?; - // Ensure the update proof corresponds to the new hashchain value - let new_serialized_hashchain = hashchain_after_update.encode_to_bytes()?; + // Ensure the update proof corresponds to the new account value + let new_serialized_account = new_account.encode_to_bytes()?; self.update_proof.clone().verify_update( RootHash(self.old_root.0), RootHash(self.new_root.0), - vec![(self.key, Some(new_serialized_hashchain))], + vec![(self.key, Some(new_serialized_account))], )?; Ok(()) @@ -115,7 +114,7 @@ pub struct MembershipProof { pub root: Digest, pub proof: SparseMerkleProof, pub key: KeyHash, - pub value: Hashchain, + pub value: Account, } impl MembershipProof { diff --git a/crates/tree/src/snarkable_tree.rs b/crates/tree/src/snarkable_tree.rs index fe53750f..a9c4ec47 100644 --- a/crates/tree/src/snarkable_tree.rs +++ b/crates/tree/src/snarkable_tree.rs @@ -8,8 +8,8 @@ use prism_errors::DatabaseError; use prism_serde::binary::{FromBinary, ToBinary}; use prism_common::{ + account::Account, digest::Digest, - hashchain::{Hashchain, HashchainEntry}, operation::{Operation, ServiceChallenge, ServiceChallengeInput}, transaction::Transaction, }; @@ -18,17 +18,17 @@ use crate::{ hasher::TreeHasher, key_directory_tree::KeyDirectoryTree, proofs::{InsertProof, MembershipProof, NonMembershipProof, Proof, UpdateProof}, - HashchainResponse::{self, *}, + AccountResponse::{self, *}, }; -/// Represents a tree that can be used to verifiably store and retrieve [`Hashchain`]s. +/// Represents a tree that can be used to verifiably store and retrieve [`Account`]s. /// The methods of this trait are NOT run in circuit: they are used to create verifiable inputs for the circuit. /// This distinction is critical because the returned proofs must contain all information necessary to verify the operations. pub trait SnarkableTree: Send + Sync { fn process_transaction(&mut self, transaction: Transaction) -> Result; - fn insert(&mut self, key: KeyHash, entry: HashchainEntry) -> Result; - fn update(&mut self, key: KeyHash, entry: HashchainEntry) -> Result; - fn get(&self, key: KeyHash) -> Result; + fn insert(&mut self, key: KeyHash, tx: Transaction) -> Result; + fn update(&mut self, key: KeyHash, tx: Transaction) -> Result; + fn get(&self, key: KeyHash) -> Result; } impl SnarkableTree for KeyDirectoryTree @@ -36,12 +36,12 @@ where S: TreeReader + TreeWriter + Send + Sync, { fn process_transaction(&mut self, transaction: Transaction) -> Result { - match &transaction.entry.operation { + match &transaction.operation { Operation::AddKey { .. } | Operation::RevokeKey { .. } | Operation::AddData { .. } => { let key_hash = KeyHash::with::(&transaction.id); - debug!("updating hashchain for user id {}", transaction.id); - let proof = self.update(key_hash, transaction.entry)?; + debug!("updating account for user id {}", transaction.id); + let proof = self.update(key_hash, transaction)?; Ok(Proof::Update(Box::new(proof))) } @@ -68,33 +68,26 @@ where 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); + let Found(service_account, _) = self.get(service_key_hash)? else { + bail!("Failed to get account for service ID {}", service_id); }; - let Some(service_last_entry) = service_hashchain.last() else { - bail!("Service hashchain is empty, could not retrieve challenge key"); - }; - - let creation_gate = match &service_last_entry.operation { - Operation::RegisterService { creation_gate, .. } => creation_gate, - _ => { - bail!("Service hashchain's last entry was not a RegisterService operation") - } + let Some(service_challenge) = service_account.service_challenge else { + bail!("Service account does not contain a service challenge"); }; // Hash and sign credentials that have been signed by the external service let hash = Digest::hash_items(&[id.as_bytes(), service_id.as_bytes(), &key.to_bytes()]); - let ServiceChallenge::Signed(service_pubkey) = creation_gate; + let ServiceChallenge::Signed(service_pubkey) = service_challenge; let ServiceChallengeInput::Signed(challenge_signature) = &challenge; service_pubkey.verify_signature(&hash.to_bytes(), challenge_signature)?; - debug!("creating new hashchain for user ID {}", id); + debug!("creating new account for user ID {}", id); - let insert_proof = self.insert(account_key_hash, transaction.entry)?; + let insert_proof = self.insert(account_key_hash, transaction)?; Ok(Proof::Insert(Box::new(insert_proof))) } Operation::RegisterService { id, .. } => { @@ -105,15 +98,15 @@ where let key_hash = KeyHash::with::(id); - debug!("creating new hashchain for service id {}", id); + debug!("creating new account for service id {}", id); - let insert_proof = self.insert(key_hash, transaction.entry)?; + let insert_proof = self.insert(key_hash, transaction)?; Ok(Proof::Insert(Box::new(insert_proof))) } } } - fn insert(&mut self, key: KeyHash, entry: HashchainEntry) -> Result { + fn insert(&mut self, key: KeyHash, transaction: Transaction) -> Result { 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"); @@ -125,13 +118,14 @@ where key, }; - let hashchain = Hashchain::from_entry(entry.clone())?; - let serialized_hashchain = hashchain.encode_to_bytes()?; + let mut account = Account::default(); + account.process_transaction(&transaction)?; + let serialized_account = account.encode_to_bytes()?; // the update proof just contains another nm proof let (new_root, _, tree_update_batch) = self .jmt - .put_value_set_with_proof(vec![(key, Some(serialized_hashchain))], self.epoch + 1)?; + .put_value_set_with_proof(vec![(key, Some(serialized_account))], self.epoch + 1)?; self.queue_batch(tree_update_batch); self.write_batch()?; @@ -139,26 +133,26 @@ where Ok(InsertProof { new_root: Digest(new_root.0), - new_entry: entry, + tx: transaction, non_membership_proof, membership_proof, }) } - fn update(&mut self, key: KeyHash, entry: HashchainEntry) -> Result { + fn update(&mut self, key: KeyHash, transaction: Transaction) -> Result { let old_root = self.get_current_root()?; - let (Some(old_serialized_hashchain), inclusion_proof) = + let (Some(old_serialized_account), inclusion_proof) = self.jmt.get_with_proof(key, self.epoch)? else { bail!("Key does not exist"); }; - let old_hashchain = Hashchain::decode_from_bytes(&old_serialized_hashchain)?; + let old_account = Account::decode_from_bytes(&old_serialized_account)?; - let mut new_hashchain = old_hashchain.clone(); - new_hashchain.add_entry(entry.clone())?; + let mut new_account = old_account.clone(); + new_account.process_transaction(&transaction)?; - let serialized_value = new_hashchain.encode_to_bytes()?; + let serialized_value = new_account.encode_to_bytes()?; let (new_root, update_proof, tree_update_batch) = self.jmt.put_value_set_with_proof( vec![(key, Some(serialized_value.clone()))], @@ -171,27 +165,27 @@ where old_root: Digest(old_root.0), new_root: Digest(new_root.0), inclusion_proof, - old_hashchain, + old_account, key, update_proof, - new_entry: entry, + tx: transaction, }) } - fn get(&self, key: KeyHash) -> Result { + fn get(&self, key: KeyHash) -> Result { let root = self.get_commitment()?; let (value, proof) = self.jmt.get_with_proof(key, self.epoch)?; match value { Some(serialized_value) => { - let deserialized_value = Hashchain::decode_from_bytes(&serialized_value)?; + let deserialized_value = Account::decode_from_bytes(&serialized_value)?; let membership_proof = MembershipProof { root, proof, key, value: deserialized_value.clone(), }; - Ok(Found(deserialized_value, membership_proof)) + Ok(Found(Box::new(deserialized_value), membership_proof)) } None => { let non_membership_proof = NonMembershipProof { root, proof, key }; diff --git a/crates/tree/src/tests.rs b/crates/tree/src/tests.rs index 1637ea90..ef5b9bf5 100644 --- a/crates/tree/src/tests.rs +++ b/crates/tree/src/tests.rs @@ -6,7 +6,7 @@ use prism_keys::SigningKey; use crate::{ hasher::TreeHasher, key_directory_tree::KeyDirectoryTree, proofs::Proof, - snarkable_tree::SnarkableTree, HashchainResponse::*, + snarkable_tree::SnarkableTree, AccountResponse::*, }; #[test] @@ -28,16 +28,15 @@ fn test_insert_and_get() { }; assert!(insert_proof.verify().is_ok()); - let Found(hashchain, membership_proof) = - tree.get(KeyHash::with::("acc_1")).unwrap() + let Found(account, membership_proof) = tree.get(KeyHash::with::("acc_1")).unwrap() else { - panic!("Expected hashchain to be found, but was not found.") + panic!("Expected account to be found, but was not found.") }; - let test_hashchain = - tx_builder.get_hashchain("acc_1").expect("Getting builder hashchain should work"); + let test_account = + tx_builder.get_account("acc_1").expect("Getting builder account should work"); - assert_eq!(&hashchain, test_hashchain); + assert_eq!(*account, *test_account); assert!(membership_proof.verify().is_ok()); } @@ -135,9 +134,9 @@ fn test_update_existing_key() { 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(); + let test_account = tx_builder.get_account("acc_1").unwrap(); - assert!(matches!(get_result, Found(hc, _) if &hc == test_hashchain)); + assert!(matches!(get_result, Found(acc, _) if *acc == *test_account)); } #[test] @@ -152,7 +151,7 @@ fn test_update_non_existing_key() { // 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 invalid_key_tx = tx_builder.add_random_key("acc_1", &random_signing_key).build(); let result = tree.process_transaction(invalid_key_tx); assert!(result.is_err()); @@ -165,7 +164,7 @@ fn test_get_non_existing_key() { 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"); + panic!("Account found for key while it was expected to be missing"); }; assert!(non_membership_proof.verify().is_ok()); @@ -189,8 +188,9 @@ fn test_multiple_inserts_and_updates() { 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(); + let data_1_tx = tx_builder + .add_internally_signed_data_verified_with_root("acc_2", b"unsigned".to_vec()) + .commit(); tree.process_transaction(data_1_tx).unwrap(); let data_2_tx = tx_builder @@ -201,11 +201,11 @@ fn test_multiple_inserts_and_updates() { 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(); + let test_acc1 = tx_builder.get_account("acc_1").unwrap(); + let test_acc2 = tx_builder.get_account("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!(matches!(get_result1, Found(acc, _) if *acc == *test_acc1)); + assert!(matches!(get_result2, Found(acc, _) if *acc == *test_acc2)); } #[test] @@ -236,11 +236,11 @@ fn test_interleaved_inserts_and_updates() { 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(); + let test_acc1 = tx_builder.get_account("acc_1").unwrap(); + let test_acc2 = tx_builder.get_account("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!(matches!(get_result1, Found(acc, _) if *acc == *test_acc1)); + assert!(matches!(get_result2, Found(acc, _) if *acc == *test_acc2)); assert_eq!(update_proof.new_root, tree.get_commitment().unwrap()); } @@ -296,9 +296,9 @@ fn test_batch_writing() { 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(); + let test_acc1 = tx_builder.get_account("acc_1").unwrap(); + let test_acc2 = tx_builder.get_account("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!(matches!(get_result1, Found(acc, _) if *acc == *test_acc1)); + assert!(matches!(get_result2, Found(acc, _) if *acc == *test_acc2)); } From 5cdedc22956e853aaac022b6def54e7d4895a3f1 Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Tue, 17 Dec 2024 22:59:54 +0100 Subject: [PATCH 2/9] broken tests but progress --- crates/common/src/account.rs | 13 +++++++--- crates/common/src/transaction_builder.rs | 10 ++++---- crates/node_types/prover/src/prover/tests.rs | 26 +------------------- crates/tree/src/proofs.rs | 4 +-- crates/tree/src/snarkable_tree.rs | 8 ++++-- 5 files changed, 23 insertions(+), 38 deletions(-) diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs index b9e6abec..f58831e6 100644 --- a/crates/common/src/account.rs +++ b/crates/common/src/account.rs @@ -21,12 +21,17 @@ pub struct Account { impl Account { pub fn prepare_transaction( &self, + account_id: String, operation: Operation, sk: &SigningKey, ) -> Result { let vk = sk.verifying_key(); - match operation { - Operation::CreateAccount { .. } | Operation::RegisterService { .. } => {} + match &operation { + Operation::CreateAccount { id, .. } | Operation::RegisterService { id, .. } => { + if *id != account_id { + return Err(anyhow!("Operation ID does not match account ID")); + } + } _ => { if !self.valid_keys.contains(&vk) { return Err(anyhow!("Invalid key")); @@ -35,7 +40,7 @@ impl Account { } let mut tx = Transaction { - id: self.id.clone(), + id: account_id, nonce: self.nonce, operation, signature: Signature::Placeholder, @@ -111,7 +116,7 @@ impl Account { Ok(()) } - pub fn process_operation(&mut self, operation: &Operation) -> Result<()> { + fn process_operation(&mut self, operation: &Operation) -> Result<()> { self.validate_operation(operation)?; match operation { diff --git a/crates/common/src/transaction_builder.rs b/crates/common/src/transaction_builder.rs index 5705ea4c..9543cdc3 100644 --- a/crates/common/src/transaction_builder.rs +++ b/crates/common/src/transaction_builder.rs @@ -100,7 +100,7 @@ impl TransactionBuilder { }; let account = Account::default(); - let transaction = account.prepare_transaction(op, &signing_key).unwrap(); + let transaction = account.prepare_transaction(id.to_string(), op, &signing_key).unwrap(); UncommittedTransaction { transaction, @@ -161,7 +161,7 @@ impl TransactionBuilder { }; let account = Account::default(); - let transaction = account.prepare_transaction(op, &signing_key).unwrap(); + let transaction = account.prepare_transaction(id.to_string(), op, &signing_key).unwrap(); UncommittedTransaction { transaction, @@ -204,7 +204,7 @@ impl TransactionBuilder { let account = self.accounts.get(id).cloned().unwrap_or_default(); let op = Operation::AddKey { key: key.clone() }; - let transaction = account.prepare_transaction(op, signing_key).unwrap(); + let transaction = account.prepare_transaction(id.to_string(), op, signing_key).unwrap(); UncommittedTransaction { transaction, @@ -234,7 +234,7 @@ impl TransactionBuilder { let account = self.accounts.get(id).cloned().unwrap_or_default(); let op = Operation::RevokeKey { key: key.clone() }; - let transaction = account.prepare_transaction(op, signing_key).unwrap(); + let transaction = account.prepare_transaction(id.to_string(), op, signing_key).unwrap(); UncommittedTransaction { transaction, @@ -364,7 +364,7 @@ impl TransactionBuilder { data_signature, }; - let transaction = account.prepare_transaction(op, signing_key).unwrap(); + let transaction = account.prepare_transaction(id.to_string(), op, signing_key).unwrap(); UncommittedTransaction { transaction, diff --git a/crates/node_types/prover/src/prover/tests.rs b/crates/node_types/prover/src/prover/tests.rs index 90034736..7d62198c 100644 --- a/crates/node_types/prover/src/prover/tests.rs +++ b/crates/node_types/prover/src/prover/tests.rs @@ -82,34 +82,10 @@ async fn test_process_transactions() { ) .commit(); let proof = prover.process_transaction(revoke_transaction).await.unwrap(); + println!("slkjdfd4"); assert!(matches!(proof, Proof::Update(_))); } -#[tokio::test] -async fn test_execute_block_with_invalid_tx() { - let prover = create_test_prover().await; - - let mut tx_builder = TransactionBuilder::new(); - - let new_key_1 = SigningKey::new_ed25519(); - let new_key_vk: VerifyingKey = new_key_1.clone().into(); - - let transactions = vec![ - tx_builder.register_service_with_random_keys("service_id").commit(), - tx_builder.create_account_with_random_key_signed("account_id", "service_id").commit(), - // add new key, so it will be index = 1 - tx_builder.add_key_verified_with_root("account_id", new_key_vk.clone()).commit(), - // revoke new key again - tx_builder.revoke_key_verified_with_root("account_id", new_key_vk).commit(), - // and adding in same block. - // both of these transactions are valid individually, but when processed together it will fail. - tx_builder.add_random_key("account_id", &new_key_1).build(), - ]; - - let proofs = prover.execute_block(transactions).await.unwrap(); - assert_eq!(proofs.len(), 4); -} - #[tokio::test] async fn test_execute_block() { let prover = create_test_prover().await; diff --git a/crates/tree/src/proofs.rs b/crates/tree/src/proofs.rs index 88098459..35c3dfc3 100644 --- a/crates/tree/src/proofs.rs +++ b/crates/tree/src/proofs.rs @@ -51,7 +51,7 @@ impl InsertProof { self.non_membership_proof.verify().context("Invalid NonMembershipProof")?; let mut account = Account::default(); - account.process_operation(&self.tx.operation)?; + account.process_transaction(&self.tx)?; let serialized_account = account.encode_to_bytes()?; @@ -95,7 +95,7 @@ impl UpdateProof { )?; let mut new_account = self.old_account.clone(); - new_account.process_operation(&self.tx.operation)?; + new_account.process_transaction(&self.tx)?; // Ensure the update proof corresponds to the new account value let new_serialized_account = new_account.encode_to_bytes()?; diff --git a/crates/tree/src/snarkable_tree.rs b/crates/tree/src/snarkable_tree.rs index a9c4ec47..29af8952 100644 --- a/crates/tree/src/snarkable_tree.rs +++ b/crates/tree/src/snarkable_tree.rs @@ -5,7 +5,10 @@ use jmt::{ }; use log::debug; use prism_errors::DatabaseError; -use prism_serde::binary::{FromBinary, ToBinary}; +use prism_serde::{ + binary::{FromBinary, ToBinary}, + hex::ToHex, +}; use prism_common::{ account::Account, @@ -83,7 +86,7 @@ where let ServiceChallenge::Signed(service_pubkey) = service_challenge; let ServiceChallengeInput::Signed(challenge_signature) = &challenge; - service_pubkey.verify_signature(&hash.to_bytes(), challenge_signature)?; + // service_pubkey.verify_signature(&hash.to_bytes(), challenge_signature)?; debug!("creating new account for user ID {}", id); @@ -144,6 +147,7 @@ where let (Some(old_serialized_account), inclusion_proof) = self.jmt.get_with_proof(key, self.epoch)? else { + // TODO for wednesday Ryan: this should be getting hit but its not (test_update_non_existing_key) bail!("Key does not exist"); }; From 455c9d3ced1e41f46e040b875bd7a7b13f7d3152 Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Wed, 18 Dec 2024 08:44:31 +0100 Subject: [PATCH 3/9] fixing tests --- crates/common/src/account.rs | 12 --------- crates/common/src/transaction_builder.rs | 2 +- crates/node_types/prover/src/prover/tests.rs | 26 +++++++++++++++++++- crates/tree/src/snarkable_tree.rs | 3 +-- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs index f58831e6..4a62d433 100644 --- a/crates/common/src/account.rs +++ b/crates/common/src/account.rs @@ -26,18 +26,6 @@ impl Account { sk: &SigningKey, ) -> Result { let vk = sk.verifying_key(); - match &operation { - Operation::CreateAccount { id, .. } | Operation::RegisterService { id, .. } => { - if *id != account_id { - return Err(anyhow!("Operation ID does not match account ID")); - } - } - _ => { - if !self.valid_keys.contains(&vk) { - return Err(anyhow!("Invalid key")); - } - } - } let mut tx = Transaction { id: account_id, diff --git a/crates/common/src/transaction_builder.rs b/crates/common/src/transaction_builder.rs index 9543cdc3..7444d3e0 100644 --- a/crates/common/src/transaction_builder.rs +++ b/crates/common/src/transaction_builder.rs @@ -95,7 +95,7 @@ impl TransactionBuilder { let vk: VerifyingKey = signing_key.clone().into(); let op = Operation::RegisterService { id: id.to_string(), - creation_gate: ServiceChallenge::Signed(vk.clone()), + creation_gate: ServiceChallenge::Signed(challenge_key.verifying_key()), key: vk.clone(), }; diff --git a/crates/node_types/prover/src/prover/tests.rs b/crates/node_types/prover/src/prover/tests.rs index 7d62198c..90034736 100644 --- a/crates/node_types/prover/src/prover/tests.rs +++ b/crates/node_types/prover/src/prover/tests.rs @@ -82,10 +82,34 @@ async fn test_process_transactions() { ) .commit(); let proof = prover.process_transaction(revoke_transaction).await.unwrap(); - println!("slkjdfd4"); assert!(matches!(proof, Proof::Update(_))); } +#[tokio::test] +async fn test_execute_block_with_invalid_tx() { + let prover = create_test_prover().await; + + let mut tx_builder = TransactionBuilder::new(); + + let new_key_1 = SigningKey::new_ed25519(); + let new_key_vk: VerifyingKey = new_key_1.clone().into(); + + let transactions = vec![ + tx_builder.register_service_with_random_keys("service_id").commit(), + tx_builder.create_account_with_random_key_signed("account_id", "service_id").commit(), + // add new key, so it will be index = 1 + tx_builder.add_key_verified_with_root("account_id", new_key_vk.clone()).commit(), + // revoke new key again + tx_builder.revoke_key_verified_with_root("account_id", new_key_vk).commit(), + // and adding in same block. + // both of these transactions are valid individually, but when processed together it will fail. + tx_builder.add_random_key("account_id", &new_key_1).build(), + ]; + + let proofs = prover.execute_block(transactions).await.unwrap(); + assert_eq!(proofs.len(), 4); +} + #[tokio::test] async fn test_execute_block() { let prover = create_test_prover().await; diff --git a/crates/tree/src/snarkable_tree.rs b/crates/tree/src/snarkable_tree.rs index 29af8952..947a72d4 100644 --- a/crates/tree/src/snarkable_tree.rs +++ b/crates/tree/src/snarkable_tree.rs @@ -86,7 +86,7 @@ where let ServiceChallenge::Signed(service_pubkey) = service_challenge; let ServiceChallengeInput::Signed(challenge_signature) = &challenge; - // service_pubkey.verify_signature(&hash.to_bytes(), challenge_signature)?; + service_pubkey.verify_signature(&hash.to_bytes(), challenge_signature)?; debug!("creating new account for user ID {}", id); @@ -147,7 +147,6 @@ where let (Some(old_serialized_account), inclusion_proof) = self.jmt.get_with_proof(key, self.epoch)? else { - // TODO for wednesday Ryan: this should be getting hit but its not (test_update_non_existing_key) bail!("Key does not exist"); }; From a7f6d50c42f3fd6cd84d78cd4ab3eb9ede56cbdf Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Wed, 18 Dec 2024 08:51:25 +0100 Subject: [PATCH 4/9] clippy --- crates/tree/src/lib.rs | 6 +++--- crates/tree/src/proofs.rs | 24 +++++++----------------- crates/tree/src/snarkable_tree.rs | 18 +++++------------- crates/tree/src/tests.rs | 4 ++-- 4 files changed, 17 insertions(+), 35 deletions(-) diff --git a/crates/tree/src/lib.rs b/crates/tree/src/lib.rs index 4969313b..0b423206 100644 --- a/crates/tree/src/lib.rs +++ b/crates/tree/src/lib.rs @@ -4,16 +4,16 @@ pub mod proofs; pub mod snarkable_tree; use prism_common::account::Account; -use proofs::{MembershipProof, NonMembershipProof}; +use proofs::MerkleProof; /// Enumerates possible responses when fetching tree values #[derive(Debug)] pub enum AccountResponse { /// When an account was found, provides the value and its corresponding membership-proof - Found(Box, MembershipProof), + Found(Box, MerkleProof), /// When no account was found for a specific key, provides the corresponding non-membership-proof - NotFound(NonMembershipProof), + NotFound(MerkleProof), } #[cfg(test)] diff --git a/crates/tree/src/proofs.rs b/crates/tree/src/proofs.rs index 35c3dfc3..272781f1 100644 --- a/crates/tree/src/proofs.rs +++ b/crates/tree/src/proofs.rs @@ -34,7 +34,7 @@ pub enum Proof { // the service, and then signature verification with the contained VK. pub struct InsertProof { /// Proof that the key does not already exist in the tree (i.e. it's not overwriting an existing key) - pub non_membership_proof: NonMembershipProof, + pub non_membership_proof: MerkleProof, /// Post-insertion root hash of the tree pub new_root: Digest, @@ -48,7 +48,7 @@ pub struct InsertProof { impl InsertProof { /// The method called in circuit to verify the state transition to the new root. pub fn verify(&self) -> Result<()> { - self.non_membership_proof.verify().context("Invalid NonMembershipProof")?; + self.non_membership_proof.verify_nonexistence().context("Invalid NonMembershipProof")?; let mut account = Account::default(); account.process_transaction(&self.tx)?; @@ -110,29 +110,19 @@ impl UpdateProof { } #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct MembershipProof { +pub struct MerkleProof { pub root: Digest, pub proof: SparseMerkleProof, pub key: KeyHash, - pub value: Account, } -impl MembershipProof { - pub fn verify(&self) -> Result<()> { - let value = self.value.encode_to_bytes()?; +impl MerkleProof { + pub fn verify_existence(&self, value: &Account) -> Result<()> { + let value = value.encode_to_bytes()?; 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 key: KeyHash, -} - -impl NonMembershipProof { - pub fn verify(&self) -> Result<()> { + pub fn verify_nonexistence(&self) -> Result<()> { self.proof.verify_nonexistence(RootHash(self.root.0), self.key) } } diff --git a/crates/tree/src/snarkable_tree.rs b/crates/tree/src/snarkable_tree.rs index 947a72d4..9a0ed33d 100644 --- a/crates/tree/src/snarkable_tree.rs +++ b/crates/tree/src/snarkable_tree.rs @@ -5,10 +5,7 @@ use jmt::{ }; use log::debug; use prism_errors::DatabaseError; -use prism_serde::{ - binary::{FromBinary, ToBinary}, - hex::ToHex, -}; +use prism_serde::binary::{FromBinary, ToBinary}; use prism_common::{ account::Account, @@ -20,7 +17,7 @@ use prism_common::{ use crate::{ hasher::TreeHasher, key_directory_tree::KeyDirectoryTree, - proofs::{InsertProof, MembershipProof, NonMembershipProof, Proof, UpdateProof}, + proofs::{InsertProof, MerkleProof, Proof, UpdateProof}, AccountResponse::{self, *}, }; @@ -115,7 +112,7 @@ where bail!("Key already exists"); }; - let non_membership_proof = NonMembershipProof { + let non_membership_proof = MerkleProof { root: old_root, proof: non_membership_merkle_proof, key, @@ -182,16 +179,11 @@ where match value { Some(serialized_value) => { let deserialized_value = Account::decode_from_bytes(&serialized_value)?; - let membership_proof = MembershipProof { - root, - proof, - key, - value: deserialized_value.clone(), - }; + let membership_proof = MerkleProof { root, proof, key }; Ok(Found(Box::new(deserialized_value), membership_proof)) } None => { - let non_membership_proof = NonMembershipProof { root, proof, key }; + let non_membership_proof = MerkleProof { root, proof, key }; Ok(NotFound(non_membership_proof)) } } diff --git a/crates/tree/src/tests.rs b/crates/tree/src/tests.rs index ef5b9bf5..c5acd138 100644 --- a/crates/tree/src/tests.rs +++ b/crates/tree/src/tests.rs @@ -37,7 +37,7 @@ fn test_insert_and_get() { tx_builder.get_account("acc_1").expect("Getting builder account should work"); assert_eq!(*account, *test_account); - assert!(membership_proof.verify().is_ok()); + assert!(membership_proof.verify_existence(&account).is_ok()); } #[test] @@ -167,7 +167,7 @@ fn test_get_non_existing_key() { panic!("Account found for key while it was expected to be missing"); }; - assert!(non_membership_proof.verify().is_ok()); + assert!(non_membership_proof.verify_nonexistence().is_ok()); } #[test] From 8650a06f3a3bb8981f2e1f18689139a2d7f6a422 Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Wed, 18 Dec 2024 09:14:05 +0100 Subject: [PATCH 5/9] rustdoc --- crates/common/src/account.rs | 23 +++++++++++++++++++++-- crates/common/src/transaction.rs | 10 ++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs index 4a62d433..27ff3c0a 100644 --- a/crates/common/src/account.rs +++ b/crates/common/src/account.rs @@ -8,17 +8,31 @@ use crate::{ }; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Hash, Default)] +/// Represents an account or service on prism, making up the values of our state +/// tree. pub struct Account { + /// The unique identifier for the account. pub id: String, + + /// The transaction nonce for the account. pub nonce: u64, + + /// The current set of valid keys for the account. Any of these keys can be + /// used to sign transactions. pub valid_keys: Vec, + + /// Arbitrary signed data associated with the account, used for bookkeeping + /// externally signed data from keys that don't live on Prism. pub signed_data: Vec<(VerifyingKey, Vec)>, - /// Only set when the account is a service + /// The service challenge for the account, if it is a service. pub service_challenge: Option, } impl Account { + /// Creates a [`Transaction`] that can be used to update or create the + /// account. The transaction produced could be invalid, and will be + /// validated before being processed. pub fn prepare_transaction( &self, account_id: String, @@ -40,6 +54,7 @@ impl Account { Ok(tx) } + /// Validates and processes an incoming [`Transaction`], updating the account state. pub fn process_transaction(&mut self, tx: &Transaction) -> Result<()> { self.validate_transaction(tx)?; self.process_operation(&tx.operation)?; @@ -47,6 +62,7 @@ impl Account { Ok(()) } + /// Validates a transaction against the current account state. pub fn validate_transaction(&self, tx: &Transaction) -> Result<()> { if tx.nonce != self.nonce { return Err(anyhow!( @@ -76,7 +92,8 @@ impl Account { Ok(()) } - pub fn validate_operation(&self, operation: &Operation) -> Result<()> { + /// Validates an operation against the current account state. + fn validate_operation(&self, operation: &Operation) -> Result<()> { match operation { Operation::AddKey { key } => { if self.valid_keys.contains(key) { @@ -104,6 +121,8 @@ impl Account { Ok(()) } + /// Processes an operation, updating the account state. Should only be run + /// in the context of a transaction. fn process_operation(&mut self, operation: &Operation) -> Result<()> { self.validate_operation(operation)?; diff --git a/crates/common/src/transaction.rs b/crates/common/src/transaction.rs index 391d5b80..a9978f13 100644 --- a/crates/common/src/transaction.rs +++ b/crates/common/src/transaction.rs @@ -7,21 +7,31 @@ use serde::{Deserialize, Serialize}; use crate::operation::Operation; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +/// Represents a prism transaction that can be applied to an account. pub struct Transaction { + /// The account id that this transaction is for pub id: String, + /// The [`Operation`] to be applied to the account pub operation: Operation, + /// The nonce of the account at the time of this transaction pub nonce: u64, + /// The signature of the transaction, signed by [`self::vk`]. pub signature: Signature, + /// The verifying key of the signer of this transaction. This vk must be + /// included in the account's valid_keys set. pub vk: VerifyingKey, } impl Transaction { + /// Encodes the transaction to bytes to prepare for signing. pub fn get_signature_payload(&self) -> Result> { let mut tx = self.clone(); tx.signature = Signature::Placeholder; tx.encode_to_bytes().map_err(|e| anyhow!(e)) } + /// Signs the transaction with the given [`SigningKey`] and inserts the + /// signature into the transaction. pub fn sign(&mut self, sk: &SigningKey) -> Result { if let Signature::Placeholder = self.signature { let sig = sk.sign(&self.get_signature_payload()?); From 5c4575894f405a10ea79f87587c33c1eff12fed8 Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Wed, 18 Dec 2024 11:59:03 +0100 Subject: [PATCH 6/9] review fixes --- crates/common/src/account.rs | 33 ++++++++++++++++++----- crates/common/src/operation.rs | 2 +- crates/node_types/prover/src/webserver.rs | 27 +++---------------- crates/tree/src/snarkable_tree.rs | 2 +- 4 files changed, 31 insertions(+), 33 deletions(-) diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs index 27ff3c0a..b801a3bc 100644 --- a/crates/common/src/account.rs +++ b/crates/common/src/account.rs @@ -7,29 +7,49 @@ use crate::{ transaction::Transaction, }; -#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Hash, Default)] +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Default)] /// Represents an account or service on prism, making up the values of our state /// tree. pub struct Account { /// The unique identifier for the account. - pub id: String, + id: String, /// The transaction nonce for the account. - pub nonce: u64, + nonce: u64, /// The current set of valid keys for the account. Any of these keys can be /// used to sign transactions. - pub valid_keys: Vec, + valid_keys: Vec, /// Arbitrary signed data associated with the account, used for bookkeeping /// externally signed data from keys that don't live on Prism. - pub signed_data: Vec<(VerifyingKey, Vec)>, + signed_data: Vec<(VerifyingKey, Vec)>, /// The service challenge for the account, if it is a service. - pub service_challenge: Option, + service_challenge: Option, } impl Account { + pub fn id(&self) -> &str { + &self.id + } + + pub fn nonce(&self) -> u64 { + self.nonce + } + + pub fn valid_keys(&self) -> &[VerifyingKey] { + &self.valid_keys + } + + pub fn signed_data(&self) -> &[(VerifyingKey, Vec)] { + &self.signed_data + } + + pub fn service_challenge(&self) -> Option<&ServiceChallenge> { + self.service_challenge.as_ref() + } + /// Creates a [`Transaction`] that can be used to update or create the /// account. The transaction produced could be invalid, and will be /// validated before being processed. @@ -109,7 +129,6 @@ impl Account { data, data_signature, } => { - // if the data is externally signed data_signature.verifying_key.verify_signature(data, &data_signature.signature)?; } Operation::CreateAccount { .. } | Operation::RegisterService { .. } => { diff --git a/crates/common/src/operation.rs b/crates/common/src/operation.rs index dc045831..6bf772e1 100644 --- a/crates/common/src/operation.rs +++ b/crates/common/src/operation.rs @@ -51,7 +51,7 @@ pub enum ServiceChallengeInput { Signed(Signature), } -#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Hash)] +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] pub enum ServiceChallenge { Signed(VerifyingKey), } diff --git a/crates/node_types/prover/src/webserver.rs b/crates/node_types/prover/src/webserver.rs index 85fc3439..95a9df7b 100644 --- a/crates/node_types/prover/src/webserver.rs +++ b/crates/node_types/prover/src/webserver.rs @@ -8,10 +8,7 @@ use axum::{ Json, Router, }; use jmt::proof::{SparseMerkleNode, SparseMerkleProof}; -use prism_common::{ - account::Account, digest::Digest, operation::Operation, transaction::Transaction, -}; -use prism_keys::{Signature, VerifyingKey}; +use prism_common::{account::Account, digest::Digest, transaction::Transaction}; use prism_tree::{ hasher::TreeHasher, proofs::{Proof, UpdateProof}, @@ -54,25 +51,7 @@ pub struct EpochData { } #[derive(Deserialize, Debug, ToSchema)] -pub struct TransactionRequest { - pub id: String, - pub operation: Operation, - pub nonce: u64, - pub signature: Signature, - pub vk: VerifyingKey, -} - -impl From for Transaction { - fn from(tx: TransactionRequest) -> Self { - Transaction { - id: tx.id, - operation: tx.operation, - nonce: tx.nonce, - signature: tx.signature, - vk: tx.vk, - } - } -} +pub struct TransactionRequest(Transaction); #[derive(Serialize, Deserialize, ToSchema)] pub struct UpdateProofResponse(UpdateProof); @@ -178,7 +157,7 @@ async fn post_transaction( State(session): State>, Json(tx_request): Json, ) -> impl IntoResponse { - match session.validate_and_queue_update(tx_request.into()).await { + match session.validate_and_queue_update(tx_request.0).await { Ok(_) => ( StatusCode::OK, "Entry update queued for insertion into next epoch", diff --git a/crates/tree/src/snarkable_tree.rs b/crates/tree/src/snarkable_tree.rs index 9a0ed33d..92d6264d 100644 --- a/crates/tree/src/snarkable_tree.rs +++ b/crates/tree/src/snarkable_tree.rs @@ -72,7 +72,7 @@ where bail!("Failed to get account for service ID {}", service_id); }; - let Some(service_challenge) = service_account.service_challenge else { + let Some(service_challenge) = service_account.service_challenge() else { bail!("Service account does not contain a service challenge"); }; From 9c856322de818a6e669f6487a81388574680c2b9 Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Wed, 18 Dec 2024 12:03:55 +0100 Subject: [PATCH 7/9] validation: review fixes --- crates/common/src/account.rs | 7 +++---- crates/node_types/prover/src/prover/mod.rs | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs index b801a3bc..dbd7cdee 100644 --- a/crates/common/src/account.rs +++ b/crates/common/src/account.rs @@ -82,8 +82,9 @@ impl Account { Ok(()) } - /// Validates a transaction against the current account state. - pub fn validate_transaction(&self, tx: &Transaction) -> Result<()> { + /// Validates a transaction against the current account state. Please note + /// that the operation must be validated separately. + fn validate_transaction(&self, tx: &Transaction) -> Result<()> { if tx.nonce != self.nonce { return Err(anyhow!( "Nonce does not match. {} != {}", @@ -107,8 +108,6 @@ impl Account { let msg = tx.get_signature_payload()?; tx.vk.verify_signature(&msg, &tx.signature)?; - self.validate_operation(&tx.operation)?; - Ok(()) } diff --git a/crates/node_types/prover/src/prover/mod.rs b/crates/node_types/prover/src/prover/mod.rs index 8e50db8a..12cf7bc3 100644 --- a/crates/node_types/prover/src/prover/mod.rs +++ b/crates/node_types/prover/src/prover/mod.rs @@ -479,16 +479,16 @@ impl Prover { // validate against existing account if necessary, including signature checks match transaction.operation { Operation::RegisterService { .. } | Operation::CreateAccount { .. } => { - Account::default().validate_transaction(&transaction)?; + Account::default().process_transaction(&transaction)?; } Operation::AddKey { .. } | Operation::RevokeKey { .. } | Operation::AddData { .. } => { let account_response = self.get_account(&transaction.id).await?; - let Found(account, _) = account_response else { + let Found(mut account, _) = account_response else { bail!("Account not found for id: {}", transaction.id) }; - account.validate_transaction(&transaction)?; + account.process_transaction(&transaction)?; } }; From 184e8c154f5ca4d219a64b884b2941d5b12b1763 Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Wed, 18 Dec 2024 12:15:24 +0100 Subject: [PATCH 8/9] avoid double signing --- crates/common/src/account.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs index dbd7cdee..1f8b0775 100644 --- a/crates/common/src/account.rs +++ b/crates/common/src/account.rs @@ -128,7 +128,13 @@ impl Account { data, data_signature, } => { - data_signature.verifying_key.verify_signature(data, &data_signature.signature)?; + // we only need to do a single signature verification if the + // user signs transaction and data with their own key + if !self.valid_keys().contains(&data_signature.verifying_key) { + data_signature + .verifying_key + .verify_signature(data, &data_signature.signature)?; + } } Operation::CreateAccount { .. } | Operation::RegisterService { .. } => { if !self.is_empty() { From 85c7132bf2ef4c14ef6840fa97481501c4c653ca Mon Sep 17 00:00:00 2001 From: Ryan Quinn Ford Date: Wed, 18 Dec 2024 12:29:21 +0100 Subject: [PATCH 9/9] prism_serde --- crates/common/src/account.rs | 13 ++++++++++--- elf/riscv32im-succinct-zkvm-elf | Bin 1960968 -> 1929592 bytes 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/common/src/account.rs b/crates/common/src/account.rs index 1f8b0775..755b99d7 100644 --- a/crates/common/src/account.rs +++ b/crates/common/src/account.rs @@ -1,5 +1,6 @@ use anyhow::{anyhow, Result}; use prism_keys::{Signature, SigningKey, VerifyingKey}; +use prism_serde::raw_or_b64; use serde::{Deserialize, Serialize}; use crate::{ @@ -7,6 +8,9 @@ use crate::{ transaction::Transaction, }; +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +pub struct SignedData(pub VerifyingKey, #[serde(with = "raw_or_b64")] pub Vec); + #[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Default)] /// Represents an account or service on prism, making up the values of our state /// tree. @@ -23,7 +27,7 @@ pub struct Account { /// Arbitrary signed data associated with the account, used for bookkeeping /// externally signed data from keys that don't live on Prism. - signed_data: Vec<(VerifyingKey, Vec)>, + signed_data: Vec, /// The service challenge for the account, if it is a service. service_challenge: Option, @@ -42,7 +46,7 @@ impl Account { &self.valid_keys } - pub fn signed_data(&self) -> &[(VerifyingKey, Vec)] { + pub fn signed_data(&self) -> &[SignedData] { &self.signed_data } @@ -161,7 +165,10 @@ impl Account { data, data_signature, } => { - self.signed_data.push((data_signature.verifying_key.clone(), data.clone())); + self.signed_data.push(SignedData( + data_signature.verifying_key.clone(), + data.clone(), + )); } Operation::CreateAccount { id, key, .. } => { self.id = id.clone(); diff --git a/elf/riscv32im-succinct-zkvm-elf b/elf/riscv32im-succinct-zkvm-elf index aed78087b0a4463a6400444460fd7832931f32b4..b507e056ed05b90c4ac325a57731f0ca8c99d31d 100755 GIT binary patch delta 292209 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

D19mL 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