<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 4.0.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3339 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
<!ENTITY RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC8785 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8785.xml">
<!ENTITY RFC9457 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9457.xml">
]>


<rfc ipr="noModificationTrust200902" docName="draft-evm-charge-00" category="info" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="EVM Charge">EVM Charge Intent for HTTP Payment Authentication</title>

    <author initials="B." surname="DiNovi" fullname="Brett DiNovi">
      <organization>MegaETH Labs</organization>
      <address>
        <email>bread@megaeth.com</email>
      </address>
    </author>
    <author initials="C." surname="Swenberg" fullname="Conner Swenberg">
      <organization>Coinbase</organization>
      <address>
        <email>conner.swenberg@coinbase.com</email>
      </address>
    </author>
    <author initials="K." surname="Scott" fullname="Kyle Scott">
      <organization>Monad Foundation</organization>
      <address>
        <email>kscott@monad.foundation</email>
      </address>
    </author>

    <date year="2026" month="July" day="03"/>

    
    
    

    <abstract>


<?line 77?>

<t>This document defines the "charge" intent for the "evm" payment
method in the Payment HTTP Authentication Scheme
<xref target="I-D.httpauth-payment"/>. It specifies how clients and servers
exchange one-time ERC-20 token transfers on any EVM-compatible
blockchain.</t>

<t>Four credential types are supported: <spanx style="verb">type="permit2"</spanx>
(<bcp14>RECOMMENDED</bcp14>), where the client signs an off-chain Permit2
authorization and the server submits the transfer;
<spanx style="verb">type="authorization"</spanx> (opt-in for EIP-3009 tokens), where
the client signs an off-chain transfer authorization and
the server submits it directly to the token contract;
<spanx style="verb">type="transaction"</spanx>, where the client signs and the server
broadcasts a standard ERC-20 transfer transaction; and
<spanx style="verb">type="hash"</spanx> (optional fallback), where the client
broadcasts the transaction itself and presents the on-chain
transaction hash for server verification.</t>

<t>This specification covers ERC-20 token transfers only. Native
token transfers (ETH, etc.) are out of scope.</t>



    </abstract>



  </front>

  <middle>


<?line 100?>

<section anchor="introduction"><name>Introduction</name>

<t>HTTP Payment Authentication <xref target="I-D.httpauth-payment"/> defines a
challenge-response mechanism that gates access to resources behind
payments. This document registers the "charge" intent for the
"evm" payment method.</t>

<t>The Ethereum Virtual Machine (EVM) is the execution environment
shared by Ethereum and a growing number of compatible blockchains.
These chains share a common smart contract interface (ERC-20
<xref target="ERC-20"/>), transaction format (EIP-1559 <xref target="EIP-1559"/>), address
encoding (EIP-55 <xref target="EIP-55"/>), and JSON-RPC API — making it
possible to define a single payment method that works across all
of them.</t>

<t>This specification inherits the shared request semantics of the
"charge" intent from <xref target="I-D.payment-intent-charge"/>. It defines
only the EVM-specific <spanx style="verb">methodDetails</spanx>, <spanx style="verb">payload</spanx>, and verification
procedures.</t>

<section anchor="design-rationale"><name>Design Rationale</name>

<t>Prior drafts proposed separate payment methods for individual EVM
chains. However, the control flow, data structures, and
verification logic are identical across these chains — the only
differences are chain ID and optional RPC extensions. A unified
<spanx style="verb">evm</spanx> method avoids fragmenting the registry while still allowing
chain-specific optimizations at the implementation level.</t>

</section>
<section anchor="client-broadcast-fallback"><name>Client-Broadcast Fallback</name>

<t>Some clients (custodial wallets, hardware signers) cannot
hand off a signed-but-unbroadcast transaction. For these
cases, <spanx style="verb">type="hash"</spanx> allows the client to broadcast the
transaction itself and present the on-chain hash. This
mode provides weaker challenge binding and does not support
splits or server-paid fees. Servers <bcp14>SHOULD</bcp14> prefer
<spanx style="verb">type="permit2"</spanx> or <spanx style="verb">type="transaction"</spanx> when possible.</t>

</section>
<section anchor="credential-types"><name>Credential Types</name>

<t>This specification defines four credential types:</t>

<t><list style="symbols">
  <t><strong><spanx style="verb">type="permit2"</spanx> (<bcp14>RECOMMENDED</bcp14>)</strong>: The client signs an
off-chain EIP-712 Permit2 authorization. The server constructs
and submits the on-chain transaction. This is the preferred
flow because:  <list style="symbols">
      <t>The client never interacts with the chain directly</t>
      <t>The server naturally sponsors gas (fee payer)</t>
      <t>Split payments are atomic via batch transfers</t>
      <t>No nonce management burden on the client</t>
      <t><spanx style="verb">externalId</spanx> is cryptographically bound via witness data</t>
    </list></t>
  <t><strong><spanx style="verb">type="authorization"</spanx></strong>: The client signs an
off-chain EIP-3009 <xref target="EIP-3009"/> <spanx style="verb">transferWithAuthorization</spanx>
message. The server submits it to the token contract. This
credential is available for tokens that natively implement
EIP-3009 (e.g., USDC, EURC). Benefits:  <list style="symbols">
      <t>No Permit2 approval prerequisite — zero setup</t>
      <t>Server naturally sponsors gas</t>
      <t>Challenge binding via the on-chain nonce</t>
      <t>Simpler signature structure</t>
    </list></t>
  <t><strong><spanx style="verb">type="transaction"</spanx></strong>: The client signs a complete ERC-20
<spanx style="verb">transfer</spanx> transaction. The server broadcasts it. This is the
compatible fallback for chains where Permit2 is not deployed
or clients that prefer direct transaction signing.</t>
  <t><strong><spanx style="verb">type="hash"</spanx></strong>: The client signs and broadcasts a standard
ERC-20 <spanx style="verb">transfer</spanx> transaction and presents the confirmed
transaction hash for server verification. This is the fallback
for some hardware wallets that cannot hand off a
signed-but-unbroadcast transaction.</t>
</list></t>

<t>Servers that support Permit2 <bcp14>SHOULD</bcp14> advertise it as the preferred
credential type. Clients <bcp14>SHOULD</bcp14> prefer <spanx style="verb">type="permit2"</spanx> when
available.</t>

</section>
<section anchor="charge-flow"><name>Charge Flow</name>

<t>The following diagram illustrates the recommended charge flow
using a Permit2 credential:</t>

<figure><artwork><![CDATA[
Client                  Server               EVM Chain
  |                        |                      |
  | (1) GET /resource      |                      |
  |----------------------->|                      |
  |                        |                      |
  | (2) 402 Payment Req    |                      |
  |     intent="charge"    |                      |
  |<-----------------------|                      |
  |                        |                      |
  | (3) Sign EIP-712       |                      |
  |     Permit2 authz      |                      |
  |                        |                      |
  | (4) Authorization:     |                      |
  |     Payment <cred>     |                      |
  |----------------------->|                      |
  |                        | (5) Submit permit-   |
  |                        |  [Batch]Witness-     |
  |                        |  TransferFrom()      |
  |                        |--------------------->|
  |                        | (6) Receipt          |
  |                        |<---------------------|
  | (7) 200 OK + Receipt   |                      |
  |<-----------------------|                      |
  |                        |                      |
]]></artwork></figure>

</section>
<section anchor="relationship-to-the-charge-intent"><name>Relationship to the Charge Intent</name>

<t>This document inherits the shared request semantics of the
"charge" intent from <xref target="I-D.payment-intent-charge"/>. It defines
only the EVM-specific <spanx style="verb">methodDetails</spanx>, <spanx style="verb">payload</spanx>, and
verification procedures for the "evm" payment method.</t>

</section>
</section>
<section anchor="requirements-language"><name>Requirements Language</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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>ERC-20</dt>
  <dd>
    <t>The standard token interface on EVM-compatible chains
<xref target="ERC-20"/>. Tokens expose <spanx style="verb">transfer(address,uint256)</spanx> and
emit <spanx style="verb">Transfer</spanx> events on successful transfers.</t>
  </dd>
  <dt>Permit2</dt>
  <dd>
    <t>Uniswap's universal token approval contract <xref target="PERMIT2"/>,
