dig-chainsource-interface 0.3.2

The DIG Network canonical ChainSource provider interface: the single pure trait + query types every Chia chain-source provider implements and every consumer depends on. Reads-only, no I/O, no keys, no network — chia-* deps only.
Documentation
# dig-chainsource-interface — the DIG Network canonical ChainSource provider interface.
#
# The SINGLE pure trait + query types every Chia chain-source provider implements and every
# consumer depends on. There is ONE ChainSource contract for the whole ecosystem — never a
# per-crate copy that could byte-drift. This crate is a pure LEAF: trait + query/result types +
# a typed error + KATs + docs. It performs NO I/O, holds NO keys, opens NO network, and ships NO
# concrete provider — those live in the provider crates and in chia-query (the registry +
# aggregating canonical source). See SPEC.md for the normative contract.
[package]
name = "dig-chainsource-interface"
# PATCH, not major. The chia-sdk-* uplift below is INTERNAL: every `chia-sdk-*`, `clvm*` and
# `chia-puzzle*` import is confined to `src/walk.rs`, and no type from any of them crosses a public
# signature — `LineageWalkError<E>` carries only `E`/`String`/`Bytes32`/`usize`/`Duration`, and the
# walk functions take and return `Bytes32`/`SingletonLineage`/`WalkBounds`. The one chia crate that
# IS on the public surface, `chia-protocol`, is unchanged at 0.36.1. So no consumer — including the
# `lineage-walk` ones — can observe this bump, and nine consumers pinning "0.3" must not be forced
# to edit a manifest for a change that cannot reach them.
version = "0.3.2"
edition = "2021"
rust-version = "1.75.0"
license = "Apache-2.0 OR MIT"
description = "The DIG Network canonical ChainSource provider interface: the single pure trait + query types every Chia chain-source provider implements and every consumer depends on. Reads-only, no I/O, no keys, no network — chia-* deps only."
repository = "https://github.com/DIG-Network/dig-chainsource-interface"
readme = "README.md"
keywords = ["dig", "chia", "chainsource", "coin", "provider"]
categories = ["cryptography::cryptocurrencies", "api-bindings"]

[dependencies]
chia-protocol = "0.36.1"
thiserror = "2"

# --- `lineage-walk` only (see [features]) ------------------------------------------------------
# The canonical launcher -> tip singleton walk DERIVES each successor by running the parent's inner
# puzzle, so it needs a CLVM evaluator and the vetted singleton layer/puzzle types. Every version is
# pinned to the same coherent chia-* set the rest of the DIG on-chain line rides; the SDK's own
# SingletonLayer is reused rather than re-implemented so the walk cannot byte-drift from the puzzle
# it authenticates against.
#
# The ceiling is chia-wallet-sdk 0.36.0 and the versions below are ITS dependency set, NOT the
# newest on crates.io: the primitives publish at 0.48 but the SDK cannot reach them, so 0.36.1
# primitives beside 0.36.0 `chia-sdk-*` is the coherent maximum. Raising either family past its
# own ceiling re-splits this crate rather than modernising it.
chia-puzzle-types = { version = "0.36.1", optional = true }
chia-puzzles = { version = "0.20.3", optional = true }
chia-sdk-driver = { version = "0.36.0", optional = true }
chia-sdk-types = { version = "0.36.0", optional = true }
clvm-traits = { version = "0.36.1", optional = true }
clvm-utils = { version = "0.36.1", optional = true }
clvmr = { version = "0.16.2", optional = true }

[features]
default = []
testing = []
# The canonical singleton lineage walk (`walk_singleton_lineage`). NON-DEFAULT: it pulls in a CLVM
# evaluator, and a consumer that only depends on the trait should not pay for one. Enabling it is
# purely additive — no existing item changes shape.
lineage-walk = [
    "dep:chia-puzzle-types",
    "dep:chia-puzzles",
    "dep:chia-sdk-driver",
    "dep:chia-sdk-types",
    "dep:clvm-traits",
    "dep:clvm-utils",
    "dep:clvmr",
]

[dev-dependencies]
chia-traits = "0.36.1"
hex = "0.4"
# The in-process Chia Simulator: the lineage-walk tests authenticate against REAL singleton spends
# (launcher, eve, recreation, melt) rather than hand-built fixtures, so the adversarial cases are
# genuine chain data.
chia-sdk-test = "0.36.0"
chia-bls = "0.36.1"
anyhow = "1"