diff --git a/documents/blockchain/v10/documents/block.rs b/documents/blockchain/v10/documents/block.rs index 6d9dfb59742252016f3e3c3c6645f87e8bf35cc1..72db06e6797dbf0ae367f04569200456de257148 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 94006b10d83835b2bff23022c92aeffeaa6d087c..e436508b6bfa097dfc650cf9a043d856db70c18b 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 {