deployed at the canonical address
<spanx style="verb">0x000000000022D473030F116dDEE9F6B43aC78BA3</spanx> on all
supported chains. Enables off-chain signed approvals for
any ERC-20 token via <spanx style="verb">PermitWitnessTransferFrom</spanx> and
<spanx style="verb">PermitBatchWitnessTransferFrom</spanx>.</t>
  </dd>
  <dt>EIP-712</dt>
  <dd>
    <t>A standard for typed structured data hashing and signing
<xref target="EIP-712"/>, used by Permit2 to produce human-readable,
replay-protected authorization signatures.</t>
  </dd>
  <dt>Base Units</dt>
  <dd>
    <t>The smallest transferable unit of a token, determined by
the token's decimal precision. For example, USDC (6
decimals) uses 1,000,000 base units per 1 USDC; USDm
(18 decimals) uses 10^18 base units per 1 USDm.</t>
  </dd>
</dl>

</section>
<section anchor="request-schema"><name>Request Schema</name>

<t>The <spanx style="verb">request</spanx> parameter in the <spanx style="verb">WWW-Authenticate</spanx> challenge
contains a base64url-encoded JSON object. The JSON <bcp14>MUST</bcp14> be
serialized using JSON Canonicalization Scheme (JCS) <xref target="RFC8785"/>
before base64url encoding, per <xref target="I-D.httpauth-payment"/>.</t>

<section anchor="shared-fields"><name>Shared Fields</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">amount</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Amount in base units (stringified integer)</c>
      <c><spanx style="verb">currency</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>ERC-20 token contract address</c>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Recipient address, EIP-55 encoded <xref target="EIP-55"/></c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Human-readable payment description</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Merchant's reference (order ID, invoice number, etc.)</c>
</texttable>

<t>Challenge expiry is conveyed by the <spanx style="verb">expires</spanx> auth-param in
<spanx style="verb">WWW-Authenticate</spanx> per <xref target="I-D.httpauth-payment"/>.</t>

<t>Addresses in <spanx style="verb">currency</spanx> and <spanx style="verb">recipient</spanx> <bcp14>MUST</bcp14> be 0x-prefixed,
20-byte hex strings. Implementations <bcp14>SHOULD</bcp14> use EIP-55
mixed-case encoding but <bcp14>MUST</bcp14> compare addresses by decoded
20-byte value, not string form.</t>

</section>
<section anchor="method-details"><name>Method Details</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">chainId</spanx></c>
      <c>number</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>EIP-155 chain ID</c>
      <c><spanx style="verb">permit2Address</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Permit2 contract address (default: canonical address)</c>
      <c><spanx style="verb">credentialTypes</spanx></c>
      <c>array</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Ordered list of accepted credential types</c>
      <c><spanx style="verb">decimals</spanx></c>
      <c>number</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Token decimal precision (e.g., 6 for USDC, 18 for USDm). Aids client-side display verification.</c>
      <c><spanx style="verb">splits</spanx></c>
      <c>array</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Additional payment splits (max 10)</c>
</texttable>

<section anchor="chain-identification"><name>Chain Identification</name>

<t>The <spanx style="verb">chainId</spanx> field is <bcp14>REQUIRED</bcp14> and identifies the target
blockchain using its EIP-155 chain ID. Clients <bcp14>MUST</bcp14> reject
challenges whose <spanx style="verb">chainId</spanx> does not match a chain they
support.</t>

<t>A registry of EVM chain IDs is maintained at
https://chainlist.org. This specification is not limited to
any particular set of chains.</t>

</section>
<section anchor="credential-type-negotiation"><name>Credential Type Negotiation</name>

<t>Servers <bcp14>MAY</bcp14> indicate accepted credential types via the
<spanx style="verb">credentialTypes</spanx> field in <spanx style="verb">methodDetails</spanx>:</t>

<t>Valid values: <spanx style="verb">"permit2"</spanx>, <spanx style="verb">"authorization"</spanx>, <spanx style="verb">"transaction"</spanx>,
<spanx style="verb">"hash"</spanx>.</t>

<t>If omitted, servers <bcp14>MUST</bcp14> accept <spanx style="verb">"transaction"</spanx> and <bcp14>SHOULD</bcp14>
accept <spanx style="verb">"hash"</spanx>. Servers that support Permit2 <bcp14>SHOULD</bcp14> include
<spanx style="verb">"permit2"</spanx> as the first entry to indicate preference.
Servers <bcp14>MUST</bcp14> only include <spanx style="verb">"authorization"</spanx> when the
<spanx style="verb">currency</spanx> token is known to implement EIP-3009.
Clients <bcp14>SHOULD</bcp14> use the first type in the list that they
support.</t>

</section>
<section anchor="split-payments"><name>Payment Splits</name>

<t>The <spanx style="verb">splits</spanx> field enables a single charge to distribute
payment across multiple recipients. This is useful for
platform fees, revenue sharing, and marketplace payouts.</t>

<t>Splits REQUIRE <spanx style="verb">type="permit2"</spanx> credentials. The Permit2
batch transfer mechanism ensures all transfers (primary +
splits) execute atomically in a single on-chain transaction.
Servers <bcp14>MUST</bcp14> reject split requests fulfilled with
<spanx style="verb">type="transaction"</spanx>, <spanx style="verb">type="authorization"</spanx>, or
<spanx style="verb">type="hash"</spanx> credentials.</t>

<t>Each entry in the <spanx style="verb">splits</spanx> array is a JSON object:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>EIP-55 address of split recipient</c>
      <c><spanx style="verb">amount</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Amount in base units for this recipient</c>
      <c><spanx style="verb">memo</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Human-readable label (max 256 chars)</c>
</texttable>

<t>The top-level <spanx style="verb">amount</spanx> represents the total the client pays.
The primary <spanx style="verb">recipient</spanx> receives the remainder: <spanx style="verb">amount</spanx> minus
the sum of all split amounts.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>The sum of <spanx style="verb">splits[].amount</spanx> <bcp14>MUST</bcp14> be strictly less than
<spanx style="verb">amount</spanx>. Clients <bcp14>MUST</bcp14> reject any request that violates
this constraint.</t>
  <t>If present, <spanx style="verb">splits</spanx> <bcp14>MUST</bcp14> contain at least 1 entry.
Servers <bcp14>SHOULD</bcp14> limit splits to 10 entries.</t>
  <t>All transfers <bcp14>MUST</bcp14> target the same <spanx style="verb">currency</spanx> token.</t>
  <t>Address fields are compared by decoded 20-byte value, not
by string form.</t>
</list></t>

<t>The order of entries in <spanx style="verb">splits</spanx> is significant for
verification. Clients <bcp14>MUST</bcp14> emit transfers in array order.
Servers <bcp14>MUST</bcp14> verify <spanx style="verb">transferDetails[0]</spanx> as the primary
transfer and <spanx style="verb">transferDetails[i+1]</spanx> as <spanx style="verb">splits[i]</spanx>.</t>

<t><strong>Example:</strong></t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1050000",
  "currency": "0xe15fc38f6d8c56af07bbcbe3baf5708a2bf42392",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "description": "Marketplace purchase",
  "methodDetails": {
    "chainId": 1329,
    "credentialTypes": ["permit2"],
    "splits": [
      {
        "recipient": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
        "amount": "50000",
        "memo": "platform fee"
      }
    ]
  }
}
]]></sourcecode></figure>

<t>This requests a total payment of 1.05 USDC. The platform
receives 0.05 USDC and the primary recipient receives 1.00
USDC. Both transfers execute atomically via Permit2 batch.</t>

</section>
</section>
</section>
<section anchor="credential-schema"><name>Credential Schema</name>

<t>The credential in the <spanx style="verb">Authorization</spanx> header contains a
base64url-encoded JSON object per <xref target="I-D.httpauth-payment"/>.</t>

<section anchor="credential-structure"><name>Credential Structure</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">challenge</spanx></c>
      <c>object</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Echo of the challenge from the server</c>
      <c><spanx style="verb">payload</spanx></c>
      <c>object</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>EVM-specific payload</c>
      <c><spanx style="verb">source</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Payer identifier as a DID</c>
