<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp   "&#160;">
  <!ENTITY zwsp  "&#8203;">
  <!ENTITY nbhy  "&#8209;">
  <!ENTITY wj    "&#8288;">
]>
<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-herman-vtc-proof-sets-01"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="independent"
  xml:lang="en"
  tocInclude="true"
  tocDepth="3"
  symRefs="true"
  sortRefs="true"
  version="3">

  <!-- ========================================================
       FRONT MATTER
       ======================================================== -->
  <front>
    <title abbrev="Verifiable Trust Circles">
      Verifiable Trust Circles (VTCs) using
      VC Proof Sets
    </title>

    <seriesInfo
      name="Internet-Draft"
      value="draft-herman-vtc-proof-sets-01"/>

    <author
      fullname="Michael Herman"
      initials="M."
      surname="Herman">
      <organization>Web 7.0 Foundation</organization>
      <address>
        <postal>
          <city>Bindloss</city>
          <region>Alberta</region>
          <country>Canada</country>
        </postal>
        <email>mwherman@gmail.com</email>
        <uri>https://hyperonomy.com/about/</uri>
      </address>
    </author>

    <date year="2026" month="March" day="26"/>

    <area>Applications and Real-Time</area>
    <workgroup>
      Web 7.0 Foundation Governance Council
    </workgroup>

    <keyword>Verifiable Credentials</keyword>
    <keyword>Proof Sets</keyword>
    <keyword>Trust Circles</keyword>
    <keyword>VTC</keyword>
    <keyword>DID</keyword>
    <keyword>decentralized identity</keyword>
    <keyword>multi-party credentials</keyword>
    <keyword>Web 7.0</keyword>

    <abstract>
      <t>
        This document specifies Web 7.0 Verifiable Trust
        Circles (VTCs), a generalized mechanism for
        expressing verifiable multi-party membership,
        belonging, and trust relationships using the W3C
        Verifiable Credentials (VC) Data Model 2.0
        <xref target="W3C.VC-DATA-MODEL"/> and VC Data
        Integrity Proof Sets
        <xref target="W3C.VC-DATA-INTEGRITY"/>. VTCs extend
        the Partof Architecture Reference Model (PARM) to
        provide a universal credential pattern that subsumes
        prior pairwise constructs (Personhood Credentials
        (PHCs) and Verifiable Relationship Credentials
        (VRCs)) and additionally supports voting-based
        decision making, meeting requests, task forces, and
        digital societies.
      </t>
    </abstract>

    <note title="Derivation Notice" removeInRFC="true">
      <t>
        This Internet-Draft is derived from the Web 7.0
        Foundation specification "SDO: Verifiable Trust
        Circles (VTCs) using VC Proof Sets (Web 7.0)"
        <xref target="WEB70-VTC"/> authored by Michael
        Herman, published 26 March 2026,
        and from community discussion at the Trust over IP
        Foundation Digital Trust Graph Working Group
        (DTGWG) Credentials Task Force, GitHub Discussion
        #8 <xref target="DISCUSSION-8"/>. Licensed under
        the Creative Commons Attribution-ShareAlike 4.0
        International Public License. Web 7.0(TM),
        Web 7.0 DIDLibOS(TM), TDW AgenticOS(TM), TDW(TM),
        Trusted Digital Web(TM), and Hyperonomy(TM) are
        trademarks of the Web 7.0 Foundation.
        All Rights Reserved.
      </t>
    </note>
  </front>

  <!-- ========================================================
       MIDDLE MATTER
       ======================================================== -->
  <middle>

    <!-- ===== Section 1: Introduction ===== -->
    <section
      anchor="introduction"
      numbered="true"
      toc="default">
      <name>Introduction</name>
      <t>
        The Web 7.0 paradigm seeks to establish a
        decentralized, agent-centric, privacy-preserving
        digital society. Central to this vision is the
        ability of digital entities - people, organizations,
        and autonomous agents - to form verifiable groups:
        trust circles that are cryptographically provable,
        privacy-respecting, and composable.
      </t>
      <t>
        Prior specifications in the Trust over IP (ToIP)
        ecosystem defined pairwise constructs - Personhood
        Credentials (PHCs) and Verifiable Relationship
        Credentials (VRCs) - to link pairs of entities.
        While useful, these constructs are insufficient to
        describe multi-party group membership, community
        affiliation, or collective decision-making.
      </t>
      <t>
        This specification introduces Verifiable Trust
        Circles (VTCs), which generalize pairwise
        credentials into an N-party construct using the
        standard W3C VC Proof Set mechanism. A single VTC
        credential can represent a self-credential (N=1),
        a bilateral relationship (N=2), or any multi-member
        group (N&gt;2), enabling a single, coherent model
        for all membership-like relationships.
      </t>
      <aside>
        <t>
          NOTE: Proof Sets are a normative feature of the
          W3C VC Data Integrity specification and are
          explicitly designed for scenarios in which the
          same data needs to be secured by multiple
          entities. VTCs leverage this mechanism rather
          than inventing new cryptographic primitives.
        </t>
      </aside>

      <section
        anchor="motivation"
        numbered="true"
        toc="default">
        <name>Motivation</name>
        <t>
          The following observations motivate this
          specification:
        </t>
        <ul spacing="normal">
          <li>
            PHCs and VRCs both express a form of
            "belonging to" - they are specializations of
            the same universal pattern.
          </li>
          <li>
            The W3C VC Data Model 2.0 already provides
            Proof Sets as a standard mechanism for
            multi-party signing.
          </li>
          <li>
            A single, generalized VTC pattern - grounded
            in First Principles Thinking - can subsume
            both constructs and additionally support
            voting, community membership, digital
            governance, and inter-network trust.
          </li>
          <li>
            The SSC 7.0 Metamodel defines three controller
            layers (Beneficial, Intermediate, Technical)
            at which VTCs may apply, enabling rich
            composability.
          </li>
        </ul>
      </section>

      <section
        anchor="scope"
        numbered="true"
        toc="default">
        <name>Scope</name>
        <t>
          This specification defines:
        </t>
        <ol spacing="normal">
          <li>
            The VTC data model, including required and
            optional properties.
          </li>
          <li>
            The roles of Initiator, Responder(s), and
            Notary within a VTC.
          </li>
          <li>
            The lifecycle of a VTC Proof Set, from initial
            issuance through multi-party endorsement.
          </li>
          <li>
            Use case profiles: self-credential, bilateral
            relationship, multi-party group, and voting
            scenario.
          </li>
          <li>
            Privacy and security considerations specific
            to multi-party proof sets.
          </li>
        </ol>
        <t>
          This specification does not define transport
          protocols, DID method requirements, or verifiable
          presentation formats, except where necessary to
          illustrate the VTC pattern.
        </t>
      </section>
    </section>

    <!-- ===== Section 2: Conventions ===== -->
    <section
      anchor="conventions"
      numbered="true"
      toc="default">
      <name>Conventions and Definitions</name>
      <t>
        The key words <bcp14>MUST</bcp14>,
        <bcp14>MUST NOT</bcp14>, <bcp14>REQUIRED</bcp14>,
        <bcp14>SHALL</bcp14>, <bcp14>SHALL NOT</bcp14>,
        <bcp14>SHOULD</bcp14>, <bcp14>SHOULD NOT</bcp14>,
        <bcp14>RECOMMENDED</bcp14>,
        <bcp14>NOT RECOMMENDED</bcp14>, <bcp14>MAY</bcp14>,
        and <bcp14>OPTIONAL</bcp14> in this document are
        to be interpreted as described in BCP&nbsp;14
        <xref target="RFC2119"/>
        <xref target="RFC8174"/> when, and only when, they
        appear in all capitals as shown here.
      </t>
      <t>
        Unless stated otherwise, terms have the meanings
        assigned in the W3C Verifiable Credentials Data
        Model 2.0 <xref target="W3C.VC-DATA-MODEL"/>.
      </t>
    </section>

    <!-- ===== Section 3: Terminology ===== -->
    <section
      anchor="terminology"
      numbered="true"
      toc="default">
      <name>Terminology and Definitions</name>
      <dl newline="false" spacing="normal">

        <dt>Verifiable Trust Circle (VTC):</dt>
        <dd>
          A Verifiable Credential whose credential subject
          identifies a multi-party trust relationship, and
          whose proof property contains a Proof Set with
          one proof contribution per participating member,
          plus the Notary's initial proof.
        </dd>

        <dt>Web 7.0 Verifiable Trust Circles (VTCs):</dt>
        <dd>
          The generalized name for the VTC pattern when
          applied to the broader class of MemberOf, PartOf,
          and CitizenOf relationships. A VTC is a Universal
          Membership Credential (UMC).
        </dd>

        <dt>Proof Set:</dt>
        <dd>
          As defined in W3C VC Data Integrity
          <xref target="W3C.VC-DATA-INTEGRITY"/>, a set of
          proofs attached to a single secured document
          where the order of proofs does not matter. Each
          proof is contributed by a distinct signer.
        </dd>

        <dt>Initiator (A):</dt>
        <dd>
          The entity that proposes or originates a VTC.
          Identified by a DID. Corresponds to the "from"
          role in VTC credential subject properties.
        </dd>

        <dt>Responder (B, ..., Z):</dt>
        <dd>
          One or more entities that accept membership in
          a VTC by contributing their cryptographic proof
          to the Proof Set. Identified by DIDs.
          Corresponds to entries in the "to" array.
        </dd>

        <dt>Notary (N):</dt>
        <dd>
          A trusted third party - trusted by both the
          Initiator and all Responders - that issues the
          initial credential shell and contributes the
          first proof. The Notary is assigned to the VC
          "issuer" role. In some use cases the Notary
          <bcp14>MAY</bcp14> be the Initiator or a
          Responder, provided they play both roles
          distinctly.
        </dd>

        <dt>PARM:</dt>
        <dd>
          Partof Architecture Reference Model. The
          universal pattern underlying VTCs, encompassing
          MemberOf, CitizenOf, and PartOf relationships.
        </dd>

        <dt>SSC 7.0 Metamodel:</dt>
        <dd>
          Self-Sovereign Control 7.0 Metamodel. Defines
          three controller layers - Beneficial Controller,
          Intermediate Controller (Agent), and Technical
          Controller (Agent) - at which VTCs may be
          anchored.
        </dd>

        <dt>DTG:</dt>
        <dd>
          Digital Trust Graph. A graph of trust
          relationships between entities, each edge of
          which may be represented by a VTC.
        </dd>

        <dt>PHC:</dt>
        <dd>
          Personhood Credential. A pairwise credential
          representing proof of personhood; a degenerate
          VTC where N=1.
        </dd>

        <dt>VRC:</dt>
        <dd>
          Verifiable Relationship Credential. A pairwise
          credential representing a bilateral relationship;
          a degenerate VTC where N=2.
        </dd>

        <dt>DID:</dt>
        <dd>
          Decentralized Identifier, as defined in
          <xref target="W3C.DID-CORE"/>.
        </dd>

      </dl>
    </section>

    <!-- ===== Section 4: Design Principles ===== -->
    <section
      anchor="design-principles"
      numbered="true"
      toc="default">
      <name>Design Principles</name>
      <t>
        This specification adheres to the following design
        principles, consistent with the ToIP DTGWG Design
        Principles <xref target="DTGWG-DESIGN"/>:
      </t>

      <section
        anchor="dp-simple"
        numbered="true"
        toc="default">
        <name>As Simple As Possible But No Simpler</name>
        <t>
          VTCs are grounded in existing W3C VC standards.
          No new cryptographic primitives or credential
          types are defined. The only structural addition
          is the deliberate use of the proof array (Proof
          Set) to carry per-member proofs alongside the
          Notary proof.
        </t>
      </section>

      <section
        anchor="dp-first-principles"
        numbered="true"
        toc="default">
        <name>First Principles Thinking</name>
        <t>
          PHCs and VRCs are recognized as specializations
          of a single underlying relationship pattern
          (PARM). Rather than defining multiple credential
          types for essentially the same concept, this
          specification derives one universal type that
          covers all cases by varying the cardinality of
          the "to" array and the composition of the
          Proof Set.
        </t>
      </section>

      <section
        anchor="dp-privacy"
        numbered="true"
        toc="default">
        <name>Privacy by Design</name>
        <t>
          VTC credential subjects <bcp14>SHOULD</bcp14>
          use confidentialSubject semantics wherever
          selective disclosure is required. Members of a
          VTC should be able to prove membership to a
          verifier without unnecessarily revealing the
          full membership list. Zero-Knowledge Proof (ZKP)
          integration in Proof Sets is explicitly
          supported and encouraged.
        </t>
      </section>

      <section
        anchor="dp-composability"
        numbered="true"
        toc="default">
        <name>Composability</name>
        <t>
          VTCs compose at each layer of the SSC 7.0
          Metamodel. A VTC at the Beneficial Controller
          layer expresses human-level trust relationships;
          one at the Intermediate Agent layer expresses
          agent-level relationships; one at the Technical
          Controller layer expresses device/key-level
          relationships.
        </t>
      </section>

      <section
        anchor="dp-cross-network"
        numbered="true"
        toc="default">
        <name>Cross-Network Trust</name>
        <t>
          The PARM model is network-agnostic. The same VTC
          pattern supports trust relationships across and
          between independent, distinct networks and
          ecosystems.
        </t>
      </section>
    </section>

    <!-- ===== Section 5: PARM ===== -->
    <section
      anchor="parm"
      numbered="true"
      toc="default">
      <name>
        The Partof Architecture Reference Model (PARM)
      </name>
      <t>
        The Partof Architecture Reference Model (PARM)
        provides the conceptual foundation for VTCs. It
        observes that a large class of real-world
        relationships - membership, citizenship, parthood,
        employment, and participation - share a common
        logical structure. Representative relationship
        types and examples are shown below:
      </t>
      <table align="center">
        <thead>
          <tr>
            <th>Relationship Type</th>
            <th>Example</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>MemberOf</td>
            <td>
              Alice is a member of the Working Group
              Trust Circle.
            </td>
          </tr>
          <tr>
            <td>PartOf</td>
            <td>Bob is part of the study group.</td>
          </tr>
          <tr>
            <td>CitizenOf</td>
            <td>
              Carol is a citizen of the Digital Nation
              State of Sovronia.
            </td>
          </tr>
          <tr>
            <td>EmployeeOf</td>
            <td>
              Dave is an employee of Acme Corp
              (DID-identified).
            </td>
          </tr>
          <tr>
            <td>ParticipantOf</td>
            <td>
              Eve is a participant of the 09:00 meeting
              (a VC-based meeting request).
            </td>
          </tr>
          <tr>
            <td>VoterFor</td>
            <td>
              Frank has cast a vote for Candidate 1 by
              contributing his proof to that VTC.
            </td>
          </tr>
        </tbody>
      </table>
      <t>
        All of these reduce to the same credential
        structure: a VC whose credentialSubject.id
        identifies the group or decision entity (the
        "circle"), and whose proof array contains proofs
        from the Notary and each member who has accepted
        membership. PHCs and VRCs are degenerate cases of
        this pattern with N=1 and N=2 respectively.
      </t>
    </section>

    <!-- ===== Section 6: VTC Data Model ===== -->
    <section
      anchor="vtc-data-model"
      numbered="true"
      toc="default">
      <name>VTC Data Model</name>

      <section
        anchor="data-model-overview"
        numbered="true"
        toc="default">
        <name>Overview</name>
        <t>
          A VTC is a valid W3C Verifiable Credential
          <xref target="W3C.VC-DATA-MODEL"/> with the
          following structural characteristics:
        </t>
        <ul spacing="normal">
          <li>
            The issuer property identifies the Notary (N).
          </li>
          <li>
            The credentialSubject (or
            confidentialSubject) object includes from, to,
            and optionally metadata properties that
            identify the Initiator, Responders, and
            relationship metadata respectively.
          </li>
          <li>
            The credentialSubject.id identifies the
            relationship or group itself, expressed as
            a DID.
          </li>
          <li>
            The proof property is an array (Proof Set),
            containing one proof per signer, ordered as:
            Notary first, then Initiator, then Responders.
          </li>
        </ul>
      </section>

      <section
        anchor="example-bilateral"
        numbered="true"
        toc="default">
        <name>
          Minimal Pairwise VTC (N=2, Alice and Bob)
        </name>
        <t>
          The following non-normative example illustrates
          a bilateral VTC between Alice (Initiator) and
          Bob (Responder), notarized by a Notary entity:
        </t>
        <sourcecode
          type="json"
          name="bilateral-vtc-example"><![CDATA[
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/vtc/v1"
  ],
  "id": "did:envelope:1234",
  "type": [
    "VerifiableCredential",
    "VerifiableTrustCircle"
  ],
  "issuer": "did:example:notaryabcd",
  "validFrom": "2026-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:vrc:2468",
    "from": "did:example:alice",
    "to": ["did:example:bob"],
    "metadata": {
      "label":
        "Alice-Bob Bilateral Trust Circle"
    }
  },
  "proof": [
    {
      "id": "did:example:notaryabcd",
      "type": "DataIntegrityProof",
      "...": "<notary-proof>"
    },
    {
      "id": "did:example:alice",
      "type": "DataIntegrityProof",
      "...": "<alice-proof>"
    },
    {
      "id": "did:example:bob",
      "type": "DataIntegrityProof",
      "...": "<bob-proof>"
    }
  ]
}
        ]]></sourcecode>
      </section>

      <section
        anchor="example-multiparty"
        numbered="true"
        toc="default">
        <name>
          Multi-Party VTC (N=3+)
        </name>
        <t>
          For groups with more than two members, the "to"
          array is extended to include all Responders, and
          the proof array gains one additional entry per
          additional Responder:
        </t>
        <sourcecode
          type="json"
          name="multiparty-vtc-example"><![CDATA[
{
  "id": "did:envelope:5678",
  "type": [
    "VerifiableCredential",
    "VerifiableTrustCircle"
  ],
  "issuer": "did:example:notaryabcd",
  "credentialSubject": {
    "id": "did:vrc:9999",
    "from": "did:example:alice",
    "to": [
      "did:example:bob",
      "did:example:carol",
      "...",
      "did:example:zelda"
    ],
    "metadata": {
      "label": "Working Group Trust Circle",
      "policy": "did:policy:majority"
    }
  },
  "proof": [
    { "id": "did:example:notaryabcd",
      "...": "<notary-proof>" },
    { "id": "did:example:alice",
      "...": "<alice-proof>" },
    { "id": "did:example:bob",
      "...": "<bob-proof>" },
    { "id": "did:example:carol",
      "...": "<carol-proof>" },
    { "id": "did:example:zelda",
      "...": "<zelda-proof>" }
  ]
}
        ]]></sourcecode>
      </section>

      <section
        anchor="example-self"
        numbered="true"
        toc="default">
        <name>
          Self-Credential VTC (N=1, PHC Equivalent)
        </name>
        <t>
          When "to" contains only the Initiator's own DID,
          or when "from" and credentialSubject.id identify
          the same entity, the VTC degenerates to a
          Personhood Credential (PHC):
        </t>
        <sourcecode
          type="json"
          name="self-vtc-example"><![CDATA[
{
  "credentialSubject": {
    "id": "did:phc:alice-self",
    "from": "did:example:alice",
    "to": ["did:example:alice"],
    "metadata": {
      "label": "Alice Self-Attestation"
    }
  },
  "proof": [
    { "id": "did:example:notaryabcd",
      "...": "<notary-proof>" },
    { "id": "did:example:alice",
      "...": "<alice-proof>" }
  ]
}
        ]]></sourcecode>
      </section>

      <section
        anchor="example-voting"
        numbered="true"
        toc="default">
        <name>Voting VTC</name>
        <t>
          For a voting scenario, one VTC is created per
          candidate. Voters cast their vote by contributing
          their individual proof to the VTC of the
          candidate they support. The vote count is the
          number of valid member proofs in the Proof Set.
        </t>
        <sourcecode
          type="json"
          name="voting-vtc-example"><![CDATA[
{
  "credentialSubject": {
    "id":
      "did:sovronia:election2026:district103:cand1",
    "from": "did:example:electionofficial",
    "to": [],
    "metadata": {
      "label":
        "Candidate 1 - District 103 - 2026"
    }
  },
  "proof": [
    { "id": "did:example:electionofficial",
      "...": "<official-proof>" },
    { "id": "did:example:voter001",
      "...": "<vote-proof>" },
    { "id": "did:example:voter002",
      "...": "<vote-proof>" }
  ]
}
        ]]></sourcecode>
        <aside>
          <t>
            NOTE: The "to" array MAY be populated in
            advance with eligible voter DIDs, or it MAY
            be left empty and populated as votes are cast,
            depending on the election policy and privacy
            requirements.
          </t>
        </aside>
      </section>

      <section
        anchor="properties-reference"
        numbered="true"
        toc="default">
        <name>Properties Reference</name>
        <t>
          The following table defines the normative
          properties of a VTC credential:
        </t>
        <table align="center">
          <thead>
            <tr>
              <th>Property</th>
              <th>Req.</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>id</td>
              <td>REQUIRED</td>
              <td>
                DID identifying the VTC credential
                itself. <bcp14>SHOULD</bcp14> use
                did:envelope or equivalent.
              </td>
            </tr>
            <tr>
              <td>type</td>
              <td>REQUIRED</td>
              <td>
                <bcp14>MUST</bcp14> include
                "VerifiableCredential" and
                "VerifiableTrustCircle".
              </td>
            </tr>
            <tr>
              <td>issuer</td>
              <td>REQUIRED</td>
              <td>
                DID of the Notary (N). The Notary
                <bcp14>MUST</bcp14> be trusted by all
                members.
              </td>
            </tr>
            <tr>
              <td>credentialSubject.id</td>
              <td>REQUIRED</td>
              <td>
                DID identifying the relationship or
                group itself.
              </td>
            </tr>
            <tr>
              <td>credentialSubject.from</td>
              <td>REQUIRED</td>
              <td>DID of the Initiator (A).</td>
            </tr>
            <tr>
              <td>credentialSubject.to</td>
              <td>REQUIRED</td>
              <td>
                Array of Responder DIDs.
                <bcp14>MAY</bcp14> be empty for open
                voting VTCs.
              </td>
            </tr>
            <tr>
              <td>credentialSubject.metadata</td>
              <td>OPTIONAL</td>
              <td>
                Arbitrary structured metadata (label,
                policy, expiry, etc.).
              </td>
            </tr>
            <tr>
              <td>proof</td>
              <td>REQUIRED</td>
              <td>
                Array of proof objects (Proof Set).
                First proof <bcp14>MUST</bcp14> be
                from the Notary. Subsequent proofs
                are from the Initiator then Responders
                in any order.
              </td>
            </tr>
            <tr>
              <td>proof[].id</td>
              <td>REQUIRED</td>
              <td>
                DID of the signer contributing this
                proof entry.
              </td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ===== Section 7: Proof Set Lifecycle ===== -->
    <section
      anchor="proof-set-lifecycle"
      numbered="true"
      toc="default">
      <name>VTC Proof Set Lifecycle</name>
      <t>
        The VTC Proof Set lifecycle consists of the
        following phases. At each phase t, the VTC applies
        to the Notary and the first t members who have
        contributed their proof.
      </t>

      <section
        anchor="phase-0"
        numbered="true"
        toc="default">
        <name>Phase 0 - Null VTC</name>
        <t>
          The credential shell is created by the Notary
          with an empty or pre-populated "to" array. The
          Notary contributes the initial proof. No member
          relationships are yet verified. t = 0.
        </t>
      </section>

      <section
        anchor="phase-progressive"
        numbered="true"
        toc="default">
        <name>Phase 1..t - Progressive Endorsement</name>
        <t>
          Each Responder, in any order, reviews the
          credential and - if they consent to membership -
          adds their individual proof to the existing
          Proof Set using the "add-proof-set-chain"
          algorithm defined in
          <xref target="W3C.VC-DATA-INTEGRITY"/>. The VTC
          becomes valid for those t members who have
          signed. Non-signing members are not yet bound.
        </t>
      </section>

      <section
        anchor="phase-complete"
        numbered="true"
        toc="default">
        <name>Phase N - Complete VTC</name>
        <t>
          All Responders listed in the "to" array have
          contributed their proofs. The VTC is fully
          executed and represents a complete, verifiable,
          multi-party trust relationship.
        </t>
        <aside>
          <t>
            NOTE: Partial VTCs (0 &lt; t &lt; N) are
            valid credentials representing the subset of
            relationships established so far. Verifiers
            <bcp14>MUST</bcp14> check which proofs are
            present before asserting full circle
            membership.
          </t>
        </aside>
      </section>

      <section
        anchor="adding-proof"
        numbered="true"
        toc="default">
        <name>Adding a Proof</name>
        <t>
          To add a proof to an existing secured VTC,
          implementors <bcp14>MUST</bcp14> follow the
          algorithm specified in W3C VC Data Integrity
          <xref target="W3C.VC-DATA-INTEGRITY"/>, Section
          "add-proof-set-chain". The proof is appended to
          the existing proof array without modifying prior
          proofs.
        </t>
      </section>

      <section
        anchor="proof-ordering"
        numbered="true"
        toc="default">
        <name>Proof Ordering</name>
        <t>
          Proof Sets are unordered by definition. However,
          this specification
          <bcp14>RECOMMENDED</bcp14> to follow the
          conventional ordering for readability and
          auditability: (1) Notary proof, (2) Initiator
          proof, (3) Responder proofs in the same order
          as the "to" array.
        </t>
      </section>
    </section>

    <!-- ===== Section 8: Roles ===== -->
    <section
      anchor="roles"
      numbered="true"
      toc="default">
      <name>Roles and Participants</name>

      <section
        anchor="role-notary"
        numbered="true"
        toc="default">
        <name>Notary (N) - Issuer</name>
        <t>
          The Notary is the credential issuer. It
          <bcp14>MUST</bcp14> be trusted by both the
          Initiator and all Responders. The Notary is
          responsible for creating the credential shell,
          pre-populating the "to" array (or defining the
          voting policy), and contributing the first
          proof. In some use cases, the Notary
          <bcp14>MAY</bcp14> be the same entity as the
          Initiator or a Responder, provided that entity
          plays each role distinctly and the resulting
          credential satisfies all
          <bcp14>REQUIRED</bcp14> properties.
        </t>
      </section>

      <section
        anchor="role-initiator"
        numbered="true"
        toc="default">
        <name>Initiator (A) - From</name>
        <t>
          The Initiator proposes the trust circle. The
          Initiator's DID appears in
          credentialSubject.from. The Initiator
          contributes a proof to the Proof Set to signify
          their acceptance of the relationship.
        </t>
      </section>

      <section
        anchor="role-responders"
        numbered="true"
        toc="default">
        <name>Responders (B ... Z) - To</name>
        <t>
          Each Responder is identified in the
          credentialSubject.to array. A Responder accepts
          membership by contributing their individual
          proof. A Responder who does not contribute a
          proof is proposed but not yet a verified member.
        </t>
        <aside>
          <t>
            RULE: The cardinality t of verified members
            at any time equals the number of valid member
            proofs (excluding the Notary proof) present
            in the Proof Set.
          </t>
        </aside>
      </section>
    </section>

    <!-- ===== Section 9: Use Cases ===== -->
    <section
      anchor="use-cases"
      numbered="true"
      toc="default">
      <name>Use Cases</name>

      <section
        anchor="uc-bilateral"
        numbered="true"
        toc="default">
        <name>
          Bilateral Trust Relationship (VRC Equivalent)
        </name>
        <t>
          Alice and Bob wish to establish a verifiable
          bilateral trust relationship. A mutually trusted
          Notary issues a VTC with from = Alice and
          to = [Bob]. Both Alice and Bob contribute
          proofs. The result is a two-party VTC equivalent
          to a classic VRC.
        </t>
      </section>

      <section
        anchor="uc-phc"
        numbered="true"
        toc="default">
        <name>
          Personhood Credential (PHC Equivalent)
        </name>
        <t>
          Alice wishes to create a self-signed personhood
          credential. A Notary issues a VTC with
          from = Alice and to = [Alice]. Alice contributes
          her proof. The result is a one-party VTC
          equivalent to a PHC
          <xref target="PHC-PAPER"/>.
        </t>
      </section>

      <section
        anchor="uc-workgroup"
        numbered="true"
        toc="default">
        <name>Web 7.0 Foundation Governance Council</name>
        <t>
          A task force of N participants is formed. A
          Notary (the working group chair or a community
          DID) issues a VTC with from = chair and
          to = [member1, ..., memberN]. Members join by
          contributing their proofs. The VTC provides a
          cryptographically verifiable roster.
        </t>
      </section>

      <section
        anchor="uc-meeting"
        numbered="true"
        toc="default">
        <name>VC-Based Meeting Request</name>
        <t>
          An organizer issues a VTC with
          credentialSubject.id equal to the meeting DID,
          from = organizer, and
          to = [attendee1, ..., attendeeN]. Attendees
          RSVP by contributing their proofs. Attendance
          at the meeting is verifiable from the Proof Set.
        </t>
      </section>

      <section
        anchor="uc-voting"
        numbered="true"
        toc="default">
        <name>Voting-Based Decision Making</name>
        <t>
          One VTC per candidate is issued by an election
          official (Notary). Eligible voters cast their
          vote by contributing their individual proof to
          the VTC of their chosen candidate. Vote
          tallying is performed by counting the number of
          valid member proofs in each candidate's VTC.
          This supports maximum flexibility in
          vote-counting policies (simple majority,
          ranked-choice, threshold).
        </t>
      </section>

      <section
        anchor="uc-vdr"
        numbered="true"
        toc="default">
        <name>Verifiable Decentralized Registry</name>
        <t>
          VC-based voting can be applied to implement a
          Verifiable Data Registry (VDR). Append
          operations to a distributed registry are
          authorized through a VTC whose members are the
          registry trustees.
        </t>
      </section>

      <section
        anchor="uc-digital-society"
        numbered="true"
        toc="default">
        <name>Digital Society / Digital Nation State</name>
        <t>
          A digital society (e.g., a digital community or
          nation state) is defined by a VTC whose members
          are the citizens. Governance operations -
          electing trustees, passing resolutions - are
          performed through subsidiary voting VTCs.
        </t>
      </section>
    </section>

    <!-- ===== Section 10: Conformance ===== -->
    <section
      anchor="conformance"
      numbered="true"
      toc="default">
      <name>Conformance</name>
      <t>
        A conforming VTC implementation:
      </t>
      <ul spacing="normal">
        <li>
          <bcp14>MUST</bcp14> produce VTC credentials
          that are valid W3C Verifiable Credentials
          conforming to
          <xref target="W3C.VC-DATA-MODEL"/>.
        </li>
        <li>
          <bcp14>MUST</bcp14> use a proof array (Proof
          Set) as defined in
          <xref target="W3C.VC-DATA-INTEGRITY"/>.
        </li>
        <li>
          <bcp14>MUST</bcp14> include the issuer
          property identifying the Notary.
        </li>
        <li>
          <bcp14>MUST</bcp14> include
          credentialSubject.id, credentialSubject.from,
          and credentialSubject.to.
        </li>
        <li>
          <bcp14>MUST</bcp14> use the
          "add-proof-set-chain" algorithm from
          <xref target="W3C.VC-DATA-INTEGRITY"/> when
          adding proofs incrementally.
        </li>
        <li>
          <bcp14>SHOULD</bcp14> include
          "VerifiableTrustCircle" in the type array.
        </li>
        <li>
          <bcp14>SHOULD</bcp14> implement selective
          disclosure mechanisms for credentialSubject
          properties.
        </li>
        <li>
          <bcp14>MAY</bcp14> extend the
          credentialSubject.metadata property with
          domain-specific claims.
        </li>
      </ul>
    </section>

    <!-- ===== Section 11: Relationships ===== -->
    <section
      anchor="relationships"
      numbered="true"
      toc="default">
      <name>Relationship to Other Specifications</name>

      <section
        anchor="rel-vc-data-model"
        numbered="true"
        toc="default">
        <name>W3C VC Data Model 2.0</name>
        <t>
          VTCs are valid W3C Verifiable Credentials. All
          normative requirements of
          <xref target="W3C.VC-DATA-MODEL"/> apply. VTCs
          use the issuer and credentialSubject properties
          as defined therein.
        </t>
      </section>

      <section
        anchor="rel-vc-data-integrity"
        numbered="true"
        toc="default">
        <name>W3C VC Data Integrity</name>
        <t>
          VTCs rely on the Proof Set mechanism defined in
          <xref target="W3C.VC-DATA-INTEGRITY"/>,
          specifically the "add-proof-set-chain" algorithm
          for incremental proof contributions.
        </t>
      </section>

      <section
        anchor="rel-toip"
        numbered="true"
        toc="default">
        <name>ToIP DTGWG Design Principles</name>
        <t>
          This specification is consistent with the ToIP
          DTGWG Design Principles
          <xref target="DTGWG-DESIGN"/>, the DTG-ZKP
          Requirements <xref target="DTGWG-ZKP"/>, and
          the VRC Design Proposals
          <xref target="DTGWG-VTC-13"/>.
        </t>
      </section>

      <section
        anchor="rel-ssc"
        numbered="true"
        toc="default">
        <name>SSC 7.0 Metamodel</name>
        <t>
          VTCs integrate with the Self-Sovereign Control
          7.0 Metamodel <xref target="SSC-7"/>. VTCs may
          be anchored at the Beneficial Controller,
          Intermediate Controller, or Technical Controller
          layer.
        </t>
      </section>

      <section
        anchor="rel-tsp"
        numbered="true"
        toc="default">
        <name>Trust Spanning Protocol (TSP)</name>
        <t>
          VTCs are compatible with the Trust Spanning
          Protocol <xref target="TSP"/> as a credential
          format for expressing channel-level membership
          and authorization relationships.
        </t>
      </section>
    </section>

    <!-- ===== Section 12: Privacy Considerations ===== -->
    <section
      anchor="privacy-considerations"
      numbered="true"
      toc="default">
      <name>Privacy Considerations</name>

      <section
        anchor="selective-disclosure"
        numbered="true"
        toc="default">
        <name>Selective Disclosure</name>
        <t>
          Implementations are strongly
          <bcp14>RECOMMENDED</bcp14> to use
          confidentialSubject semantics and selective
          disclosure proof mechanisms (e.g., BBS+
          signatures) to allow individual members to
          prove their membership in a VTC without
          revealing the full membership list or metadata.
        </t>
      </section>

      <section
        anchor="zkp-integration"
        numbered="true"
        toc="default">
        <name>ZKP Integration</name>
        <t>
          The Proof Set mechanism is compatible with
          zero-knowledge proof (ZKP) contributions. A
          member <bcp14>MAY</bcp14> contribute a ZKP as
          their proof entry, revealing only that they
          meet the membership criteria without revealing
          their DID. Implementations
          <bcp14>SHOULD</bcp14> define a profile for
          ZKP-based proof entries.
        </t>
      </section>

      <section
        anchor="privacy-budget"
        numbered="true"
        toc="default">
        <name>Privacy Budget and Reconstruction Ceiling</name>
        <t>
          When multiple agents controlled by one First
          Person contribute to a shared VTC, care must
          be taken to ensure that the combined disclosure
          across proof entries does not exceed the
          privacy budget of the First Person. The
          reconstruction ceiling - the probability that
          an observer can reconstruct the First Person's
          identity from the combined proof data -
          <bcp14>MUST</bcp14> be maintained below the
          threshold defined by the applicable trust
          framework.
        </t>
      </section>

      <section
        anchor="notary-trust"
        numbered="true"
        toc="default">
        <name>Notary Trust</name>
        <t>
          The Notary (issuer) occupies a privileged
          position: it issues the credential shell and
          contributes the first proof. Verifiers
          <bcp14>MUST</bcp14> independently verify that
          the Notary is trusted by all relevant parties.
          The Notary <bcp14>SHOULD</bcp14> be a
          well-known, community-governed DID with
          transparent governance.
        </t>
      </section>
    </section>

    <!-- ===== Section 13: Security Considerations ===== -->
    <section
      anchor="security-considerations"
      numbered="true"
      toc="default">
      <name>Security Considerations</name>

      <section
        anchor="voting-integrity"
        numbered="true"
        toc="default">
        <name>Voting Integrity</name>
        <t>
          For voting VTCs, the following security
          properties <bcp14>MUST</bcp14> be considered:
        </t>
        <ul spacing="normal">
          <li>
            <strong>Eligibility:</strong> Only eligible
            voters can contribute proofs.
          </li>
          <li>
            <strong>Anonymity:</strong> Voter DIDs
            <bcp14>SHOULD</bcp14> be anonymized or
            pseudonymized.
          </li>
          <li>
            <strong>Non-repudiation:</strong> Each proof
            is cryptographically bound to the voter's
            key.
          </li>
          <li>
            <strong>Single-vote enforcement:</strong>
            The "to" array or the Notary's policy
            <bcp14>SHOULD</bcp14> prevent duplicate
            proof contributions from the same voter DID.
          </li>
        </ul>
      </section>

      <section
        anchor="proof-integrity"
        numbered="true"
        toc="default">
        <name>Proof Integrity</name>
        <t>
          Verifiers <bcp14>MUST</bcp14> validate each
          proof entry in a Proof Set independently
          against the secured document using the
          algorithm specified in
          <xref target="W3C.VC-DATA-INTEGRITY"/>. The
          presence of a valid Notary proof does not
          substitute for validating member proofs, and
          vice versa.
        </t>
      </section>

      <section
        anchor="partial-vtc"
        numbered="true"
        toc="default">
        <name>Partial VTC Assertions</name>
        <t>
          Verifiers <bcp14>MUST NOT</bcp14> assert full
          circle membership based solely on the presence
          of the Notary proof or a subset of member
          proofs. Assertions about membership
          <bcp14>MUST</bcp14> be scoped to the verified
          set of proof contributors at the time of
          verification.
        </t>
      </section>
    </section>

    <!-- ===== Section 14: IANA Considerations ===== -->
    <section
      anchor="iana-considerations"
      numbered="true"
      toc="default">
      <name>IANA Considerations</name>
      <t>
        This document has no IANA actions. The
        "VerifiableTrustCircle" credential type identifier
        is defined within the W3C VC ecosystem and
        <bcp14>SHOULD</bcp14> be registered in the W3C VC
        Extensions Registry upon advancement of this
        specification.
      </t>
    </section>

  </middle>

  <!-- ========================================================
       BACK MATTER
       ======================================================== -->
  <back>

    <references>
      <name>References</name>

      <references anchor="normative-references">
        <name>Normative References</name>

        <reference
          anchor="RFC2119"
          target=
          "https://www.rfc-editor.org/rfc/rfc2119">
          <front>
            <title>
              Key words for use in RFCs to Indicate
              Requirement Levels
            </title>
            <author
              fullname="S. Bradner"
              initials="S."
              surname="Bradner"/>
            <date month="March" year="1997"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo
            name="DOI"
            value="10.17487/RFC2119"/>
        </reference>

        <reference
          anchor="RFC8174"
          target=
          "https://www.rfc-editor.org/rfc/rfc8174">
          <front>
            <title>
              Ambiguity of Uppercase vs Lowercase in
              RFC 2119 Key Words
            </title>
            <author
              fullname="B. Leiba"
              initials="B."
              surname="Leiba"/>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo
            name="DOI"
            value="10.17487/RFC8174"/>
        </reference>

        <reference
          anchor="W3C.VC-DATA-MODEL"
          target=
          "https://www.w3.org/TR/vc-data-model-2.0/">
          <front>
            <title>
              Verifiable Credentials Data Model v2.0
            </title>
            <author
              fullname="Manu Sporny"
              initials="M."
              surname="Sporny"/>
            <author
              fullname="Dave Longley"
              initials="D."
              surname="Longley"/>
            <author
              fullname="David Chadwick"
              initials="D."
              surname="Chadwick"/>
            <date year="2024"/>
          </front>
          <refcontent>W3C Recommendation</refcontent>
        </reference>

        <reference
          anchor="W3C.VC-DATA-INTEGRITY"
          target=
          "https://www.w3.org/TR/vc-data-integrity/">
          <front>
            <title>
              Verifiable Credential Data Integrity 1.0
            </title>
            <author
              fullname="Manu Sporny"
              initials="M."
              surname="Sporny"/>
            <author
              fullname="Dave Longley"
              initials="D."
              surname="Longley"/>
            <date year="2024"/>
          </front>
          <refcontent>W3C Recommendation</refcontent>
        </reference>

        <reference
          anchor="W3C.DID-CORE"
          target=
          "https://www.w3.org/TR/did-core/">
          <front>
            <title>
              Decentralized Identifiers (DIDs) v1.0
            </title>
            <author
              fullname="Manu Sporny"
              initials="M."
              surname="Sporny"/>
            <author
              fullname="Amy Guy"
              initials="A."
              surname="Guy"/>
            <author
              fullname="Markus Sabadello"
              initials="M."
              surname="Sabadello"/>
            <author
              fullname="Drummond Reed"
              initials="D."
              surname="Reed"/>
            <date month="July" year="2022"/>
          </front>
          <refcontent>W3C Recommendation</refcontent>
        </reference>

      </references>

      <references anchor="informative-references">
        <name>Informative References</name>

        <reference
          anchor="DTGWG-DESIGN"
          target=
