<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.25 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pfeairheller-ptel-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.1 -->
  <front>
    <title abbrev="PTEL">Public Transaction Event Logs (PTEL)</title>
    <seriesInfo name="Internet-Draft" value="draft-pfeairheller-ptel-00"/>
    <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
      <organization>GLEIF</organization>
      <address>
        <email>Philip.Feairheller@gleif.org</email>
      </address>
    </author>
    <date year="2022" month="February" day="08"/>
    <area>TODO</area>
    <workgroup>TODO Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>TODO Abstract</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/WebOfTrust/ietf-ptel"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The <em>Transaction Event Log</em> (TEL) is a hash linked data structure of transactions that can be used to track state. A
<em>Public Verifiable Credential Registry</em> can be represented in several TELs to establish issuance or revocation state of
a Verifiable Credential (VC). The KEL is used to establish control authority over the keys used to commit to the events
of the TEL and sign the VC. The events of the TEL are used to establish the issuance or revocation state of the VCs
issued by the controller of the identifier represented by the KEL. This document specifies a design for <em>public</em>
VCs only. The use of a hash digest of the VC contents as the identifier of that VC or an attribute in a TEL event allows
for correlation of uses of the VC.</t>
      <section anchor="transaction-event-log">
        <name>Transaction Event Log</name>
        <t>A KERI KEL can control a TEL by anchoring the TEL to key events of the KEL with the following:</t>
        <ol spacing="normal" type="1"><li>Create the inception event for the TEL with the TEL specific unique identifier.</li>
          <li>Generate a hash digest of the serialized content of the TEL inception event.</li>
          <li>Attach anchoring seals from the KEL events to the TEL events they are authorizing.</li>
          <li>Sign the KEL event as usual to commit to the digest of the serialized TEL event.</li>
        </ol>
        <t>Any validator can cryptographically verify the authoritative state by validating the signatures of the referenced KEL.
The TEL events do not have to be signed as the commitment to the event is in the form of the digest in the seal in the
anchoring KEL event and the signatures on that event. Like KEL events, all TEL events have the fields <tt>i</tt>, <tt>s</tt>, and
<tt>t</tt>. However, the <tt>s</tt> or sequence number field in TEL events represents the "clock" for that transaction set. Each
transaction set can have its own "clock" (e.g. bitcoin block height, wall clock, etc) and is independent of the sequence
number of the KEL events. In the case of the Verifiable Credential Registry, the <tt>s</tt> field is simply a monotonically
increasing integer.</t>
        <t>The events are anchored back to the KEL using Event Source Seals whose JSON representation is as follows.</t>
        <t><tt>
{
 "s": "3",
 "d": "ELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM"
}
</tt></t>
        <t>For TEL events, this seal back to the KEL will be delivered as an attachment of event source seal triples in duple of
(s, d).</t>
        <t><tt>
-GAB
0AAAAAAAAAAAAAAAAAAAAAAw
ELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM
</tt></t>
        <t>Event source seal attachment example (line feeds added for readability)</t>
      </section>
      <section anchor="verifiable-credential-registry">
        <name>Verifiable Credential Registry</name>
        <t>A <em>Public Verifiable Credential Registry</em> (Registry) is a form of a <em>Verifiable Data Registry</em> that tracks the
