<?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.7.38 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-condrey-cfrg-posme-01" category="info" submissionType="IRTF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="PoSME">Proof of Sequential Memory Execution (PoSME)</title>
    <seriesInfo name="Internet-Draft" value="draft-condrey-cfrg-posme-01"/>
    <author initials="D." surname="Condrey" fullname="David Condrey">
      <organization abbrev="WritersLogic">WritersLogic Inc</organization>
      <address>
        <postal>
          <city>San Diego</city>
          <region>California</region>
          <country>United States</country>
        </postal>
        <email>david@writerslogic.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="06"/>
    <area>Security</area>
    <workgroup>Crypto Forum Research Group</workgroup>
    <keyword>memory-hard</keyword>
    <keyword>sequential execution</keyword>
    <keyword>causal hash</keyword>
    <keyword>latency-bound</keyword>
    <keyword>ASIC resistance</keyword>
    <abstract>
      <?line 176?>

<t>This document defines Proof of Sequential Memory Execution (PoSME),
a cryptographic primitive combining mutable arena state, data-
dependent pointer-chase addressing, and per-block causal hash
binding in a single step function. A Prover executes K sequential
steps over a mutable N-block arena. Each step reads d blocks at
addresses determined by the previous read's result (pointer
chasing), writes one block with spatial neighborhood entanglement
(incorporating <tt>A\[w-1\]</tt> and <tt>A\[w+1\]</tt>), and advances a transcript chain.
The construction provides three properties: (1) unconditional
sequential time enforcement anchored in physics-bounded latency
floors, (2) forgery prevention via causal hashes (reduces to
collision resistance of H), and (3) TMTO resistance scaling
geometrically with write density rho.
Verification requires O(Q * d^R * log N) hash evaluations with no
arena allocation. No trusted setup is required.</t>
    </abstract>
  </front>
  <middle>
    <?line 195?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Existing primitives for proving sequential computation have
complementary weaknesses. Verifiable Delay Functions (VDFs)
<xref target="Boneh2018"/> <xref target="Wesolowski2019"/> prove sequential time but offer no memory-hardness.
Proofs of Sequential Work (PoSW) <xref target="CohenPietrzak2018"/> prove
traversal of a depth-robust graph but operate over static memory.
Memory-hard functions (MHFs) such as Argon2id <xref target="RFC9106"/> and scrypt
resist ASIC acceleration by requiring significant memory resources.
While scrypt was designed to be bounded by the latency of its core
functions, many MHFs are practically constrained by memory bandwidth
when comparing commodity hardware to specialized ASICs.</t>
      <t>PoSME takes a different approach. A persistent mutable arena IS
the computation state. Each step reads via data-dependent pointer
chasing (sequential because each address depends on the previous
read's result) and modifies the arena in-place. A per-block
causal hash chain binds each block's value to the cursor of the
step that wrote it, preventing forgery: the adversary cannot
produce a valid causal hash without knowing the writer's cursor,
which depends on d other blocks' causal hashes, recursively.
The data and causal hash are symbiotically bound: new data
depends on the old causal hash, and the new causal hash depends
on the cursor.</t>
      <t>The primary contributions are (a) a physics-bounded latency floor
with cross-generation durability and (b) linear TMTO scaling with
write density rho. Unlike bandwidth-bound constructions where the
ASIC advantage scales with technology improvements, PoSME is
bottlenecked by random memory access latency. For arena sizes
exceeding on-die SRAM, the ASIC advantage is bounded by the
latency ratio of specialized memory (such as HBM3) to commodity
DDR5. While an adversary with massive on-die SRAM (e.g., wafer-scale
integration) achieves a significant latency advantage, the bound
remains durable across technology generations as it is constrained
by signal propagation and DRAM cell sensing time.</t>
      <section anchor="related-work">
        <name>Related Work</name>
        <section anchor="proofs-of-sequential-work">
          <name>Proofs of Sequential Work</name>
          <t>PoSW <xref target="CohenPietrzak2018"/> proves traversal of a depth-robust
graph via Fiat-Shamir-sampled Merkle proofs. PoSME differs: the
graph is a mutable arena (not a static DAG), the access pattern
is data-dependent (not fixed), and each node carries a causal hash
binding its value to its full write history.</t>
        </section>
        <section anchor="memory-hard-functions">
          <name>Memory-Hard Functions</name>
          <t>Functions like Argon2id and scrypt resist ASIC acceleration by
imposing high memory requirements. Argon2id <xref target="RFC9106"/> resists TMTO
via memory-hardness <xref target="Boneh2016"/>, with a single-pass TMTO penalty
of approximately 2x. PoSME uses a custom logarithmic skip-link
initialization (<xref target="init"/>) to ensure Omega(sqrt(N)) space-hardness
from the first step. The ongoing computation uses pointer-chasing
with in-place writes, creating a latency-bound bottleneck.
PoSME's TMTO penalty is approximately 2+2*rho for zero-storage
adversaries, where rho = K/N is the write density.</t>
        </section>
        <section anchor="proofs-of-space-time">
          <name>Proofs of Space-Time</name>
          <t>Proofs of Space-Time (PoST) <xref target="Chia2024"/> <xref target="Spacemesh2023"/> enforce both
sequential time and persistent storage by requiring a Prover to
repeatedly prove possession of stored data over a sequence of
time intervals. PoST operates over a static graph: the stored
data does not change between proofs, and the graph structure is
fixed before execution. PoSME differs in that the arena is
mutable (each step modifies it), the access pattern is data-
dependent (addresses are determined by arena contents, not
pre-computed), and each block carries a causal hash binding its
current value to its write history. These differences make PoSME
a different construction with different TMTO characteristics,
not a strict improvement over PoST.</t>
        </section>
        <section anchor="cumulative-memory-complexity">
          <name>Cumulative Memory Complexity</name>
          <t>Alwen, Blocki, and Pietrzak <xref target="AlwenBlockPietrzak2017"/> formalized
cumulative memory complexity for static graph pebbling games.
PoSME's causal dependency DAG is dynamic (edges are created during
execution), requiring a new pebbling framework. The dynamic
pebbling analysis is provided in <xref target="tmto"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt>H:</dt>
        <dd>
          <t>BLAKE3 or SHA-3, producing 32-byte output. BLAKE3 is MANDATED
to ensure post-quantum resistance in sequential chains.</t>
        </dd>
        <dt>XOF(input, index):</dt>
        <dd>
          <t>H evaluated at (input || I2OSP(index, 4)), producing 4 bytes.</t>
        </dd>
        <dt>I2OSP(x, len):</dt>
        <dd>
          <t>Integer-to-Octet-String Primitive per <xref target="RFC8017"/>.</t>
        </dd>
        <dt>MerkleRoot(A):</dt>
        <dd>
          <t>Merkle tree root over arena blocks using domain-separated
