dig-chainsource-interface 0.3.1

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"
version = "0.3.1"
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 (chia-protocol
# 0.36 / chia-wallet-sdk 0.34); the SDK's own SingletonLayer is reused rather than re-implemented so
# the walk cannot byte-drift from the puzzle it authenticates against.
chia-puzzle-types = { version = "0.36.1", optional = true }
chia-puzzles = { version = "0.20", optional = true }
chia-sdk-driver = { version = "0.34", optional = true }
chia-sdk-types = { version = "0.34", optional = true }
clvm-traits = { version = "0.36.1", optional = true }
clvm-utils = { version = "0.36.1", optional = true }
clvmr = { version = "0.16", 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.34"
chia-bls = "0.36.1"
anyhow = "1"