</texttable>

<t>The <spanx style="verb">source</spanx> field, if present, <bcp14>SHOULD</bcp14> use the <spanx style="verb">did:pkh</spanx> method
with the chain ID from the challenge and the payer's address
(e.g., <spanx style="verb">did:pkh:eip155:4326:0x1234...</spanx>).</t>

</section>
<section anchor="permit2-payload"><name>Permit2 Payload (type="permit2")</name>

<t>The <bcp14>RECOMMENDED</bcp14> credential type. The client signs an off-chain
EIP-712 Permit2 authorization message. The server constructs
and submits the on-chain transaction, paying gas from its own
balance. The client never interacts with the chain directly.</t>

<t>This type requires that the Permit2 contract is deployed on
the target chain and that the client has an active ERC-20
approval to the Permit2 contract (a one-time operation per
token per chain).</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">type</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"permit2"</spanx></c>
      <c><spanx style="verb">permit</spanx></c>
      <c>object</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Permit2 permit data</c>
      <c><spanx style="verb">transferDetails</spanx></c>
      <c>array</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Array of transfer details</c>
      <c><spanx style="verb">witness</spanx></c>
      <c>object</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Challenge binding witness data</c>
      <c><spanx style="verb">signature</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>EIP-712 signature (<spanx style="verb">0x</spanx>-prefixed)</c>
</texttable>

<section anchor="permit-object"><name>Permit Object</name>

<t>The <spanx style="verb">permit</spanx> object describes the token permissions:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">permitted</spanx></c>
      <c>array</c>
      <c>Array of <spanx style="verb">{ token, amount }</spanx> objects. One entry per transfer (primary + each split).</c>
      <c><spanx style="verb">nonce</spanx></c>
      <c>string</c>
      <c>Permit2 nonce (stringified integer)</c>
      <c><spanx style="verb">deadline</spanx></c>
      <c>string</c>
      <c>Unix timestamp (stringified integer)</c>
</texttable>

<t>The <spanx style="verb">permitted</spanx> array <bcp14>MUST</bcp14> always be an array, even for single
transfers (length 1). Each entry specifies:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">token</spanx></c>
      <c>string</c>
      <c>ERC-20 token address (<bcp14>MUST</bcp14> match <spanx style="verb">currency</spanx>)</c>
      <c><spanx style="verb">amount</spanx></c>
      <c>string</c>
      <c>Maximum transfer amount in base units</c>
</texttable>

</section>
<section anchor="transfer-details"><name>Transfer Details</name>

<t>The <spanx style="verb">transferDetails</spanx> array <bcp14>MUST</bcp14> have the same length as
<spanx style="verb">permitted</spanx>. Each entry specifies:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">to</spanx></c>
      <c>string</c>
      <c>Recipient address</c>
      <c><spanx style="verb">requestedAmount</spanx></c>
      <c>string</c>
      <c>Exact transfer amount in base units</c>
</texttable>

<t>The first entry corresponds to the primary recipient.
Subsequent entries (if any) correspond to split recipients
in array order.</t>

</section>
<section anchor="witness-data"><name>Witness Data (Challenge Binding)</name>

<t>The Permit2 witness mechanism provides cryptographic
binding between the payment authorization and the
challenge. When <spanx style="verb">externalId</spanx> is present in the challenge
request, the client <bcp14>MUST</bcp14> include it in the EIP-712
witness struct. When <spanx style="verb">externalId</spanx> is absent from the challenge request,
<spanx style="verb">PaymentWitness.externalId</spanx> is the empty string (<spanx style="verb">""</spanx>). The server <bcp14>MUST</bcp14>
verify the witness matches before submitting the transaction.</t>

<t>The witness type is defined as:</t>

<figure><sourcecode type="solidity"><![CDATA[
struct PaymentWitness {
    bytes32 challengeHash;
    string externalId;
}
]]></sourcecode></figure>

<t>Where <spanx style="verb">challengeHash</spanx> is computed as:</t>

<figure><artwork><![CDATA[
challengeHash = keccak256(abi.encodePacked(
    challenge.id,
    challenge.realm
))
]]></artwork></figure>

<t>This binds the Permit2 signature to the specific
challenge instance. The signature cannot be reused
against a different challenge, even if the payment
parameters are identical.</t>

<t>The witness type string for EIP-712 is:
<spanx style="verb">"PaymentWitness witness)PaymentWitness(bytes32 challengeHash, string externalId)TokenPermissions(address token,uint256 amount)"</spanx></t>

<t>This specification defines that witness schema directly for
challenge binding. Implementations <bcp14>MUST</bcp14> use the exact type
string above when constructing the EIP-712 typed data.</t>

<t>This binding applies to both single and batch
transfers — the same <spanx style="verb">witness</spanx> parameter is used by
<spanx style="verb">permitWitnessTransferFrom()</spanx> and
<spanx style="verb">permitBatchWitnessTransferFrom()</spanx>.</t>

</section>
<section anchor="server-behavior"><name>Server Behavior</name>

<t>For single transfers (no splits, <spanx style="verb">permitted</spanx> length 1), the
server calls <spanx style="verb">permitWitnessTransferFrom()</spanx>.</t>

<t>For batch transfers (with splits, <spanx style="verb">permitted</spanx> length &gt; 1),
the server calls <spanx style="verb">permitBatchWitnessTransferFrom()</spanx>. This
executes all transfers in a single on-chain transaction — if
any transfer fails, the entire batch reverts.</t>

<t>The server pays gas from its own balance in both cases. This
is the natural fee sponsorship model for Permit2: the client
signs only the off-chain authorization and the server handles
all chain interaction.</t>

</section>
<section anchor="example-single-transfer"><name>Example: Single Transfer</name>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "aB3cDeF4gHiJkLmN",
    "realm": "api.example.com",
    "method": "evm",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2026-04-01T12:05:00Z"
  },
  "payload": {
    "type": "permit2",
    "permit": {
      "permitted": [
        {
          "token": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7",
          "amount": "1000000000000000000"
        }
      ],
      "nonce": "1",
      "deadline": "1743523500"
    },
    "transferDetails": [
      {
        "to": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
        "requestedAmount": "1000000000000000000"
      }
    ],
    "witness": {
      "challengeHash": "0x8a3b...f1c2"
    },
    "signature": "0x1b2c3d4e5f..."
  },
  "source": "did:pkh:eip155:4326:0x1234...5678"
}
]]></sourcecode></figure>

</section>
<section anchor="example-batch-transfer-with-splits"><name>Example: Batch Transfer with Splits</name>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "sP1itBatchEx4mple",
    "realm": "marketplace.example.com",
    "method": "evm",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2026-04-01T12:05:00Z"
  },
  "payload": {
    "type": "permit2",
    "permit": {
      "permitted": [
        {
          "token": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7",
          "amount": "1000000000000000000"
        },
        {
          "token": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7",
          "amount": "50000000000000000"
        }
      ],
      "nonce": "1",
      "deadline": "1743523500"
    },
    "transferDetails": [
      {
        "to": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
        "requestedAmount": "1000000000000000000"
      },
      {
        "to": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
        "requestedAmount": "50000000000000000"
      }
    ],
    "witness": {
      "challengeHash": "0x7d4e...a3b9"
    },
    "signature": "0x9a8b7c6d5e..."
  },
  "source": "did:pkh:eip155:4326:0x1234...5678"
}
]]></sourcecode></figure>

<t>This transfers 1.0 USDm to the primary recipient and 0.05 USDm
to the platform — atomically, in a single transaction. The
client signs one EIP-712 message covering both transfers.</t>

</section>
</section>
<section anchor="authorization-payload"><name>Authorization Payload (type="authorization")</name>

<t>Opt-in credential type for tokens that implement EIP-3009
<xref target="EIP-3009"/> (e.g., USDC, EURC). The client signs an off-chain
<spanx style="verb">transferWithAuthorization</spanx> message. The server submits it
directly to the token contract, paying gas from its own
balance. The client never interacts with the chain directly.</t>

