Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
441 changes: 220 additions & 221 deletions Cargo.lock

Large diffs are not rendered by default.

180 changes: 90 additions & 90 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,90 +1,90 @@
[workspace]
resolver = "2"
# The canonical dig-node repo is a small workspace of the node ENGINE + its two
# DIG-Browser host shells:
# * dig-node-core — the NODE engine library (crate `dig_node_core`): RPC dispatch,
# serve/fetch/redirect, chain-watch, subscriptions, gap-fill,
# cache, P2P. The single node implementation shared by BOTH host
# shells below. (Renamed from `dig-node` so the engine library and
# the produced `dig-node` binary no longer share a name, #216.)
# * dig-node-service — the OS-service binary (`dig-node`): axum transport + control
# plane + CLI + service install. Depends on the engine library.
# * dig-runtime — the DIG Browser's in-process node: a cdylib (`dig_runtime.dll`)
# exposing the `dig_rpc`/`dig_wallet_rpc` C-ABI the browser links.
# * dig-wallet — the DIG Browser's built-in Chia wallet host (loopback UI + BLS
# signing), brought up by dig-runtime beside the node.
# For the `.dig` STORE FORMAT the node depends on digstore's store-format LIBRARY crates
# (digstore-core/-crypto/-chain/-host/-remote/-stage) as GIT dependencies — dig-node-core
# -> store-lib, never the reverse. digstore is only ever an RPC client of a node.
members = [
"crates/dig-node-core",
"crates/dig-chat-protocol",
"crates/dig-node-service",
"crates/dig-runtime",
"crates/dig-wallet",
]

[workspace.package]
edition = "2021"
# The RELEASE version of the repo's shipped artifact — the `dig-node` binary
# (`dig-node-service`, which inherits this via `version.workspace = true`). This is
# the version the nightly-release.yml stable channel + version-increment CI reads from
# the ROOT manifest (`[workspace.package].version`), so it MUST be set here for a
# release to fire (§3.6). The library crates (dig-node-core/dig-runtime/dig-wallet)
# keep their own independent versions — only the released binary tracks the workspace version.
version = "0.170.1"

# Release hardening, matching digstore: keep integer-overflow checks ON in release.
# The node parses untrusted serialized input and does offset/length arithmetic over
# it, so silent wrapping in release would turn a length bug into a memory/logic hazard.
[profile.release]
overflow-checks = true

# -- Retired: the dig-gossip vendored-fork patches (L7 peer network) ----------------------------------
#
# This workspace used to re-declare `[patch.crates-io]` entries redirecting `chia-protocol` and
# `chia-sdk-client` to the ADDITIVE forks dig-gossip vendored, because a git dependency's own patches
# do not apply transitively (cargo honours patches only from the ROOT manifest being built).
#
# dig-gossip 0.23.0 DELETED both forks (dig_ecosystem#2228). The DIG introducer opcodes
# (`RegisterPeer=218` / `RegisterAck=219`), `send_protocol_message` and the DIG rate-limit rows now
# live in the crates.io crate `dig-peer-protocol` 0.6, a superset of plain upstream `chia-protocol`,
# which dig-gossip depends on directly. There is nothing left at that rev to patch to, so the patch
# section — and the #1529 three-rev lockstep it forced — is retired rather than re-pointed.

