[−][src]Struct grin_chain::txhashset::RewindableKernelView
Rewindable (but readonly) view of the kernel set (based on kernel MMR).
Methods
impl<'a> RewindableKernelView<'a>
[src]
impl<'a> RewindableKernelView<'a>
pub fn new(
pmmr: RewindablePMMR<'a, TxKernel, PMMRBackend<TxKernel>>,
batch: &'a Batch,
header: BlockHeader
) -> RewindableKernelView<'a>
[src]
pub fn new(
pmmr: RewindablePMMR<'a, TxKernel, PMMRBackend<TxKernel>>,
batch: &'a Batch,
header: BlockHeader
) -> RewindableKernelView<'a>
Build a new readonly kernel view.
pub fn batch(&self) -> &'a Batch
[src]
pub fn batch(&self) -> &'a Batch
Accessor for the batch used in this view. We will discard this batch (rollback) at the end, so be aware of this. Nothing will get written to the db/index via this view.
pub fn rewind(&mut self, header: &BlockHeader) -> Result<(), Error>
[src]
pub fn rewind(&mut self, header: &BlockHeader) -> Result<(), Error>
Rewind this readonly view to a previous block. We accomplish this in a readonly way because we can rewind the PMMR via last_pos, without rewinding the underlying backend files.
pub fn validate_root(&self) -> Result<(), Error>
[src]
pub fn validate_root(&self) -> Result<(), Error>
Special handling to make sure the whole kernel set matches each of its roots in each block header, without truncation. We go back header by header, rewind and check each root. This fixes a potential weakness in fast sync where a reorg past the horizon could allow a whole rewrite of the kernel set.
Auto Trait Implementations
impl<'a> !Send for RewindableKernelView<'a>
impl<'a> !Send for RewindableKernelView<'a>
impl<'a> !Sync for RewindableKernelView<'a>
impl<'a> !Sync for RewindableKernelView<'a>
Blanket Implementations
impl<T> From for T
[src]
impl<T> From for T
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Gets the TypeId
of self
. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> SafeBorrow for T where
T: ?Sized,
impl<T> SafeBorrow for T where
T: ?Sized,
fn borrow_replacement(ptr: &T) -> &T
fn borrow_replacement(ptr: &T) -> &T
Given ptr
, which was obtained from a prior call to Self::borrow()
, return a value with the same nominal lifetime which is guaranteed to survive mutations to Self
. Read more
impl<T> UnsafeAny for T where
T: Any,
impl<T> UnsafeAny for T where
T: Any,
impl<T> Erased for T
impl<T> Erased for T
impl<T> Same for T
impl<T> Same for T
type Output = T
Should always be Self