hashing per <xref target="RFC6962"/>.</t>
        </dd>
        <dt>MerkleUpdate(root, index, new_value):</dt>
        <dd>
          <t>Incremental Merkle root update at the given index.</t>
        </dd>
        <dt>Prover:</dt>
        <dd>
          <t>The entity executing the PoSME computation and generating proofs.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>The entity checking PoSME proofs.</t>
        </dd>
        <dt>Arena:</dt>
        <dd>
          <t>A mutable array of N blocks, each containing a 32-byte data
field and a 32-byte causal hash.</t>
        </dd>
        <dt>Causal hash:</dt>
        <dd>
          <t>A per-block running hash chain binding each block's value to
the cursor of the step that wrote it.</t>
        </dd>
      </dl>
    </section>
    <section anchor="construction">
      <name>Construction</name>
      <section anchor="block-format">
        <name>Arena Block Format</name>
        <t>Each arena block is a pair:</t>
        <sourcecode type="pseudocode"><![CDATA[
block = {
    data:   bytes[32],
    causal: bytes[32]
}
]]></sourcecode>
        <t>The <tt>data</tt> field stores the block's computational value. The
<tt>causal</tt> field stores the causal hash chain: a running digest
binding the block's current value to the cursor of the step
that last wrote it.</t>
      </section>
      <section anchor="init">
        <name>Arena Initialization</name>
        <t>The arena is initialized deterministically from a public seed s:</t>
        <sourcecode type="pseudocode"><![CDATA[
for i in 0..N-1:
    if i == 0:
        A[0].data = H("PoSME-init-v1" || s || I2OSP(0, 4))
    else:
        A[i].data = H("PoSME-init-v1" || s || I2OSP(i, 4)
                      || A[i-1].data
                      || A[floor(i/2)].data)
    A[i].causal = H("PoSME-causal-v1" || s || I2OSP(i, 4))

root_0 = MerkleRoot(A)
T_0 = H("PoSME-transcript-v1" || s || root_0)
]]></sourcecode>
        <t>The initialization references both the preceding block (A[i-1])
and a logarithmic skip-link (A[floor(i/2)]). This creates a
dependency DAG of depth log(N) and width N, requiring
Omega(sqrt(N)) space to evaluate (the DAG cannot be streamed
in constant space because each block depends on a block
approximately N/2 positions behind it). A custom initialization
is used rather than Argon2id because Argon2id's fixed internal
graph does not provide this skip-link structure; the logarithmic
back-references are necessary for the space-hardness property.</t>
        <t>The Verifier can independently compute root_0 and T_0 from the
seed, providing a trusted anchor for all subsequent verification.</t>
      </section>
      <section anchor="step-function">
        <name>Step Function</name>
        <t>The step function is the core of PoSME. It enforces sequentiality via
pointer-chasing, hardware parity via forced intra-step bank collisions,
and geometric TMTO resistance via spatial neighborhood entanglement.</t>
        <t>At each step t in {1, ..., K}:</t>
        <sourcecode type="pseudocode"><![CDATA[
STEP(t):
    cursor = T_{t-1}
    
    // 1. Determine Target Bank
    // Use the first 4 bytes of XOF to select 1 of B_banks
    bank_id = OS2IP(XOF(cursor, 0)) mod params.B_banks
    
    // Start high-resolution cycle counter
    t_start = RDTSC() 

    // 2. Intra-Step Bank Collision Reads
    addrs = []
    for j in 0..d-1:
        // Generate pseudo-random address
        raw_a = OS2IP(XOF(cursor, j + 1)) mod params.N
        
        // Mutate raw_a to ensure it maps to bank_id
        a = force_bank_mapping(raw_a, bank_id, params)
        addrs.append(a)
        
        val = A[a]
        cursor = H(cursor || val.data || val.causal)

    // 3. Write with Spatial Neighborhood Entanglement
    raw_w = OS2IP(XOF(cursor, d + 1)) mod params.N
    w = force_bank_mapping(raw_w, bank_id, params)
    old = A[w]
    
    // Incorporate causal hashes of logical neighbors
    n_prev = A[(w - 1) mod params.N].causal
    n_next = A[(w + 1) mod params.N].causal
    
    new_data = H(old.data || cursor || old.causal 
                  || n_prev || n_next)
    new_causal = H(old.causal || cursor || I2OSP(t, 4) 
                    || n_prev || n_next)
    A[w] = {data: new_data, causal: new_causal}

    // Stop cycle counter to capture physical latency jitter
    t_end = RDTSC()
    delta_t = t_end - t_start

    // 4. Update Commitments
    root_t = MerkleUpdate(root_{t-1}, w, A[w])
    T_t = H(T_{t-1} || I2OSP(t, 4) || cursor || root_t || I2OSP(delta_t, 8))

    // 5. Log step for Prover transcript
    log[t] = {addrs, w, old, A[w], cursor, root_t, delta_t}
]]></sourcecode>
        <section anchor="bank-collision">
          <name>Intra-Step Bank Collisions</name>
          <t>Standard memory controllers achieve high bandwidth by interleaving 
sequential reads across multiple hardware banks, keeping multiple 
row-buffers open. PoSME explicitly defeats this optimization to 
enforce a strict latency floor.</t>
          <t>The <tt>force_bank_mapping(raw_a, bank_id, params)</tt> function modifies the 
specific bits of the logical address <tt>raw_a</tt> that the memory controller 
uses for bank selection, replacing them with <tt>bank_id</tt>.</t>
          <t>By forcing all $d$ reads and the final write to target the <em>same</em> 
physical bank but <em>different</em> pseudo-random rows, the memory controller 
suffers a "Bank Conflict" on every access. This forces a physical Row 
Precharge ($t_{RP}$) and RAS-to-CAS Delay ($t_{RCD}$) penalty for every 
hop, anchoring the execution time to the thermodynamic limits of the 
DRAM capacitor rather than the logic speed of the processor.</t>
        </section>
        <section anchor="spatial-binding">
          <name>Spatial Neighborhood Entanglement</name>
          <t>The write step cryptographically binds the updated block to the current 
state of its logical neighbors, <tt>A[w-1]</tt> and <tt>A[w+1]</tt>.</t>
          <t>This transforms the Time-Memory Trade-Off (TMTO) penalty from a linear 
chain into a geometric "Trophic Cascade." If an adversary attempts to 
save space by discarding a subset of the arena, recomputing a single 
missing block $w$ requires knowing the causal hashes of its neighbors 
at the exact moment of the write. If those neighbors were also 
discarded, the recomputation recursively branches. This bounds the 
adversary to strict storage compliance, as storage reduction triggers 
exponentially scaling recomputation costs.</t>
        </section>
        <section anchor="timing-entropy">
          <name>Timing Entropy Attestation</name>
          <t>Because commodity DRAM requires periodic electrical refresh cycles 
($t_{REFW}$), a genuine physical execution will exhibit unavoidable, 
stochastic latency spikes.</t>
          <t>The Prover measures the execution time of the read/write loop using a 
