White paper v0.2 with complete technical PDF appendix / June 3, 2026

canonical replay / market memory

Pumpologia

Bitcoin-native recognition protocol: proof of win, deterministic collateral power, bounded debt and market memory.

Bitcoin remains neutral. Pumpologia remembers. The market prices that memory.

00

Abstract

Pumpologia is a Bitcoin-native protocol for turning ordered history into recognized market power.

It does not ask Bitcoin to execute trades, custody collateral, enforce liquidation, or run a smart contract exchange. It reads what Bitcoin already proves: inputs, outputs, transaction order, public commitments, UTXO lineage, block height, and finality.

From this minimal evidence, Pumpologia derives positions, claims, deficits, settlement routes, restored capacity, and market-readable protocol recognition.

A user may keep their bitcoin while losing clean protocol recognition. A winner may hold no seized collateral while owning a proof-backed claim. The market is not built on custody, but on memory.

Bitcoin remains neutral.
Pumpologia remembers.
The market prices that memory.

1

The Cypherpunk Premise

Pumpologia is not a complex protocol simplified by a frontend. It is a simple protocol whose depth comes from deterministic interpretation of Bitcoin.

The premise is:

Bitcoin gives the order.
Pumpologia gives the recognition.
The market gives the price.

Bitcoin remains the objective evidence layer. Pumpologia does not modify Bitcoin consensus and does not ask Bitcoin to understand leverage, claims, deficits, or liquidation. Instead, it defines public interpretation rules that independent indexers can replay from the same chain.

The protocol should feel inevitable:

a few words in an OP_RETURN,
Bitcoin ordering the evidence,
indexers deriving the same state,
and a market forming around recognition.

The database is not the source of truth. The replay is.

2

Recognition, Not Custody

Pumpologia separates two facts that custodial systems usually collapse:

1. who still controls bitcoin;

2. what the protocol recognizes that bitcoin as able to do.

A losing user may still control the same BTC UTXO on Bitcoin. What changes is the protocol's recognition of that lineage as clean backing.

A winning user may not receive seized collateral immediately. What they receive is a proof-backed claim derived from Bitcoin-ordered market history.

This creates a new economic object:

recognized capacity

Recognized capacity is not mere possession. It is Bitcoin ownership interpreted through protocol history.

3

The Minimal Grammar

Pumpologia should not ask users to name protocol state. It should deduce the state being modified.

Pumpologia must not ask the user to name the state.
Pumpologia must deduce the state being modified.

The public grammar is minimal:

pumpologia long 1000
pumpologia short 400
pumpologia long 1000 limit 65000 lock 144
pumpologia short 1000 limit 70000 lock 144
pumpologia settle 400
pumpologia sell 300 lock 144
pumpologia recover

The JSON form can be equally small:

{"p":"pumpologia","op":"long","amt":"1000"}
{"p":"pumpologia","op":"short","amt":"400"}
{"p":"pumpologia","op":"long","amt":"1000","limit":"65000","lock":"144"}
{"p":"pumpologia","op":"settle","amt":"400"}
{"p":"pumpologia","op":"sell","amt":"300","lock":"144"}

Version fields, structural output selectors, strict validation fields, compatibility rules, and indexer details belong in the technical specification, not in the central thesis.

4

Id-less at the Protocol Edge

Pumpologia is id-less at the protocol edge.

A user does not identify trades, claims, deficits, reservations, positions, or actors. They spend Bitcoin outputs and publish minimal intent. The indexer derives the affected economic state from canonical history.

A Pumpologia transaction does not point to a trade.
It spends a lineage.
The lineage tells the protocol what is open.
The protocol does not ask the user what object he means.
It observes what lineage he spends.

The following identifiers may exist, but only as derived handles:

position_handle
lot_handle
claim_handle
deficit_handle
lock_handle
route_handle
state_root_key

They are for explorers, APIs, audit logs, state roots, test vectors, and UI labels. They are not user-supplied economic identifiers.

Names are for explorers.
Consequences are for consensus.

5

Directional Deltas: Long and Short

The trading core has only two directional primitives:

long AMT  = positive delta
short AMT = negative delta

The current position of a selected lineage is signed:

net_position > 0 : long
net_position < 0 : short
net_position = 0 : flat

When a new intent arrives:

if the intent has the same sign as the current position:
  append a new lot

if the intent has the opposite sign:
  consume open lots canonically
  realize PnL on the consumed amount
  if the delta exceeds the open position:
    open a residual lot in the opposite direction

This removes the need for a protocol-level `close` operation.

Example:

Current state: long 1000
Message: short 400
Result: close 400 of the long
Remainder: long 600

Example:

Current state: long 1000
Message: short 1200
Result:
  close 1000 of the long
  open 200 short

The frontend may expose a `Close` button, but the protocol message can remain a directional delta:

UI: close 1000 from a long position
OP_RETURN: {"p":"pumpologia","op":"short","amt":"1000"}

6

Canonical Lots

To avoid user-supplied trade identifiers, each carrier maintains canonical open lots.

Example:

Carrier C:
  lot 0: long 400, entry_price 65000, entry_event E0
  lot 1: long 600, entry_price 67000, entry_event E1

An opposite order consumes lots by a deterministic rule. The default rule should be:

FIFO: oldest open lot first.

