indexes
the cybergraph maintains 10 public evaluation dimensions within the unified BBG polynomial committed as architecture. individual cyberlinks are private — indexes contain only public aggregates: particles, axons, neuron summaries, tokens, and temporal state.
polynomial index structure
all public indexes are evaluation dimensions of BBG_poly(index, key, t). the data at each evaluation point is the same as the former NMT leaf data. the commitment mechanism changes — hash trees are replaced by polynomial binding.
BBG_poly(index, key, t) = value
query: Lens.open(BBG_root, (index, key, t)) → (value, proof)
verify: Lens.verify(BBG_root, (index, key, t), value, proof)
verification cost: O(λ log log N) field operations, ~5 μs
proof size: ~200 bytes per opening (vs ~1 KiB NMT path)
completeness proofs
the defining capability: prove "these are ALL items in a given namespace."
COMPLETENESS PROOF for namespace N at dimension D:
polynomial approach:
Lens opening over the evaluation region where index = D and key ∈ N
the polynomial's binding property guarantees: the committed polynomial
evaluates to exactly the claimed values at the queried points.
omission is algebraically prevented by Lens soundness.
batch opening for range [a, b]:
one batch Lens proof covers all entries in the range
verification: O(1) — one Lens check
ABSENCE PROOF for key K:
Lens opening at (D, K, t) → 0
proves: no entry exists at this evaluation point
cost:
proof size: O(1) per opening ≈ ~200 bytes
verification: O(1) field operations
for n = 2^32: same cost (polynomial, not tree depth)
the 10 polynomial evaluation dimensions
DIMENSION 1: particles
evaluation: BBG_poly(particles, CID, t) → particle_record
key: CID (content hash)
proves: "particle P exists with energy E and focus π*"
note: content-particles and axon-particles share the same dimension
DIMENSION 2: axons_out
evaluation: BBG_poly(axons_out, source_CID, t) → axon_pointers
key: source particle CID
proves: "these are ALL outgoing axons from particle P"
DIMENSION 3: axons_in
evaluation: BBG_poly(axons_in, target_CID, t) → axon_pointers
key: target particle CID
proves: "these are ALL incoming axons to particle P"
DIMENSION 4: neurons
evaluation: BBG_poly(neurons, neuron_id, t) → neuron_record
key: neuron_id (hash of public key)
proves: "neuron N has focus F, karma κ, stake S"
DIMENSION 5: locations
evaluation: BBG_poly(locations, entity_id, t) → location_record
key: neuron_id or validator_id
proves: "entity E has proof of location L"
DIMENSION 6: coins
evaluation: BBG_poly(coins, denom_hash, t) → supply_record
key: denomination hash
proves: "denomination D has supply S, and this is complete"
DIMENSION 7: cards
evaluation: BBG_poly(cards, card_id, t) → card_record
key: card_id
proves: "card C exists, bound to axon-particle P, owned by N"
DIMENSION 8: files
evaluation: BBG_poly(files, CID, t) → availability_record
key: CID (content hash)
proves: "content for particle P is retrievable (DAS)"
DIMENSION 9: time
evaluation: BBG_poly(time, boundary, t) → snapshot
key: time boundary value
proves: "BBG_root at time T was R"
note: replaces 7-namespace NMT. continuous — any t is queryable via Lens opening
DIMENSION 10: signals
evaluation: BBG_poly(signals, step, t) → signal_batch_hash
key: step counter / batch index
proves: "signal batch at step S was accepted"
leaf structures
the data at each evaluation point matches the former NMT leaf structures. the polynomial encodes the same information — only the commitment changes.
particle entry (content-particle):
key: CID 32 bytes
energy: F_p 8 bytes
π*: F_p 8 bytes
particle entry (axon-particle, extends content-particle):
key: CID = H(from, to) 32 bytes
energy: F_p 8 bytes
π*: F_p 8 bytes
weight A_{pq}: F_p 8 bytes
market state s_YES: F_p 8 bytes
market state s_NO: F_p 8 bytes
meta-score: F_p 8 bytes
axons_out entry:
key: source_CID 32 bytes
axon_particle_CID: F_p⁴ 32 bytes
axons_in entry:
key: target_CID 32 bytes
axon_particle_CID: F_p⁴ 32 bytes
neuron entry:
key: neuron_id 32 bytes
focus: F_p 8 bytes
karma κ: F_p 8 bytes
stake: F_p 8 bytes
coins entry:
key: denom_hash 32 bytes
total_supply: F_p 8 bytes
mint_authority: F_p⁴ 32 bytes
max_supply: F_p (0 = unlimited) 8 bytes
transfer_rules: u8 1 byte
cards entry:
key: card_id 32 bytes
bound_axon_particle: F_p⁴ 32 bytes
current_owner: F_p⁴ 32 bytes
creator: F_p⁴ 32 bytes
creation_time: u64 8 bytes
files entry:
key: CID 32 bytes
chunk_count: u32 4 bytes
erasure_commitment: F_p⁴ 32 bytes
availability_window: u64 8 bytes
locations entry:
key: entity_id 32 bytes
location_claim: F_p⁴ 32 bytes
attestation_proof: F_p⁴ 32 bytes
timestamp: u64 8 bytes
time entry:
key: boundary_value 8 bytes
BBG_root_snapshot: F_p⁴ 32 bytes
signals entry:
key: batch_index 8 bytes
signal_batch_hash: F_p⁴ 32 bytes
recursive_proof_hash: F_p⁴ 32 bytes
two levels of polynomial access
polynomial access to any particle field operates at two levels:
-
BBG_poly dimension — the AGGREGATE level. BBG_poly(particles, CID, t) returns energy, pi-star, axon weights. this is the state index: what the network knows about a particle in aggregate.
-
particle's own polynomial — the CONTENT level. Lens.open(particle_commitment, position) returns any byte range of the particle's content. this is the data layer: the actual content the particle addresses.
both are Lens openings. both produce ~200 byte proofs. both verify in ~5 microseconds. the difference is what polynomial you open against: BBG_poly for aggregate state, the particle's own commitment for content data.
aggregate query: BBG_poly(particles, CID, t) → energy, π*
content query: Lens.open(particle_poly(CID), byte_offset) → content bytes
same Lens. same verification. different polynomials.
cross-index consistency
cross-index consistency between particles, axons_out, and axons_in is structural. all three are evaluation dimensions of BBG_poly — the same committed polynomial. they cannot disagree because they are the same mathematical object evaluated at different points.
INVARIANT (enforced by construction)
for every axon-particle a = H(from, to):
1. BBG_poly(particles, a, t) contains the axon data
2. BBG_poly(axons_out, from, t) references a
3. BBG_poly(axons_in, to, t) references a
consistency: structural — same polynomial, same commitment.
cost: 0 additional constraints (was ~1,500 per cyberlink via LogUp).
see architecture for the layer model and BBG root, cross-index for why LogUp is eliminated, privacy for the polynomial mutator set and private record lifecycle