monotonic, high-resolution hardware counter (e.g., the <tt>RDTSC</tt> 
instruction on x86 architectures). This inter-arrival time, <tt>delta_t</tt>, 
is folded directly into the transcript $T_t$. A Verifier auditing the 
transcript can perform statistical variance testing on the distribution 
of <tt>delta_t</tt> values. An ASIC attempting to simulate execution entirely 
within ultra-fast, deterministic SRAM will lack this specific jitter 
profile, allowing the Verifier to reject perfectly clean transcripts as 
physically impossible.</t>
        </section>
        <section anchor="transcript-chain">
          <name>Transcript Chain</name>
          <t>The transcript chain T_t binds all steps causally:</t>
          <sourcecode type="pseudocode"><![CDATA[
T_t = H(T_{t-1} || I2OSP(t, 4) || cursor || root_t)
]]></sourcecode>
          <t>T_t incorporates root_t (the Merkle root after the write) and
cursor (which depends on the arena state at step t). Computing
T_t requires computing all prior steps.</t>
        </section>
      </section>
      <section anchor="root-chain">
        <name>Root Chain Commitment</name>
        <t>The Prover commits to the sequence of ALL K arena roots:</t>
        <sourcecode type="pseudocode"><![CDATA[
R = [root_0, root_1, ..., root_K]
C_roots = MerkleRoot(R)
]]></sourcecode>
        <t>This root chain commitment binds the Prover to a specific
sequence of arena states BEFORE Fiat-Shamir challenges are
derived. The challenges depend on (T_K, C_roots), and both
must be fixed before the Prover knows which steps will be
challenged.</t>
      </section>
      <section anchor="proof-gen">
        <name>Proof Generation</name>
        <sourcecode type="pseudocode"><![CDATA[
PROVE(K, Q, R_depth):
    C_roots = MerkleRoot([root_0, ..., root_K])
    challenges = FS(T_K, C_roots, Q)
    proof = {params, T_K, C_roots, step_proofs: []}

    for c in challenges:
        sp = make_step_proof(c, R_depth)
        proof.step_proofs.append(sp)
    return proof

make_step_proof(step, depth):
    sp = {
        step_id: step,
        cursor_in: T_{step-1},
        cursor_out: log[step].cursor,
        root_before: root_{step-1},
        root_after: log[step].root_t,
        root_chain_paths: [
            MerklePath(C_roots, step-1),
            MerklePath(C_roots, step)
        ],
        reads: [],
        write: {addr, old, new,
                merkle_path: MerklePath(root_{step-1}, w)},
        writers: []
    }
    for j in 0..d-1:
        sp.reads.append({
            addr, block, merkle_path:
                MerklePath(root_{step-1}, addr)})
        if depth > 0:
            ws = last_writer(addr, step)
            if ws == 0:
                sp.writers.append({type: "init",
                    init_path: MerklePath(root_0, addr)})
            else:
                sp.writers.append({type: "step",
                    proof: make_step_proof(ws, depth-1)})
        else:
            sp.writers.append({type: "leaf",
                writer_step: last_writer(addr, step),
                merkle_path: MerklePath(
                    root_{ws}, addr)})
    return sp
]]></sourcecode>
      </section>
    </section>
    <section anchor="verification">
      <name>Verification</name>
      <section anchor="verify-procedure">
        <name>Verification Procedure</name>
        <t>The Verifier receives (seed, params, T_K, C_roots, proof):</t>
        <sourcecode type="pseudocode"><![CDATA[
VERIFY(seed, params, T_K, C_roots, proof):
    // 1. Trusted anchor
    root_0 = compute_init_root(seed, params.N)
    T_0 = H("PoSME-transcript-v1" || seed || root_0)

    // 2. Verify root_0 in root chain
    assert MerkleVerify(C_roots, 0, root_0,
                        proof.root_0_path)

    // 3. Recompute challenges
    challenges = FS(T_K, C_roots, params.Q)

    // 4. Verify each challenged step
    for sp in proof.step_proofs:
        verify_step(sp, C_roots, root_0, params)

verify_step(sp, C_roots, root_0, params):
    // A. Verify roots are in the root chain
    assert MerkleVerify(C_roots, sp.step_id - 1,
                        sp.root_before,
                        sp.root_chain_paths[0])
    assert MerkleVerify(C_roots, sp.step_id,
                        sp.root_after,
                        sp.root_chain_paths[1])

    // B. Verify read Merkle proofs
    for j in 0..d-1:
        assert MerkleVerify(sp.root_before,
            sp.reads[j].addr, sp.reads[j].block,
            sp.reads[j].merkle_path)

    // C. Replay pointer-chase
    cursor = sp.cursor_in
    for j in 0..d-1:
        a = OS2IP(XOF(cursor, j)) mod N
        assert a == sp.reads[j].addr
        cursor = H(cursor || sp.reads[j].block.data
                           || sp.reads[j].block.causal)

    // D. Verify symbiotic write
    w = OS2IP(XOF(cursor, d)) mod N
    assert w == sp.write.addr
    assert MerkleVerify(sp.root_before, w,
                        sp.write.old, sp.write.merkle_path)
    assert sp.write.new.data == H(sp.write.old.data
                                   || cursor
                                   || sp.write.old.causal)
    assert sp.write.new.causal == H(sp.write.old.causal
                                     || cursor
                                     || I2OSP(sp.step_id, 4))

    // E. Verify Merkle root update
    assert sp.root_after == MerkleUpdate(
        sp.root_before, w, sp.write.new)

    // F. Compute and store transcript value for cross-check
    T_c = H(sp.cursor_in || I2OSP(sp.step_id, 4)
            || cursor || sp.root_after)
    // If another challenged step c' has cursor_in == T_c,
    // verify they match. If sp.step_id == K, verify
    // T_c == T_K (the public final transcript).
    stored_transcripts[sp.step_id] = T_c

    // G. Recursive causal provenance
    for j in 0..d-1:
        verify_writer(sp.writers[j], sp.reads[j],
                      C_roots, root_0, params)
]]></sourcecode>
      </section>
      <section anchor="verify-cost">
        <name>Verification Cost</name>
        <t>For Q challenges with recursion depth R:</t>
        <ul spacing="normal">
          <li>
            <t>Root chain proofs: O(Q * log K) per challenged step</t>
          </li>
          <li>
            <t>Arena Merkle proofs: O(Q * d^R * log N)</t>
          </li>
          <li>
            <t>Cursor replays: O(Q * d^R * d)</t>
          </li>
          <li>
            <t>No arena memory allocation</t>
          </li>
        </ul>
        <t>For Q=128, d=8, R=3, N=2^24, K=4*N=2^26:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Operation</th>
              <th align="left">Count</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Root chain verifications</td>
              <td align="left">128 * 2 * 26 = ~6.7K hashes</td>
            </tr>
            <tr>
              <td align="left">Arena Merkle verifications</td>
              <td align="left">128 * 512 * 24 = ~1.6M hashes</td>
            </tr>
            <tr>
              <td align="left">Cursor replays</td>
              <td align="left">128 * 512 * 8 = ~524K hashes</td>
            </tr>
            <tr>
              <td align="left">Total</td>
              <td align="left">~2.1M hashes, ~6ms</td>
            </tr>
          </tbody>
        </table>
        <t>The ~6ms estimate assumes a modern desktop CPU (~350M BLAKE3
hashes/second). On constrained platforms (mobile: 60-300ms;
WASM: 120ms-600ms), verification is slower but still practical.
No memory allocation beyond the proof data is required.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Analysis</name>
      <section anchor="threat-model">
        <name>Threat Model</name>
        <t>The adversary is a probabilistic polynomial-time algorithm with