A `short 700` against the carrier above:

closes lot 0 entirely: 400
closes 300 from lot 1
leaves lot 1: long 300

The user expresses direction and amount. The protocol derives the affected lots.

Trades are not individually targeted by user-supplied identifiers.
They are consumed as canonical lots attached to a spent lineage.

7

Market and Limit Intent

A market intent is the minimal form:

{"p":"pumpologia","op":"long","amt":"1000"}

It means:

positive delta
market execution
fresh position if no known protocol input exists
continuation if a known carrier is spent
entry price = deterministic price recovered for the inclusion block

A limit intent adds `limit` and `lock`:

{"p":"pumpologia","op":"long","amt":"1000","limit":"65000","lock":"144"}

It means:

positive pending delta
valid for 144 blocks
triggered only if the deterministic price reaches the limit condition
expired if not triggered within the lock window

If there is no `limit`, the intent is market. If there is `limit`, there must be `lock`.

8

Claims and Deficits

When directional deltas realize profit and loss, the protocol creates paired consequences:

Winner receives a proof-backed claim.
Loser receives a deficit or reduced recognition.

No bitcoin needs to be seized by the protocol. The loser may still own their UTXO. The winner may not receive immediate collateral. What exists is recognized economic memory.

Example:

Alice: 1000 sats, 1000 recognized capacity
Bob:   1000 sats, 1000 recognized capacity

Alice wins 400.
Bob loses 400.

Alice: claim +400, recognized capacity 1400
Bob:   deficit 400, recognized capacity 600

The market forms around the gap between Bitcoin possession and protocol recognition.

9

Settlement by Derived Route

Settlement should not be centered on user-supplied `deficit_id` or `reservation_id`.

The normal settlement message is:

{"p":"pumpologia","op":"settle","amt":"400"}

It means:

settle 400 against the canonical debt frontier of the actor or lineage being spent

The indexer derives:

actor from Bitcoin evidence
open deficits of that actor or lineage
canonical deficit order
open claims eligible for payment
canonical claim order
deterministic payment route
required Bitcoin outputs
claim reductions
deficit reductions
capacity restoration

The Bitcoin transaction proves payment by containing the required outputs.

You do not negotiate with a creditor.
You pay the route that the protocol derives.

If two settlements compete for the same claims, Bitcoin order resolves the race. The first valid settlement updates the frontier. Later settlements must match the new frontier or fail protocol recognition.

Reservations can exist as an advanced anti-race or UX optimization, but they are not the core primitive of the whitepaper.

10

Availability: Selling Proofs and Claims

A holder does not ask the protocol for liquidity. They publish availability. The market reads it.

The minimal sell message is:

{"p":"pumpologia","op":"sell","amt":"300","lock":"144"}

It means:

make 300 units available from the actor's canonical proof or claim frontier
valid for 144 blocks

If a holder wants to isolate a specific claim, they should do so structurally through lineage or carrier design, not by supplying arbitrary claim identifiers in the OP_RETURN.

Specificity should come from Bitcoin structure, not semantic pointers.

11

Oracle Recovery

Pumpologia does not create a new price feed that must inscribe a price at every block.

Pumpologia does not create a price feed.
It commits to a price-recovery rule.

The oracle is not another publisher. It is a deterministic extraction profile.

Given:

the same Bitcoin block,
the same certified extraction profile,
the same integer scaling rules,
and the same finality policy,

every honest indexer must recover the same price.

No new price inscription is required for every block. No historical price can drift after the fact if the profile and source evidence are fixed.

At constant profile, the price of a block is not mutable data.
It is a reproducible consequence of certified history.

12

Exponents as Positive Backing Power

Exponent is not guilt. Exponent is compression of backing power.

The backing exponent should not be described as a punishment for losers. A clean or winning user can have a positive exponent because they control more recognized backing power than the immediate position requires.

Positive exponent states can come from:

overcollateralized sats
proof surplus from previous wins
restored capacity with recognized history
eligible future-sat claims under explicit risk rules

A loser does not receive a better exponent. A loser has a deficit, degraded recognition, mixed lineage, locked lineage, or reduced capacity.

The beneficial exponential effect is systemic:

more usage
-> more verifiable history
-> more recognized rights
-> more secondary markets
-> more liquid recognition
-> more Bitcoin-native programmability without changing Bitcoin

13

ITX: Interpreted Bitcoin Transactions

An ITX is not a different Bitcoin transaction. It is the protocol's interpretation of a Bitcoin transaction.

Bitcoin transaction:
  inputs
  outputs
  OP_RETURN
  block order

Pumpologia ITX:
  intent
  actor
  carrier
  continuation
  split
  merge
  settlement
  recovery

The public whitepaper should use ITX as the clean abstraction. The strict rules belong in appendices and specifications.

Important ITX forms:

ITX-CONTINUE: continue a recognized lineage
ITX-SPLIT: explicitly distribute clean capacity, claims, or deficits
ITX-MERGE: consolidate lineages without erasing debt
ITX-SEPARATE: separate clean value from dirty or locked value
ITX-LOCK: block protocol admission when allocation is invalid
ITX-SETTLE: reduce debt and restore capacity
ITX-RECOVER: repair the lineage being spent

The core law:

Split and merge are allowed.
Washing is not.

14

Fragmentation Resistance