<t>Unlike <spanx style="verb">type="permit2"</spanx>, this type requires no prior token
approval — EIP-3009 authorization is built into the token
contract itself.</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">type</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"authorization"</spanx></c>
      <c><spanx style="verb">from</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Payer address</c>
      <c><spanx style="verb">to</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Recipient address (<bcp14>MUST</bcp14> match challenge <spanx style="verb">recipient</spanx>)</c>
      <c><spanx style="verb">value</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Transfer amount in base units (<bcp14>MUST</bcp14> match challenge <spanx style="verb">amount</spanx>)</c>
      <c><spanx style="verb">validAfter</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Unix timestamp — authorization not valid before this time (stringified integer, typically <spanx style="verb">"0"</spanx>)</c>
      <c><spanx style="verb">validBefore</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Unix timestamp — authorization not valid after this time (stringified integer)</c>
      <c><spanx style="verb">nonce</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">bytes32</spanx> nonce — <bcp14>MUST</bcp14> be set to <spanx style="verb">challengeHash</spanx> (see below)</c>
      <c><spanx style="verb">signature</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>EIP-712 signature (<spanx style="verb">0x</spanx>-prefixed)</c>
</texttable>

<section anchor="challenge-binding"><name>Challenge Binding</name>

<t>The EIP-3009 <spanx style="verb">nonce</spanx> field is a random <spanx style="verb">bytes32</spanx> value chosen
by the caller. This specification requires the nonce to be set
to the <spanx style="verb">challengeHash</spanx>:</t>

<figure><artwork><![CDATA[
nonce = keccak256(abi.encodePacked(
    challenge.id,
    challenge.realm
))
]]></artwork></figure>

<t>This provides cryptographic challenge binding equivalent to
the Permit2 witness mechanism. The token contract enforces
nonce uniqueness on-chain — a nonce that has been consumed
cannot be reused, providing replay protection at the contract
level.</t>

</section>
<section anchor="constraints"><name>Constraints</name>

<t><list style="symbols">
  <t>Splits are NOT supported. Servers <bcp14>MUST</bcp14> reject
<spanx style="verb">type="authorization"</spanx> credentials when the challenge
includes <spanx style="verb">splits</spanx>.</t>
  <t>Servers <bcp14>MUST NOT</bcp14> advertise <spanx style="verb">"authorization"</spanx> in
<spanx style="verb">credentialTypes</spanx> unless the <spanx style="verb">currency</spanx> token is known to
implement EIP-3009.</t>
  <t><spanx style="verb">validBefore</spanx> <bcp14>SHOULD</bcp14> correspond to the challenge <spanx style="verb">expires</spanx>
timestamp.</t>
  <t><spanx style="verb">to</spanx> <bcp14>MUST</bcp14> match the challenge <spanx style="verb">recipient</spanx>.</t>
  <t><spanx style="verb">value</spanx> <bcp14>MUST</bcp14> match the challenge <spanx style="verb">amount</spanx>.</t>
</list></t>

</section>
<section anchor="example"><name>Example</name>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "aB3cDeF4gHiJkLmN",
    "realm": "api.example.com",
    "method": "evm",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2026-04-01T12:05:00Z"
  },
  "payload": {
    "type": "authorization",
    "from": "0x1234567890abcdef1234567890abcdef12345678",
    "to": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
    "value": "1000000",
    "validAfter": "0",
    "validBefore": "1743523500",
    "nonce": "0x8a3b...f1c2",
    "signature": "0x..."
  },
  "source": "did:pkh:eip155:4326:0x1234567890abcdef1234567890abcdef12345678"
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="transaction-payload"><name>Transaction Payload (type="transaction")</name>

<t>The compatible fallback. The client signs a complete ERC-20
<spanx style="verb">transfer</spanx> transaction targeting the <spanx style="verb">currency</spanx> contract. The
server broadcasts the transaction to the chain. The client
pays gas.</t>

<t>This type is intended for chains where Permit2 is not deployed
or clients that prefer direct transaction signing.</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">type</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"transaction"</spanx></c>
      <c><spanx style="verb">signature</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Hex-encoded RLP-serialized signed transaction</c>
</texttable>

<t>The <spanx style="verb">signature</spanx> field contains an EIP-1559 (type 2) transaction,
RLP-encoded and hex-prefixed with <spanx style="verb">0x</spanx>. The transaction <bcp14>MUST</bcp14>
call <spanx style="verb">transfer(address,uint256)</spanx> on the ERC-20 token specified
in the challenge.</t>

<t>The client <bcp14>MUST</bcp14> sign a fully valid transaction including gas
parameters and pay gas from their own balance.</t>

<t>Splits are NOT supported with <spanx style="verb">type="transaction"</spanx>. Servers
<bcp14>MUST</bcp14> reject <spanx style="verb">type="transaction"</spanx> credentials when the challenge
includes <spanx style="verb">splits</spanx>.</t>

<t><strong>Example:</strong></t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "kM9xPqWvT2nJrHsY4aDfEb",
    "realm": "api.example.com",
    "method": "evm",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2026-04-01T12:05:00Z"
  },
  "payload": {
    "signature": "0x02f8...signed transaction bytes...",
    "type": "transaction"
  },
  "source": "did:pkh:eip155:1329:0x1234567890abcdef1234567890abcdef12345678"
}
]]></sourcecode></figure>

</section>
<section anchor="hash-payload"><name>Hash Payload (type="hash")</name>

<t>Optional fallback for clients that broadcast transactions
themselves (e.g., custodial wallets, hardware signers). The
client broadcasts a standard ERC-20 <spanx style="verb">transfer</spanx> transaction
to the chain and presents the confirmed transaction hash.</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">type</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"hash"</spanx></c>
      <c><spanx style="verb">hash</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Transaction hash (<spanx style="verb">0x</spanx>-prefixed, 32 bytes hex)</c>
</texttable>

<t>Constraints:</t>

<t><list style="symbols">
  <t>Splits are NOT supported. Servers <bcp14>MUST</bcp14> reject <spanx style="verb">type="hash"</spanx>
credentials when the challenge includes <spanx style="verb">splits</spanx>.</t>
  <t>The client pays gas.</t>
  <t>The server cannot modify or retry the transaction.</t>
  <t>Weaker challenge binding than other types (see
<xref target="hash-binding"/>).</t>
</list></t>

<t><strong>Example:</strong></t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "kM9xPqWvT2nJrHsY4aDfEb",
    "realm": "api.example.com",
    "method": "evm",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2026-04-01T12:05:00Z"
  },
  "payload": {
    "hash": "0x1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890",
    "type": "hash"
  },
  "source": "did:pkh:eip155:4326:0x1234567890abcdef1234567890abcdef12345678"
}
]]></sourcecode></figure>

</section>
<section anchor="gas-sponsorship-model"><name>Gas Sponsorship Model</name>

<t>Gas sponsorship is structurally determined by the credential
type — no explicit field is needed:</t>

<texttable>
      <ttcol align='left'>Credential Type</ttcol>
      <ttcol align='left'>Who Pays Gas</ttcol>
      <ttcol align='left'>Mechanism</ttcol>
      <c><spanx style="verb">permit2</spanx></c>
      <c>Server</c>
      <c>Client signs off-chain; server constructs and submits tx</c>
      <c><spanx style="verb">authorization</spanx></c>
      <c>Server</c>
      <c>Client signs off-chain; server submits to token contract</c>
      <c><spanx style="verb">transaction</spanx></c>
      <c>Client</c>
      <c>Client signs a full transaction with gas parameters</c>
      <c><spanx style="verb">hash</spanx></c>
      <c>Client</c>
      <c>Client broadcasts the transaction themselves</c>
</texttable>

<t>For <spanx style="verb">type="permit2"</spanx> and <spanx style="verb">type="authorization"</spanx>, the client
signs only an off-chain message — they never submit a
transaction and therefore cannot pay gas. The server <bcp14>MUST</bcp14>
maintain sufficient native token balance to cover gas costs
for these credential types.</t>

<t>For <spanx style="verb">type="transaction"</spanx> and <spanx style="verb">type="hash"</spanx>, the client is
responsible for gas. The server broadcasts or verifies the
transaction but does not subsidize it.</t>

</section>
</section>
<section anchor="verification"><name>Verification Procedure</name>

<t>Upon receiving a request with a credential, the server <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Decode the base64url credential and parse the JSON.</t>
  <t>Verify that <spanx style="verb">payload.type</spanx> is present and is one of