issuance/revocation state of credentials issued by the controller of the KEL. Two types of TELs will be used for this
purpose. The first type of TEL is the management TEL and will signal the creation of the Registry and track the list of
Registrars that will act as Backers for the individual TELs for each VC. The second type of TEL is the VC TEL which will
track the issued or revoked state of each VC and will contain a reference to it's corresponding management TEL.</t>
        <t>The following events will be used to create and maintain the TELs for the Registry.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Ilk</th>
              <th align="left">TEL</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">vcp</td>
              <td align="left">Management</td>
              <td align="left">Registry Inception Event</td>
              <td align="left">Inception statement for the Registry</td>
            </tr>
            <tr>
              <td align="left">vrt</td>
              <td align="left">Management</td>
              <td align="left">Registry Rotation Event</td>
              <td align="left">Rotation event for updating Backers</td>
            </tr>
            <tr>
              <td align="left">iss</td>
              <td align="left">VC</td>
              <td align="left">Simple Credential Issuance Event</td>
              <td align="left">Issue credential with no Backers</td>
            </tr>
            <tr>
              <td align="left">rev</td>
              <td align="left">VC</td>
              <td align="left">Simple Credential Revocation Event</td>
              <td align="left">Revoke previously issued credential with no Backers</td>
            </tr>
            <tr>
              <td align="left">bis</td>
              <td align="left">VC</td>
              <td align="left">Credential Issuance Event</td>
              <td align="left">Issue credential</td>
            </tr>
            <tr>
              <td align="left">brv</td>
              <td align="left">VC</td>
              <td align="left">Credential Revocation Event</td>
              <td align="left">Revoke previously issued credential</td>
            </tr>
            <tr>
              <td align="left">iis</td>
              <td align="left">VC</td>
              <td align="left">Simple Credential Issuance Event with VC Hash</td>
              <td align="left">Issue credential with no Backers, VC Hash as separate field</td>
            </tr>
            <tr>
              <td align="left">irv</td>
              <td align="left">VC</td>
              <td align="left">Simple Credential Revocation Event with VC Hash</td>
              <td align="left">Revoke previously issued credential with no Backers, VC Hash as separate field</td>
            </tr>
            <tr>
              <td align="left">ibs</td>
              <td align="left">VC</td>
              <td align="left">Credential Issuance Event with VC Hash</td>
              <td align="left">Issue credential, VC Hash as separate field</td>
            </tr>
            <tr>
              <td align="left">ibr</td>
              <td align="left">VC</td>
              <td align="left">Credential Revocation Event with VC Hash</td>
              <td align="left">Revoke previously issued credential, VC Hash as separate field</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="management-tel">
        <name>Management TEL</name>
        <t>The state tracked by the Management TEL will be the list of Registrar identifiers that serve as backers for each TEL
under its provenance. This list of Registrars can be rotated with events specific to this type of TEL. In this way,
Registrar lists are analogous to Backer lists in KERI KELs. Additional metadata can be tracked in this TEL, for example
references to Schema. The Management TEL will have two events: <tt>vcp</tt> for Registry inception and <tt>vrt</tt>
for rotation of the list or Registrars. The events will reference the controlling identifier in the <tt>ii</tt> field and be
anchored to the KEL with an event seal triple attachment.</t>
        <t>The Registry specific identifier will be self-addressing (see <xref target="self-addressing-identifiers">below</xref>
for definition) using its inception data for its derivation. This requires a commitment to the anchor in the controlling
KEL and necessitates the event location seal be included in the event. The derived identifier is then set in the <tt>i</tt>
field of the events in the management TEL.</t>
        <t>Though it is possible for a given identifier KEL to issue multiple types of credentials, it is anticipated that there
will be relatively few (usually one) Management TELs anchored to a given KEL. A more scalable approach to issuing
multiple credential types from a single identifier would be to use delegated identifiers for the different types of
credentials to be issued.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Description</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">v</td>
              <td align="left">version string</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">i</td>
              <td align="left">namespaced identifier of Registry</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">s</td>
              <td align="left">sequence number of event</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">t</td>
              <td align="left">message type  of event</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">p</td>
              <td align="left">prior event digest</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">c</td>
              <td align="left">list of Configuration Traits/Modes</td>
              <td align="left">allows for config of no backer registry</td>
            </tr>
            <tr>
              <td align="left">a</td>
              <td align="left">digest seal of attachment meta-data for registry</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ii</td>
              <td align="left">issuer identifier</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">vi</td>
              <td align="left">hash digest of VC contents</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">b</td>
              <td align="left">list of backer identifiers for credentials associated with this registry</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">bt</td>
              <td align="left">backer threshold</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ba</td>
              <td align="left">list of backers to add (ordered backer set)</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">br</td>
              <td align="left">list of backers to remove (ordered backer set)</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <section anchor="configuration">
          <name>Configuration</name>
          <t>The simplest (and most common) case for Registries relies on the witnesses of the controlling KEL and their receipts of