Bitcoin users can create many outputs. Pumpologia must not let that create many recognized rights.

An attacker may create more Bitcoin outputs.
He cannot create more recognized protocol rights.

Debt is conserved as an object, not sprayed as dust.

When a debt-bearing or locked lineage fragments, the protocol accepts only:

valid bounded debt allocation
or
single unresolved lineage lock

This prevents state explosion. The attacker can move coins, but cannot manufacture clean recognition.

Complexity may move coins.
It cannot manufacture recognition.

15

Deterministic Replay and State Roots

Independent indexers do not agree because they share the same physical database. They agree because they replay the same evidence under the same rules.

Not the same database.
The same canonical replay.

Consensus-relevant state must depend only on:

the same Bitcoin chain
the same protocol rules
the same oracle profile
the same transaction and OP_RETURN order
the same finality policy
the same integer math
the same canonical serialization

It must not depend on:

local wall-clock time
floating-point math
random ordering
database row order
API cache state
process timing

State roots should be computed from canonical event handles, stable ordering, explicit integer amounts, and deterministic serialization.

16

Economic Consequences

Pumpologia creates markets around recognition.

Economic pressure can emerge from:

clean-lineage premium
claim liquidity
restoration demand
proof-surplus leverage
capacity scarcity
history-backed reputation
Bitcoin-native perps and futures paths

The protocol is not merely defensive. Its stronger claim is that attacks become economically sterile.

Pumpologia does not merely prevent attacks.
It makes attacks unable to manufacture recognition.

17

Security and Adversarial Model

Security concerns belong in the protocol, but they should not dominate the main thesis.

The core adversarial surfaces are:

semantic ID spoofing
actor ambiguity
UTXO washing
claim double-payment
stale settlement routes
dust fragmentation
invalid split or merge allocation
oracle ambiguity
reorg handling
non-deterministic indexer behavior
state-root drift

The v0.2 doctrine reduces the attack surface by removing user-supplied economic identifiers from the protocol edge.

No actor id. No trade id. No deficit id. No claim id. No reservation id.

Only:

Bitcoin evidence.
Canonical interpretation.
Derived handles.

18

What Belongs in Appendices

The main whitepaper should remain readable by someone who understands Bitcoin and markets.

Move these details to appendices or strict specifications:

version compatibility fields
strict message validation
optional structural output selectors
fixture/prototype formats
integer PnL details
bounded debt carrier rules
ITX split/merge/recovery rules
state-root serialization
test vectors
rollback mechanics
indexer implementation details
reservation internals

The body should explain why the protocol is inevitable. The appendices should prove that it is deterministic.

19

Conclusion

Pumpologia transforms ordered Bitcoin history into recognized market power.

The user publishes minimal intent. Bitcoin orders the evidence. The lineage carries memory. Indexers derive the same consequences. Markets price the recognition.

The final thesis is:

Bitcoin remains neutral.
Pumpologia remembers.
The market prices that memory.

And the protocol edge remains simple:

long AMT
short AMT
settle AMT
sell AMT lock BLOCKS
recover

No user-supplied economic identifiers. No hidden custody. No mutable history. Only Bitcoin evidence, canonical replay, and market recognition.

SPEC

Technical appendix extracted from the PDF

The preceding sections are the v0.2 doctrine and public whitepaper body. The following appendix integrates the full technical material extracted from the supplied PDF draft, while treating strict message formats, version fields, internal identifiers, reservations, allocation details, test vectors and state-root mechanics as specification material rather than the protocol edge.

Whitepaper body: minimal human grammar. Appendix: strict validation, derived handles, prototype compatibility and consensus-grade invariants.

SPEC 3

System Model

SPEC 3.1

Bitcoin Chain

We model Bitcoin as an ordered sequence of blocks

B = (B0, B1, …, Bh),

where each block contains ordered transactions, and each transaction contains vin[i] inputs, vout[j] outputs, amounts in sats, scripts, and optionally an OP_RETURN output.

Pumpologia does not modify Bitcoin rules. A transaction that is invalid for Bitcoin does not enter the Pumpologia model. A transaction that is valid for Bitcoin may be non-protocol, accepted, rejected, pending, or ignored by Pumpologia.

SPEC 3.2

Indexing Function

Let Θ be the set of public protocol parameters: version, supported operations, oracle profile, unit precision, carrier thresholds, settlement rules, reorg policy, and risk functions. The indexer is a deterministic function: FΘ(B0:h) = (σh, E0:h, rh), where σh is the protocol state after block h, E0:h is the derived event log, and rh is a canonical state root.

Invariant 1 (Public history, public state). Given identical Θ and identical Bitcoin history, two independent implementations must produce the same state, the same events, and the same state root.

This requirement is the operational formulation of the principle: the same Bitcoin history plus the same public rules produces the same game state.

SPEC 3.3

Protocol Messages

For v0, messages are UTF-8 JSON objects in an OP_RETURN output. A Pumpologia message carries at minimum:

{"p":"pumpologia","v":1,"op":"..."}

The transaction is rejected by the protocol if it contains more than one Pumpologia message. Outputs are scanned in index order; a non-Pumpologia OP_RETURN is ignored; a Pumpologia message with an unsupported version is rejected. The OP_RETURN expresses intent; it carries neither spend authority nor protocol value.

