<?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-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pfeairheller-ptel-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="PTEL">Public Transaction Event Logs (PTEL)</title>
    <seriesInfo name="Internet-Draft" value="draft-pfeairheller-ptel-01"/>
    <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
      <organization>GLEIF</organization>
      <address>
        <email>Philip.Feairheller@gleif.org</email>
      </address>
    </author>
    <date year="2023" month="July" day="28"/>
    <area>TODO</area>
    <workgroup>TODO Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 26?>

<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/trustoverip/tswg-ptel-specification"/>.</t>
    </note>
  </front>
  <middle>
    <?line 30?>

<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>
    <?line 375?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
P52RTI3q/GX/hIX0K9VW9H9qGG+LbEQAAA==

-->

</rfc>