<spanx style="verb">"permit2"</spanx>, <spanx style="verb">"authorization"</spanx>, <spanx style="verb">"transaction"</spanx>, or
<spanx style="verb">"hash"</spanx>.</t>
  <t>Look up the stored challenge using <spanx style="verb">credential.challenge.id</spanx>.
If no matching challenge is found, reject the request.</t>
  <t>Verify that all fields in <spanx style="verb">credential.challenge</spanx> exactly
match the stored challenge auth-params.</t>
  <t>If the challenge includes <spanx style="verb">splits</spanx> and <spanx style="verb">payload.type</spanx> is
not <spanx style="verb">"permit2"</spanx>, reject the request. (Only Permit2
supports atomic batch transfers for splits.)</t>
  <t>Proceed with type-specific verification:
  <list style="symbols">
      <t>For <spanx style="verb">type="permit2"</spanx>: see <xref target="permit2-verification"/>.</t>
      <t>For <spanx style="verb">type="authorization"</spanx>: see <xref target="authorization-verification"/>.</t>
      <t>For <spanx style="verb">type="transaction"</spanx>: see <xref target="transaction-verification"/>.</t>
      <t>For <spanx style="verb">type="hash"</spanx>: see <xref target="hash-verification"/>.</t>
    </list></t>
</list></t>

<section anchor="permit2-verification"><name>Permit2 Verification</name>

<t>Before submitting, servers <bcp14>MUST</bcp14> verify:</t>

<t><list style="numbers" type="1">
  <t>The EIP-712 signature is valid and recovers to the
<spanx style="verb">source</spanx> address</t>
  <t>The <spanx style="verb">deadline</spanx> has not passed</t>
  <t>The signer has sufficient token balance for the total
amount (primary + all splits)</t>
  <t>The signer has sufficient Permit2 allowance</t>
  <t>The <spanx style="verb">witness.challengeHash</spanx> matches the expected
value derived from the challenge <spanx style="verb">id</spanx> and <spanx style="verb">realm</spanx></t>
  <t><spanx style="verb">permitted</spanx> and <spanx style="verb">transferDetails</spanx> arrays have equal length</t>
  <t>Each <spanx style="verb">permitted[i].token</spanx> matches <spanx style="verb">currency</spanx></t>
  <t><spanx style="verb">transferDetails[0].to</spanx> matches <spanx style="verb">recipient</spanx></t>
  <t><spanx style="verb">transferDetails[0].requestedAmount</spanx> matches the primary
transfer amount (<spanx style="verb">amount</spanx> minus sum of splits, or <spanx style="verb">amount</spanx>
if no splits)</t>
  <t>For each split at index i (if present),
   <spanx style="verb">transferDetails[i+1].to</spanx> matches <spanx style="verb">splits[i].recipient</spanx>
   and <spanx style="verb">transferDetails[i+1].requestedAmount</spanx> matches
   <spanx style="verb">splits[i].amount</spanx></t>
</list></t>

<t>After verification:</t>

<t><list style="numbers" type="1">
  <t>For single transfers (<spanx style="verb">permitted</spanx> length 1): call
<spanx style="verb">Permit2.permitWitnessTransferFrom()</spanx></t>
  <t>For batch transfers (<spanx style="verb">permitted</spanx> length &gt; 1): call
<spanx style="verb">Permit2.permitBatchWitnessTransferFrom()</spanx></t>
  <t>Verify the transaction receipt indicates success</t>
  <t>Verify <spanx style="verb">Transfer</spanx> event logs match all expected transfers</t>
</list></t>

<t>Servers <bcp14>SHOULD</bcp14> simulate the transaction via <spanx style="verb">eth_call</spanx> before
submitting to detect failures without spending gas.</t>

</section>
<section anchor="authorization-verification"><name>Authorization Verification</name>

<t>Before submitting, servers <bcp14>MUST</bcp14> verify:</t>

<t><list style="numbers" type="1">
  <t>The <spanx style="verb">currency</spanx> token implements EIP-3009</t>
  <t>The EIP-712 signature is valid and recovers to the
<spanx style="verb">from</spanx> address</t>
  <t><spanx style="verb">to</spanx> matches the challenge <spanx style="verb">recipient</spanx></t>
  <t><spanx style="verb">value</spanx> matches the challenge <spanx style="verb">amount</spanx></t>
  <t><spanx style="verb">nonce</spanx> matches the expected <spanx style="verb">challengeHash</spanx> derived
from the challenge <spanx style="verb">id</spanx> and <spanx style="verb">realm</spanx></t>
  <t><spanx style="verb">validBefore</spanx> has not passed</t>
  <t>The signer has sufficient token balance</t>
  <t>Call <spanx style="verb">transferWithAuthorization(from, to, value,
validAfter, validBefore, nonce, v, r, s)</spanx> on the
<spanx style="verb">currency</spanx> token contract</t>
  <t>Verify the transaction receipt indicates success</t>
  <t>Verify the <spanx style="verb">Transfer</spanx> event log matches the expected
parameters</t>
</list></t>

<t>Servers <bcp14>SHOULD</bcp14> simulate the transaction via <spanx style="verb">eth_call</spanx> before
submitting to detect failures without spending gas.</t>

</section>
<section anchor="transaction-verification"><name>Transaction Verification</name>

<t>Before broadcasting, servers <bcp14>MUST</bcp14> verify:</t>

<t><list style="numbers" type="1">
  <t>Deserialize the RLP-encoded transaction from
<spanx style="verb">payload.signature</spanx></t>
  <t>Verify the transaction <spanx style="verb">chainId</spanx> matches
<spanx style="verb">methodDetails.chainId</spanx></t>
  <t>Verify the transaction <spanx style="verb">to</spanx> address matches the <spanx style="verb">currency</spanx>
token contract</t>
  <t>Verify the transaction calldata begins with the
<spanx style="verb">transfer(address,uint256)</spanx> function selector
(<spanx style="verb">0xa9059cbb</spanx>)</t>
  <t>Decode the calldata and verify <spanx style="verb">recipient</spanx> and <spanx style="verb">amount</spanx>
match the challenge request</t>
  <t>Broadcast the transaction via <spanx style="verb">eth_sendRawTransaction</spanx></t>
  <t>Wait for confirmation and fetch the transaction receipt</t>
  <t>Verify the receipt <spanx style="verb">status</spanx> is <spanx style="verb">0x1</spanx> (success)</t>
  <t>Verify the receipt contains a <spanx style="verb">Transfer</spanx> event log
matching the challenge parameters</t>
</list></t>

</section>
<section anchor="hash-verification"><name>Hash Verification</name>

<t>For hash credentials, servers <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Verify <spanx style="verb">payload.hash</spanx> has not been previously consumed
(see <xref target="replay-protection"/>)</t>
  <t>Fetch the transaction receipt via
<spanx style="verb">eth_getTransactionReceipt</spanx></t>
  <t>Verify <spanx style="verb">status</spanx> is <spanx style="verb">0x1</spanx> (success)</t>
  <t>Verify the receipt contains a <spanx style="verb">Transfer</spanx> event log
(topic <spanx style="verb">0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef</spanx>):
  <list style="symbols">
      <t>Log <spanx style="verb">address</spanx> matches <spanx style="verb">currency</spanx></t>
      <t><spanx style="verb">to</spanx> parameter matches <spanx style="verb">recipient</spanx></t>
      <t><spanx style="verb">value</spanx> parameter matches <spanx style="verb">amount</spanx></t>
    </list></t>
  <t>Mark the hash as consumed</t>
</list></t>

</section>
</section>
<section anchor="settlement-procedure"><name>Settlement Procedure</name>

<section anchor="permit2-settlement"><name>Permit2 Settlement</name>

<figure><artwork><![CDATA[
Client                  Server               EVM Chain
  |                        |                      |
  | (1) Authorization:     |                      |
  |     Payment <cred>     |                      |
  |  (Permit2 signature)   |                      |
  |----------------------->|                      |
  |                        | (2) Verify sig       |
  |                        | (3) Submit permit-   |
  |                        |  [Batch]Witness-     |
  |                        |  TransferFrom()      |
  |                        |--------------------->|
  |                        | (4) Receipt          |
  |                        |  (all transfers      |
  |                        |   atomic in 1 tx)    |
  |                        |<---------------------|
  | (5) 200 OK + Receipt   |                      |
  |<-----------------------|                      |
]]></artwork></figure>