SPEC 3.4

Actors

An actor is not a legal identity or a wallet label. It is a deterministic script fingerprint:

actor_id = "script:" ∥SHA256(lowercase(scriptPubKeyHex)).

For position creation, the actor is derived from the scriptPubKey of the carrier output. For a spending operation, the actor is derived from the scriptPubKey of the spent prevout. For settlement, the payee is derived from the script of the paid output, then compared with the assigned route.

SPEC 4

State Objects

SPEC 4.1

Carrier UTXO

A UTXO becomes protocol-relevant when it is referenced by an accepted operation or when it descends from a carrier, a debt carrier, or a lineage lock. Its live representation must remain bounded:

UTXOProtocolState {
  outpoint
  sats
  clean_sats
  recognized_proof_atoms
  proof_surplus_atoms
  deficit_atoms_total
  claim_atoms_total
  dominant_deficit_ids[]
  locked_sats_by_lock_id[]
  backing_exponent
  risk_exponent
  component_count
  state_class
}

The specification must distinguish historical proof state, which may be richer, from live state, which must remain compact to resist fragmentation attacks.

SPEC 4.2

State classes

The minimal classes are: Semantic Class clean UTXO admissible as clean backing.

recognized_carrier Active carrier of a recognized proof/position.

overcollateralized Present backing greater than the notional being played.

proof_surplus Recognized claims or proof greater than local sats.

degraded Carrier that has lost recognition.

deficit Open unsettled loss.

debt_carrier Explicitly eligible UTXO carrying bounded debt.

mixed Clean value and dirty components mixed together.

lineage_locked Descendant blocked by a lock.

quarantined Non-admissible state, too small or too complex.

settled Debt restored or lineage made admissible again.

Invariant 2 (Exponent typing). An exponent has no standalone meaning. It must always be interpreted together with the state_class. A high exponent on a clean position may mean overcollateralization; on a debt carrier it measures debt concentration; on a mixed output it is diagnostic and non-admissible.

SPEC 5

Units and arithmetic

SPEC 5.1

Sats and proof atoms

Sats are Bitcoin's native unit. Proofs are represented by high-precision integers, for example: 1 $proof = 108 proof_atoms.

This granularity prevents rounding attacks when deficits are fragmented across thousands of outputs. No consensus calculation must use floating-point numbers. Amounts, prices, heights, and indexes are integers.

SPEC 5.2

Integer helpers

For a, b ∈ N>0, define: floorLogTenRatio(a, b) = max{k ∈ N : a ≥ 10^k b}, valid when a ≥ b, and: ceilLogTenRatio(a, b) = min{k ∈ N : a ≤ 10^k b}.

These functions replace ⌊log10(a/b)⌋ and ⌈log10(a/b)⌉ without floating point.

SPEC 6

The trade primitive

SPEC 6.1

Fresh position

The live model must reduce the normal surface to three families: trade, settle, and recover when dirtiness or a lock requires explicit repair. For a fresh position, the message may be:

{"p":"pumpologia","v":1,"op":"trade","action":"open",

"side":"long","out":0,"amt":"600","order":"market"} If no protocol input is referenced, the indexer interprets tx.vout[0] as the initial carrier, derives the actor from its script, derives the initial proof capacity according to the v1 rules, fixes the oracle context, and opens the trade. Conceptually, the position and the mint are a single act: POSITION_OPENED.

SPEC 6.2

Continuation

If a trade spends an existing carrier, in references tx.vin[i], and out references the continuation output:

{"p":"pumpologia","v":1,"op":"trade","action":"open",

"side":"short","in":0,"out":0,"amt":"600","order":"market"} The carrier state moves from the prevout to the output. Unreferenced change outputs do not automatically become active protocol states. This rule is essential: a Bitcoin wallet may produce many outputs, but Pumpologia must not create recognition on every output by omission.

SPEC 6.3

Market and limit

A market open enters at the deterministic oracle price of the confirmation block. A limit open is recorded as pending_open, then triggers if the oracle price reaches the condition during the lock window. For a long limit open, entry triggers if Pt ≤ Plimit; for a short, if Pt ≥ Plimit. Closes follow the inverse logic: a long limit close triggers if Pt ≥ Plimit; a short limit close if Pt ≤ Plimit.

The lock field is a positive number of blocks measured from the order's confirmation block. If the condition is not met by created_height + lock, the order expires. Explicit cancellation remains an open question for the live version.

SPEC 6.4

Minimal validation

A trade open is invalid if:

side is not long or short;

amt is not a positive integer;

order is not market or limit;

limit_price or lock is absent for a limit, or present for a market;

the referenced output does not exist, is an OP_RETURN, or does not have an integer amount in

sats;

the notional exceeds the capacity authorized by the backing rule;

the oracle profile has no deterministic price for the execution block;

the state_class is dirty, mixed, locked, or quarantined without an explicit admission rule.

SPEC 7

PnL, claims, and deficits

SPEC 7.1

Integer PnL

For a fixture version, with integer amount q, entry price p0, and exit price p1:

PnL_long = trunc0(q * (p1 − p0) / p0)
PnL_short = trunc0(q * (p0 − p1) / p0)

The final formula must specify the price scale, rounding rules, gain/loss bounds, and the matching or aggregate settlement model. The non-negotiable principle is that PnL is calculated only after two executed prices have been fixed: entry and exit.

