From 8d1fe0de24a149ded1fb9ea20a5664c8c581ebb3 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 19 Dec 2024 14:09:15 +0100 Subject: [PATCH 1/2] feat: replacing hashchains with accounts (#180) * feat: replacing Hashchain with Account * broken tests but progress * fixing tests * clippy * rustdoc * review fixes * validation: review fixes * avoid double signing * prism_serde --- crates/common/src/account.rs | 194 ++++++++++ crates/common/src/hashchain.rs | 375 ------------------- crates/common/src/lib.rs | 2 +- crates/common/src/operation.rs | 21 +- crates/common/src/transaction.rs | 39 +- 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 | 51 +-- crates/tree/src/key_directory_tree.rs | 4 +- crates/tree/src/lib.rs | 14 +- crates/tree/src/proofs.rs | 73 ++-- crates/tree/src/snarkable_tree.rs | 89 ++--- crates/tree/src/tests.rs | 54 +-- elf/riscv32im-succinct-zkvm-elf | Bin 1960968 -> 1929592 bytes 15 files changed, 444 insertions(+), 654 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..755b99d7 --- /dev/null +++ b/crates/common/src/account.rs @@ -0,0 +1,194 @@ +use anyhow::{anyhow, Result}; +use prism_keys::{Signature, SigningKey, VerifyingKey}; +use prism_serde::raw_or_b64; +use serde::{Deserialize, Serialize}; + +use crate::{ + operation::{Operation, ServiceChallenge}, + 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. +pub struct Account { + /// The unique identifier for the account. + id: String, + + /// The transaction nonce for the account. + nonce: u64, + + /// The current set of valid keys for the account. Any of these keys can be + /// used to sign transactions. + valid_keys: Vec, + + /// Arbitrary signed data associated with the account, used for bookkeeping + /// externally signed data from keys that don't live on Prism. + signed_data: Vec, + + /// The service challenge for the account, if it is a service. + 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) -> &[SignedData] { + &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. + pub fn prepare_transaction( + &self, + account_id: String, + operation: Operation, + sk: &SigningKey, + ) -> Result { + let vk = sk.verifying_key(); + + let mut tx = Transaction { + id: account_id, + nonce: self.nonce, + operation, + signature: Signature::Placeholder, + vk, + }; + + tx.sign(sk)?; + + 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)?; + self.nonce += 1; + Ok(()) + } + + /// 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. {} != {}", + 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)?; + + Ok(()) + } + + /// 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) { + 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, + } => { + // 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() { + return Err(anyhow!("Account already exists")); + } + } + } + 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)?; + + 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(SignedData( + 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..6bf772e1 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 { diff --git a/crates/common/src/transaction.rs b/crates/common/src/transaction.rs index 530c01e0..a9978f13 100644 --- a/crates/common/src/transaction.rs +++ b/crates/common/src/transaction.rs @@ -1,13 +1,46 @@ +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)] +/// 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, - pub entry: HashchainEntry, + /// 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()?); + 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..7444d3e0 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(challenge_key.verifying_key()), + key: vk.clone(), + }; + + let account = Account::default(); + let transaction = account.prepare_transaction(id.to_string(), 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(id.to_string(), 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(id.to_string(), 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(id.to_string(), 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(id.to_string(), 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..12cf7bc3 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().process_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(mut account, _) = account_response else { + bail!("Account not found for id: {}", transaction.id) }; - hc.add_entry(transaction.entry.clone())?; + account.process_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..95a9df7b 100644 --- a/crates/node_types/prover/src/webserver.rs +++ b/crates/node_types/prover/src/webserver.rs @@ -8,15 +8,11 @@ use axum::{ Json, Router, }; use jmt::proof::{SparseMerkleNode, SparseMerkleProof}; -use prism_common::{ - digest::Digest, - hashchain::{Hashchain, HashchainEntry}, - transaction::Transaction, -}; +use prism_common::{account::Account, digest::Digest, transaction::Transaction}; use prism_tree::{ hasher::TreeHasher, proofs::{Proof, UpdateProof}, - HashchainResponse, + AccountResponse, }; use serde::{Deserialize, Serialize}; use std::{self, sync::Arc}; @@ -55,10 +51,7 @@ pub struct EpochData { } #[derive(Deserialize, Debug, ToSchema)] -pub struct TransactionRequest { - pub id: String, - pub entry: HashchainEntry, -} +pub struct TransactionRequest(Transaction); #[derive(Serialize, Deserialize, ToSchema)] pub struct UpdateProofResponse(UpdateProof); @@ -73,7 +66,7 @@ pub struct UserKeyRequest { #[derive(Serialize, Deserialize, ToSchema)] pub struct UserKeyResponse { - pub hashchain: Option, + pub account: Option, pub proof: JmtProofResponse, } @@ -101,7 +94,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 +119,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 +155,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.0).await { Ok(_) => ( StatusCode::OK, "Entry update queued for insertion into next epoch", @@ -182,48 +171,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..0b423206 100644 --- a/crates/tree/src/lib.rs +++ b/crates/tree/src/lib.rs @@ -3,17 +3,17 @@ pub mod key_directory_tree; pub mod proofs; pub mod snarkable_tree; -use prism_common::hashchain::Hashchain; -use proofs::{MembershipProof, NonMembershipProof}; +use prism_common::account::Account; +use proofs::MerkleProof; /// 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, MerkleProof), - /// When no hashchain was found for a specific key, provides the corresponding non-membership-proof - NotFound(NonMembershipProof), + /// When no account was found for a specific key, provides the corresponding non-membership-proof + NotFound(MerkleProof), } #[cfg(test)] diff --git a/crates/tree/src/proofs.rs b/crates/tree/src/proofs.rs index e1d64109..272781f1 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. @@ -37,29 +34,31 @@ 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, - /// 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 { /// 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)?; - let hashchain = Hashchain::from_entry(self.new_entry.clone())?; - let serialized_hashchain = hashchain.encode_to_bytes()?; + 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_transaction(&self.tx)?; - // 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(()) @@ -111,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: Hashchain, } -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 fe53750f..92d6264d 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, }; @@ -17,18 +17,18 @@ use prism_common::{ use crate::{ hasher::TreeHasher, key_directory_tree::KeyDirectoryTree, - proofs::{InsertProof, MembershipProof, NonMembershipProof, Proof, UpdateProof}, - HashchainResponse::{self, *}, + proofs::{InsertProof, MerkleProof, Proof, UpdateProof}, + 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,33 +98,34 @@ 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"); }; - let non_membership_proof = NonMembershipProof { + let non_membership_proof = MerkleProof { root: old_root, proof: non_membership_merkle_proof, 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,30 +165,25 @@ 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 membership_proof = MembershipProof { - root, - proof, - key, - value: deserialized_value.clone(), - }; - Ok(Found(deserialized_value, membership_proof)) + let deserialized_value = Account::decode_from_bytes(&serialized_value)?; + 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 1637ea90..c5acd138 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,17 +28,16 @@ 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!(membership_proof.verify().is_ok()); + assert_eq!(*account, *test_account); + assert!(membership_proof.verify_existence(&account).is_ok()); } #[test] @@ -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,10 +164,10 @@ 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()); + assert!(non_membership_proof.verify_nonexistence().is_ok()); } #[test] @@ -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)); } 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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 Date: Thu, 19 Dec 2024 14:09:39 +0100 Subject: [PATCH 2/2] docs: adr-004 (account model) (#178) --- adr/adr-004-account-model.md | 186 +++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 adr/adr-004-account-model.md diff --git a/adr/adr-004-account-model.md b/adr/adr-004-account-model.md new file mode 100644 index 00000000..fc79af26 --- /dev/null +++ b/adr/adr-004-account-model.md @@ -0,0 +1,186 @@ +# ADR-004 - Account Model + +Status: In development +Authors: @distractedm1nd + +## Context + +In Verdict, accounts are represented as append-only hashchains. This design was chosen to avoid proving account operations’ validity and signatures on-chain using expensive SNARK operations. Instead, validity checks were offloaded to clients, enabling simpler and cheaper proofs on the service side. The hashchain’s correctness hinged on verifying each node’s hash and the coherence of the sequence of signed operations. + +> To +reduce the service’s overhead, instead of directly proving +that the service only processes operations that are valid +according to an application-specific policy or that the +server processes those operations faithfully, Verdict +employs a simpler and cheaper alternative. In Verdict’s +transparency dictionary, the value associated with a label +is an append-only hashchain of operations, where nodes +store raw operations requested on the label, as well as the +cryptographic hash of the previous node in the chain. For +example, in the context of key transparency, a hashchain +records two types of operations: (1) adding a new key; +and (2) revoking an existing key, and each operation is +digitally signed by the client requesting the update. +A hashchain is valid if each node includes a correct +hash of the previous node, and if the result of applying +each operation complies with the application’s-specific +policy defined by F. For example, in key transparency, +each computed value vi would be a set of public keys. +F would allow any key to be added if it is the first +operation (i.e., vi = ⊥), and it would accept subsequent +operations if they are digitally signed by an unrevoked +key previously added in the hashchain. +When a client retrieves a hashchain associated with +a label, it can quickly apply operations recorded on +the hashchain to construct the current value associated +with the label, checking the validity of the cryptographic +hashes and compliance with F along the way. This design +supports a richer class of application-specific policies +without requiring the service to prove the validity of +those policies using SNARKs. + +## Rationale + +Prism, initially inspired by Verdict, adopted a similar hashchain model for account data. However, this approach no longer aligns with our current technical and ecosystem goals. Our present development strategy involves proving the entire state machine in-circuit, including signatures and policy checks. As proving costs continue to drop, we can now afford to include these validations directly in zero-knowledge proofs, making the original hashchain model less beneficial. + +Moreover, the append-only hashchain model leads to unbounded growth in account state, which is problematic for certain applications (e.g., certificate transparency services). Such growth increases storage overhead, complexity, and client logic. By using a richer account model that stores and updates state directly, we can more efficiently manage account data, reduce complexity, and improve developer experience. + +## Proposal + +We propose replacing the append-only hashchain approach with a direct, mutable account model. Instead of recording each operation in a growing hashchain, each account will be represented as a struct containing its keys, state, and associated signed data. Since we are already validating operations and signatures in-circuit, this shift does not compromise trust assumptions. + +This new model simplifies application logic: operations like key revocation can effectively reduce account size and complexity, rather than perpetually expanding a hashchain. It also makes it easier to implement future features—such as account balances—necessary for more dynamic and permissionless services. Overall, this change will streamline the codebase, lower storage and verification burdens, and provide a more intuitive development framework. + +### Account Diff Example +Before: +```rust +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +pub struct Hashchain { + pub entries: Vec, +} + +#[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, +} + +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +/// An [`Operation`] represents a state transition in the system. +/// In a blockchain analogy, this would be the full set of our transaction types. +pub enum Operation { + /// Creates a new account with the given id and key. + CreateAccount { + id: String, + service_id: String, + challenge: ServiceChallengeInput, + key: VerifyingKey, + }, + /// Registers a new service with the given id. + RegisterService { + id: String, + creation_gate: ServiceChallenge, + key: VerifyingKey, + }, + /// Adds arbitrary signed data to an existing account. + AddData { + #[serde(with = "raw_or_b64")] + data: Vec, + data_signature: Option, + }, + /// Adds a key to an existing account. + AddKey { key: VerifyingKey }, + /// Revokes a key from an existing account. + 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, +} + +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +pub struct Transaction { + pub id: String, + pub entry: HashchainEntry, +} +``` + +After: +```rust +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Hash)] +pub struct Account { + pub id: String, + pub nonce: u64, + pub valid_keys: Vec, + pub signed_data: HashMap>>, +} + +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +/// An [`Operation`] represents a state transition in the system. +/// In a blockchain analogy, this would be the full set of our transaction types. +pub enum Operation { + /// Creates a new account with the given id and key. + CreateAccount { + id: String, + service_id: String, + challenge: ServiceChallengeInput, + key: VerifyingKey, + }, + /// Registers a new service with the given id. + RegisterService { + id: String, + creation_gate: ServiceChallenge, + key: VerifyingKey, + }, + /// Adds arbitrary signed data to an existing account. + AddData { + #[serde(with = "raw_or_b64")] + data: Vec, + data_signature: Option, + }, + /// Adds a key to an existing account. + AddKey { key: VerifyingKey }, + /// Revokes a key from an existing account. + RevokeKey { key: VerifyingKey }, +} + +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +pub struct Transaction { + pub id: String, + pub operation: Operation, + pub nonce: u64, + pub signature: Signature, +} +``` + +## Effects + +Moving to an account model broadens the design space of feasible services on Prism by removing the account state growth that comes with append-only hashchains. + +This will be a heavy refactor, but in the end it will reduce code complexity massivley and improve developer experience. It is much more intuitive to work with account models than append-only hashchains. + +It also unlocks the possibliity of adding a balance field to accounts, which is a requirement for enabling permissionless service registration and other use cases (through one-way bridging from Celestia). + +That being said, we do lose one nice feature that we haven't implemented yet: The hashchain model allows retrieving the last entry of the account state, which is useful for some applications using `AddSignedData`. If we were to only store the last entry in the JMT rather than the full hashchain, this would allow for a more efficient way to retrieve the latest update to an account. This is a tradeoff we are willing to make for the benefits of the account model. + +## Further Considerations + +- Nonce Handling: With a hashchain, the nonce was implicit in the entry sequence. Moving to an account model requires explicitly tracking a nonce to ensure operation ordering and prevent replay attacks. +- Reset and Clearing Data: Services like certificate transparency may need to prune old data. The new model should support resetting or clearing some parts of the account state as needed. +- ServiceChallenge Verification: The move to in-circuit verification should include checking ServiceChallenge values during account creation. +- Storage Backend Updates: The storage backend must be adapted to store full account states as JMT values, rather than just the final hash of a hashchain. + + +## Action Items + +Ryan will implement the account model refactor.