<t>For single transfers, the server calls
<spanx style="verb">permitWitnessTransferFrom()</spanx>. When splits are present, the
server calls <spanx style="verb">permitBatchWitnessTransferFrom()</spanx>, executing the
primary transfer and all splits atomically in a single
transaction.</t>

</section>
<section anchor="authorization-settlement"><name>Authorization Settlement</name>

<figure><artwork><![CDATA[
Client                  Server               EVM Chain
  |                        |                      |
  | (1) Authorization:     |                      |
  |     Payment <cred>     |                      |
  |  (EIP-3009 signature)  |                      |
  |----------------------->|                      |
  |                        | (2) Verify sig       |
  |                        | (3) Submit transfer- |
  |                        |  WithAuthorization() |
  |                        |--------------------->|
  |                        | (4) Receipt          |
  |                        |<---------------------|
  | (5) 200 OK + Receipt   |                      |
  |<-----------------------|                      |
]]></artwork></figure>

</section>
<section anchor="transaction-settlement"><name>Transaction Settlement</name>

<figure><artwork><![CDATA[
Client                  Server               EVM Chain
  |                        |                      |
  | (1) Authorization:     |                      |
  |     Payment <cred>     |                      |
  |  (signed transaction)  |                      |
  |----------------------->|                      |
  |                        | (2) Broadcast tx     |
  |                        |--------------------->|
  |                        | (3) Confirmation     |
  |                        |<---------------------|
  | (4) 200 OK + Receipt   |                      |
  |<-----------------------|                      |
]]></artwork></figure>

</section>
<section anchor="hash-settlement"><name>Hash Settlement</name>

<figure><artwork><![CDATA[
Client                  Server               EVM Chain
  |                        |                      |
  | (1) Broadcast tx       |                      |
  |---------------------------------------------->|
  | (2) Confirmed          |                      |
  |<----------------------------------------------|
  |                        |                      |
  | (3) Authorization:     |                      |
  |     Payment <cred>     |                      |
  |  (tx hash)             |                      |
  |----------------------->|                      |
  |                        | (4) getTransaction-  |
  |                        |     Receipt          |
  |                        |--------------------->|
  |                        | (5) Verify           |
  |                        |<---------------------|
  | (6) 200 OK + Receipt   |                      |
  |<-----------------------|                      |
]]></artwork></figure>

</section>
<section anchor="confirmation-requirements"><name>Confirmation Requirements</name>

<t>Servers <bcp14>MUST</bcp14> wait for a successful transaction receipt
(i.e., the transaction has been included in at least one
block) before returning a <spanx style="verb">Payment-Receipt</spanx> header.</t>

<t>The time between transaction submission and receipt
availability varies by chain and current network conditions.
Servers <bcp14>SHOULD NOT</bcp14> assume a fixed confirmation latency.
Servers <bcp14>MAY</bcp14> use chain-specific RPC optimizations (e.g.,
WebSocket subscriptions, synchronous send methods) to
minimize wait time.</t>

<t>This specification does not prescribe a required confirmation
depth beyond the initial receipt. Finality semantics vary
across chains — some offer single-slot finality, while others
(including L2 rollups) settle to a separate layer for
stronger guarantees. The appropriate confirmation depth for a
given transaction is a server policy decision outside the
scope of this specification.</t>

</section>
<section anchor="receipt-generation"><name>Receipt Generation</name>

<t>Upon successful settlement, servers <bcp14>MUST</bcp14> return a
<spanx style="verb">Payment-Receipt</spanx> header per <xref target="I-D.httpauth-payment"/>.
Servers <bcp14>MUST NOT</bcp14> include a <spanx style="verb">Payment-Receipt</spanx> header on error
responses; failures are communicated via HTTP status codes
and Problem Details <xref target="RFC9457"/>.</t>

<t>The receipt payload:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">method</spanx></c>
      <c>string</c>
      <c><spanx style="verb">"evm"</spanx></c>
      <c><spanx style="verb">challengeId</spanx></c>
      <c>string</c>
      <c>The <spanx style="verb">id</spanx> from the original challenge</c>
      <c><spanx style="verb">reference</spanx></c>
      <c>string</c>
      <c>Transaction hash (<spanx style="verb">0x</spanx>-prefixed)</c>
      <c><spanx style="verb">status</spanx></c>
      <c>string</c>
      <c><spanx style="verb">"success"</spanx></c>
      <c><spanx style="verb">timestamp</spanx></c>
      <c>string</c>
      <c><xref target="RFC3339"/> settlement time</c>
      <c><spanx style="verb">chainId</spanx></c>
      <c>number</c>
      <c>Chain ID where settlement occurred</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14>. Echoed from the challenge request</c>
</texttable>

</section>
</section>
<section anchor="replay-protection"><name>Replay Protection</name>

<t>Servers <bcp14>MUST</bcp14> maintain a set of consumed credential identifiers.
The replay prevention token depends on the credential type:</t>

<t><list style="symbols">
  <t><strong><spanx style="verb">type="permit2"</spanx></strong>: The combination of signer address
and Permit2 nonce serves as the replay token. The nonce
is consumed on-chain by the Permit2 contract.</t>
  <t><strong><spanx style="verb">type="authorization"</spanx></strong>: The combination of signer
address and EIP-3009 nonce serves as the replay token.
The nonce is consumed on-chain by the token contract
itself — providing contract-level replay protection.</t>
  <t><strong><spanx style="verb">type="transaction"</spanx></strong>: The transaction hash (derived
after broadcast) serves as the replay token.</t>
  <t><strong><spanx style="verb">type="hash"</spanx></strong>: The transaction hash provided by the
client serves as the replay token.</t>
</list></t>

<t>Before accepting a credential, the server <bcp14>MUST</bcp14> check whether
its replay token has already been consumed. After successful
verification, the server <bcp14>MUST</bcp14> atomically mark it as consumed.</t>

</section>
<section anchor="error-responses"><name>Error Responses</name>

<t>When rejecting a credential, the server <bcp14>MUST</bcp14> return HTTP 402
(Payment Required) with a fresh <spanx style="verb">WWW-Authenticate: Payment</spanx>
challenge per <xref target="I-D.httpauth-payment"/>. The server <bcp14>SHOULD</bcp14>
include a response body conforming to Problem Details
<xref target="RFC9457"/> with <spanx style="verb">Content-Type: application/problem+json</spanx>.</t>

<t>Servers <bcp14>MUST</bcp14> use the standard problem types defined in
<xref target="I-D.httpauth-payment"/>: <spanx style="verb">malformed-credential</spanx>,
<spanx style="verb">invalid-challenge</spanx>, and <spanx style="verb">verification-failed</spanx>. The <spanx style="verb">detail</spanx>
field <bcp14>SHOULD</bcp14> contain a human-readable description of the
specific failure.</t>

<t>Example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "type": "https://paymentauth.org/problems/verification-failed",
  "title": "Transfer Mismatch",
  "status": 402,
  "detail": "Transfer amount does not match challenge request"
}
]]></sourcecode></figure>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="transport-security"><name>Transport Security</name>

<t>All communication <bcp14>MUST</bcp14> use TLS 1.2 or higher per
<xref target="I-D.httpauth-payment"/>. Credentials <bcp14>MUST</bcp14> only be transmitted
over HTTPS connections.</t>

</section>
<section anchor="transaction-replay"><name>Transaction Replay</name>

<t>EIP-1559 transactions include chain ID and nonce, preventing
cross-chain and same-chain replay. Permit2 signatures include
chain ID in the EIP-712 domain separator and consume nonces
on-chain. The <spanx style="verb">expires</spanx> auth-param limits the temporal window
for credential use.</t>

</section>
<section anchor="amount-verification"><name>Amount Verification</name>

<t>Clients <bcp14>MUST</bcp14> parse and verify the <spanx style="verb">request</spanx> payload before
signing:</t>