SPEC 7.2

Claims

If PnL > 0, the trade creates a claim:

claim_id = sha256("{trade_id}:claim")
amount = pnl
open_amount = amount
status = open

A claim is a settlement right. In the prototype, it does not immediately increase proof capacity; in a more advanced version, liquid claims may become margin assets under an explicit haircut.

SPEC 7.3

Deficits

If PnL < 0, the trade creates a deficit:

deficit_id = sha256("{trade_id}:deficit")
amount = abs(pnl)
open_amount = amount
status = open

The losing carrier is degraded: its recognition decreases by the amount of the deficit, the deficit is attached to it, and the lineage becomes dirty for later settlement and recovery rules.

Invariant 3 (Causal birth). No claim can exist without winning PnL. No deficit can exist without losing PnL. No settlement can restore capacity without paying the associated canonical route.

SPEC 8

$proof as proof of victory

SPEC 8.1

Neither arbitrary credit nor opaque IOUs

$proof must be understood as proof of win. It represents a protocol-level recognition of future sats, arising from a trading history anchored in Bitcoin. It is not a balance edited by a private database: every recognized unit must be able to point to a protocol event and, ultimately, to Bitcoin transactions and deterministic oracle prices.

A winner can therefore have: P > S, where P is the recognized proof and S is the carrier's local sats. The surplus max(P −S, 0) is potential backing power, not an absolute guarantee. Its collateral value depends on a public risk rule.

SPEC 8.2

Effective backing

For a notional N, define:

E = riskRule(S, P, N).

A simple rule would be:

E = max(S, P).

A conservative rule would be:

E = S + min(max(P −S, 0), PROOF_SURPLUS_CAP).

An even more cautious version applies a haircut:

E = S + haircut(P −S).

For the MVP, this document recommends: overcollateralization by sats enabled for display and limits; proof surplus displayed but haircut to zero until live risk rules are specified.

SPEC 9

Backing exponents

SPEC 9.1

Definition

When E ≥N > 0, the backing exponent is:

eb = floorLogTenRatio(E, N).

Interpretation: semantic exponent coverage

eb = 0

1× to < 10× base / clean coverage

eb = 1

10× to < 100× superior backing power

eb = 2

100× to < 1000× strong collateral/proof surplus; eb ≥3: 1000× and above, specialized risk regime

SPEC 9.2

Positive exponents and debt

An earlier conceptual error was to say that a loser "moves up in exponent". This phrasing is dangerous. In the v1 model, a loser enters deficit, degradation, dirty lineage, or lock. A winner or an overcollateralized UTXO gains a positive backing exponent.

Invariant 4 (Non-confusion). A positive exponent never automatically means debt.

Debt is not hidden inside eb; it is represented by a deficit_id, a state_class, and possibly a risk exponent.

SPEC 10

Taint accounting and conservation

SPEC 10.1

Historical components

A UTXO may contain a mixture of clean value and dirty fragments:

Component {
  component_id
  kind
  sats_atoms
  proof_atoms
  deficit_atoms
  claim_atoms
  position_id
  deficit_id
  ancestry_status
}

This representation avoids two symmetric errors: laundering debt by mixing, or contaminating an entire UTXO with a tiny dirty dust fragment.

SPEC 10.2

Historical proportional allocation

When a transaction spends protocol inputs without an explicit allocation, Bitcoin does not say which sats go to which outputs. A historical analysis rule can distribute each component proportionally to the amounts of spendable outputs, excluding OP_RETURN and provably unspendable outputs. Fees receive no protocol state.

For remainders, use the largest-remainder method: 1. exact rational calculation; 2. floor for each output; 3. sort by largest remainder; 4. tie-break by ascending output index; 5. unit distribution of the remaining atoms.

Thus, the sum of child atoms equals the sum of parent atoms.

SPEC 10.3

Dust griefing

If an adversary sends 546 dirty sats to a clean wallet, and the wallet then merges them with 1 clean BTC, the output must become neither entirely clean nor entirely dirty. It must be mixed: almost all the value remains clean, but the dirty fragment persists and blocks its admission.

Invariant 5 (No laundering by complexity). No sequence of split, merge, dust, fee, covenant-like chain, or invalid allocation may transform dirty + complexity into clean + usable proof.

SPEC 11

Bounded debt and lineage locks

SPEC 11.1

Why pro rata is not enough

Component accounting is mathematically exact, but dangerous as a default live rule. An adversary can fragment a dirty position of 1 BTC into 100000 outputs of 1000 sats. If each output receives its own live debt object, the indexer preserves the debt but loses the state-growth war.

The v1 live rule is therefore: do not split live debt by default. Either the spender creates a valid bounded debt allocation, or the entire descendant lineage is blocked by a lineage lock referenced to the conserved deficit.

SPEC 11.2

Debt carriers

A debt carrier is an explicitly eligible UTXO carrying a deficit. For a deficit D and a carrier of S sats:

ed = ceilLogTenRatio(D, S).

The allocation is valid only if:

S ≥MIN_DEBT_CARRIER_SATS;

ed ≤MAX_DEBT_EXPONENT;

the number of debt carriers per position remains bounded;

the sum of allocated deficits equals the remaining deficit;

