Skip to main content

SingleBlockMessage

Struct SingleBlockMessage 

Source
pub struct SingleBlockMessage {
    pub message: Align64<[u32; 16]>,
    pub prefix_state: [u32; 8],
    pub digit_index: usize,
    pub nonce_addend: u64,
    pub approx_working_set_count: NonZeroU32,
    pub no_trailing_zeros: bool,
}
Expand description

Solves an mCaptcha/Anubis/Cap.js SHA256 PoW where the SHA-256 message is a single block (512 bytes minus padding).

Construct: Proof := (prefix || ASCII_DECIMAL(nonce))

Currently the mutating part is always 9 digits long.

Fields§

§message: Align64<[u32; 16]>

the message template for the final block, pre-padded except for the mutating part

§prefix_state: [u32; 8]

the SHA-256 midstate for the previous block

§digit_index: usize

the index of the mutating part of the digits in the message

§nonce_addend: u64

the nonce addend

§approx_working_set_count: NonZeroU32

the approximate working set count

§no_trailing_zeros: bool

whether no trailing zeros are allowed

Implementations§

Source§

impl SingleBlockMessage

Source

pub fn new(prefix: &[u8], working_set: u32) -> Option<Self>

creates a new single block message

Source

pub fn new_f64( prefix: &[u8], working_set: u32, ) -> Option<(Self, Option<IEEE754LosslessFixupPrefix>)>

Create a new single block message using only IEEE 754 double precision floats that can stringify losslessly

The caller is expected to append the bytes from the prefix to the nonce before sending it to the server.

Trait Implementations§

Source§

impl Clone for SingleBlockMessage

Source§

fn clone(&self) -> SingleBlockMessage

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SingleBlockMessage

Source§

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

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

impl From<SingleBlockMessage> for SingleBlockSolver

Source§

fn from(message: SingleBlockMessage) -> Self

Converts to this type from the input type.
Source§

impl From<SingleBlockMessage> for DecimalSolver

Source§

fn from(message: SingleBlockMessage) -> Self

Converts to this type from the input type.
Source§

impl From<SingleBlockMessage> for SingleBlockSolver

Source§

fn from(message: SingleBlockMessage) -> Self

Converts to this type from the input type.
Source§

impl From<SingleBlockMessage> for DecimalSolver

Source§

fn from(message: SingleBlockMessage) -> Self

Converts to this type from the input type.
Source§

impl From<SingleBlockMessage> for SingleBlockSolver

Source§

fn from(message: SingleBlockMessage) -> Self

Converts to this type from the input type.
Source§

impl From<SingleBlockMessage> for DecimalSolver

Source§

fn from(message: SingleBlockMessage) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

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<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.