random oracle access to H. The adversary receives the public
seed s and parameters (N, K, d, Q, R). Its goal is to produce
(T_K, C_roots, proof) that passes VERIFY (<xref target="verify-procedure"/>)
while either:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Forgery:</strong> producing T_K' != T_K (the honestly computed
transcript), or</t>
          </li>
          <li>
            <t><strong>Space reduction:</strong> using less than N * B bits of arena
storage at some point during computation.</t>
          </li>
        </ol>
        <t>The adversary may use custom hardware with faster memory (lower
latency) than the honest Prover. The ASIC resistance analysis
(<xref target="asic-resistance"/>) bounds the resulting speedup.</t>
      </section>
      <section anchor="soundness">
        <name>Forgery Prevention</name>
        <t>The causal hash mechanism prevents block value fabrication.
To forge a block's causal hash, the adversary needs the cursor
of the step that wrote it. That cursor depends on d blocks read
at the writer step, each with their own causal hashes requiring
their own writers' cursors, recursively. Symbiotic binding
strengthens this: forging data requires old_causal, and forging
old_causal requires the prior writer's cursor. Neither field
can be independently fabricated.</t>
        <t>The root chain commitment (<xref target="root-chain"/>) binds the Prover to
ALL K arena roots before challenges are derived. C_roots is an
input to the Fiat-Shamir challenge derivation, so the Prover
cannot fabricate roots after seeing challenges.</t>
        <t><strong>Theorem 1 (Soundness).</strong> Any adversary producing