no output becomes clean through an invalid declaration.

The conservative v1 recommendation is MAX_DEBT_EXPONENT = 0, so S ≥D. A debt of 40000000 units cannot be pushed onto an output of 546 sats.

SPEC 11.3

Lineage locks

If a dirty or degraded position is spent without a valid bounded allocation, the indexer creates:

LineageLock {
  lock_id
  deficit_id
  root_spend_txid
  remaining_amount
  status
}

All descendants reference blocked_by = lock_id. This does not mean that every output owes the entire deficit. It means that it descends from unresolved debt and cannot be admitted as clean backing.

SPEC 11.4

Recovery

A lineage lock must not become a griefing weapon. Three recovery paths exist: 1. Full settlement. Anyone can pay the remaining deficit via the canonical route; if the deficit falls to zero, the lock is settled.

2. Explicit separation. A user who has merged clean value with locked value can separate the clean value from the blocked fragment without paying someone else's entire debt.

3. Bounded assumption. A user can create an eligible debt carrier that assumes the remaining deficit and converts the large lock into compact debt.

Invariant 6 (Anti-grief). Dirty dust does not block an address, a wallet, a person, or unrelated UTXOs. It blocks only protocol admission of outputs containing that lineage, and mixed clean value must be recoverable through valid separation.

SPEC 12

Settlement

SPEC 12.1

Reservations

A reservation asks the protocol to assign open claims to an open deficit:

{"p":"pumpologia","v":1,"op":"reserve_settlement",

"deficit":"DEFICIT_ID","amt":"400"} It is valid if the deficit exists, is open, belongs to the debtor actor, if the amount is positive and less than or equal to the open deficit, and if enough unassigned claim capacity exists.

The routing order must be deterministic. The prototype sorts by claim_id; the final version should favor Bitcoin evidence: block height, transaction index, OP_RETURN index, then txid.

SPEC 12.2

Payment

A settlement is a Bitcoin transaction that pays the exact route outputs, in the assigned order, ignoring OP_RETURN outputs for matching:

{"p":"pumpologia","v":1,"op":"settle",

"reservation":"RESERVATION_ID"} If the payment is accepted, the indexer:

creates a deterministic payment record;

reduces the reservation's open amount;

reduces the open amounts of the routed claims;

reduces the deficit's open amount;

restores the debtor carrier's recognized proof by the paid amount;

reduces the carrier's debt;

marks the lineage as restored if the deficit reaches zero.

Bitcoin does not need to understand claims. It proves that the sats were sent to the expected scripts. Pumpologia recognizes that proof as settlement.

SPEC 13

Oracles

The prototype uses a fixture-v0 oracle profile. Prices are indexed by profile and block height, as integers with an explicit scale. A missing price rejects the opening. For live operation, the specification must define:

the final oracle profile identifier;

the source and verification of price extraction;

the behavior when data is missing at entry, exit, expiry, or settlement;

the price scale and rounding rules;

resistance to timestamp manipulation and reorgs.

This white paper proposes treating the oracle profile as part of Θ.

Changing the oracle, scale, or fallback changes the protocol and therefore must be versioned.

SPEC 14

State roots and reorgs

SPEC 14.1

State commitment

A fixture state root is:

rh = SHA256(canonicalJson(σh)).

The canonical input includes protocol id, version, block height, oracle profile id, actor balances, positions, carrier states, lineage edges, lineage locks, trades, PnL results, claims, deficits, settlement reservations, routes, assigned amounts, and payments. Maps are serialized as arrays sorted by stable identifier; outpoints as txid:vout; integers in decimal; no floats.

SPEC 14.2

Rollback

A rollback to height H is valid only if a checkpoint exists. The indexer restores all fields from the snapshot, truncates the event log, discards higher checkpoints, and returns the discarded events and the restored root. Rollback is control-plane, not a canonical protocol event.

SPEC 15

Adversarial analysis

SPEC 15.1

Debt fragmentation

Attack. A loser fragments a degraded carrier into thousands of dust outputs to force the indexer to track debt per output.

Defense. Without a valid bounded allocation, a single lineage lock is created. Descendants are blocked by the lock, but the debt remains a single object. Protocol admission is refused; live state remains bounded.

SPEC 15.2

Dirty-clean mixing

Attack. An adversary merges dirty value with clean value, then claims that the output is clean because the debt has been diluted.

Defense. The output becomes mixed or mixed locked. The clean value is not destroyed, but direct mint/trade is blocked. Explicit separation is required.

SPEC 15.3

Dust griefing

Attack. Send small dirty outputs to innocent users to contaminate their wallets.

Defense. The protocol blocks neither addresses, wallets, nor unrelated UTXOs. It blocks only outputs containing the lineage. Mixed clean sats can be recovered through separation.

SPEC 15.4

Rounding attack

Attack. Split a large debt into many outputs to make fractions disappear through rounding.

Defense. Proof atoms and deficit atoms are preserved. The largest-remainder method guarantees that child sums equal parent sums.

SPEC 15.5

Invalid allocation laundering

Attack. Publish an allocate or separate message that moves the debt to an output that is too small, declares dirty value as clean, or omits part of the deficit.

Defense. The allocation is accepted only if all inputs/outputs exist, conservation is exact, carrier thresholds are respected, and no dirty component becomes clean without settlement. Otherwise, lock or quarantine.