the KEL events instead of Registry specific backers. To accommodate this case, the <tt>c</tt> element is added to the
management TEL inception event with the configuration option <tt>NB</tt>  to specify that the Registry will never have backers
configured in the management TEL. In this case, there will only be one event in the management TEL for this Registry and
the simple events <tt>iss</tt>
and <tt>rev</tt> will be used for "simple issue" and "simple revoke" respectively in the VC specific TELs. For these events,
the <tt>ri</tt> field will be the simple identifier referencing the management TEL.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Option</th>
                <th align="left">Description</th>
                <th align="left">Notes</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">NB</td>
                <td align="left">No Backers</td>
                <td align="left">No registry specific backers will be configured for this Registry</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="registry-inception-event">
          <name>Registry Inception Event</name>
          <t><tt>
{
 "v" : "KERI10JSON00011c_",
 "i" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
 "ii": "EJJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i0d8",
 "s" : "0",
 "t" : "vcp",
 "b" : ["BbIg_3-11d3PYxSInLN-Q9_T2axD6kkXd3XRgbGZTm6s"],
 "c" : []
 "a" : {
     "d": "EEBp64Aw2rsjdJpAR0e2qCq3jX7q7gLld3LjAwZgaLXU"
  }
}-GAB0AAAAAAAAAAAAAAAAAAAAABwEOWdT7a7fZwRz0jiZ0DJxZEM3vsNbLDPEUk-ODnif3O0
</tt></t>
          <t>Registry inception event for establishing the list of Backers</t>
          <t><tt>
{
 "v" : "KERI10JSON00011c_",
 "i" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
 "ii": "EJJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i0d8",
 "s" : "0",
 "t" : "vcp",
 "b" : [],
 "c" : ["NB"]
}-GAB0AAAAAAAAAAAAAAAAAAAAABwEOWdT7a7fZwRz0jiZ0DJxZEM3vsNbLDPEUk-ODnif3O0
</tt></t>
          <t>Registry inception event for "backer-less" configuration</t>
        </section>
        <section anchor="registry-rotation-event">
          <name>Registry Rotation Event</name>
          <t><tt>
{
 "v" : "KERI10JSON00011c_",
 "i" : "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
 "p" : "EY2L3ycqK9645aEeQKP941xojSiuiHsw4Y6yTW-PmsBg",
 "s" : "1",
 "t" : "vrt",
 "ba" : ["BXhpfP_H41hw8f-LluTidLfXxmC4EPwaENHI6CuruE6g"],
 "br" : ["BbIg_3-11d3PYxSInLN-Q9_T2axD6kkXd3XRgbGZTm6s"]
}-GAB0AAAAAAAAAAAAAAAAAAAAACQEOWdT7a7fZwRz0jiZ0DJxZEM3vsNbLDPEUk-ODnif3O0
</tt></t>
          <t>Registrar rotation event updates the list of Backers</t>
        </section>
      </section>
      <section anchor="verifiable-credential-tels">
        <name>Verifiable Credential TELs</name>
        <t>The binary state (issued or revoked) of each verifiable credential (VC) will be tracked in individual TELs associated
with each VC. The state changes will be represented by 4 sets of 2 events: <tt>iss</tt> for simple VC issuance and <tt>rev</tt>
for simple revocation, <tt>bis</tt> for the issuance of the VCs with backers and <tt>brv</tt> for revocation of the VCs with backers
and corresponding events <tt>iis</tt>, <tt>irv</tt> and <tt>ibs</tt>, <tt>ibr</tt> to be used when the identifier of the VC is not the
self-addressing identifier of the VC and that identifier must be included is the separate <tt>vi</tt> field in the event. The
events will be anchored to the KEL with an event seal triple attachment signified by the grouping counter <tt>-e##</tt>.</t>
        <section anchor="self-addressing-identifiers">
          <name>Self Addressing Identifiers</name>
          <t>The advantage of a content addressable identifier is that it is cryptographically bound to the contents. It provides a
secure root-of-trust. Any cryptographic commitment to a content addressable identifier is functionally equivalent (given
comparable cryptographic strength) to a cryptographic commitment to the content itself.</t>
          <t>A self-addressing identifier is a special class content-addressable identifier that is also self-referential. The
special class is distinguished by a special derivation method or process to generate the self-addressing identifier.
This derivation method is determined by the combination of both a derivation code prefix included in the identifier and
the context in which the identifier appears. The reason for a special derivation method is that a naive cryptographic
content addressable identifier must not be self-referential, i.e. the identifier must not appear within the contents
that it is identifying. This is because the naive cryptographic derivation process of a content addressable identifier
is a cryptographic digest of the serialized content. Changing one bit of the serialization content will result in a
different digest. A special derivation method or process is required.</t>
        </section>
        <section anchor="derivation-process">
          <name>Derivation Process</name>
          <t>This process is as follows:</t>
          <ul spacing="normal">
            <li>replace the value of the id field in the content that will hold the self-addressing identifier with a dummy string of