(T_K', C_roots', proof') with T_K' != T_K that passes VERIFY
has advantage at most K * epsilon_cr, where epsilon_cr is the
collision-finding advantage against H.</t>
        <t><strong>Proof sketch.</strong> If verification passes with T_K' != T_K, there
exists a step c where T_{c-1}' = T_{c-1} but T_c' != T_c (the
first divergence). At step c, the Verifier checks that T_c =
H(T_{c-1} || c || cursor || root_c). If the adversary's
inputs differ from the honest inputs but produce the same T_c,
this is a collision in H. If the adversary's inputs differ and
produce a different T_c, then T_c' != T_c, contradicting
acceptance. The adversary has K steps at which to attempt this,
giving the union bound K * epsilon_cr.</t>
        <t>A full derivation is provided in the companion
analysis (to appear as IACR ePrint).</t>
      </section>
      <section anchor="recomp-cost">
        <name>Recomputation Cost</name>
        <t>Separately from forgery prevention, the combination of causal
hashes and spatial neighborhood entanglement imposes a geometric
increase on the cost of recomputing missing blocks.</t>
        <t>Without spatial entanglement, an adversary recomputing a missing
block traverses its write chain at cost O(rho) hashes. With
<strong>Spatial Neighborhood Entanglement</strong> (<xref target="spatial-binding"/>),
every write to block $w$ depends on the causal hashes of its
physical neighbors $A[w-1]$ and $A[w+1]$. If those neighbors are
also missing from storage, the Prover must recursively recompute
their states, triggering a <strong>"Trophic Cascade"</strong> of recomputation.</t>
        <t>This shifts the TMTO penalty from <strong>linear</strong> to <strong>geometric</strong>.
For an adversary with zero storage ($\alpha=0$), recomputing a
single challenged block requires recovering the entire spatial
web of dependencies, making storage reduction exponentially
prohibitive relative to the write density rho.</t>
      </section>
      <section anchor="tmto">
        <name>TMTO Lower Bound</name>
        <t>An adversary storing alpha * N blocks faces a two-layer penalty:</t>
        <section anchor="sequential-floor">
          <name>Sequential Floor</name>
          <t>The transcript chain T_0 through T_K must be computed
sequentially to produce T_K before Fiat-Shamir challenges are
derived. This is an Omega(K) lower bound regardless of storage.</t>
        </section>
        <section anchor="write-density">
          <name>Write Density and Trophic Cascade</name>
          <t>Each step writes 1 block at an address determined by the bank-
collision derivation (<xref target="bank-collision"/>). After K steps, the 
arena is densely populated with causally-linked blocks.</t>
          <t>Because each write is bound to its spatial neighbors, missing
blocks cannot be recomputed in isolation. The recomputation
cost per miss ($C_{miss}$) scales with the density of the 
spatial dependency graph.</t>
          <table>
            <thead>
              <tr>
                <th align="left">rho = K/N</th>
                <th align="left">alpha=0 Linear (Old)</th>
                <th align="left">alpha=0 Geometric (New)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0.25</td>
                <td align="left">2.5x</td>
                <td align="left">~5x</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">4x</td>
                <td align="left">~16x</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">10x</td>
                <td align="left">~256x</td>
              </tr>
              <tr>
                <td align="left">16</td>
                <td align="left">34x</td>
                <td align="left">&gt;65,000x</td>
              </tr>
            </tbody>
          </table>
          <t>K <bcp14>MUST</bcp14> be at least N (rho &gt;= 1) for meaningful TMTO resistance.
Values of rho &gt;= 4 are <bcp14>RECOMMENDED</bcp14> to achieve the "geometric
cliff" where recomputation becomes more expensive than storage.</t>
        </section>
        <section anchor="per-step-recomputation-cost">
          <name>Per-Step Recomputation Cost</name>
          <t><strong>Conjecture 1: Address Uniformity.</strong> In the random oracle model,
hash-derived addresses used for pointer-chase reads are
distributed uniformly over the arena size N. Consequently, for any
adversary subset of stored blocks of size alpha * N, a random read
misses the stored set with probability 1-alpha.</t>
          <t><strong>Theorem 2 (Geometric TMTO).</strong> In the random oracle model, and 
assuming Conjecture 1 holds, any adversary storing $\alpha \cdot N$ 
arena blocks performs expected computation per step that scales as:</t>
          <sourcecode type="artwork"><![CDATA[
C_step >= d * (1 + (1-alpha) * (2*rho + 1)^G)
]]></sourcecode>
          <t>where $G$ is the <strong>Spatial Entanglement Factor</strong> (determined by the 
recursive branching of neighborhood dependencies). For $\alpha \to 0$ 
and $\rho \ge 1$, the recomputation cost $C_{miss}$ for a single 
missing block is lower-bounded by the volume of the <strong>Spatial 
Dependency Cone</strong> in the arena space-time.</t>
          <t><strong>Proof sketch.</strong> 
1. <strong>Linear write chain:</strong> Recomputing block $w$ at step $t$ 
requires its state at $t_{prev}$ (its last write). This is a 
linear chain of length $\rho$.
2. <strong>Spatial branching:</strong> Under <strong>Spatial Neighborhood 
Entanglement</strong> (<xref target="spatial-binding"/>), each write to $w$ also 
depends on $A[w-1]$ and $A[w+1]$ at time $t$. 
3. <strong>The Trophic Cascade:</strong> If an adversary stores zero blocks 
($\alpha=0$), a miss at $(w, t)$ requires recomputing three 
predecessors: $(w, t_{prev})$, $(w-1, t_{prev_w-1})$, and 
$(w+1, t_{prev_w+1})$. 
4. <strong>Dependency Cone:</strong> This creates a branching process that 
forms a 3D "cone" of dependencies in the (index, time) plane. The 
number of nodes in the cone (and thus the recomputation cost) 
grows geometrically with the depth of the recomputation. 
5. <strong>Security Bound:</strong> For $\rho \ge 4$, the expected volume of 
this cone exceeds the total computation cost of the honest 
prover. This forces the adversary to either store the blocks 
legitimately or pay a prohibitive "Trophic Penalty" that scales 
as $O(\rho^G)$, where $G \approx 2$ for the 1D neighborhood model.</t>
          <t>This bound assumes optimal cursor storage. A full derivation of the 
cone volume and branching probability is provided in the companion 
analysis (to appear as IACR ePrint).</t>
          <table>
            <thead>
              <tr>
                <th align="left">rho = K/N</th>
                <th align="left">alpha=0 Linear (Old)</th>
                <th align="left">alpha=0 Geometric (New)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1</td>
                <td align="left">4x</td>
                <td align="left">~16x</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">10x</td>
                <td align="left">~256x</td>
              </tr>
              <tr>
                <td align="left">16</td>
                <td align="left">34x</td>
                <td align="left">&gt;65,000x</td>
              </tr>
            </tbody>
          </table>
          <t>The penalty scales exponentially with $\rho$ for small $\alpha$, 
providing a "geometric cliff" that secures the protocol against 
massive space-reduction attacks.</t>
        </section>
        <section anchor="pebbling-game">
          <name>Dynamic Pebbling Game</name>
          <t>PoSME's causal DAG is dynamic: edges are created during
execution based on data-dependent addressing. In the random
oracle model, each step creates d edges to uniformly random
targets. Under the conjecture that hash-derived addressing yields
a uniform distribution over the arena, the pebbling game is:</t>
          <ol spacing="normal" type="1"><li>
              <t>N block nodes (arena) and K step nodes.</t>
            </li>
            <li>
              <t>At step t, the game reveals d random read addresses.</t>
            </li>
            <li>
              <t>To execute step t, the adversary must have pebbles on all
d read addresses (stored or recomputed at cost O(rho)).</t>
            </li>
            <li>
              <t>The adversary maintains auxiliary state (cursors, write
index) of at most K * 32 bytes.</t>
            </li>
          </ol>
          <t>Any adversary storing alpha * N blocks and all K cursors
performs expected computation:</t>
          <sourcecode type="artwork"><![CDATA[
T_adv >= K * d * (1 + (1-alpha) * (2*rho + 1))
]]></sourcecode>
          <t>The honest cost is K * d. The TMTO ratio is
1 + (1-alpha) * (2*rho + 1). For alpha=0, rho=4:
the adversary pays 10x honest cost. The penalty is LINEAR
in rho, not exponential.</t>
        </section>
      </section>
      <section anchor="asic-resistance">
        <name>ASIC Resistance</name>
        <t>PoSME is anchored in a physics-bounded latency floor. While
computation throughput improves exponentially with transistor
scaling, random-access memory latency is constrained by the
fundamental thermodynamics of charge-sensing in capacitors.</t>
        <t>The per-hop bottleneck is determined by the mandatory bank
conflict (<xref target="bank-collision"/>), which forces the DRAM controller
to execute a full Row Precharge ($t_{RP}$) and RAS-to-CAS Delay
($t_{RCD}$) for every sequential read. These timings are
physical constants of DRAM cell operation that do not scale
with logic shrinks. Even an adversary with wafer-scale
on-die integration (<xref target="wafer-scale"/>) faces a latency floor
constrained by signal propagation across the die and the
settling time of the memory cells.</t>
        <t>Consequently, the ASIC advantage is not a function of "better
hardware," but rather the physical limit of signal propagation
and charge sensing. By forcing intra-step bank collisions,
PoSME ensures that even the most optimized controller spends
the majority of its wall-clock time in a stalled state,
waiting for the physical laws of DRAM to resolve the next
address.</t>
        <section anchor="wafer-scale">
          <name>Wafer-Scale Threshold</name>
          <t>The ultimate latency floor for an adversary is on-die signal
propagation. Optimal ASIC designs that integrate massive
SRAM (1-5ns access) could achieve a 10-45x advantage over
commodity DDR5. Wafer-scale integration, as demonstrated by the
Cerebras Wafer-Scale Engine, is the existence proof for this
threshold. PoSME's security is durable because it scales the
TMTO recomputation penalty geometrically (<xref target="spatial-binding"/>),
ensuring that any latency-based speedup is countered by the
prohibitive cost of discarding state.</t>
        </section>
      </section>
      <section anchor="sequentiality">
        <name>Sequentiality</name>
        <t>Intra-step: The d reads form a pointer-chasing chain; read j+1's
address depends on read j's result.</t>
        <t>Inter-step: T_t feeds into address generation for step t+1.</t>
        <t>Together: K * d sequential memory accesses, each bottlenecked
by DRAM latency.</t>
      </section>
    </section>
    <section anchor="wire-format">
      <name>Wire Format</name>
      <t>The PoSME proof is encoded in CBOR <xref target="RFC8949"/> per <xref target="RFC8610"/>:</t>
      <sourcecode type="cddl"><![CDATA[
posme-proof = {
    1 => posme-params,
    2 => bstr .size 32,           ; final-transcript (T_K)
    3 => bstr .size 32,           ; root-chain-commitment
    4 => [+ step-proof],          ; challenged-steps
}

posme-params = {
    1 => uint,                    ; arena-blocks (N)
    2 => uint,                    ; total-steps (K)
    3 => uint,                    ; reads-per-step (d)
    4 => uint,                    ; challenges (Q)
    5 => uint,                    ; recursion-depth (R)
    6 => uint,                    ; bank-count (B)
}

step-proof = {
    1 => uint,                    ; step-id
    2 => bstr .size 32,           ; cursor-in
    3 => bstr .size 32,           ; cursor-out
    4 => bstr .size 32,           ; root-before
    5 => bstr .size 32,           ; root-after
    6 => [+ bstr .size 32],       ; root-chain-paths
    7 => [+ read-witness],        ; reads
    8 => write-witness,           ; write
    9 => [* writer-proof],        ; recursive provenance
    10 => uint,                   ; timing-entropy (delta_t)
}

read-witness = {
    1 => uint,                    ; address
    2 => bstr .size 32,           ; data
    3 => bstr .size 32,           ; causal-hash
    4 => [+ bstr .size 32],       ; merkle-path
}

write-witness = {
    1 => uint,                    ; address
    2 => bstr .size 32,           ; old-data
    3 => bstr .size 32,           ; old-causal
    4 => bstr .size 32,           ; new-data
    5 => bstr .size 32,           ; new-causal
    6 => [+ bstr .size 32],       ; merkle-path
}

writer-proof = {
    1 => uint,                    ; type (0=init, 1=step, 2=leaf)
    ? 2 => uint,                  ; writer-step-id
    ? 3 => step-proof,            ; recursive step proof
    ? 4 => [+ bstr .size 32],     ; merkle-path
}
]]></sourcecode>
    </section>
    <section anchor="parameters">
      <name>Parameters</name>
      <section anchor="proof-size-opt">
        <name>Proof Size Optimization</name>
        <t>The recursion depth R and challenge count Q present a direct tradeoff
between security margin and proof size. Table 6 provides concrete MiB-
per-proof costs for implementers.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Recursion (R)</th>
              <th align="left">Challenges (Q)</th>
              <th align="left">Blocks (B)</th>
              <th align="left">Size (MiB)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">2</td>
              <td align="left">64</td>
              <td align="left">81</td>
              <td align="left">3.9</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">128</td>
              <td align="left">81</td>
              <td align="left">7.9</td>
            </tr>
            <tr>
              <td align="left">
                <strong>3</strong></td>
              <td align="left">
                <strong>64</strong></td>
              <td align="left">
                <strong>657</strong></td>
              <td align="left">
                <strong>32.1</strong></td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">128</td>
              <td align="left">657</td>
              <td align="left">64.2</td>
            </tr>
          </tbody>
        </table>
        <t>While R=3 yields significantly larger proofs, it provides
exponentially higher fabrication resistance by checking the witnesses
of the writers' writers. For bandwidth-constrained environments (e.g.,
light clients), R=2 with Q=128 offers a compact ~8 MiB proof while
maintaining high confidence.</t>
      </section>
      <section anchor="recommended-params">
        <name>Recommended Parameters</name>
        <t>PoSME's security properties have different parameter dependencies.
