Task
Step 7's DHT pointer half — attaching unverified_mirror_coin_id to this node's provider
announce (crates/dig-node-core/src/seams/dig_peer/dht.rs, announce_inventory_ids) and
re-announcing on epoch rollover — is BLOCKED upstream and cannot be unblocked by a version edit in
dig-node.
The measurement, re-taken 2026-08-30 against index.crates.io
| crate |
latest published |
requires |
dig-download |
0.21.0 |
dig-dht ^0.13 |
dig-peer-selector |
0.10.0 |
dig-dht ^0.13 |
dig-dht |
0.15.0 |
— |
^0.13 and 0.15 are semver-INCOMPATIBLE on a 0.x line, so declaring dig-dht = "0.15" in
dig-node resolves two dig-dht lines while cargo prints success. ProviderRecord::unverified_mirror_coin_id
lives in dig-dht 0.15 (dig-dht#23) and a repo-wide grep for that identifier returns zero hits in
the dig-node tree.
Bridging the two lines with a shim is the byte-drift class this ecosystem does not do.
Resume condition — checkable, not a judgement
dig-download and dig-peer-selector both release against dig-dht ^0.15. Then dig-node takes the
tier in one bump (measured from the LOCK, never the caret — name every crate explicitly with
cargo update -p <crate>, since a caret-compatible transitive is invisible to cargo fetch and can
leave two lines alive while reporting success).
What the pointer must then do
- It is UNTRUSTED (NC-12): it tells a verifier where to look, never what the coin is. Its absence
must not degrade discovery and must not read as a fault.
- A verifier accepts a coin only on the coin's own evidence — at the mirror puzzle hash, genuinely
$DIG with the asset id re-derived from the creating spend, carrying the declared collateral, and
MirrorCoin::advertises(store, root, epoch) passing.
- Re-announce on epoch rollover. dig-dht has no clock, and republish re-attaches whatever was
recorded at announce time — so an un-refreshed pointer is wrong one epoch after publication, and a
correctly-collateralised node reads as uncollateralised.
Parent
#412 ·
#377 ·
epic https://github.com/DIG-Network/dig_ecosystem/issues/3166
Task
Step 7's DHT pointer half — attaching
unverified_mirror_coin_idto this node's providerannounce (
crates/dig-node-core/src/seams/dig_peer/dht.rs,announce_inventory_ids) andre-announcing on epoch rollover — is BLOCKED upstream and cannot be unblocked by a version edit in
dig-node.
The measurement, re-taken 2026-08-30 against
index.crates.iodig-downloaddig-dht ^0.13dig-peer-selectordig-dht ^0.13dig-dht^0.13and0.15are semver-INCOMPATIBLE on a0.xline, so declaringdig-dht = "0.15"indig-node resolves two dig-dht lines while cargo prints success.
ProviderRecord::unverified_mirror_coin_idlives in dig-dht 0.15 (dig-dht#23) and a repo-wide grep for that identifier returns zero hits in
the dig-node tree.
Bridging the two lines with a shim is the byte-drift class this ecosystem does not do.
Resume condition — checkable, not a judgement
dig-download and dig-peer-selector both release against
dig-dht ^0.15. Then dig-node takes thetier in one bump (measured from the LOCK, never the caret — name every crate explicitly with
cargo update -p <crate>, since a caret-compatible transitive is invisible tocargo fetchand canleave two lines alive while reporting success).
What the pointer must then do
must not degrade discovery and must not read as a fault.
$DIG with the asset id re-derived from the creating spend, carrying the declared collateral, and
MirrorCoin::advertises(store, root, epoch)passing.recorded at announce time — so an un-refreshed pointer is wrong one epoch after publication, and a
correctly-collateralised node reads as uncollateralised.
Parent
#412 ·
#377 ·
epic https://github.com/DIG-Network/dig_ecosystem/issues/3166