"https://github.com/trustoverip/dtgwg-cred-tf/discussions/11">
          <front>
            <title>DTGWG Design Principles</title>
            <author>
              <organization>
                Trust over IP Foundation
              </organization>
            </author>
            <date year="2025"/>
          </front>
          <refcontent>
            GitHub Discussion #11,
            trustoverip/dtgwg-cred-tf
          </refcontent>
        </reference>

        <reference
          anchor="DTGWG-ZKP"
          target=
"https://github.com/trustoverip/dtgwg-cred-tf/discussions/12">
          <front>
            <title>DTG-ZKP Requirements</title>
            <author>
              <organization>
                Trust over IP Foundation
              </organization>
            </author>
            <date year="2025"/>
          </front>
          <refcontent>
            GitHub Discussion #12,
            trustoverip/dtgwg-cred-tf
          </refcontent>
        </reference>

        <reference
          anchor="DTGWG-VTC-13"
          target=
"https://github.com/trustoverip/dtgwg-cred-tf/discussions/13">
          <front>
            <title>VRC Design Proposals</title>
            <author>
              <organization>
                Trust over IP Foundation
              </organization>
            </author>
            <date year="2025"/>
          </front>
          <refcontent>
            GitHub Discussion #13,
            trustoverip/dtgwg-cred-tf
          </refcontent>
        </reference>

        <reference
          anchor="DISCUSSION-8"
          target=