TMTO resistance (<xref target="tmto"/>) depends on the write density rho = K/N
and is independent of arena size. ASIC resistance can be achieved
through arena size exceeding the
adversary's fastest memory (<xref target="asic-resistance"/>). Applications <bcp14>SHOULD</bcp14> select parameters
based on their threat model.</t>
        <section anchor="n-vs-rho">
          <name>Design Trade-off: N vs rho</name>
          <t>Arena size N and write density rho = K/N are independent knobs
controlling different security properties:</t>
          <ul spacing="normal">
            <li>
              <t>N controls latency-bound ASIC resistance: the arena must exceed
the adversary's fastest accessible memory (L3 cache, SRAM).
Larger N requires more Prover RAM.</t>
            </li>
            <li>
              <t>rho controls TMTO resistance: penalty = 1 + (1-alpha)(2*rho+1)
for an adversary storing alpha*N blocks. Higher rho requires
more steps (longer wall time) but no additional RAM.</t>
            </li>
          </ul>
        </section>
        <section anchor="param-profiles">
          <name>Parameter Profiles</name>
          <t>Three profiles are defined. All profiles share fixed parameters:
block size B = 64 bytes, reads per step d = 8, bank count B_banks = 16,
hash function H = BLAKE3.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Profile</th>
                <th align="left">N</th>
                <th align="left">Arena</th>
                <th align="left">rho</th>
                <th align="left">K</th>
                <th align="left">Q</th>
                <th align="left">R</th>
                <th align="left">Peak RAM</th>
                <th align="left">TMTO</th>
                <th align="left">Use Case</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Standard</td>
                <td align="left">2^20</td>
                <td align="left">64 MiB</td>
                <td align="left">4</td>
                <td align="left">4*N</td>
                <td align="left">64</td>
                <td align="left">2</td>
                <td align="left">~128 MiB</td>
                <td align="left">~256x</td>
                <td align="left">Sybil resistance</td>
              </tr>
              <tr>
                <td align="left">Enhanced</td>
                <td align="left">2^22</td>
                <td align="left">256 MiB</td>
                <td align="left">4</td>
                <td align="left">4*N</td>
                <td align="left">128</td>
                <td align="left">3</td>
                <td align="left">~512 MiB</td>
                <td align="left">~256x</td>
                <td align="left">High-assurance</td>
              </tr>
              <tr>
                <td align="left">Maximum</td>
                <td align="left">2^24</td>
                <td align="left">1 GiB</td>
                <td align="left">4</td>
                <td align="left">4*N</td>
                <td align="left">128</td>
                <td align="left">3</td>
                <td align="left">~2 GiB</td>
                <td align="left">~256x</td>
                <td align="left">Consensus, mining</td>
              </tr>
            </tbody>
          </table>
          <t>The Standard and Enhanced profiles exceed consumer L3 caches
(16-36 MiB as of 2024) and provide latency-bound ASIC resistance
via arena size and HBM latency bounds. The Maximum profile (1 GiB)
exceeds all current L3 caches and limits GPU throughput via the
capacity-bandwidth bound.</t>
        </section>
        <section anchor="memory-budget">
          <name>Memory Budget</name>
          <t>The Prover's peak memory comprises three components:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Component</th>
                <th align="left">Size</th>
                <th align="left">Notes</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Arena</td>
                <td align="left">N * 64 bytes</td>
                <td align="left">Required for computation</td>
              </tr>
              <tr>
                <td align="left">Merkle tree</td>
                <td align="left">2 * N * 32 bytes</td>
                <td align="left">Required for root updates</td>
              </tr>
              <tr>
                <td align="left">Root chain</td>
                <td align="left">(K + 1) * 32 bytes</td>
                <td align="left">Sequential; <bcp14>MAY</bcp14> be streamed to disk</td>
              </tr>
            </tbody>
          </table>
          <t>The root chain is written sequentially during pass 1 and read
