Enum DbId

Source
#[repr(u32)]
pub enum DbId {
Show 14 variants Service = 0, WriteOnly = 1, Native = 2, BlockLog = 3, HistoryEvent = 4, UiEvent = 5, MerkleEvent = 6, BlockProof = 7, PrevAuthServices = 8, NumChainDatabases = 9, Subjective = 64, NativeSubjective = 65, EndIndependent = 66, Temporary = 67,
}
Expand description

Identify database to operate on

Native functions expose a set of databases which serve various purposes. This enum identifies which database to use when invoking those functions.

Variants§

§

Service = 0

Services should store their tables here

The first 64 bits of the key match the service.

§

WriteOnly = 1

Data for RPC

Write-only during transactions, and read-only during RPC. Individual nodes may modify this database, expire data from this database, or wipe it entirely at will.

The first 64 bits of the key match the service.

§

Native = 2

Tables used by native code

This database enforces constraints during write. Only writable by privileged services, but readable by all services.

Some writes to this database indicate chain upgrades. If a privileged service writes to a table that an older node version doesn’t know about, or writes new fields to an existing table that an older node doesn’t know about, then that node will reject the write. If the producers accepted the write into a block, then the node will stop following the chain until it’s upgraded to a newer version.

§

BlockLog = 3

Block log

Transactions don’t have access to this, but RPC does.

§

HistoryEvent = 4

Long-term history event storage

Write-only during transactions, and read-only during RPC. Individual nodes may modify this database, expire data from this database, or wipe it entirely at will.

TODO: this policy may eventually change to allow time-limited read access during transactions.

Key is an auto-incremented, 64-bit unsigned number.

Value must begin with:

  • 32 bit: block number
  • 64 bit: service

Only usable with these native functions:

TODO: right now the value must begin with the service. Revisit whether beginning with the block number is useful.

§

UiEvent = 5

Short-term history event storage

These events are erased once the block that produced them becomes final. They notify user interfaces which subscribe to activity.

Write-only during transactions, and read-only during RPC. Individual nodes may modify this database, expire data from this database, or wipe it entirely at will.

Key is an auto-incremented, 64-bit unsigned number.

Value must begin with:

  • 32 bit: block number
  • 64 bit: service

Only usable with these native functions:

TODO: right now the value must begin with the service. Revisit whether beginning with the block number is useful.

§

MerkleEvent = 6

Events which go into the merkle tree

TODO: read support; right now only RPC mode can read

Services may produce these events during transactions and may read them up to 1 hour (configurable) after they were produced, or they reach finality, which ever is longer.

Key is an auto-incremented, 64-bit unsigned number.

Value must begin with:

  • 32 bit: block number
  • 64 bit: service

Only usable with these native functions:

TODO: right now the value must begin with the service. Revisit whether beginning with the block number is useful.

§

BlockProof = 7

block signatures

§

PrevAuthServices = 8

Not accessible to WASM. During joint consensus, this holds a subset of native as of the last irreversible block. Outside joint consensus, it is empty.

§

NumChainDatabases = 9

Number of defined databases

This number may grow in the future

§

Subjective = 64

Data that is not part of consensus

Only accessible to subjective services during transactions, but readable by all services during RPC. Doesn’t undo from aborting transactions, aborting blocks, or forking blocks. Individual nodes may modify this database or wipe

The first 64 bits of the key match the service.

§

NativeSubjective = 65

Subjective tables used by native code

Not fully implemented yet and not available to services. Doesn’t undo from aborting transactions, aborting blocks, or forking blocks.

§

EndIndependent = 66

§

Temporary = 67

Subjective tables that are local to the transaction/query/callback context.

Trait Implementations§

Source§

impl Clone for DbId

Source§

fn clone(&self) -> DbId

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DbId

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DbId

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Pack for DbId

Source§

fn pack(&self, dest: &mut Vec<u8>)

Convert to fracpack format Read more
Source§

fn packed(&self) -> Vec<u8>

Convert to fracpack format Read more
Source§

impl Serialize for DbId

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl ToSchema for DbId

Source§

fn schema(_builder: &mut SchemaBuilder) -> AnyType

Source§

impl<'a> Unpack<'a> for DbId

Source§

fn unpack(src: &'a [u8], pos: &mut u32) -> Result<Self>

Convert from fracpack format. Also verifies the integrity of the data. Read more
Source§

fn verify(src: &'a [u8], pos: &mut u32) -> Result<()>

Verify the integrity of fracpack data. You don’t need to call this if using [Pack::unpack] since it verifies integrity during unpack.
Source§

fn unpacked(src: &'a [u8]) -> Result<Self, Error>

Convert from fracpack format. Also verifies the integrity of the data. Read more
Source§

fn verify_no_extra(src: &'a [u8]) -> Result<(), Error>

Verify the integrity of fracpack data, plus make sure there is no leftover data after it.
Source§

impl Copy for DbId

Auto Trait Implementations§

§

impl Freeze for DbId

§

impl RefUnwindSafe for DbId

§

impl Send for DbId

§

impl Sync for DbId

§

impl Unpin for DbId

§

impl UnwindSafe for DbId

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<Reference, Outer, OuterFieldType, Inner> HasPart<Nested<Outer, Inner>> for Reference
where Reference: HasPart<Outer> + ?Sized, Outer: Part<PartType = Field<OuterFieldType>>, Inner: Part, OuterFieldType: HasPart<Inner, RawTarget = OuterFieldType> + PartialRefTarget + ?Sized,

Source§

unsafe fn part_ptr( ptr: *const <Reference as PartialRefTarget>::RawTarget, ) -> <<Inner as Part>::PartType as PartType>::Ptr

Given a constant pointer to a target, produce a constant pointer to a part of it. Read more
Source§

unsafe fn part_ptr_mut( ptr: *mut <Reference as PartialRefTarget>::RawTarget, ) -> <<Inner as Part>::PartType as PartType>::PtrMut

Given a mutable pointer to a target, produce a mutable pointer to a part of it. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> UnpackOwned for T
where T: for<'a> Unpack<'a>,