"https://github.com/trustoverip/dtgwg-cred-tf/discussions/8">
          <front>
            <title>
              Web 7.0 Verifiable Trust Circles (VTCs)
            </title>
            <author
              fullname="Michael Herman"
              initials="M."
              surname="Herman"/>
            <date year="2025"/>
          </front>
          <refcontent>
            GitHub Discussion #8,
            trustoverip/dtgwg-cred-tf
          </refcontent>
        </reference>

        <reference
          anchor="PHC-PAPER"
          target=
          "https://arxiv.org/pdf/2408.07892">
          <front>
            <title>Personhood Credentials</title>
            <author
              fullname="B. Crites"
              initials="B."
              surname="Crites"/>
            <date year="2024"/>
          </front>
          <refcontent>
            arXiv preprint 2408.07892
          </refcontent>
        </reference>

        <reference
          anchor="SSC-7"
          target="https://hyperonomy.com/2025/12/10/
self-sovereign-control-ssc-7-0-metamodel/">
          <front>
            <title>
              Self-Sovereign Control (SSC) 7.0
              Metamodel
            </title>
            <author
              fullname="Michael Herman"
              initials="M."
              surname="Herman">
              <organization>
                Web 7.0 Foundation
              </organization>
            </author>
            <date month="December" year="2025"/>
          </front>
          <refcontent>Hyperonomy</refcontent>
        </reference>

        <reference
          anchor="TSP"
          target="https://trustoverip.org/">
          <front>
            <title>Trust Spanning Protocol</title>
            <author>
              <organization>
                Trust over IP Foundation
              </organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>

        <reference
          anchor="WEB70-VTC"
          target="https://hyperonomy.com/2026/03/26/
