NewExtendedMiningJob

Struct NewExtendedMiningJob 

Source
pub struct NewExtendedMiningJob<'decoder> {
    pub channel_id: u32,
    pub job_id: u32,
    pub min_ntime: Sv2Option<'decoder, u32>,
    pub version: u32,
    pub version_rolling_allowed: bool,
    pub merkle_path: Seq0255<'decoder, U256<'decoder>>,
    pub coinbase_tx_prefix: B064K<'decoder>,
    pub coinbase_tx_suffix: B064K<'decoder>,
}
Expand description

Message used by an upstream to provide an updated mining job to the downstream through Extended or Group Channel only.

An Extended Job allows rolling Merkle Roots, giving extensive control over the search space so that they can implement various advanced use cases such as: translation between Stratum V1 and V2 protocols, difficulty aggregation and search space splitting.

Fields§

§channel_id: u32

Identifier of the Extended Mining Channel that this job is valid for.

For a Group Channel, the message is broadcasted to all standard channels belonging to the group.

§job_id: u32

Upstream’s identification of the mining job.

This identifier must be provided to the upstream when shares are submitted later in the mining process.

§min_ntime: Sv2Option<'decoder, u32>

Smallest nTime value available for hashing for the new mining job.

An empty value indicates this is a future job and will be ready to mine on once a SetNewPrevHash message is received with a matching job_id. SetNewPrevHash message will also provide prev_hash and min_ntime.

Otherwise, if NewMiningJob::min_ntime value is set, the downstream must start mining on it immediately. In this case, the new mining job uses the prev_hash from the last received SetNewPrevHash message.

§version: u32

Version field that reflects the current network consensus.

As specified in BIP320, the general purpose bits can be freely manipulated by the downstream node.

The downstream node must not rely on the upstream node to set the BIP320 bits to any particular value.

§version_rolling_allowed: bool

If set to true, the general purpose bits of NewExtendedMiningJob::version (as specified in BIP320) can be freely manipulated by the downstream node.

If set to false, the downstream node must use NewExtendedMiningJob::version as it is defined by this message.

§merkle_path: Seq0255<'decoder, U256<'decoder>>

Merkle path hashes ordered from deepest.

§coinbase_tx_prefix: B064K<'decoder>

Prefix part of the coinbase transaction.

§coinbase_tx_suffix: B064K<'decoder>

Suffix part of the coinbase transaction.

Implementations§

Source§

impl<'decoder> NewExtendedMiningJob<'decoder>

Source

pub fn into_static(self) -> NewExtendedMiningJob<'static>

Source§

impl<'decoder> NewExtendedMiningJob<'decoder>

Source

pub fn as_static(&self) -> NewExtendedMiningJob<'static>

Source§

impl NewExtendedMiningJob<'_>

Source

pub fn is_future(&self) -> bool

Source

pub fn set_future(&mut self)

Source

pub fn set_no_future(&mut self, min_ntime: u32)

Trait Implementations§

Source§

impl<'decoder> Clone for NewExtendedMiningJob<'decoder>

Source§

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

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<'decoder> Debug for NewExtendedMiningJob<'decoder>

Source§

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

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

impl<'decoder> Decodable<'decoder> for NewExtendedMiningJob<'decoder>

Source§

fn get_structure(data: &[u8]) -> Result<Vec<FieldMarker>, Error>

Defines the expected structure of a type based on binary data. Read more
Source§

fn from_decoded_fields( data: Vec<DecodableField<'decoder>>, ) -> Result<Self, Error>

Constructs the type from a vector of decoded fields. Read more
Source§

fn from_bytes(data: &'a mut [u8]) -> Result<Self, Error>

Decodes the type from raw bytes. Read more
Source§

impl Display for NewExtendedMiningJob<'_>

Source§

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

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

impl<'decoder> From<NewExtendedMiningJob<'decoder>> for EncodableField<'decoder>

Source§

fn from(v: NewExtendedMiningJob<'decoder>) -> Self

Converts to this type from the input type.
Source§

impl<'decoder> GetSize for NewExtendedMiningJob<'decoder>

Source§

fn get_size(&self) -> usize

get_size returns total size of the type in bytes.
Source§

impl<'decoder> PartialEq for NewExtendedMiningJob<'decoder>

Source§

fn eq(&self, other: &NewExtendedMiningJob<'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> Eq for NewExtendedMiningJob<'decoder>

Source§

impl<'decoder> StructuralPartialEq for NewExtendedMiningJob<'decoder>

Auto Trait Implementations§

§

impl<'decoder> Freeze for NewExtendedMiningJob<'decoder>

§

impl<'decoder> RefUnwindSafe for NewExtendedMiningJob<'decoder>

§

impl<'decoder> Send for NewExtendedMiningJob<'decoder>

§

impl<'decoder> Sync for NewExtendedMiningJob<'decoder>

§

impl<'decoder> Unpin for NewExtendedMiningJob<'decoder>

§

impl<'decoder> !UnwindSafe for NewExtendedMiningJob<'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, 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<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<'a, T> Encodable for T
where T: Into<EncodableField<'a>>,

Source§

fn to_bytes(self, dst: &mut [u8]) -> Result<usize, Error>

Encodes the object into the provided byte slice. Read more
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.