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.
00memory

Bitcoin orders, Pumpologia remembers

The protocol reads Bitcoin evidence, derives market recognition, then exposes consequences that markets can price.

global circuit873144 → claim/deficit → settle

00

block

01

message

02

replay

03

state

04

market

05

next tx

shared scenario poolPnL becomes paired memory
Alice

btc possession

1000 sats

recognized capacity

1400

proof / claim

claim 400

Bob

btc possession

1000 sats

recognized capacity

600

deficit / memory

deficit 400

authority lanesblock 873144

Bitcoin

orders inputs, outputs, OP_RETURN, finality

Pumpologia

replays lineage and derives recognized memory

Market

prices clean capacity, claims, deficits, routes

tx replay circuitsettle
canonical terminal
bitcoin-tx$input: Bob lineage
bitcoin-tx$OP_RETURN: settle 250
bitcoin-tx$output: Alice route
canonical terminal
itx$ITX: reduce debt
itx$derive actor/carrier
itx$mutate canonical state
itx$emit market signal

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.

01premise

Three layers of authority

Bitcoin gives order, Pumpologia gives recognition, and the market gives price; each lane stays inside its authority.

global circuitorder → memory → price

00

block

01

message

02

replay

03

state

04

market

05

next tx

authority lanesblock 873144

Bitcoin

orders inputs, outputs, OP_RETURN, finality

Pumpologia

replays lineage and derives recognized memory

Market

prices clean capacity, claims, deficits, routes

Bitcoin order
Pumpologia memory
market price
problem resolver loopattack becomes sterile

problem

Bitcoin asked to trade

protocol rule

Bitcoin only orders

result

market prices memory

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.

02recognition

Recognition, not custody

BTC possession can remain unchanged while protocol recognition, claim power, and deficit memory change.

global circuitsame BTC / different recognition

00

block

01

message

02

replay

03

state

04

market

05

next tx

shared scenario poolPnL becomes paired memory
Alice

btc possession

1000 sats

recognized capacity

1400

proof / claim

claim 400

Bob

btc possession

1000 sats

recognized capacity

600

deficit / memory

deficit 400

possession vs recognitionbefore → after
Alice BTC10001000
Alice capacity10001400
Bob BTC10001000
Bob capacity1000600

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.

03grammar

Minimal OP_RETURN grammar

Tiny public messages become rich state only through lineage, block order, and canonical replay.

global circuitminimal OP_RETURN expands in replay

00

block

01

message

02

replay

03

state

04

market

05

next tx

tx replay circuittrade
canonical terminal
bitcoin-tx$input: carrier A
bitcoin-tx$OP_RETURN: short 1200
bitcoin-tx$block price: 66,000
canonical terminal
itx$ITX: close + residual
itx$derive actor/carrier
itx$mutate canonical state
itx$emit market signal
derived fieldsbefore → after
user messageshort 1200negative delta
lineagespent carrieractor + open lots
block orderheight 873144entry / close price
stateno ids suppliedlot, claim, deficit handles

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.
04id-less edge

No semantic economic IDs

The user spends lineage and publishes intent. Handles are forged after replay, not supplied at the protocol edge.

global circuithandles forged after replay

00

block

01

message

02

replay

03

state

04

market

05

next tx

canonical terminal
unsafe$semantic ids rejected
unsafe$trade_id from user
unsafe$claim_id from user
unsafe$deficit_id from user
unsafe$reservation_id from user
canonical terminal
valid$derived handles
valid$position_handle
valid$lot_handle
valid$claim_handle
valid$route_handle
problem resolver loopattack becomes sterile

problem

spoofed economic pointer

protocol rule

spend lineage only

result

derive handle

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"}
05deltas

Long and short are directional deltas

A larger opposite delta closes the current exposure, realizes PnL, and opens the residual side without a close opcode.

global circuitlong 1000 + short 1200

00

block

01

message

02

replay

03

state

04

market

05

next tx

concrete trade propagationblocks → protocol → live pnl
tradingview lightweight chart

Alice long meets Bob short — replayed as trade state

long / short / residual

active replay

open long 1000 @ 65k

block 87314065,000

Alice: open long 1000 @ 65k

mark65,260

oracle: price discovery while lot stays open

mark65,580

market: unrealized pnl accumulates

block 87314466,000

Bob: short 1200 @ 66k crosses Alice