sdo-verifiable-trust-circles-vtcs-using-vc-proof-sets-web-7-0/">
          <front>
            <title>
              SDO: Verifiable Trust Circles (VTCs)
              using VC Proof Sets (Web 7.0)
            </title>
            <author
              fullname="Michael Herman"
              initials="M."
              surname="Herman">
              <organization>
                Web 7.0 Foundation
              </organization>
            </author>
            <date month="March" year="2026"/>
          </front>
          <refcontent>
            Licensed under Creative Commons
            Attribution-ShareAlike 4.0 International
            Public License
          </refcontent>
        </reference>

      </references>
    </references>

    <!-- ===== Appendix A ===== -->
    <section
      anchor="appendix-cardinality"
      numbered="true"
      toc="default">
      <name>
        VTC Cardinality and Credential Type Mapping
      </name>
      <t>
        The following table summarizes the mapping between
        VTC cardinality (size of the "to" array) and the
        equivalent prior credential construct:
      </t>
      <table align="center">
        <thead>
          <tr>
            <th>N (members)</th>
            <th>VTC Type</th>
            <th>Prior Equivalent</th>
            <th>Proof Count</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>0</td>
            <td>Null VTC</td>
            <td>None</td>
            <td>1 (Notary only)</td>
          </tr>
          <tr>
            <td>1</td>
            <td>Self-Credential</td>
            <td>PHC</td>
            <td>2 (Notary + A)</td>
          </tr>
          <tr>
            <td>2</td>
            <td>Bilateral</td>
            <td>VRC</td>
            <td>3 (Notary + A + B)</td>
          </tr>
          <tr>
            <td>N &gt; 2</td>
            <td>Multi-Party</td>
            <td>None (new)</td>
            <td>N+2 (Notary + A + B...Z)</td>
          </tr>
          <tr>
            <td>Open</td>
            <td>Voting VTC</td>
            <td>None (new)</td>
            <td>1 + votes cast</td>
          </tr>
        </tbody>
      </table>
    </section>

    <!-- ===== Acknowledgements ===== -->
    <section
      anchor="acknowledgements"
      numbered="false"
      toc="default">
      <name>Acknowledgements</name>
      <t>
        This specification was derived from community
        discussion contributions by Michael Herman
        (mwherman2000), talltree, adamstallard, mitchuski,
        peacekeeper, GraceRachmany, and other participants
        of the Trust over IP Foundation DTGWG Credentials
        Task Force. The editors gratefully acknowledge all
        contributors to GitHub Discussion #8
        <xref target="DISCUSSION-8"/>.
      </t>
    </section>

  </back>

</rfc>