From 64d22fe96170177996e413d1a1dc1667baa8e5b2 Mon Sep 17 00:00:00 2001 From: librelois <elois@ifee.fr> Date: Tue, 16 Oct 2018 20:26:53 +0200 Subject: [PATCH] [opti] Reduce blocks without cloning transactions --- documents/blockchain/v10/documents/block.rs | 8 ++++++-- documents/blockchain/v10/documents/transaction.rs | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/documents/blockchain/v10/documents/block.rs b/documents/blockchain/v10/documents/block.rs index 6d9dfb59..72db06e6 100644 --- a/documents/blockchain/v10/documents/block.rs +++ b/documents/blockchain/v10/documents/block.rs @@ -170,8 +170,12 @@ impl TxDocOrTxHash { /// lightening consists in transforming the document by its hash. pub fn reduce(&self) -> TxDocOrTxHash { if let TxDocOrTxHash::TxDoc(ref tx_doc) = self { - let mut tx_doc = tx_doc.deref().clone(); - TxDocOrTxHash::TxHash(tx_doc.get_hash()) + let tx_doc = tx_doc.deref(); + if let Some(ref hash) = tx_doc.get_hash_opt() { + TxDocOrTxHash::TxHash(*hash) + } else { + TxDocOrTxHash::TxHash(tx_doc.clone().compute_hash()) + } } else { self.clone() } diff --git a/documents/blockchain/v10/documents/transaction.rs b/documents/blockchain/v10/documents/transaction.rs index 94006b10..e436508b 100644 --- a/documents/blockchain/v10/documents/transaction.rs +++ b/documents/blockchain/v10/documents/transaction.rs @@ -508,6 +508,10 @@ impl TransactionDocument { self.hash = Some(Hash::from_hex(&sha256.result_str()).unwrap()); self.hash.expect("Try to get hash of a reduce tx !") } + /// get transaction hash option + pub fn get_hash_opt(&self) -> Option<Hash> { + self.hash + } /// Get transaction hash pub fn get_hash(&mut self) -> Hash { if let Some(hash) = self.hash { -- GitLab