sequentially during pass 2. Implementations <bcp14>MAY</bcp14> stream the root
chain to persistent storage to reduce peak RAM by K * 32 bytes,
at the cost of additional I/O.</t>
          <t>Peak RAM by profile (with root chain streaming):</t>
          <table>
            <thead>
              <tr>
                <th align="left">Profile</th>
                <th align="left">Arena + Merkle</th>
                <th align="left">Root chain (disk)</th>
                <th align="left">Peak RAM</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Standard</td>
                <td align="left">128 MiB</td>
                <td align="left">128 MiB</td>
                <td align="left">~128 MiB</td>
              </tr>
              <tr>
                <td align="left">Enhanced</td>
                <td align="left">512 MiB</td>
                <td align="left">512 MiB</td>
                <td align="left">~512 MiB</td>
              </tr>
              <tr>
                <td align="left">Maximum</td>
                <td align="left">2 GiB</td>
                <td align="left">2 GiB</td>
                <td align="left">~2 GiB</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="param-validation">
        <name>Parameter Validation</name>
        <t>Verifiers <bcp14>MUST</bcp14> reject proofs with parameters below these minimums:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Minimum</th>
              <th align="left">Rationale</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">N</td>
              <td align="left">2^18</td>
              <td align="left">Below this, arena is too small for meaningful pointer-chase depth</td>
            </tr>
            <tr>
              <td align="left">K</td>
              <td align="left">N</td>
              <td align="left">Below N, most blocks are never written; TMTO is trivial</td>
            </tr>
            <tr>
              <td align="left">K/N (rho)</td>
              <td align="left">4</td>
              <td align="left">Below this, TMTO penalty &lt; 10x</td>
            </tr>
            <tr>
              <td align="left">d</td>
              <td align="left">4</td>
              <td align="left">Below this, causal fan-out is insufficient</td>
            </tr>
            <tr>
              <td align="left">Q</td>
              <td align="left">64</td>
              <td align="left">Below this, detection probability &lt; 2^{-64}</td>
            </tr>
            <tr>
              <td align="left">R</td>
              <td align="left">2</td>
              <td align="left">Below this, causal verification is shallow</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="performance">
        <name>Performance Estimates</name>
        <t>The following properties are machine-independent:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Property</th>
              <th align="left">Standard</th>
              <th align="left">Maximum</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TMTO penalty (alpha=0)</td>
              <td align="left">~256x</td>
              <td align="left">~256x</td>
            </tr>
            <tr>
              <td align="left">ASIC resistance mechanism</td>
              <td align="left">Physics-Bound Floor</td>
              <td align="left">Physics-Bound Floor</td>
            </tr>
            <tr>
              <td align="left">Proof size</td>
              <td align="left">~3.9 MiB</td>
              <td align="left">~64 MiB</td>
            </tr>
          </tbody>
        </table>
        <t>Reference timings (Apple M-series, DDR5; will vary by hardware):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Profile</th>
              <th align="left">Per-step</th>
              <th align="left">Wall time</th>
              <th align="left">Prover peak RAM</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Standard (64 MiB)</td>
              <td align="left">~1500 ns</td>
              <td align="left">~6 seconds</td>
              <td align="left">~128 MiB</td>
            </tr>
            <tr>
              <td align="left">Enhanced (256 MiB)</td>
              <td align="left">~2200 ns</td>
              <td align="left">~37 seconds</td>
              <td align="left">~512 MiB</td>
            </tr>
            <tr>
              <td align="left">Maximum (1 GiB)</td>
              <td align="left">~2750 ns</td>
              <td align="left">~185 seconds</td>
              <td align="left">~2 GiB (disk)</td>
            </tr>
          </tbody>
        </table>
        <t>Verifier time is independent of profile (depends on Q, d, R, N):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Metric</th>
              <th align="left">Desktop</th>
              <th align="left">Enhanced/Maximum</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Desktop</td>
              <td align="left">~2 ms</td>
              <td align="left">~6 ms</td>
            </tr>
            <tr>
              <td align="left">Mobile</td>
              <td align="left">20-100 ms</td>
              <td align="left">60-300 ms</td>
            </tr>
          </tbody>
        </table>
        <t>A reference benchmark with pre-compiled binaries is provided
as ancillary material (anc/README.md).</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="work-vs-time">
        <name>Work vs. Time</name>
        <t>PoSME proves sequential memory execution, not elapsed time. An
adversary with faster memory (lower latency) completes the same
computation in less wall-clock time. The ASIC advantage is bounded
(approximately 2x) but nonzero. Applications requiring temporal
guarantees <bcp14>MUST</bcp14> combine PoSME with an external time-binding
mechanism such as hardware-attested timestamps.</t>
        <t>Hardware-independent time-binding is impossible:
deterministic computation produces identical output regardless of
hardware speed, and self-reported timing is forgeable.</t>
      </section>
      <section anchor="seed-requirements">
        <name>Seed Requirements</name>
        <t>The seed <bcp14>MUST</bcp14> be externally fixed or derived from an unpredictable
source. A Prover-controlled seed enables grinding for favorable
arena initializations with reduced effective working sets.</t>
      </section>
      <section anchor="verify-complexity">
        <name>Verification Complexity</name>
        <t>We conjecture that O(1) verification under hash-only assumptions
is not achievable for sequential pointer-chasing computations
of the type PoSME specifies. The verification complexity in this
document is O(Q * d^R * log N). O(log^2 K) verification is
believed achievable via FRI/STARK-based commitment (requiring
field arithmetic but no trusted setup) and is left as a future
optimization. A formal impossibility proof for constant-size
hash-only verification of PoSME remains open.</t>
      </section>
      <section anchor="verifier-limits">
        <name>Verifier Resource Limits</name>
        <t>Verifiers <bcp14>SHOULD</bcp14> implement rate limiting and <bcp14>MUST</bcp14> reject proofs
with parameters exceeding configured thresholds before allocating
resources for verification.</t>
      </section>
      <section anchor="open-problems">
        <name>Open Problems</name>
        <t>The dynamic pebbling game (<xref target="pebbling-game"/>) provides a framework
for TMTO analysis, but a machine-checked proof of the space-time
lower bound remains open. The adversary's optimal caching strategy
(which blocks to store, when to checkpoint) has not been formally
optimized. Block access distribution uniformity under hash-derived
addressing requires formal characterization (see Conjecture 1);
skewed distributions may enable hot-block caching. Host-as-
critical-path mechanisms for ASIC resistance at cache-resident
arena sizes (where arena fits within on-die SRAM) are out of scope
for this draft. Such mechanisms require the host's computation to
gate the next prover step rather than supply ancillary entropy.
This is deferred to future work. The tight relationship between
committed step frequency C, write density rho, and the optimal
adversary strategy requires further analysis.</t>
      </section>
    </section>
    <section anchor="implementation">
      <name>Implementation Considerations</name>
      <section anchor="impl-bank">
        <name>Bank Mapping and Conflicts</name>
        <t>The effectiveness of intra-step bank collisions (<xref target="bank-collision"/>) 
depends on the accuracy of the <tt>force_bank_mapping</tt> logic. Memory 
controllers typically use specific physical address bits for bank 
selection (e.g., bits 13-16 on many DDR4/DDR5 platforms).</t>
        <t>Prover implementations <bcp14>SHOULD</bcp14> use platform-specific knowledge or 
calibration loops to identify these bits. If the exact mapping is 
unknown, the Prover <bcp14>MAY</bcp14> use a XOR-sum of multiple candidate bit 
ranges to increase the probability of a physical bank conflict. 
Verifiers DO NOT check physical mapping accuracy; they only check 
the logical consistency of the derived addresses according to the 
protocol parameters.</t>
      </section>
      <section anchor="impl-timing">
        <name>Timing Counters</name>
        <t>Provers <bcp14>MUST</bcp14> use the highest-resolution monotonic hardware counter 
available to capture <tt>delta_t</tt>.</t>
        <ul spacing="normal">
          <li>
            <t><strong>x86_64:</strong> The <tt>RDTSC</tt> or <tt>RDTSCP</tt> instructions.</t>
          </li>
          <li>
            <t><strong>AArch64:</strong> The <tt>CNTPCT_EL0</tt> system register.</t>
          </li>
        </ul>
        <t>The resulting <tt>delta_t</tt> <bcp14>SHOULD NOT</bcp14> be normalized or filtered. Raw 
