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: u32Identifier 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: u32Upstream’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: u32Version 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: boolIf 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>
impl<'decoder> NewExtendedMiningJob<'decoder>
pub fn into_static(self) -> NewExtendedMiningJob<'static>
Source§impl<'decoder> NewExtendedMiningJob<'decoder>
impl<'decoder> NewExtendedMiningJob<'decoder>
pub fn as_static(&self) -> NewExtendedMiningJob<'static>
Source§impl NewExtendedMiningJob<'_>
impl NewExtendedMiningJob<'_>
pub fn is_future(&self) -> bool
pub fn set_future(&mut self)
pub fn set_no_future(&mut self, min_ntime: u32)
Trait Implementations§
Source§impl<'decoder> Clone for NewExtendedMiningJob<'decoder>
impl<'decoder> Clone for NewExtendedMiningJob<'decoder>
Source§fn clone(&self) -> NewExtendedMiningJob<'decoder>
fn clone(&self) -> NewExtendedMiningJob<'decoder>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'decoder> Debug for NewExtendedMiningJob<'decoder>
impl<'decoder> Debug for NewExtendedMiningJob<'decoder>
Source§impl<'decoder> Decodable<'decoder> for NewExtendedMiningJob<'decoder>
impl<'decoder> Decodable<'decoder> for NewExtendedMiningJob<'decoder>
Source§fn get_structure(data: &[u8]) -> Result<Vec<FieldMarker>, Error>
fn get_structure(data: &[u8]) -> Result<Vec<FieldMarker>, Error>
Source§fn from_decoded_fields(
data: Vec<DecodableField<'decoder>>,
) -> Result<Self, Error>
fn from_decoded_fields( data: Vec<DecodableField<'decoder>>, ) -> Result<Self, Error>
Source§impl Display for NewExtendedMiningJob<'_>
impl Display for NewExtendedMiningJob<'_>
Source§impl<'decoder> From<NewExtendedMiningJob<'decoder>> for EncodableField<'decoder>
impl<'decoder> From<NewExtendedMiningJob<'decoder>> for EncodableField<'decoder>
Source§fn from(v: NewExtendedMiningJob<'decoder>) -> Self
fn from(v: NewExtendedMiningJob<'decoder>) -> Self
Source§impl<'decoder> GetSize for NewExtendedMiningJob<'decoder>
impl<'decoder> GetSize for NewExtendedMiningJob<'decoder>
Source§impl<'decoder> PartialEq for NewExtendedMiningJob<'decoder>
impl<'decoder> PartialEq for NewExtendedMiningJob<'decoder>
Source§fn eq(&self, other: &NewExtendedMiningJob<'decoder>) -> bool
fn eq(&self, other: &NewExtendedMiningJob<'decoder>) -> bool
self and other values to be equal, and is used by ==.