<t><list style="numbers" type="1">
  <t>Verify <spanx style="verb">amount</spanx> is reasonable for the service</t>
  <t>Verify <spanx style="verb">currency</spanx> is the expected token address</t>
  <t>Verify <spanx style="verb">recipient</spanx> is controlled by the expected party</t>
  <t>Verify <spanx style="verb">chainId</spanx> matches the expected network</t>
  <t>If <spanx style="verb">splits</spanx> are present, verify the sum of split amounts
is strictly less than <spanx style="verb">amount</spanx> and all split recipients
are expected</t>
</list></t>

</section>
<section anchor="hash-binding"><name>Hash Credential Binding</name>

<t>Hash credentials (<spanx style="verb">type="hash"</spanx>) and transaction credentials
(<spanx style="verb">type="transaction"</spanx>) provide weaker challenge binding
than Permit2 credentials. The server verifies that a payment
matching the challenge terms exists on-chain, but cannot
prove the payment was created for a specific challenge
instance.</t>

<t>By contrast, <spanx style="verb">type="permit2"</spanx> and <spanx style="verb">type="authorization"</spanx>
credentials include a <spanx style="verb">challengeHash</spanx> — in the EIP-712
witness data (Permit2) or as the on-chain nonce (EIP-3009)
— cryptographically binding the signature to the specific
challenge <spanx style="verb">id</spanx> and <spanx style="verb">realm</spanx>. This prevents signature reuse
across challenges, even if payment parameters are identical.
This is a key reason off-chain signature types are preferred.</t>

<t>Servers <bcp14>MAY</bcp14> mitigate this by:</t>

<t><list style="symbols">
  <t>Requiring unique <spanx style="verb">externalId</spanx> values per challenge</t>
  <t>Preferring <spanx style="verb">type="permit2"</spanx> or <spanx style="verb">type="transaction"</spanx> in
<spanx style="verb">credentialTypes</spanx></t>
  <t>Restricting <spanx style="verb">type="hash"</spanx> to low-value transactions</t>
</list></t>

</section>
<section anchor="permit2-specific-risks"><name>Permit2-Specific Risks</name>

<t><strong>Allowance Prerequisite</strong>: Permit2 requires a one-time
ERC-20 <spanx style="verb">approve()</spanx> to the Permit2 contract. Clients should
understand they are granting approval to a third-party
contract. The Permit2 contract is widely deployed and
audited, but clients <bcp14>SHOULD</bcp14> verify the contract address
matches the canonical deployment.</t>

<t><strong>Nonce Management</strong>: Permit2 nonces are consumed on-chain.
If a server fails to submit a Permit2 credential, the nonce
remains unconsumed and the client can reuse it. Servers <bcp14>MUST</bcp14>
handle nonce conflicts gracefully.</t>

</section>
<section anchor="fee-payer-risks"><name>Fee Payer Risks</name>

<t>With <spanx style="verb">type="permit2"</spanx>, the server pays gas on every
settlement. This creates financial risk:</t>

<t><strong>Denial of Service</strong>: Malicious clients could submit
credentials that fail on-chain, causing the server to pay
gas without receiving payment. Mitigations:</t>

<t><list style="symbols">
  <t>Simulate transactions via <spanx style="verb">eth_call</spanx> before broadcast</t>
  <t>Rate limit per client address and IP</t>
  <t>Verify client token balance before submitting</t>
  <t>Require client authentication before accepting credentials</t>
</list></t>

<t><strong>Balance Exhaustion</strong>: Servers <bcp14>MUST</bcp14> monitor their native
token balance and reject new requests when insufficient to
cover gas.</t>

<t>Gas costs vary significantly across EVM chains. On low-fee
chains, fee sponsorship is negligible (&lt;$0.001/tx). On
Ethereum L1, gas costs may be significant and servers <bcp14>SHOULD</bcp14>
factor this into pricing.</t>

</section>
<section anchor="split-payment-risks"><name>Split Payment Risks</name>

<t><strong>Recipient Transparency</strong>: Clients <bcp14>SHOULD</bcp14> present each
split recipient and amount so the user can verify the payment
distribution. Clients <bcp14>SHOULD</bcp14> highlight when the primary
recipient receives a small remainder relative to the total
<spanx style="verb">amount</spanx>.</t>

<t><strong>Batch Failure</strong>: With Permit2 batch transfers, splits are
atomic — all succeed or all revert. A failure in any split
causes the entire payment (including the primary transfer)
to revert. Servers <bcp14>SHOULD</bcp14> simulate the batch via <spanx style="verb">eth_call</spanx>
before submitting to detect failures early.</t>

</section>
<section anchor="rpc-trust"><name>RPC Trust</name>

<t>Servers rely on their RPC endpoint for transaction data. A
compromised RPC could return fabricated data. Servers <bcp14>SHOULD</bcp14>
use trusted RPC providers or run their own nodes.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="payment-method-registration"><name>Payment Method Registration</name>

<t>This document registers the following payment method in the
"HTTP Payment Methods" registry established by
<xref target="I-D.httpauth-payment"/>:</t>

<texttable>
      <ttcol align='left'>Method Identifier</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">evm</spanx></c>
      <c>EVM-compatible blockchain ERC-20 token transfer</c>
      <c>This document</c>
</texttable>

<t>Contact: Brett DiNovi (<eref target="mailto:bread@megaeth.com">bread@megaeth.com</eref>)</t>

</section>
<section anchor="payment-intent-registration"><name>Payment Intent Registration</name>

<t>This document registers the following payment intent in the
"HTTP Payment Intents" registry established by
<xref target="I-D.httpauth-payment"/>:</t>

<texttable>
      <ttcol align='left'>Intent</ttcol>
      <ttcol align='left'>Applicable Methods</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">charge</spanx></c>
      <c><spanx style="verb">evm</spanx></c>
      <c>One-time ERC-20 token transfer on any EVM chain</c>
      <c>This document</c>
</texttable>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC2119;
&RFC3339;
&RFC4648;
&RFC8174;
&RFC8259;
&RFC8785;
&RFC9457;
<reference anchor="I-D.payment-intent-charge" target="https://datatracker.ietf.org/doc/draft-payment-intent-charge/">
  <front>
    <title>'charge' Intent for HTTP Payment Authentication</title>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization></organization>
    </author>
    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization></organization>
    </author>
    <author initials="T." surname="Meagher" fullname="Tom Meagher">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="I-D.httpauth-payment" target="https://datatracker.ietf.org/doc/draft-ryan-httpauth-payment/">
  <front>
    <title>The 'Payment' HTTP Authentication Scheme</title>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization></organization>
    </author>
    <date year="2026" month="January"/>
  </front>
</reference>


    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="EIP-712" target="https://eips.ethereum.org/EIPS/eip-712">
  <front>
    <title>Typed structured data hashing and signing</title>
    <author initials="R." surname="Bloemen" fullname="Remco Bloemen">
      <organization></organization>
    </author>
    <date year="2017" month="September"/>
  </front>
</reference>
<reference anchor="EIP-1559" target="https://eips.ethereum.org/EIPS/eip-1559">
  <front>
    <title>Fee market change for ETH 1.0 chain</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="EIP-55" target="https://eips.ethereum.org/EIPS/eip-55">
  <front>
    <title>Mixed-case checksum address encoding</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="ERC-20" target="https://eips.ethereum.org/EIPS/eip-20">
  <front>
    <title>Token Standard</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="EIP-3009" target="https://eips.ethereum.org/EIPS/eip-3009">
  <front>
    <title>Transfer With Authorization</title>
    <author initials="P. J." surname="Kim" fullname="Peter Jihoon Kim">
      <organization></organization>
    </author>
    <date year="2019" month="September"/>
  </front>
</reference>
<reference anchor="PERMIT2" target="https://github.com/Uniswap/permit2">
  <front>
    <title>Permit2</title>
    <author >
      <organization>Uniswap Labs</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 1238?>

<section anchor="full-example-permit2-charge-on-megaeth"><name>Full Example: Permit2 Charge on MegaETH</name>