the same length as the eventually derived self-addressing identifier</li>
            <li>compute the digest of the content with the dummy value for the id field</li>
            <li>prepend the derivation code to the digest and encode appropriately to create the final derived self-addressing
identifier replace the dummy value with the self-addressing identifier</li>
          </ul>
          <t>As long as any verifier recognizes the derivation method, the 'self-addressing` identifier is a cryptographically secure
commitment to the contents in which it is embedded. It is a cryptographically verifiable self-referential content
addressable identifier.</t>
          <t>Because a self-addressing identifier is both self-referential and cryptographically bound to the contents it identifies,
anyone can validate this binding if they follow the binding protocol outlined above.</t>
          <t>To elaborate, this approach of deriving self-referential identifiers from the contents they identify, we call
self-addressing. It allows a verifier to verify or re-derive the self-referential identifier given the contents it
identifies. To clarify, a self-addressing identifier is different from a standard content address or content addressable
identifier in that a standard content addressable identifier may not be included inside the contents it addresses. The
standard content addressable identifier is computed on the finished immutable contents and therefore is not
self-referential.</t>
        </section>
      </section>
      <section anchor="self-addressing-identifiers-in-a-tel">
        <name>Self-Addressing Identifiers in a TEL</name>
        <t><tt>ii</tt> issuer identifier is the controller prefix is self-certifying and may be also self-addressing (but may not be) wrt
to its inception event  (For GLEIF TELS the issuer identifier must be self-addressing)</t>
        <t><tt>ri</tt>, <tt>i</tt> registry identifier is self-addressing wrt the registry inception event <tt>i</tt> VC identifier is self-addressing
wrt to the VC itself</t>
        <t>There are two options for including a cryptographic commitment to the VC in the TEL VC events. The identifier of the VC
can self-addressing using the same technique KERI uses for self-addressing identifiers. The VC identifier can be created
by padding the VC <tt>id</tt> field and taking a hash digest of the serialized contents of the VC. This form of self-addressing
identifier can be used as the <tt>i</tt> field in the TEL <tt>iss</tt>, <tt>rev</tt>, <tt>bis</tt> and <tt>brv</tt> events and no other reference to the VC
is required. When the identifier of the VC is derived from some other method, the TEL events <tt>iis</tt>, <tt>irv</tt>, <tt>ibs</tt> and
<tt>ibr</tt> are used, and a hash digest of the contents of the VC is placed in the <tt>vi</tt> field.</t>
        <t>The VC identifier can be namespaced using DID syntax. In this case, the VC identifier in the TEL events would be the
method specific identifier of the full DID. For informational purposes, the fully qualified DID can be included as an
attachment to the TEL events.</t>
        <t>The list of backers needed to sign each VC TEL event is maintained by the management TEL. Since that list can change