matching65,880

protocol: close 1000, open residual short 200

state root65,640

indexer: mint claim 400 and deficit 400

Alice PnL

+400

Bob PnL

-400

residual

short 200

state

claim

#873140Alice spends carrier Along 1000 @ 65kopen lot: +1000 long
#873144Bob spends carrier Bshort 1200 @ 66kmatches Alice lot
#873144same ordered blockclose 1000, open short 200Alice +400 / Bob -400
#873145state root commitsclaim + deficit writtenAlice claim 400; Bob deficit 400

Alice btc

1000 sats

Alice proof

claim 400

Bob btc

1000 sats

Bob memory

deficit 400

signed delta boardbefore → after
open exposure+1000 long0 consumed
incoming delta-1200 short-200 residual
realized pnl0Alice +400 / Bob -400
live pnl tapeclaim minted on realization
tradingview lightweight chart

Alice long meets Bob short — replayed as trade state

long / short / residual

active replay

open long 1000 @ 65k

block 87314065,000

Alice: open long 1000 @ 65k

mark65,260

oracle: price discovery while lot stays open

mark65,580

market: unrealized pnl accumulates

block 87314466,000

Bob: short 1200 @ 66k crosses Alice

matching65,880

protocol: close 1000, open residual short 200

state root65,640

indexer: mint claim 400 and deficit 400

Alice PnL

+400

Bob PnL

-400

residual

short 200

state

claim

65,000alice 0bob 0entry
65,400alice +160bob -160mark
65,700alice +280bob -280mark
66,000alice +400bob -400realize

realized consequence

+400

Alice proof-backed claim

Bob deficit mirrors the claim

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.
06canonical lots

FIFO lots without user targeting

The user expresses direction and amount; the protocol consumes canonical lots attached to the spent lineage.

global circuitshort 700 consumes FIFO

00

block

01

message

02

replay

03

state

04

market

05

next tx

lot 0long 400
closed
lot 1long 600
long 300

Incoming `short 700` consumes the oldest lot first, then partially consumes the next one. The user never supplies a lot id.