<t><strong>1. Challenge (402 response):</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment id="aB3cDeF4gHiJkLmN",
  realm="api.example.com",
  method="evm",
  intent="charge",
  request="eyJhbW91bnQiOiIxMDAwMDAwMDAwMDAwMDAwMDAwIiwiY3
    VycmVuY3kiOiIweEZBZkRkYmIzRkM3Njg4NDk0OTcxYTc5Y2M2NU
    RDYTNFRjgyMDc5RTciLCJtZXRob2REZXRhaWxzIjp7ImNoYWluSWQ
    iOjQzMjYsImNyZWRlbnRpYWxUeXBlcyI6WyJwZXJtaXQyIl19LCJ
    yZWNpcGllbnQiOiIweDc0MmQzNUNjNjYzNEMwNTMyOTI1YTNiODQ0
    QmM5ZTc1OTVmOGZFMDAifQ",
  expires="2026-04-01T12:05:00Z"
Cache-Control: no-store
]]></sourcecode></figure>

<t>Decoded <spanx style="verb">request</spanx>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000000000000000000",
  "currency": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "methodDetails": {
    "chainId": 4326,
    "credentialTypes": ["permit2"]
  }
}
]]></sourcecode></figure>

<t>This requests 1.0 USDm (10^18 base units) on MegaETH
(chain 4326).</t>

<t><strong>2. Credential (Permit2 authorization):</strong></t>

<figure><sourcecode type="http"><![CDATA[
GET /api/resource HTTP/1.1
Host: api.example.com
Authorization: Payment <base64url-encoded credential>
]]></sourcecode></figure>

<t>Decoded credential:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "aB3cDeF4gHiJkLmN",
    "realm": "api.example.com",
    "method": "evm",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2026-04-01T12:05:00Z"
  },
  "payload": {
    "type": "permit2",
    "permit": {
      "permitted": [
        {
          "token": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7",
          "amount": "1000000000000000000"
        }
      ],
      "nonce": "1",
      "deadline": "1743523500"
    },
    "transferDetails": [
      {
        "to": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
        "requestedAmount": "1000000000000000000"
      }
    ],
    "witness": {
      "challengeHash": "0x8a3b...f1c2"
    },
    "signature": "0x1b2c3d4e5f..."
  },
  "source": "did:pkh:eip155:4326:0x1234...5678"
}
]]></sourcecode></figure>

<t><strong>3. Response (with receipt):</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Payment-Receipt: <base64url-encoded receipt>
Content-Type: application/json

{"response": "resource data"}
]]></sourcecode></figure>

<t>Decoded receipt:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "method": "evm",
  "challengeId": "aB3cDeF4gHiJkLmN",
  "reference": "0xabc123...",
  "status": "success",
  "timestamp": "2026-04-01T12:04:58Z",
  "chainId": 4326
}
]]></sourcecode></figure>

</section>
<section anchor="full-example-transaction-charge-on-sei"><name>Full Example: Transaction Charge on Sei</name>

<t><strong>Challenge</strong> requests 1.0 USDC on Sei (chain 1329):</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000000",
  "currency": "0xe15fc38f6d8c56af07bbcbe3baf5708a2bf42392",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "description": "Premium API call",
  "methodDetails": {
    "chainId": 1329
  }
}
]]></sourcecode></figure>

<t><strong>Credential</strong> (signed EIP-1559 transaction):</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "kM9xPqWvT2nJrHsY4aDfEb",
    "realm": "api.example.com",
    "method": "evm",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2026-04-01T12:05:00Z"
  },
  "payload": {
    "type": "transaction",
    "signature": "0x02f8...signed transaction bytes..."
  },
  "source": "did:pkh:eip155:1329:0x1234567890abcdef1234567890abcdef12345678"
}
]]></sourcecode></figure>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors thank Georgios Konstantopoulos for guidance on
consolidating chain-specific specs into a unified EVM method,
Brendan Ryan and Jake Moxey at Tempo Labs for the MPP framework,
and the Sei and MegaETH communities for their contributions to
earlier drafts.</t>

</section>


  </back>

<!-- ##markdown-source:
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
1/D14JiKQ0FnetHaKIo5QRMjLd+9i4+UbS+2EIzCQW6ukaQWhVPgvtz5BXuc
kypljWzDUou+fmy7hKRoIphLN7uaskYsfQnK116Svsaqc8asFSiaKvRdzmW0
Gns7a+TeISjzoCEE8LnJi04Bppin4q424EwTVBTtDZTwaWxKZJ3KLKejFaIV
2njP2EDFrRLH8G5xc/OkipSnQNK/qGkaqqfoTUFmmSpeBHYQa6h9Y/xSzCqe
8wgB0rhRp7lVutESnIiFs1+7hho2pjCDr8qY56X7xB5UXF+xmCuvw9TwUwwt
XaVAboWSkaKsYocoEBk+oOPhNIn4TkhPZaYLANR+gC2XUgAWNuvHF5gbitNn
FPZTcf/z8/6mAnKL4BLkZVGyUyoqTmdmIdjGJsZwAbmjTvbP9qtscoPycv/7
BV+NbS/4xos6ksFswmiFv/G9zGiQobrhcFsJmYneGqyR78ofPlsr7t5GL3x/
HGU3fF/BUg8ORi1kcSfWS10OXcC6JWxQ1TJgMZZRjmvot9QHFG/Nc7pmObeU
e82JbBree+VDiFuD5HDYe+oATjNXR9EZHA6wsj66hf400dch7AXbWHxV8+B/
Qh6yvwv+3PuiGv48/KfCXxb3Xu2z6w6BIyf6uJP4hCPh/h14KuZ0Xprb4KoP
I2FuUlzoXnE6MLjCVjtIEc+wsYJtvW742yHfko1+KDir46vnyBJbDacz5/pm
s239oTXT7gQhFyDIn7YaLXSpqbLHNljqogXD58vqvoBkaX1Z2QGFqe1L2/yE
T/9Lt++JyPIvseXJTf/1bqsffxu9jE7uT4/276r+dxLdRW86VIb03Xww+W72
pnOLL9zp4+8Pvr+9uH0zOfn54va0c/bT9ebZ0W3z5dXg/s3VoPumfdo+e0Uv
Xhy9uTp7dvHT9fz0aNC9uBpELw6/yb//y0XSb18cw39vwtf3P5/8NN0+mZwl
b16PZ5evv6U3o5c/ffvz6U9vMvhh/v3ri3E/vpi+eX3/Sv/lYDyYn2y9nn9z
9/1fvsnDv3w7Pxm3dmFgehEePpsOvh6PZX93+mjQPJ18+/PZq7Ofzn568/PZ
8end2dXp/OXVSQtWF708+rZJb347Oe1+fzVovbz6bvLy6++fARCi0bcEPHGZ
fbmkLcwhCHpdP2TP0R4w2jrV7rMb9EguGraOr7J3d3Vj+Yobdz+qf/zfd+Pu
gxfpYt+Zx1ykGyy9pNb2KV9vNf+zteM0Na65lLfOdIzzcYuhtuvkLWoLPB+L
T5FfH1+pp0A+T+EoqdBdGRoNnoPyiMEIj7SCUvqXzexavGi22PtX/qkXP5SP
/V+2Keg/1W0N8ulf776EwNnW7/fGkydPOg0bF5XrnCRVZYk05fS9oJRRs1dF
lDLQV8HykCORY/BuzYhwXL3lDqhwr33w6VnGLBPzIu0VAD5ZTtVrNsOFIRv2
BwAlQ41FVM4mrkgwT9JWKoh0c6+7871dgMOki6icr+u4ca5C37nUER6OVXSe
PFlg2IfynBLOjK0Saw/Ktt/XDfLnYAxHs4naPz+hepyPuD3eFWgAKMvmAVIm
yb4qXLgAoX/RhnhV7TaruckjWng+zGI+tU/nZ2p/gL3Hx3p4bbJzKZORJD/H
2m7V1zpJr6MkU39OKOqTJ1Ow0RPud3Q9i4bkPEvofgu6ujLMpWOUm4iKH8Td
FKKCQ7cToIXCZ7URgJUYw1DqYh5yiPib8BZsq+Qe3em5usLArHoR9jMbAD09
P1cjDJtgoHEjMA5jpEr8LLqTiannGDYbWQ8gecfFt4Se6gA9G2hPD9NwhPfR
/T+yZIxuYLYAAA==

-->

</rfc>

