Struct DeclareMiningJob

Source
#[repr(C)]
pub struct DeclareMiningJob<'decoder> { pub request_id: u32, pub mining_job_token: B0255<'decoder>, pub version: u32, pub coinbase_prefix: B064K<'decoder>, pub coinbase_suffix: B064K<'decoder>, pub tx_short_hash_nonce: u64, pub tx_short_hash_list: Seq064K<'decoder, ShortTxId<'decoder>>, pub tx_hash_list_hash: U256<'decoder>, pub excess_data: B064K<'decoder>, }
Expand description

Message used by JDC to proposes a selected set of transactions to JDS they wish to mine on.

Fields§

§request_id: u32

A unique identifier for this request.

Used for pairing request/response.

§mining_job_token: B0255<'decoder>

Token received previously through crate::AllocateMiningJobTokenSuccess message.

§version: u32

Header version field.

§coinbase_prefix: B064K<'decoder>

The coinbase transaction nVersion field

§coinbase_suffix: B064K<'decoder>

Up to 8 bytes (not including the length byte) which are to be placed at the beginning of the coinbase field in the coinbase transaction.

§tx_short_hash_nonce: u64

A unique nonce used to ensure DeclareMiningJob::tx_short_hash_list collisions are uncorrelated across the network.

§tx_short_hash_list: Seq064K<'decoder, ShortTxId<'decoder>>

A list of short transaction hashes which are used to identify the transactions.

SipHash 2-4 variant is used for short txids as a strategy to reduce bandwidth consumption. More specifically, the SipHash 2-4 variant is used.

Inputs to the SipHash functions are transaction hashes from the mempool. Secret keys k0, k1 are derived from the first two little-endian 64-bit integers from the SHA256(tx_short_hash_nonce), respectively. For more info see BIP-0152.

Upon receiving this message, JDS must check the list against its mempool.

This list does not include the coinbase transaction.

§tx_hash_list_hash: U256<'decoder>

Hash of the list of full txids, concatenated in the same sequence as they are declared in DeclareMiningJob::tx_short_hash_list.

§excess_data: B064K<'decoder>

Extra data which the JDS may require to validate the work.

Trait Implementations§

Source§

impl<'decoder> Clone for DeclareMiningJob<'decoder>

Source§

fn clone(&self) -> DeclareMiningJob<'decoder>

Returns a copy 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<'decoder> Debug for DeclareMiningJob<'decoder>

Source§

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

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

impl<'de: 'decoder, 'decoder> Deserialize<'de> for DeclareMiningJob<'decoder>

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<'d> GetSize for DeclareMiningJob<'d>

Source§

fn get_size(&self) -> usize

Source§

impl<'decoder> PartialEq for DeclareMiningJob<'decoder>

Source§

fn eq(&self, other: &DeclareMiningJob<'decoder>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'decoder> Serialize for DeclareMiningJob<'decoder>

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<'decoder> Eq for DeclareMiningJob<'decoder>

Source§

impl<'decoder> StructuralPartialEq for DeclareMiningJob<'decoder>

Auto Trait Implementations§

§

impl<'decoder> Freeze for DeclareMiningJob<'decoder>

§

impl<'decoder> RefUnwindSafe for DeclareMiningJob<'decoder>

§

impl<'decoder> Send for DeclareMiningJob<'decoder>

§

impl<'decoder> Sync for DeclareMiningJob<'decoder>

§

impl<'decoder> Unpin for DeclareMiningJob<'decoder>

§

impl<'decoder> UnwindSafe for DeclareMiningJob<'decoder>

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, dst: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,