FIFO conveyorbefore → after
lot 0long 400closed
lot 1long 600long 300
user targetnonecanonical oldest-first

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`.

07market / limit

Market now, limit under lock

Market intents execute at deterministic inclusion-block price; limit intents travel through a lock window until trigger or expiry.

global circuitmarket now / limit lock

00

block

01

message

02

replay

03

state

04

market

05

next tx

tradingview lightweight chart

Limit intent locks only when the market touches the rule

limit / lock / expiry

active replay

sell claim 300 if price >= 65k

intent65k

Alice: sell claim 300 if price >= 65k

miss64.94k

market: price moves but does not execute

waitopen

protocol: no custody and no hidden state

wait64.26k

protocol: limit remains explicit

touch65k

market: limit price touched; lock starts

lock+144

indexer: availability window becomes tradable

intent

sell 300

limit

65k

lock

144 blocks

route

derived

tx replay circuittrade
canonical terminal
bitcoin-tx$input: carrier A
bitcoin-tx$OP_RETURN: short 1200
bitcoin-tx$block price: 66,000
canonical terminal
itx$ITX: close + residual
itx$derive actor/carrier
itx$mutate canonical state
itx$emit market signal
execution pathbefore → after
marketincluded at 873144price 66,000
limitlimit 65,000 lock 144pending until trigger/expiry

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.

08claims / deficits

Paired consequences

Realized PnL creates a proof-backed claim for the winner and mirrored deficit or reduced recognition for the loser.

global circuitPnL mirrored into claim/deficit

00

block

01

message

02

replay

03

state

04

market

05

next tx

live pnl tapeclaim minted on realization
tradingview lightweight chart

Alice long meets Bob short — replayed as trade state

long / short / residual

active replay

open long 1000 @ 65k

block 87314065,000

Alice: open long 1000 @ 65k

mark65,260

oracle: price discovery while lot stays open

mark65,580

market: unrealized pnl accumulates

block 87314466,000

Bob: short 1200 @ 66k crosses Alice

matching65,880

protocol: close 1000, open residual short 200

state root65,640

indexer: mint claim 400 and deficit 400

Alice PnL

+400

Bob PnL

-400

residual

short 200

state

claim

65,000alice 0bob 0entry
65,400alice +160bob -160mark
65,700alice +280bob -280mark
66,000alice +400bob -400realize

realized consequence

+400

Alice proof-backed claim

Bob deficit mirrors the claim

shared scenario poolPnL becomes paired memory
Alice

btc possession

1000 sats

recognized capacity

1400

proof / claim

claim 400

Bob

btc possession

1000 sats

recognized capacity

600

deficit / memory

deficit 400

paired consequencebefore → after
Alicewinnerclaim +400
Bobloserdeficit 400
marketsame BTCdifferent 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.

09settlement

Settlement by derived route

A settle message pays the canonical route derived from deficits, claims, and Bitcoin outputs; no creditor negotiation is needed.

global circuitsettle 250 closes part of debt

00

block

01

message

02

replay

03

state

04

market

05

next tx

pay debt examplesettle 250 by derived route
tradingview lightweight chart

Settlement route pays down proof claim

settle 250

active replay

Alice claim 400 / Bob deficit 400

beforeclaim 400

ledger: Alice claim 400 / Bob deficit 400

routeroute

Bob: derive Alice settlement handle

bitcoin250

Bob: broadcast settle 250 output

verifyvalid

indexer: output matches derived route

mutate150

protocol: claim and deficit reduce together

after850

ledger: Bob capacity restored to 850

claim

400 → 150

deficit

400 → 150

settled

250

capacity

600 → 850

before tx

Alice claim

400

Bob deficit

400

Bob capacity

600

canonical terminal
pumpologia@replay$Bob broadcasts settle 250
pumpologia@replay$Bitcoin output pays route
pumpologia@replay$indexer verifies required output
pumpologia@replay$claim and deficit reduce together
after replay

Alice claim

150

Bob deficit

150

Bob capacity

850

tx replay circuitsettle
canonical terminal
bitcoin-tx$input: Bob lineage
bitcoin-tx$OP_RETURN: settle 250
bitcoin-tx$output: Alice route
canonical terminal
itx$ITX: reduce debt
itx$derive actor/carrier
itx$mutate canonical state
itx$emit market signal
frontier updatebefore → after
Alice claim400150
Bob deficit400150
Bob capacity600850
problem resolver loopattack becomes sterile

problem

stale competing settlement

protocol rule

Bitcoin order updates frontier

result

recompute or fail

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.

10availability

Publish availability, do not ask for liquidity

A holder exposes proof or claim availability under a lock window; the market reads the signal without a custody pool.

global circuitsell 300 lock 144

00

block

01

message

02

replay

03

state

04

market

05

next tx

tx replay circuitsell
canonical terminal
bitcoin-tx$input: Alice claim
bitcoin-tx$OP_RETURN: sell 300 lock 144
bitcoin-tx$output: availability marker
canonical terminal
itx$ITX: lockbook signal
itx$derive actor/carrier
itx$mutate canonical state
itx$emit market signal
claim bid depthavailability ask
canonical terminal
pumpologia@replay$claim availability creates an order-book-like signal
pumpologia@replay$market prices proof, lock window, and settlement route
pumpologia@replay$no custody pool is required
sell lock144 blocks
h
+24
+72
+120
+144
expire
availability pathbefore → after
claim frontierAlice 400300 available
custodynot transferredavailability signal only
lockopenexpires at +144

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.
11oracle

Recovery rule, not mutable feed

At constant profile, honest indexers recover the same price from the same block, scaling rules, and finality policy.

global circuitsame profile → same price

00

block

01

message

02

replay

03

state

04

market

05

next tx

authority lanesblock 873144

Bitcoin

orders inputs, outputs, OP_RETURN, finality

Pumpologia

replays lineage and derives recognized memory

Market

prices clean capacity, claims, deficits, routes

three indexerssame recovered price
canonical terminal
pumpologia@replay$same block
pumpologia@replay$same extraction profile
pumpologia@replay$same integer scaling
pumpologia@replay$price: 65000
indexer convergencebefore → after
idx-aprofile P66,000
idx-bprofile P66,000
wrong profileprofile Qquarantined

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
12exponent

Exponent is positive backing power

The exponent compresses beneficial backing from surplus proof, overcollateralized sats, restoration, and explicit risk-gated future claims.

global circuitpositive backing power

00

block

01

message

02

replay

03

state

04

market

05

next tx

surplus
overcollat
restored
future sats
e +

clean base

e=0

recognized backing

e=+2

deficit / degraded

separate risk

Positive exponent states come from backing power. Loser degradation is not encoded as a better exponent.

e reactor inputsbefore → after
overcollat satsbasee contribution
proof surplusclaim historybacking power
loser deficitriskseparate lane
base e=0positive backing
surplus proof compoundsrisk remains explicit

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.
13ITX

Bitcoin transaction interpreted as ITX

An ITX is the protocol interpretation of Bitcoin inputs, outputs, OP_RETURN, and block order, not another transaction layer.

global circuitBitcoin tx decoded as ITX

00

block

01

message

02

replay

03

state

04

market

05

next tx

tx replay circuitsettle
canonical terminal
bitcoin-tx$input: Bob lineage
bitcoin-tx$OP_RETURN: settle 250
bitcoin-tx$output: Alice route
canonical terminal
itx$ITX: reduce debt
itx$derive actor/carrier
itx$mutate canonical state
itx$emit market signal
ITX formsbitcoin tx, interpreted consequence
ITX-CONTINUE

continue recognized lineage

ITX-SPLIT

allocate without multiplying rights

ITX-MERGE

consolidate without erasing debt

ITX-SEPARATE

isolate clean from dirty

ITX-LOCK

invalid allocation blocked

ITX-SETTLE

reduce debt and restore

ITX-RECOVER

repair spent lineage

bitcoin transactionpumpologia ITX
input lineage
actor / carrier
outputs
split / merge / payment
OP_RETURN
intent
block order
race resolution
state root
canonical handle
problem resolver loopattack becomes sterile

problem

tx is just bytes

protocol rule

interpret inputs/outputs/order

result

ITX-SETTLE

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.
14fragmentation

Outputs can split, rights cannot multiply

More Bitcoin outputs cannot manufacture more recognized rights; debt is conserved or the lineage locks.

global circuitmany outputs / conserved rights

00

block

01

message

02

replay

03

state

04

market

05

next tx

more outputssame recognized rights
debt object conserved
dust conservationbefore → after
Bitcoin outputs1 debt lineage8 dust outputs
recognized rights400 debt400 conserved
invalid allocationambiguoussingle lineage lock
problem resolver loopattack becomes sterile

problem

dust griefing

protocol rule

bounded allocation or lock

result

no new rights

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.

15state roots

Same replay, same state root

Independent indexers converge because they replay the same evidence with deterministic ordering, math, and serialization.

global circuitevent handles → root

00

block

01

message

02

replay

03

state

04

market

05

next tx

canonical inputsstate root
00 / chain
01 / rules
02 / oracle profile
03 / tx order
04 / integer math
05 / canonical serialization
06 / root 0x9f3a
canonical terminal
indexer a$replay events
indexer a$canonical serialize
indexer a$root: 0x9f3a
canonical terminal
indexer b$replay events
indexer b$canonical serialize
indexer b$root: 0x9f3a
canonical terminal
indexer c$replay events
indexer c$canonical serialize
indexer c$root: 0x9f3a
chain
rules
oracle
order
integer math
serialization
root materialbefore → after
eventstx ordercanonical handles
mathinteger inputsstable bytes
rootidx a/b/c0x9f3a

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.
16markets

Markets form around recognition

Clean lineage, claims, restoration, proof surplus, capacity scarcity, and reputation become connected recognition markets.

global circuitmemory becomes markets

00

block

01

message

02

replay

03

state

04

market

05

next tx

market pressurerecognition premium
clean premium
claim liquidity
restoration
proof leverage
capacity scarcity
reputation
perps / futures pathsexplicit risk rules
clean lineage
claim liquidity
proof surplus
future-sat risk
market prices memory
recognition marketsbefore → after
clean lineagescarcepremium
claimproof-backedliquidity
deficitreduced capacityrestoration demand

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.
17security

Attack surfaces become sterile

Canonical replay routes spoofing, washing, stale routes, double payment, oracle ambiguity, and drift into no-recognition or recomputation.

global circuitattack packet loses meaning

00

block

01

message

02

replay

03

state

04

market

05

next tx

semantic ids

removed

actor ambiguity

lineage

utxo washing

locked

double payment

route

stale route

recheck

dust split

conserved

oracle drift

profile

root drift

serialization

problem resolver loopattack becomes sterile

problem

semantic ID spoofing

protocol rule

no user IDs

result

sterile

problem resolver loopattack becomes sterile

problem

double pay route

protocol rule

frontier after Bitcoin order

result

recompute/fail

problem resolver loopattack becomes sterile

problem

state-root drift

protocol rule

canonical serialization

result

same root

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.

18appendices

Readable thesis, strict appendices

The body explains inevitability; appendices prove determinism with validation, fixtures, test vectors, and state roots.

global circuitbody scenario → appendix proof

00

block

01

message

02

replay

03

state

04

market

05

next tx

proof packappendices prove determinism
appendix A / validation
appendix B / ITX rules
appendix C / state-root serialization
appendix D / test vectors
appendix E / rollback mechanics
appendix F / indexer fixtures
tx replay circuitsettle
canonical terminal
bitcoin-tx$input: Bob lineage
bitcoin-tx$OP_RETURN: settle 250
bitcoin-tx$output: Alice route
canonical terminal
itx$ITX: reduce debt
itx$derive actor/carrier
itx$mutate canonical state
itx$emit market signal
proof packbefore → after
scenariosettle 250fixture
fixtureeventstest vector
test vectorbytesstate root

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.

19conclusion

Only evidence, replay, recognition

The complete loop remains simple: long, short, settle, sell, recover; no hidden custody, no mutable history.

global circuitlong → short → settle → recover → root

00

block

01

message

02

replay

03

state

04

market

05

next tx

shared scenario poolsettle 250 restores capacity
Alice

btc possession

1000 sats

recognized capacity

1150

proof / claim

claim 150

Bob

btc possession

1000 sats

recognized capacity

850

deficit / memory

deficit 150

authority lanescomplete recap

Bitcoin

orders inputs, outputs, OP_RETURN, finality

Pumpologia

replays lineage and derives recognized memory

Market

prices clean capacity, claims, deficits, routes

canonical terminal
pumpologia@replay$long 1000
pumpologia@replay$short 1200
pumpologia@replay$claim 400 / deficit 400
pumpologia@replay$settle 250
pumpologia@replay$recover when evidence permits
pumpologia@replay$serialize root
extra visual modules for trimmingall circuits kept available
bitcoin block#873144
873144

ordered evidence

prev hash0x440e...
merkle root0x9f3a...root
timestamp0x442e...
bits0x443e...
nonce0x444e...
tx treederived root
tx a inputs
tx b op_return
tx c outputs
tx d lineage
hash ab
hash cd
merkle root → state input
bitcoin ordering surfaceconfirmed evidence

candidate +4

intent band

clean

6,633 intents

~44 min

candidate +3

claim band

sell

7,001 intents

~33 min

candidate +2

settle band

route

4,533 intents

~22 min

candidate +1

recover band

repair

3,934 intents

~11 min

952362

0.03 BTC

ordered txs

finality clock

952361

0.03 BTC

ordered txs

finality clock

952360

0.03 BTC

ordered txs

finality clock

952359

0.03 BTC

ordered txs

finality clock

transaction-fee pattern adaptedprotocol admission bands
observe
intent
settle
recover

no recognition

0

admit lineage

1

route urgency

2

repair priority

3

incoming intentsblock-time bursts

minimum

intent

queued

104k

usage

263MB

evidence

Bitcoin order

inputs / outputs / OP_RETURN

replay

same rules

integer math / finality

recognition

market power

claims / capacity / routes

restrained magic layernot decoration: proof signals
visible motion = evidence becoming recognition
whitepaper equationorder → memory → price
bitcoin
orders

evidence

inputs, outputs, OP_RETURN, height, finality

pumpologia
replays

recognition

lineage, deltas, claims, deficits, routes

market
prices

memory

clean premium, claim liquidity, restoration demand

possessionrecognition delta
alice btc possession100
alice recognized capacity140
bob btc possession100
bob recognized capacity60

Bitcoin possession can remain flat while protocol recognition reprices the lineage.

possession vs recognitionsame BTC, different protocol power
alice1000 sats

before

1000

wins 400

1400 + claim

bob1000 sats

before

1000

loses 400

600 + deficit

The coins are not seized by the protocol. The public memory changes what the lineage is recognized as able to do.

Alice claim

+400

Bob deficit

400

Alice recognized capacity

1400

Bob recognized capacity

600

BTC possession row: unchanged
recognition row: updated
clean lineageclaim liquidityrestoration demandproof surpluscapacity scarcityhistory reputationclean lineageclaim liquidityrestoration demandproof surpluscapacity scarcityhistory reputationclean lineageclaim liquidityrestoration demandproof surpluscapacity scarcityhistory reputation
utxo lineageno semantic ids
utxo parent
spend carrier
op_return intent
derived state
canonical terminal
pumpologia@replay$spend lineage
pumpologia@replay$read public commitment
pumpologia@replay$derive affected economic state
pumpologia@replay$serialize deterministic state root
edge decoderminimal intent, derived state
long 1000positive delta / append or fresh lotno position_id
short 400negative delta / consume opposite lotsno trade_id
settle 400pay canonical debt frontierno deficit_id
sell 300 lock 144publish claim/proof availabilityno claim_id
recoverrepair lineage being spentno actor_id
lineage gogglesclassification map
allcleanclaimdeficitlocked
clean
claim
deficit
locked
route
recover
mixed
clean
claim
deficit
locked
route
recover
mixed
minimal fieldsderived state
op
amount
limit
lock
derived by replay
long
1000
position / lot
short
400
close or residual
settle
400
debt frontier
sell
300
144
claim frontier
recover
lineage repair
block detail adaptedevidence inspector
hash000000...9f3a
timestampheight ordered
op_returnpumpologia long 1000
weightcarrier spend
fee spanadmission band
state root0x9f3a...root
lineagerecognized
transaction canvas
op_return cell selected
state root projection
tx propagation across layerssame evidence, richer meaning

00 / bitcoin block

height 873145

txid 2f71...settle

output: Alice route 250

01 / protocol replay

actor: Bob lineage

op: settle 250

route handle derived

02 / state transition

claim 400 → 150

deficit 400 → 150

capacity 600 → 850

long sidenetshort side
short 1200 consumes long 1000 → residual short 200
directional deltano close op
1000
open long
1000
consume
200
residual short
200
net
oldest firstremaining lot
lot 0 / 400lot 1 consumed / 300lot 1 remains / 300
canonical terminal
pumpologia@replay$incoming: short 700
pumpologia@replay$close lot 0 entirely
pumpologia@replay$close 300 from lot 1
pumpologia@replay$leave lot 1 long 300
route circuitderive, pay, reduce
00 / actor
01 / deficit frontier
02 / claim frontier
03 / required outputs
04 / capacity restored
canonical terminal
pumpologia@replay$settle 400 spends lineage
pumpologia@replay$indexer derives route
pumpologia@replay$bitcoin outputs prove payment
pumpologia@replay$claims and deficits reduce together
fragmented lineagedebt conserved
400

single debt object

output a

bounded debt

output b

bounded debt

output c

bounded debt

dust tail

locked

reorg handlingfinality policy
seen
candidate
depth 2
depth 6
final
root
canonical terminal
pumpologia@replay$candidate events can roll back
pumpologia@replay$finality depth freezes ordering
pumpologia@replay$state root follows final evidence only
positive sourcese increases from backing
clean sats
overcollat
proof surplus
eligible future sats
canonical terminal
pumpologia@replay$e=0: clean base
pumpologia@replay$e>0: surplus backing power
pumpologia@replay$deficit/degraded remain separate risk fields
oracle lockboxprofile, not publisher
lock 0
same block
lock 1
certified extraction profile
lock 2
integer scaling
lock 3
finality policy
lock 4
immutable replay
border beamroot commitment
00 / event handle
01 / canonical sort
02 / integer amount
03 / serialized leaf
04 / state root
animated beam meshinterpreter path
block
tx
op_return
lineage
itx
recent transactions patternrecent ITX
txidopdeltastatus
9ee23b...938f2long+1000admitted
2fbf315...b74eeshort-400closed
2f71b0...2eddasettle400route
d33a0f...ba797sell300locked
eb564d...1d23drecoverlineagerepair
washing firewallcomplexity cannot mint recognition

split into dust

rights conserved

merge with clean

debt survives

invalid allocation

lineage lock

double claim payment

frontier recheck

clean
claim
deficit
locked
route
split
merge
recover
root
oracle
finality
market

neutral Bitcoin

no custody, no consensus change

public memory

replayable by independent indexers

market recognition

capacity, claims, deficits become priceable

simple edge

long / short / settle / sell / recover

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.