SPEC 15.6

Oracle ambiguity

Attack. Exploit a missing price, an ambiguous scale, or a poorly specified limit condition.

Defense. The oracle profile is a versioned component of Θ. A transaction that requires a missing price is rejected or remains pending according to an explicit rule. Trigger comparisons use integers.

SPEC 15.7

Reorg inconsistency

Attack. Two indexers diverge after a reorg because one retains events from an abandoned branch.

Defense. Checkpoints and rollback rules restore a complete state and truncate the event log. The state root provides proof of deterministic replay.

SPEC 16

Perps and futures

Pumpologia can evolve toward perps and futures because two forms of collateral power exist: 1. the sats present in UTXOs; 2. future sats represented by proof surplus and victory claims.

A derivative position can be represented as:

Position {
  actor_id
  backing_outpoint
  side: long | short
  instrument: spot | perp | future
  notional
  entry_oracle_price
  maintenance_rule
  proof_backing
  sats_backing
  effective_backing
  leverage_factor
  expiration_height? // futures
  funding_rule?      // perps
}

The difference from a custodial platform is decisive: Pumpologia does not need to seize BTC directly. Winners obtain surplus/claims; losers lose recognition and receive deficits, dirty lineage, or locks. Settlement reintroduces Bitcoin proof when payments are made.

Before going live, these markets require explicit rules:

initial margin and maintenance margin;

max leverage by state_class;

haircut on proof surplus and claim liquidity;

oracle profile and settlement price rule;

funding interval for perps;

expiry height for futures;

liquidation or degradation rule;

loss bounds and settlement waterfall.

SPEC 17.1

Live MVP

The first live protocol should deliberately remain conservative:

trade as the sole entry point for creation and continuation;

settle as a verified Bitcoin payment;

recover or allocations only for dirty/mixed/locked lineage;

active spot directional trades;

overcollateralization by sats enabled;

proof surplus visible but haircut set to zero for live risk;

no floats, no implicit clean admission, no unbounded debt components;

mandatory state roots and test vectors.

SPEC 17.2

Missing specifications

The corpus identifies three critical deliverables before independent implementation: 1. proof-balances.md: availability, locked amounts, reserved amounts, actor-level versus UTXO-level proof.

2. upgrades.md: version activation, compatibility, deprecation, rereading old messages.

3. machine-readable test vector format, with the first complete Alice/Bob scenario.

SPEC 18

Canonical Alice/Bob test vector

The first test vector should fix the end-to-end semantics: 1. Alice creates 1000 $proof from 1000 sats, or directly opens a derivative position backed by 1000 sats.

2. Bob creates 1000 $proof from 1000 sats, or directly opens a symmetric position.

3. Alice opens a long.

4. Bob is on the losing side.

5. The oracle price moves in Alice’s favor.

6. Alice receives a claim of 400.

7. Bob falls to 600 of recognized capacity and 400 of deficit.

8. Bob reserves a settlement for 400.

9. Bob pays Alice via the assigned route.

10. Bob returns to clean capacity.

The vector must include transactions, blocks, oracle prices, messages, events, state roots, and expected rejection cases.

SPEC 19

Discussion: market structure

Traditional markets rely on intermediaries that keep the accounts, custody the assets, liquidate losers, and promise that the internal state is correct. Smart-contract protocols move part of this logic on-chain, at the cost of VM constraints, contractual attack surface, and often immobilized collateral.

Pumpologia proposes a third path: Bitcoin remains the registry of ownership and payment; market state is reconstructed publicly; the primary sanction is the loss of recognition.

This architecture is less spectacular than a contract that automatically seizes funds. It is also closer to the cypherpunk ethic: publish proofs, minimize trust, keep exit possible.

The vision is a market where accounts are not maintained by an institution, but by a replay function. A winner does not need a badge granted by an exchange: they possess a claim derived from history. A loser cannot be forced by Bitcoin to pay, but they cannot ask the protocol to forget. Clean capital remains clean; debt remains debt; complexity does not erase memory.

SPEC 20

Limits and open questions

This white paper does not complete the specification. It sets the direction. The following points remain to be formalized:

final PnL formula, price scales, and rounding;

matching model or settlement against a pool/aggregate;

final oracle profile and verification procedure;

cancellation of limit orders;

thresholds MIN_PROTOCOL_CARRIER_SATS, MIN_DEBT_CARRIER_SATS, MAX_DEBT_EXPONENT;

max lock ids per UTXO and reversible compression;

exact handling of fees in carrier continuations;

version activation and state migration;

confidentiality of strategies, since public messages expose intents;

warning UX for dirty-clean merges;

economic consequences if deficits remain unsettled for a long time.

SPEC 21

Conclusion

Pumpologia is a simple proposition at its core: that Bitcoin history, read through public rules, can produce market state without a custodian. Transactions prove ownership and payments. Messages express intent. Oracles set prices.

Indexers derive claims, deficits, exponents, locks, and settlements. Recognition becomes a function, not a favor.

The promise is not that all losers will pay. No non-custodial protocol should lie about that limit. The promise is more robust: debt cannot be laundered through complexity, clean capital cannot be destroyed by dust griefing, and backing power can be measured without conflating victory, debt, and possession.

