pub enum MirrorReconcileRefusal {
AddressUncorroborated,
UrlUnchanged,
NoMirrorCoins,
InsufficientFunds,
ReconcileInProgress,
AdvertiseOff,
}Expand description
Why control.mirror.reconcile refused — and NOTHING was spent.
Every member is paired with the same guarantee (see MirrorReconcileResult::Refused): the
node found a reason it must not even START the reclaim-then-recreate sequence, per
dig_ecosystem#3203’s central invariant — establish and validate the new URL BEFORE reclaiming
anything, and if it cannot be established, do nothing at all. A reset that half-executes is
worse than one that refuses, because the half that runs is the half that destroys value.
Variants§
AddressUncorroborated
The candidate advertise URL is known from only ONE source and nothing has corroborated it yet (dig-node#566). Reconciling onto an uncorroborated address would lock collateral behind a URL this node cannot yet vouch for — a reset onto nothing.
UrlUnchanged
The URL this node would advertise next is IDENTICAL to the one its existing mirror coins already advertise. Reconciling would spend real $DIG to reach the state the node is already in, so the node refuses rather than charge the operator for a pure-cost no-op.
NoMirrorCoins
This node holds no mirror coins at all, so there is nothing to reclaim and no bond whose advertise URL could be stale.
InsufficientFunds
The operator wallet cannot afford ANY of the plan, not even its first step. See
MirrorReconcileResult::Partial for the case where it can afford a PREFIX instead.
ReconcileInProgress
A reconcile this node started earlier is still in flight. Reconciling is not idempotent mid-flight — a second call racing the first could reclaim a coin the first call is still waiting to recreate — so the node serializes reconciles rather than interleaving them.
AdvertiseOff
This node’s mirror-collateral advertising is switched off node-wide. There is no URL to reconcile TOWARD, because this node is not posting any mirror-coin advertisement at all.
Implementations§
Trait Implementations§
Source§impl Clone for MirrorReconcileRefusal
impl Clone for MirrorReconcileRefusal
Source§fn clone(&self) -> MirrorReconcileRefusal
fn clone(&self) -> MirrorReconcileRefusal
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more