Expand description
Types for source chain queries
Macros
unidiomatic way to derive default trait implementations of TryFrom in/out of SerializedBytes
Structs
An agents chain records returned from a agent_activity_query
The chain has been forked by these two actions
The action at the head of the complete chain.
This is as far as this authority can see a
chain with no gaps.
Specifies arguments to a query of the source chain, including ordering and filtering.
The highest action sequence observed by this authority.
This also includes the actions at this sequence.
If there is more then one then there is a fork.
A Canonical Serialized Bytes representation for data
If you have a data structure that needs a canonical byte representation use this
Always round-trip through SerializedBytes via. a single TryFrom implementation.
This ensures that the internal bytes of SerializedBytes are indeed canonical.
The corrolary is that if bytes are NOT wrapped in SerializedBytes we can assume they are NOT
canonical.
Typically we need a canonical serialization when data is to be handled at the byte level by
independently implemented and maintained systems.
UnsafeBytes the only way to implement a custom round trip through bytes for SerializedBytes
It is intended to be an internal implementation in TryFrom implementations
The assumption is that any code using UnsafeBytes is NOT valid messagepack data
This allows us to enforce that all data round-tripping through SerializedBytes is via TryFrom
and also allow for custom non-messagepack canonical representations of data types.
Enums
Get either the full activity or just the status of the chain
Defines several ways that queries can be restricted to a range.
Notably hash bounded ranges disambiguate forks whereas sequence indexes do
not as the same position can be found in many forks.
The reason that this does NOT use native rust range traits is that the hash
bounded queries MUST be inclusive otherwise the integrity and fork
disambiguation logic is impossible. An exclusive range bound that does not
include the final action tells us nothing about which fork to select
between N forks of equal length that proceed it. With an inclusive hash
bounded range the final action always points unambiguously at the “correct”
fork that the range is over. Start hashes are not needed to provide this
property so ranges can be hash terminated with a length of preceeding
records to return only. Technically the seq bounded ranges do not imply
any fork disambiguation and so could be a range but for simplicity we left
the API symmetrical in boundedness across all enum variants.
@TODO It may be possible to provide/implement RangeBounds in the case that
a full sequence of records/actions is provided but it would need to be
handled as inclusive first, to enforce the integrity of the query, then the
exclusiveness achieved by simply removing the final record after the fact.
Status of the agent activity chain
Traits
A data structure that can be deserialized from any data format supported
by Serde.
A data structure that can be serialized into any data format supported
by Serde.
Simple and safe type conversions that may fail in a controlled
way under some circumstances. It is the reciprocal of
TryInto
.An attempted conversion that consumes
self
, which may or may not be
expensive.