In a world where finance is often opaque by design, a system that turns public history into public state is already a break from the norm. If the final specs remain faithful to the invariants of conservation, boundedness, and deterministic replay, Pumpologia can become a Bitcoin-native market machine: austere, verifiable, implacable, and free.

A

Message schemas v0

// Fresh market open
{"p":"pumpologia","v":1,"op":"trade","action":"open",

"side":"long","out":0,"amt":"600","order":"market"}

// Limit open
{"p":"pumpologia","v":1,"op":"trade","action":"open",

"side":"long","out":0,"amt":"600","order":"limit", "limit_price":"65000","lock":"144"}

// Market close
{"p":"pumpologia","v":1,"op":"trade","action":"close",

"in":0,"out":0,"trade":"TRADE_ID","order":"market"}

// Limit close
{"p":"pumpologia","v":1,"op":"trade","action":"close",

"in":0,"out":0,"trade":"TRADE_ID","order":"limit", "limit_price":"70000","lock":"144"}

// Reservation
{"p":"pumpologia","v":1,"op":"reserve_settlement",

"deficit":"DEFICIT_ID","amt":"400"}

// Settlement
{"p":"pumpologia","v":1,"op":"settle",

"reservation":"RESERVATION_ID"}

// Recovery / bounded allocation sketch
{"p":"pumpologia","v":1,"op":"allocate","in":0,

"proof_outputs":[{"out":0,"proof":"60000000"}], "debt_outputs":[{"out":1,"deficit":"DEFICIT_ID", "amount":"40000000"}]}

B

Event glossary

Event Meaning POSITION_OPENED Fresh trade derives position and implicit mint.

MINT_ACCEPTED Prototype compatibility event for explicit mint.

TRADE_OPENED Trade accepted or pending according to order type.

TRADE_CLOSED Exit price fixed and trade closed.

PNL_COMPUTED Integer PnL computed from executed prices.

CLAIM_CREATED Positive PnL creates open claim.

DEFICIT_CREATED Negative PnL creates open deficit.

LINEAGE_DEGRADED Carrier or descendants marked dirty/degraded.

RESERVATION_CREATED Debtor requests canonical settlement route.

RESERVATION_ASSIGNED Claims assigned to route entries.

SETTLEMENT_PAID Bitcoin payment matches assigned route.

PROOF_BALANCE_CHANGED Recognized proof changes.

EXPONENT_CHANGED Backing or risk exponent recomputed.

LINEAGE_RESTORED Deficit reaches zero and lineage no longer fails admission.

C

Consensus-grade invariants checklist

1. OP_RETURN expresses intent, never spend authority.

2. Bitcoin inputs prove spend lineage.

3. Bitcoin outputs define carriers and payment evidence.

4. Protocol state never comes from wallet-local assumptions.

5. No trade spends more recognized proof than available.

6. No claim exists without winning PnL.

7. No deficit exists without losing PnL.

8. Every claim amount is matched by deficit amount under the chosen settlement model.

9. No reservation assigns already assigned or settled claim capacity.

10. No settlement restores capacity without exact route payment.

11. Debt is conserved until settlement.

12. Dirty or locked lineage cannot mint as clean by omission.

13. Clean value is not globally destroyed by dirty dust.

14. Tiny dirty outputs cannot carry usable positive proof.

15. Mixed outputs cannot trade directly under recommended v1 policy.

16. Debt carriers are bounded by exponent and count.

17. Lineage locks reference one deficit object, not one debt per descendant.

18. All consensus math is integer-only.

19. State roots serialize sorted stable identifiers, not process-local order.

20. Reorg rollback restores snapshots and truncates canonical event logs.

REF

References

[1] Pumpologia Specs README. Protocol specification map, missing specs, invariants, and Alice/Bob test vector target. Internal draft, 2026.

[2] Pumpologia. Message Format Draft. Internal draft, 2026.

[3] Pumpologia. Minimal Transaction Model Draft. Internal draft, 2026.

[4] Pumpologia. Trading Draft. Internal draft, 2026.

[5] Pumpologia. Actor Resolution. Internal draft, 2026.

[6] Pumpologia. PnL Draft. Internal draft, 2026.

[7] Pumpologia. Claims Draft. Internal draft, 2026.

[8] Pumpologia. Deficits Draft. Internal draft, 2026.

[9] Pumpologia. Settlement Reservations Draft. Internal draft, 2026.

[10] Pumpologia. Settlement Payments Draft. Internal draft, 2026.

[11] Pumpologia. Exponent, Proof Collateral, Leverage, Perps, and Futures Specification Draft.

Internal draft, 2026.

[12] Pumpologia. Exponent State Accounting Specification Draft. Internal draft, 2026.

[13] Pumpologia. Taint Accounting Specification Draft. Internal draft, 2026.

[14] Pumpologia. Bounded Debt Carriers and Lineage Locks. Internal draft, 2026.

[15] Pumpologia. Lineage Lock Recovery Specification Draft. Internal draft, 2026.

[16] Pumpologia. Oracle Profile Draft. Internal draft, 2026.

[17] Pumpologia. State Root. Internal draft, 2026.

[18] Pumpologia. Reorg Rollback. Internal draft, 2026.

[19] Pumpologia. Bitcoin Transaction Templates and Exponent Systems Draft. Internal draft, 2026.