Learn

← Track C: Supply-Chain Transparency
L3

C3

The SupplyChain Object (schain) and hop depth

In this lesson you will
  • Explain the OpenRTB schain object: ordered nodes (asi, sid, hp) and the complete flag.
  • Explain how schain plus sellers.json let a DSP audit the full path.
  • Explain why more hops means more opacity and why ads.txt alone gives only a minimum depth.

ads.txt and sellers.json are promises written down in advance. But when a real bid request travels from a publisher through two or three middlemen to a buyer, how does the buyer know it actually took the path everyone promised? The bid carries a receipt: the SupplyChain object.

The SupplyChain object (schain) rides inside each OpenRTB bid request and records the actual ordered chain of intermediaries that this specific impression passed through. Static files say what *should* happen; schain shows what *did*.

The object

schain carries a version, a complete flag (0 or 1), and an ordered nodes[] array running from the publisher outward. Each node has three key fields:

Node fieldMeaning
asiAdvertising System Identifier: the SSP’s canonical domain. Matches a sellers.json host.
sidThe seller id at that system. Matches a seller_id in that SSP’s sellers.json.
hpWhether this node is in the paid path (1 = should be paid).

The first node is closest to the publisher; each later node is one hop further toward the buyer.

How a buyer verifies it

Walking a schain
  1. 1Take node 1’s (asi, sid), fetch that asi’s sellers.json, look up the sid, confirm the seller.
  2. 2Repeat for node 2, then node 3, all the way out.
  3. 3Every node checks out and complete = 1? The whole path is verified.
  4. 4A node is missing or unverifiable? The buyer cannot trust the path.

Key idea

complete = 1 asserts the chain contains every node from the publisher to here. complete = 0 means nodes are missing, so the buyer cannot see the full path. That is a buy-side red flag: a hidden node could be an undisclosed reseller or an unauthorized hop.

Quick check

A schain lists 3 nodes but sets `complete = 0`. Why is that a warning sign for a buyer?

Every node is a hop: an intermediary taking a margin and adding a place where fraud or discrepancy can creep in. From ads.txt alone you can only infer a minimum depth (a RESELLER line implies at least two hops), but you cannot know the real runtime path. schain is the proof of what actually happened.

Note

In a live report, read inferHops / hop complexity and the hop-depth chart. A RESELLER line whose seller is recorded as a PUBLISHER is the kind of anomaly hop inference flags.

Key concepts
schain nodes (asi, sid, hp)complete = 0 as a buy-side red flagHop depth and opacityads.txt gives a minimum hop count, schain is the runtime proof
Going deeper

To really lock this in: walk a three-node schain back to each sellers.json entry and explain why complete=0 is a buy-side red flag.

Where this leads
ANALYZE

Read inferHops / hopComplexity and the hop-depth chart in a live report.

Open →
DEBUG

Load a RESELLER + PUBLISHER record and watch inferHops flag the anomaly.

Open →
Bidcliq Academy · C3: The SupplyChain Object (schain) and hop depth