cycle counts are required to preserve the stochastic jitter profile 
arising from DRAM refresh cycles ($t_{REFW}$) and OS-level noise.</t>
      </section>
      <section anchor="impl-cache">
        <name>Cache Management</name>
        <t>To ensure the arena computation is bottlenecked by DRAM latency 
rather than CPU cache hits, the arena size $N$ <bcp14>SHOULD</bcp14> be configured 
to exceed the Prover's L3 cache capacity. For Standard and Maximum 
profiles, the arena sizes (64 MiB to 1 GiB) are specifically chosen 
to exceed the 16-96 MiB caches typical of commodity processors.</t>
        <t>Provers <bcp14>MAY</bcp14> use cache-bypass instructions (e.g., <tt>MOVNTI</tt> on x86) 
for arena writes to further enforce DRAM-bounded execution.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9106">
          <front>
            <title>Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications</title>
            <author fullname="A. Biryukov" initials="A." surname="Biryukov"/>
            <author fullname="D. Dinu" initials="D." surname="Dinu"/>
            <author fullname="D. Khovratovich" initials="D." surname="Khovratovich"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document describes the Argon2 memory-hard function for password hashing and proof-of-work applications. We provide an implementer-oriented description with test vectors. The purpose is to simplify adoption of Argon2 for Internet protocols. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9106"/>
          <seriesInfo name="DOI" value="10.17487/RFC9106"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="Boneh2018" target="https://doi.org/10.1007/978-3-319-96884-1_25">
          <front>
            <title>Verifiable Delay Functions</title>
            <author initials="D." surname="Boneh" fullname="Dan Boneh">
              <organization/>
            </author>
            <author initials="J." surname="Bonneau" fullname="Joseph Bonneau">
              <organization/>
            </author>
            <author initials="B." surname="Bunz" fullname="Benedikt Bunz">
              <organization/>
            </author>
            <author initials="B." surname="Fisch" fullname="Ben Fisch">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="CRYPTO" value="2018"/>
        </reference>
        <reference anchor="Biryukov2016" target="https://doi.org/10.1109/EuroSP.2016.31">
          <front>
            <title>Argon2: New Generation of Memory-Hard Functions for Password Hashing and Other Applications</title>
            <author initials="A." surname="Biryukov" fullname="Alex Biryukov">
              <organization/>
            </author>
            <author initials="D." surname="Dinu" fullname="Daniel Dinu">
              <organization/>
            </author>
            <author initials="D." surname="Khovratovich" fullname="Dmitry Khovratovich">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="IEEE EuroS&amp;P" value="pp. 292-302"/>
        </reference>
        <reference anchor="CohenPietrzak2018" target="https://doi.org/10.1007/978-3-319-78375-8_15">
          <front>
            <title>Simple Proofs of Sequential Work</title>
            <author initials="B." surname="Cohen" fullname="Bram Cohen">
              <organization/>
            </author>
            <author initials="K." surname="Pietrzak" fullname="Krzysztof Pietrzak">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="EUROCRYPT 2018, LNCS" value="10821, pp. 451-467"/>
        </reference>
        <reference anchor="AlwenBlockPietrzak2017" target="https://doi.org/10.1007/978-3-319-56617-7_1">
          <front>
            <title>Depth-Robust Graphs and Their Cumulative Memory Complexity</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="J." surname="Blocki" fullname="Jeremiah Blocki">
              <organization/>
            </author>
            <author initials="K." surname="Pietrzak" fullname="Krzysztof Pietrzak">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="EUROCRYPT 2017, LNCS" value="10212, pp. 3-32"/>
        </reference>
        <reference anchor="RenDevadas2017" target="https://doi.org/10.1007/978-3-319-70500-2_16">
          <front>
            <title>Bandwidth Hard Functions for ASIC Resistance</title>
            <author initials="L." surname="Ren" fullname="Ling Ren">
              <organization/>
            </author>
            <author initials="S." surname="Devadas" fullname="Srinivas Devadas">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="TCC 2017, LNCS" value="10677, pp. 466-492"/>
        </reference>
        <reference anchor="JESD79-5" target="https://www.jedec.org/standards-documents/docs/jesd79-5d">
          <front>
            <title>DDR5 SDRAM Standard</title>
            <author>
              <organization>JEDEC Solid State Technology Association</organization>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="JEDEC" value="JESD79-5D"/>
        </reference>
        <reference anchor="JESD238" target="https://www.jedec.org/standards-documents/docs/jesd238b01">
          <front>
            <title>High Bandwidth Memory (HBM3) DRAM</title>
            <author>
              <organization>JEDEC Solid State Technology Association</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="JEDEC" value="JESD238B01"/>
        </reference>
        <reference anchor="Boneh2016" target="https://doi.org/10.1007/978-3-662-53887-6_8">
          <front>
            <title>Balloon Hashing: A Memory-Hard Function Providing Provable Protection Against Sequential Attacks</title>
            <author initials="D." surname="Boneh" fullname="Dan Boneh">
              <organization/>
            </author>
            <author initials="H." surname="Corrigan-Gibbs" fullname="Henry Corrigan-Gibbs">
              <organization/>
            </author>
            <author initials="S." surname="Schechter" fullname="Stuart Schechter">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="ASIACRYPT" value="2016"/>
        </reference>
        <reference anchor="Chia2024" target="https://docs.chia.net/green-paper-abstract">
          <front>
            <title>The Chia Network Green Paper</title>
            <author>
              <organization>Chia Network</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="Spacemesh2023" target="https://github.com/spacemeshos/protocol">
          <front>
            <title>The Spacemesh Protocol</title>
            <author>
              <organization>Spacemesh Team</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="Wesolowski2019" target="https://doi.org/10.1007/978-3-030-17659-4_13">
          <front>
            <title>Efficient Verifiable Delay Functions</title>
            <author initials="B." surname="Wesolowski" fullname="Benjamin Wesolowski">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="EUROCRYPT" value="2019"/>
        </reference>
      </references>
    </references>
    <?line 1185?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author thanks the CFRG for foundational work on memory-hard
functions. The authors of Argon2 are acknowledged for the 
design principles that inspired PoSME's custom skip-link 
initialization.</t>
    </section>
    <section numbered="false" anchor="changes-from-00" removeInRFC="true">
      <name>Changes from -00</name>
      <ul spacing="normal">
        <li>
          <t>Removed Compact profile pending further analysis of cache-resident-arena security.</t>
        </li>
        <li>
          <t>Removed Jitter Entanglement section pending further analysis of host-as-critical-path constructions.</t>
        </li>
        <li>
          <t>Restated Theorem 2 (TMTO) conditionally on a stated Address Uniformity Conjecture.</t>
        </li>
        <li>
          <t>Tightened ASIC resistance framing to a single physics-bounded latency floor.</t>
        </li>
        <li>
          <t>Reconciled §3.2 Related Work against §4.2 arena initialization.</t>
        </li>
        <li>
          <t>Editorial cleanup throughout.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
