diff --git a/chain/src/txhashset/rewindable_kernel_view.rs b/chain/src/txhashset/rewindable_kernel_view.rs index 137bdc3c6..e9e996c29 100644 --- a/chain/src/txhashset/rewindable_kernel_view.rs +++ b/chain/src/txhashset/rewindable_kernel_view.rs @@ -15,7 +15,7 @@ //! Lightweight readonly view into kernel MMR for convenience. use core::core::pmmr::RewindablePMMR; -use core::core::{BlockHeader, TxKernelEntry}; +use core::core::{BlockHeader, TxKernel}; use error::{Error, ErrorKind}; use grin_store::pmmr::PMMRBackend; @@ -23,7 +23,7 @@ use store::Batch; /// Rewindable (but readonly) view of the kernel set (based on kernel MMR). pub struct RewindableKernelView<'a> { - pmmr: RewindablePMMR<'a, TxKernelEntry, PMMRBackend>, + pmmr: RewindablePMMR<'a, TxKernel, PMMRBackend>, batch: &'a Batch<'a>, header: BlockHeader, } @@ -31,7 +31,7 @@ pub struct RewindableKernelView<'a> { impl<'a> RewindableKernelView<'a> { /// Build a new readonly kernel view. pub fn new( - pmmr: RewindablePMMR<'a, TxKernelEntry, PMMRBackend>, + pmmr: RewindablePMMR<'a, TxKernel, PMMRBackend>, batch: &'a Batch, header: BlockHeader, ) -> RewindableKernelView<'a> { diff --git a/chain/src/txhashset/txhashset.rs b/chain/src/txhashset/txhashset.rs index 1971b75c5..2538fc734 100644 --- a/chain/src/txhashset/txhashset.rs +++ b/chain/src/txhashset/txhashset.rs @@ -104,7 +104,7 @@ pub struct TxHashSet { output_pmmr_h: PMMRHandle, rproof_pmmr_h: PMMRHandle, - kernel_pmmr_h: PMMRHandle, + kernel_pmmr_h: PMMRHandle, // chain store used as index of commitments to MMR positions commit_index: Arc, @@ -199,7 +199,7 @@ impl TxHashSet { /// as above, for kernels pub fn last_n_kernel(&mut self, distance: u64) -> Vec<(Hash, TxKernelEntry)> { - let kernel_pmmr: PMMR = + let kernel_pmmr: PMMR = PMMR::at(&mut self.kernel_pmmr_h.backend, self.kernel_pmmr_h.last_pos); kernel_pmmr.get_last_n_insertions(distance) } @@ -256,7 +256,7 @@ impl TxHashSet { PMMR::at(&mut self.output_pmmr_h.backend, self.output_pmmr_h.last_pos); let rproof_pmmr: PMMR = PMMR::at(&mut self.rproof_pmmr_h.backend, self.rproof_pmmr_h.last_pos); - let kernel_pmmr: PMMR = + let kernel_pmmr: PMMR = PMMR::at(&mut self.kernel_pmmr_h.backend, self.kernel_pmmr_h.last_pos); TxHashSetRoots { @@ -775,7 +775,7 @@ pub struct Extension<'a> { header_pmmr: PMMR<'a, BlockHeader, PMMRBackend>, output_pmmr: PMMR<'a, OutputIdentifier, PMMRBackend>, rproof_pmmr: PMMR<'a, RangeProof, PMMRBackend>, - kernel_pmmr: PMMR<'a, TxKernelEntry, PMMRBackend>, + kernel_pmmr: PMMR<'a, TxKernel, PMMRBackend>, /// Rollback flag. rollback: bool, @@ -996,7 +996,7 @@ impl<'a> Extension<'a> { /// Push kernel onto MMR (hash and data files). fn apply_kernel(&mut self, kernel: &TxKernel) -> Result<(), Error> { self.kernel_pmmr - .push(TxKernelEntry::from(kernel.clone())) + .push(kernel.clone()) .map_err(&ErrorKind::TxHashSetErr)?; Ok(()) } diff --git a/core/src/core/transaction.rs b/core/src/core/transaction.rs index 6c6bd630e..33728a3a0 100644 --- a/core/src/core/transaction.rs +++ b/core/src/core/transaction.rs @@ -188,6 +188,15 @@ impl Readable for TxKernel { } } +/// We store TxKernelEntry in the kernel MMR. +impl PMMRable for TxKernel { + type E = TxKernelEntry; + + fn as_elmt(self) -> Self::E { + self.into() + } +} + impl TxKernel { /// Return the excess commitment for this tx_kernel. pub fn excess(&self) -> Commitment { @@ -310,14 +319,6 @@ impl FixedLength for TxKernelEntry { + secp::constants::AGG_SIGNATURE_SIZE; } -impl PMMRable for TxKernelEntry { - type E = Self; - - fn as_elmt(self) -> Self::E { - self - } -} - /// TransactionBody is a common abstraction for transaction and block #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TransactionBody {