over time with the <tt>rot</tt> management events listed above, the non-simple VC events (<tt>bis</tt>, <tt>brv</tt>) must be anchored to the
event in the management TEL at the point when the VC event is published with the <tt>ra</tt> field. This way, the backer
signatures can be indexed into the proper list of backers at the time of issuance or revocation.</t>
      </section>
      <section anchor="credential-issuancerevocation-tel">
        <name>Credential Issuance/Revocation TEL</name>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Description</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">v</td>
              <td align="left">version string</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">i</td>
              <td align="left">namespaced identifier of VC</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">s</td>
              <td align="left">sequence number of event</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">t</td>
              <td align="left">message type  of event</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">dt</td>
              <td align="left">issuer system data/time in iso format</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">p</td>
              <td align="left">prior event digest</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ri</td>
              <td align="left">registry identifier from management TEL</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ra</td>
              <td align="left">registry anchor to management TEL</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <section anchor="simple-credential-issuance-event">
          <name>Simple Credential Issuance Event</name>
          <t><tt>
{
 "v" : "KERI10JSON00011c_",
 "i" : "Ezpq06UecHwzy-K9FpNoRxCJp2wIGM9u2Edk-PLMZ1H4",
 "s" : "0",
 "t" : "iss",
 "dt": "2021-05-27T19:16:50.750302+00:00",
 "ri": "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A"
}-GAB0AAAAAAAAAAAAAAAAAAAAAAwELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM
</tt></t>
        </section>
        <section anchor="simple-credential-revocation-event">
          <name>Simple Credential Revocation Event</name>
          <t><tt>
{
 "v" : "KERI10JSON00011c_",
 "i" : "Ezpq06UecHwzy-K9FpNoRxCJp2wIGM9u2Edk-PLMZ1H4",
 "s" : "1",
 "t" : "rev",
 "dt": "2021-05-27T19:16:50.750302+00:00",
 "p" : "EY2L3ycqK9645aEeQKP941xojSiuiHsw4Y6yTW-PmsBg"
}-GAB0AAAAAAAAAAAAAAAAAAAAABAELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM
</tt></t>
        </section>
        <section anchor="credential-issuance-event">
          <name>Credential Issuance Event</name>
          <t><tt>
{
 "v" : "KERI10JSON00011c_",
 "i" : "Ezpq06UecHwzy-K9FpNoRxCJp2wIGM9u2Edk-PLMZ1H4",
 "s" : "0",
 "t" : "bis",
 "dt": "2021-05-27T19:16:50.750302+00:00",
 "ra": {
    "i": "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
    "s": "2",
    "d": "Ezpq06UecHwzy-K9FpNoRxCJp2wIGM9u2Edk-PLMZ1H4"
  }
}-GAB0AAAAAAAAAAAAAAAAAAAAAAwELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM
</tt></t>
        </section>
        <section anchor="credential-revocation-event">
          <name>Credential Revocation Event</name>
          <t><tt>
{
 "v" : "KERI10JSON00011c_",
 "i" : "Ezpq06UecHwzy-K9FpNoRxCJp2wIGM9u2Edk-PLMZ1H4",
 "s" : "1",
 "t" : "brv",
 "dt": "2021-05-27T19:16:50.750302+00:00",
 "p" : "EY2L3ycqK9645aEeQKP941xojSiuiHsw4Y6yTW-PmsBg",
 "ra": {
    "i": "ELh3eYC2W_Su1izlvm0xxw01n3XK8bdV2Zb09IqlXB7A",
    "s": "4",
    "d": "Ezpq06UecHwzy-K9FpNoRxCJp2wIGM9u2Edk-PLMZ1H4"
  }
}-GAB0AAAAAAAAAAAAAAAAAAAAABAELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM
</tt></t>
        </section>
      </section>
      <section anchor="use-case">
        <name>Use Case</name>
        <t>The <em>Verifiable Legal Entity Identifier</em> (vLEI) provides a lightweight, easy to understand use case for a <em>Transaction
Event Log</em> as a <em>Verifiable Credential Registry</em>. Issuing a VC has been described above. Verification of a VC will start
with the presentation of a vLEI VC as proof (all vLEI VCs are public and therefore proof presentation will include the
entire vLEI VC). The verifier will extract the DID of the issuer from the VC, and calculate the hash digest of the
serialized contents of the VC. By parsing the namespaced identifier of the VC, the verifier will perform the following
steps:</t>
        <ol spacing="normal" type="1"><li>Retrieve the key state from the KERI did method (or appropriate DID method tunnel) using the controller identifier
embedded in the VC identifier</li>
          <li>Retrieve and verify the KEL against the key state of the issuer</li>
          <li>Retrieve the management TEL using the Registry identifier embedded in the VC identifier and determine the Registrars
to use to retrieve the VC TEL.</li>
          <li>Retrieve the VC TEL and calculate the issuance/revocation state of the VC from the events in the TEL.</li>
          <li>Using the keys from the KERI event to which the <tt>iss</tt> event is anchored, verify the signature on the VC.</li>
        </ol>
      </section>
      <section anchor="security-considerations">
        <name>Security Considerations</name>
        <ol spacing="normal" type="1"><li>To avoid DDoS attack by flooding an Endorser with TEL events that are not associated with any identifiers they are
associated with, TEL events need to be placed in escrow until an anchoring KEL event is seen for the TEL identifier.</li>
        </ol>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
n85IpkZ1/rJ/wkL6lWor+j/v6fpTbEQAAA==

-->

</rfc>
