Enum hdk::prelude::ChainTopOrdering
source · [−]pub enum ChainTopOrdering {
Relaxed,
Strict,
}
Variants
Relaxed
Relaxed chain top ordering REWRITES HEADERS INLINE during a flush of
the source chain to sit on top of the current chain top. The “as at”
of the zome call initial state is completely ignored.
This may be significantly more efficient if you are CERTAIN that none
of your zome or validation logic is order dependent. Examples include
simple chat messages or tweets. Note however that even chat messages
and tweets may have subtle order dependencies, such as if a cap grant
was written or revoked that would have invalidated the zome call that
wrote data after the revocation, etc.
The efficiency of relaxed ordering comes from simply rehashing and
signing headers on the new chain top during flush, avoiding the
overhead of the client, websockets, zome call instance, wasm execution,
validation, etc. that would result from handling a HeadMoved
error
via an external driver.
Strict
The default Strict
ordering is the default for a very good reason.
Writes normally compare the chain head from the start of a zome call
against the time a write transaction is flushed from the source chain.
This is REQUIRED for data integrity if any zome or validation logic
depends on the ordering of data in a chain.
This order dependence could be obvious such as an explicit reference or
dependency. It could be very subtle such as checking for the existence
or absence of some data.
If you are unsure whether your data is order dependent you should err
on the side of caution and handle HeadMoved
errors on the client of
the zome call and restart the zome call from the start.
Trait Implementations
Returns the “default value” for a type. Read more
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<ChainTopOrdering, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<ChainTopOrdering, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations
impl RefUnwindSafe for ChainTopOrdering
impl Send for ChainTopOrdering
impl Sync for ChainTopOrdering
impl Unpin for ChainTopOrdering
impl UnwindSafe for ChainTopOrdering
Blanket Implementations
Mutably borrows from an owned value. Read more
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more