Skip to content

Query 04 - Required Signer Distribution

Result

requiredSigners txs
4 1
2 27
1 56
0 1

What

This query groups the 85 transaction nodes by how many required signer credentials their bodies declare.

It is a transaction-body shape check, not a witness validation check.

Why

Required signer distribution is useful when reading treasury activity because it separates simple one-signer movements from multi-signer or policy-gated actions. A sudden row with many unexpected signers, or many zero-signer transactions, would be a reason to inspect the body set.

Here the distribution is compact: 84 of 85 transactions declare at least one required signer, and one transaction declares none.

Diagram

flowchart LR
  txs[85 transaction nodes]
  signers[hasRequiredSigner edges]
  buckets[0, 1, 2, or 4 signer buckets]

  txs --> signers
  signers --> buckets

How

The inner query groups by transaction node and counts distinct cardano:hasRequiredSigner edges. It restricts the subject to a cardano:Transaction so referenced transaction ids are not counted as zero-signer transactions.

The outer query groups those per-transaction counts into the displayed distribution.

Run

From the repository root, run this query through the tutorial setup script:

bash docs/may-2026-amaru-lattice/setup.sh \
  docs/may-2026-amaru-lattice/ada-signers-and-references/04-required-signer-distribution.rq

SPARQL

PREFIX cardano: <https://lambdasistemi.github.io/cardano-knowledge-maps/vocab/cardano#>

# Required-signer distribution across every transaction in the 85-tx lattice.
SELECT ?requiredSigners (COUNT(?tx) AS ?txs)
WHERE {
  {
    SELECT ?tx (COUNT(DISTINCT ?sig) AS ?requiredSigners)
    WHERE {
      ?tx a cardano:Transaction ;
          cardano:hasTxId/cardano:bytesHex ?txId .
      OPTIONAL { ?tx cardano:hasRequiredSigner ?sig . }
    }
    GROUP BY ?tx
  }
}
GROUP BY ?requiredSigners
ORDER BY DESC(?requiredSigners)