# The dig-nat unification patch is RETIRED (#1280 crates.io cascade): the ENTIRE peer stack takes
# dig-nat from crates.io, so cargo resolves ONE dig-nat instance without any git redirect.
# dig-constants is likewise a plain crates.io dep everywhere now.
#
# The RESOLVED line today is dig-nat **0.18.0** (see `crates/dig-node-core/Cargo.toml`, which owns the
# declaration and the reasoning). Do not read a version out of this comment: an earlier revision of it
# asserted "dig-nat 0.7 ... resolves ONE dig-nat 0.7 instance", which was true of the #1280 cascade and
# was eleven minors stale by the time anyone read it. `tests/dependency_tree.rs` asserts the
# single-instance invariant against the resolved LOCK, which is the only claim that cannot go stale.
#
# THE PEER STACK IS NOW ON THE 0.36.1 LINE (dig_ecosystem#3161, 2026-08-26).
#
# The wall this comment used to describe was chia-bls: every published stack member required
# `dig-nat ^0.20` -> `dig-tls ^0.4`, which is the chia-bls 0.36.1 uplift, while dig-gossip was pinned
# at a rev reaching chia-protocol 0.26 through `dig-peer-protocol 0.6.0`. Adopting any of them split
# chia-bls across two lines inside one crate.
#
# The predicted unblock is exactly what happened, and it happened UPSTREAM: dig-gossip `main`
# (v0.30.0) moved to `dig-peer-protocol 0.7` and chia 0.36.1. Repointing the git rev in
# `crates/dig-node-core/Cargo.toml` is what let the stack move; nothing was shimmed, and nothing in
# this file needed to change to allow it.
#
# The resolved stack is dig-nat 0.20, dig-dht 0.12.1, dig-download 0.20.4, dig-peer 0.12.0,
# dig-peer-selector 0.9.2 -- the ^0.20 TIER, deliberately not the newest.
#
# WHY THE OLDER TIER IS THE CORRECT CHOICE, and the distinction a future lane will get wrong: the
# step from dig-nat 0.20 to 0.21 carries ZERO chia delta (both take `dig-tls ^0.4`). It is still not
# takeable, for a reason one level up -- dig-gossip v0.30.0 declares `dig-nat ^0.20`, while
# dig-dht 0.13 / dig-peer 0.13 / dig-download 0.21 / dig-peer-selector 0.10 all require `^0.21`.
# Taking the newer tier resolves TWO dig-nat lines while cargo prints success, MEASURED here, and
# dig-nat values cross from this crate into dig-download/dig-gossip/dig-peer-selector. One line per
# family beats the highest version numbers (CLAUDE.md §2.4b).
#
# So "0.21 is chia-blocked" is FALSE and "dig-node cannot reach 0.21" is still TRUE. The remaining
# unblock is a dig-gossip release against `dig-nat ^0.21`, upstream, never an edit in this file. Do
# not bridge two lines with a shim -- that is the §4.1 byte-drift class.
[workspace]
resolver = "2"
# The canonical dig-node repo is a small workspace of the node ENGINE + its two
# DIG-Browser host shells:
# * dig-node-core — the NODE engine library (crate `dig_node_core`): RPC dispatch,
# serve/fetch/redirect, chain-watch, subscriptions, gap-fill,
# cache, P2P. The single node implementation shared by BOTH host
# shells below. (Renamed from `dig-node` so the engine library and
# the produced `dig-node` binary no longer share a name, #216.)
# * dig-node-service — the OS-service binary (`dig-node`): axum transport + control
# plane + CLI + service install. Depends on the engine library.
# * dig-runtime — the DIG Browser's in-process node: a cdylib (`dig_runtime.dll`)
# exposing the `dig_rpc`/`dig_wallet_rpc` C-ABI the browser links.
# * dig-wallet — the DIG Browser's built-in Chia wallet host (loopback UI + BLS
# signing), brought up by dig-runtime beside the node.
# For the `.dig` STORE FORMAT the node depends on digstore's store-format LIBRARY crates
# (digstore-core/-crypto/-chain/-host/-remote/-stage) as GIT dependencies — dig-node-core
# -> store-lib, never the reverse. digstore is only ever an RPC client of a node.
members = [
"crates/dig-node-core",
"crates/dig-chat-protocol",
"crates/dig-node-service",
"crates/dig-runtime",
"crates/dig-wallet",
]
[workspace.package]
edition = "2021"
# The RELEASE version of the repo's shipped artifact — the `dig-node` binary
# (`dig-node-service`, which inherits this via `version.workspace = true`). This is
# the version the nightly-release.yml stable channel + version-increment CI reads from
# the ROOT manifest (`[workspace.package].version`), so it MUST be set here for a
# release to fire (§3.6). The library crates (dig-node-core/dig-runtime/dig-wallet)
# keep their own independent versions — only the released binary tracks the workspace version.
version = "0.171.0"
# Release hardening, matching digstore: keep integer-overflow checks ON in release.
# The node parses untrusted serialized input and does offset/length arithmetic over
# it, so silent wrapping in release would turn a length bug into a memory/logic hazard.
[profile.release]
overflow-checks = true
# -- Retired: the dig-gossip vendored-fork patches (L7 peer network) ----------------------------------
#
# This workspace used to re-declare `[patch.crates-io]` entries redirecting `chia-protocol` and
# `chia-sdk-client` to the ADDITIVE forks dig-gossip vendored, because a git dependency's own patches
# do not apply transitively (cargo honours patches only from the ROOT manifest being built).
#
# dig-gossip 0.23.0 DELETED both forks (dig_ecosystem#2228). The DIG introducer opcodes
# (`RegisterPeer=218` / `RegisterAck=219`), `send_protocol_message` and the DIG rate-limit rows now
# live in the crates.io crate `dig-peer-protocol` 0.6, a superset of plain upstream `chia-protocol`,
# which dig-gossip depends on directly. There is nothing left at that rev to patch to, so the patch
# section — and the #1529 three-rev lockstep it forced — is retired rather than re-pointed.
# The dig-nat unification patch is RETIRED (#1280 crates.io cascade): the ENTIRE peer stack takes
# dig-nat from crates.io, so cargo resolves ONE dig-nat instance without any git redirect.
# dig-constants is likewise a plain crates.io dep everywhere now.
#
# The RESOLVED line today is dig-nat **0.18.0** (see `crates/dig-node-core/Cargo.toml`, which owns the
# declaration and the reasoning). Do not read a version out of this comment: an earlier revision of it
# asserted "dig-nat 0.7 ... resolves ONE dig-nat 0.7 instance", which was true of the #1280 cascade and
# was eleven minors stale by the time anyone read it. `tests/dependency_tree.rs` asserts the
# single-instance invariant against the resolved LOCK, which is the only claim that cannot go stale.
#
# THE PEER STACK IS NOW ON THE 0.36.1 LINE (dig_ecosystem#3161, 2026-08-26).
#
# The wall this comment used to describe was chia-bls: every published stack member required
# `dig-nat ^0.20` -> `dig-tls ^0.4`, which is the chia-bls 0.36.1 uplift, while dig-gossip was pinned
# at a rev reaching chia-protocol 0.26 through `dig-peer-protocol 0.6.0`. Adopting any of them split
# chia-bls across two lines inside one crate.
#
# The predicted unblock is exactly what happened, and it happened UPSTREAM: dig-gossip `main`
# (v0.30.0) moved to `dig-peer-protocol 0.7` and chia 0.36.1. Repointing the git rev in
# `crates/dig-node-core/Cargo.toml` is what let the stack move; nothing was shimmed, and nothing in
# this file needed to change to allow it.
#
# The resolved stack is dig-nat 0.20, dig-dht 0.12.1, dig-download 0.20.4, dig-peer 0.12.0,
# dig-peer-selector 0.9.2 -- the ^0.20 TIER, deliberately not the newest.
#
# WHY THE OLDER TIER IS THE CORRECT CHOICE, and the distinction a future lane will get wrong: the
# step from dig-nat 0.20 to 0.21 carries ZERO chia delta (both take `dig-tls ^0.4`). It is still not
# takeable, for a reason one level up -- dig-gossip v0.30.0 declares `dig-nat ^0.20`, while
# dig-dht 0.13 / dig-peer 0.13 / dig-download 0.21 / dig-peer-selector 0.10 all require `^0.21`.
# Taking the newer tier resolves TWO dig-nat lines while cargo prints success, MEASURED here, and
# dig-nat values cross from this crate into dig-download/dig-gossip/dig-peer-selector. One line per
# family beats the highest version numbers (CLAUDE.md §2.4b).
#
# So "0.21 is chia-blocked" is FALSE and "dig-node cannot reach 0.21" is still TRUE. The remaining
# unblock is a dig-gossip release against `dig-nat ^0.21`, upstream, never an edit in this file. Do
# not bridge two lines with a shim -- that is the §4.1 byte-drift class.
Loading
Loading