pub struct SlashRecordDto {
pub slash_id: String,
pub offense_type: u8,
pub amount: String,
pub evidence_hash: String,
pub block_number: Option<u64>,
pub appeal_window_close: Option<u64>,
}Expand description
One slash detected against this node’s operator (SlashJudge.Slashed,
#1032, G-NODE-05). Surfaced so an operator (or a keeper script) can notice a
slash and file decdn appeal slash within the 30-day window without watching
the chain directly.
Fields§
§slash_id: StringThe globally-monotonic on-chain slashId (CapacityBond.slash),
rendered as a decimal string — it is a uint256 and can exceed u64.
This is the value passed to decdn appeal slash <SLASH_ID>.
offense_type: u8Offense taxonomy index (ADR 014): 0 = RateManipulation,
1 = Blacklist. Kept numeric to avoid drift if the enum grows.
amount: StringBond amount slashed, in TOKEN base units, as a decimal string (uint256).
evidence_hash: Stringkeccak256 evidence digest from the Slashed event (ADR 014),
0x-prefixed 32-byte hex.
block_number: Option<u64>Block number the Slashed log was mined in, or None if the log was
still pending when observed (rare; live logs carry a block number).
appeal_window_close: Option<u64>Nominal appeal-window close (Unix seconds): the Slashed block
timestamp + 30 days, or None if the block read failed. This is a cheap
client-side hint, NOT read from the CapacityBond slash record, and it
ignores protocol-pause extensions — which only ever move the real
deadline later (markAppealOpen adds pausedTotal). Safe to file
before this; a keeper must not treat a just-past value as final.
Trait Implementations§
Source§impl Clone for SlashRecordDto
impl Clone for SlashRecordDto
Source§impl Debug for SlashRecordDto
impl Debug for SlashRecordDto
Source§impl<'de> Deserialize<'de> for SlashRecordDto
impl<'de> Deserialize<'de> for SlashRecordDto
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SlashRecordDto
impl RefUnwindSafe for SlashRecordDto
impl Send for SlashRecordDto
impl Sync for SlashRecordDto
impl Unpin for SlashRecordDto
impl UnsafeUnpin for SlashRecordDto
impl UnwindSafe for SlashRecordDto
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<'de, T> BorrowedRpcObject<'de> for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more