Skip to content

Whitepaper · Version 1.0 · October 2026

View as Markdown

A hamster-powered proof-of-work toychain on EthereumLink to this section

Squeektoshi, a hamster, runs on the WHEELY9000. Each time the wheel's magnet passes its sensor counts as one unit of work. Ethereum settles that work into Squeek blocks, and every completed block issues SQK to the Squeeks that share it.

In active development Squeekchain is still being built. Parts of this paper, staking in particular, describe designs that can change before they ship.

IntroductionLink to this section

Squeekchain turns a hamster's wheel into a public record on Ethereum. The WHEELY9000 counts each accepted passage of the wheel's magnet, groups the counts into ten-minute rounds, and signs them. The rounds are checked, settled on Ethereum and turned into progress toward Squeek blocks. Every completed block issues SQK, which Squeek owners can claim.

The system has one source of work, the WHEELY9000; one unit, an accepted magnet passage; one ledger, SqueekCore on Ethereum; and one token, SQK. Figure 1 follows one round of work from the wheel to a wallet.

Figure From wheel to wallet
  1. The wheel's magnet passes the sensor, and the WHEELY9000 saves the passage as one work unit.
  2. Work units collect in the current ten-minute round. When the round ends, the device saves its total.
  3. The device signs the round's upload with its Trust M chip. The Oracle checks the signature and accepts the round.
  4. The Reporter signs a batch of accepted rounds, and SqueekCore settles it on Ethereum.
  5. SqueekCore prices the round's work at the current difficulty and adds progress toward the next Squeek block.
  6. When a block completes, a checkpoint issues its 6,900 SQK into SqueekMining, shared by active power.
  7. A Squeek's owner claims its SQK to their wallet.

Work only moves one way, from the wheel to SqueekCore, and every SQK after the premine comes from completed blocks.

Only the WHEELY9000 records work, and only SqueekCore settles it. The website, the livestream and this paper show copies.

The parts and how they relateLink to this section

Each part of Squeekchain has a narrow job. Work moves along one path, from the device to SqueekCore, and every other surface reads copies of that path's records. A copy can be shown, cached or rebuilt, but it can't change the record it came from.

Figure Authority and copies

Select a part of the map to see its function. The table below lists every part.

Solid lines carry records with authority. Dashed lines carry copies, which can't change anything.

Part Function
WHEELY9000 Accepts magnet passages, closes ten-minute rounds and signs uploads with its Trust M chip
Oracle Checks each signed upload and keeps accepted rounds ready for settlement
Reporter Signs one exact batch of accepted rounds for SqueekCore
Relayer Pays the gas to submit a signed batch
SqueekCore Records settled work on Ethereum and turns it into Squeek blocks
SqueekMining Issues SQK for completed blocks and holds it for Squeeks
SqueekToken The SQK token, with a fixed lifetime cap
SqueekNFT Records who owns each Squeek
Staking Holds staked SQK and adds its power to the Squeek it backs
Keeper Calls the public checkpoint that turns settled blocks into SQK
Indexer, API, website and livestream Show confirmed copies of the records

Measuring workLink to this section

The WHEELY9000 has a magnet on the wheel and a Hall sensor beside it. A small controller, the Pico, reports each time the sensor turns active or inactive. The Pi decides which of those changes count, and saves every accepted passage before doing anything else with it. One accepted passage is one work unit.

The rules are strict on purpose. The sensor has to read inactive for at least 10 ms before it can count again, accepted passages are at least 60 ms apart, and a magnet that stays in front of the sensor counts once. If the clock, storage or sensor stream becomes uncertain, the device stops counting rather than guess.

Figure How a passage is counted
  1. After a restart the sensor starts unarmed: it has to read inactive before any passage can count.
  2. The magnet reaches the sensor and the signal turns active. The Pi accepts the passage and saves it: one work unit.
  3. The magnet lingers in front of the sensor. Repeated active readings add no work.
  4. The signal flickers off for less than 10 ms and back on. The sensor hasn't rearmed, so nothing counts.
  5. The sensor reads inactive for at least 10 ms and rearms.
  6. The signal turns active again, but less than 60 ms after the last accepted passage. It's too soon, so it doesn't count.
  7. The magnet's next pass comes later than 60 ms, after a rearm. It's accepted: two work units.

A passage counts once, only after the sensor rearms, and never within 60 ms of the last one.

Work is grouped into rounds of exactly 600 seconds, counted from a fixed starting point. When a round ends, the device saves its total, including rounds with no work, and it never moves work from one round to another. A round can hold at most 10,000 work units, which is exactly as many as the 60 ms spacing allows in ten minutes. The cap is a safety limit: a passage beyond it would be rejected, and the device would stop counting until an operator steps in.

Figure Ten-minute rounds
  1. Round boundaries fall every 600 seconds, counted from a fixed starting point.
  2. Work units collect in the round in progress.
  3. A passage exactly on a boundary belongs to the next round.
  4. When a round ends, the device saves its total, even when the total is zero.
  5. If the device was off, the rounds it missed are saved as zero when it restarts. Zero means no accepted passages, not that the wheel stood still.
  6. A round holds at most 10,000 work units, as many as the 60 ms spacing allows in ten minutes. A passage beyond that would be rejected and counting would stop; the work is never moved to the next round.

Each round's total is fixed when it closes, and work never moves between rounds.

Counting doesn't depend on the internet. If the connection drops, the device keeps counting and closing rounds, and holds its signed upload until the Oracle answers.

One accepted passage is one work unit. Nothing downstream can add, remove or move it.

From the wheel to EthereumLink to this section

Each upload is signed over its exact bytes by the device's Trust M chip. The Oracle checks the signature before it reads anything else, then accepts, rejects or quarantines the upload. Only accepted rounds can be settled: a rejected upload leaves evidence behind, but no work.

Every five minutes the Reporter looks for accepted rounds that are ready. It builds a batch that moves the frontier, the last round settled so far, forward. Rounds with work are listed, at most 16 of them, and every round in between that has no work is certified as zero. The Reporter signs the batch with a one-use number, the nonce, and a deadline, and a separate relayer pays the gas to send it.

SqueekCore checks the signature, the nonce, the order and the limits. If any round breaks a rule, the whole transaction fails and nothing changes. A successful batch uses up its nonce, so it can't be replayed. Public views wait for 12 Ethereum confirmations before they show the result.

Figure Settling a batch
  1. Accepted rounds wait in the settlement queue. The round numbers, work counts and nonce shown are illustrative.
  2. Every five minutes the Reporter takes the rounds that are ready, in order, up to 16 rounds with work.
  3. The batch moves the frontier forward. Every round inside it with no work is certified as zero.
  4. The Reporter signs the exact batch with the current nonce and a deadline.
  5. The relayer submits it. SqueekCore checks the signature, nonce, order and limits, then records the work.
  6. The nonce is used up, so the same signature can never settle anything again.
  7. After 12 Ethereum confirmations, public views show the settled rounds.

A batch is all or nothing, and each signature works exactly once.

A batch settles in full or not at all. SqueekCore never trims, caps or repairs work.

Difficulty and Squeek blocksLink to this section

A Squeek block isn't a fixed amount of running. SqueekCore keeps a running total of block units, and every billion block units completes one Squeek block. Squeek blocks are SqueekCore's own count; they have nothing to do with Ethereum's blocks.

Difficulty is the work that 1,000 Squeek blocks cost. Each round with work is first priced at the difficulty that earlier rounds set. Then, if it had at least 40 work, it moves difficulty one-thirtieth of the way toward the level at which its own work would have earned exactly 40 blocks. Rounds with less than 40 work earn progress but leave difficulty alone, and rounds with no work change nothing.

Figure Pricing a round, then steering
  1. A round with 80 work arrives. Difficulty is 10,000 work per 1,000 blocks, and block progress stands at 1.7 blocks.
  2. Priced at that difficulty, 80 work earns 8,000,000,000 block units: 8 Squeek blocks, taking progress from 1.7 to 9.7 blocks.
  3. The steering target is the difficulty at which 80 work would earn exactly 40 blocks: 2,000.
  4. Difficulty moves one-thirtieth of the way toward the target: (29 × 10,000 + 2,000) ÷ 30, rounded down, is 9,733.
  5. The next round is priced at 9,733. The blocks already earned keep their price.

Each round is priced first and steers second, and earned blocks are never repriced.

Exact ruleLink to this section

blockUnits += floor(w × 10^12 / D)
D_next      = floor((29 × D + floor(w × 1,000 / 40)) / 30)   when w ≥ 40
D_next      = D                                              when w < 40
height      = floor(blockUnits / 10^9)

w is a round's work and D is the difficulty, in work per 1,000 blocks. Difficulty never falls below 1,000, one work unit per block. These integer expressions are the definition: any other implementation must use them exactly.

Figure Difficulty over a night of running
Round
12
Work
323
Difficulty
10,771
Blocks earned
29.99
Next difficulty
10,681

Busy rounds pull difficulty toward 40 blocks per round. Quiet and empty rounds leave it where it is.

View the data

Earned block units are never repriced. A change in difficulty only prices later work.

SQKLink to this section

Lifetime cap, 18 decimals
2.1 billion SQK
Premined for protocol liquidity, 10%
210 million SQK
Issued by Squeek blocks
1.89 billion SQK
SQK per completed Squeek block, no halvings
6,900 SQK

SQK, the Squeek token, has a lifetime cap of 2.1 billion. 10% of it, 210 million SQK, is premined for protocol liquidity; it's the only SQK that doesn't come from a Squeek block. The other 1.89 billion is issued by completed Squeek blocks: 6,900 SQK for every block, with no halvings, multipliers or bonus schedules. After 273,913 blocks only 300 SQK remain under the cap; the next block issues them, and issuance stops.

Apart from the premine, only SqueekMining can mint SQK, and only to itself; SqueekToken enforces that rule and the cap. SqueekMining holds newly issued SQK for Squeeks until their owners claim it.

Two cases issue less than 6,900 SQK for a block. Blocks completed while no Squeek has active power issue nothing, and can't be claimed later. And the last block issues only the 300 SQK left under the cap.

Figure SQK supply: the premine, then blocks
Completed blocks
150,000
SQK supply
1,245,000,000
Share of cap
≈ 59.3%

The premine is 10% of the cap; after it, supply rises 6,900 SQK per block until 2.1 billion, then stops.

View the data
Completed Squeek blocksSQK supply (premine included)Share of the cap
0210,000,00010%
50,000555,000,000about 26.4%
100,000900,000,000about 42.9%
150,0001,245,000,000about 59.3%
200,0001,590,000,000about 75.7%
250,0001,935,000,000about 92.1%
273,9132,099,999,700300 SQK short of 100%
273,9142,100,000,000100%
350,0002,100,000,000100%

The 210,000,000 SQK premine for protocol liquidity counts inside the cap, so blocks issue at most 1,890,000,000. Block 273,914 issues the last 300 SQK. Assumes every block was completed while some Squeek had active power. Blocks completed with no active power issue nothing.

After the 210 million premine, SQK is only ever issued at checkpoints, at most 6,900 for each completed block, and never past 2.1 billion.

Squeeks and stakingLink to this section

Squeeks are NFTs that earn SQK, and staking SQK to a Squeek raises how much it earns. Every completed block's SQK is shared between Squeeks in proportion to their power. A Squeek with 1,000 power, while all the others together have 99,000, receives 1% of each block: 69 SQK.

Figure Your share of each block
Your power
1,000
All power
100,000
Your share
1%
SQK per block
69 SQK

Your share of each block is your Squeek's power divided by everyone's.

A Squeek's level, from 1 to 10, sets its rated power. Each level is rated about 10% higher than the two Squeeks a merge combines, so merging always adds power. Power from a mint or a merge starts earning in the next ten-minute round.

After each merge a Squeek waits out a cooldown before it can merge again. Cooldowns grow with each level, from 1,000 completed Squeek blocks at level 1 to 49,000 at level 9. They count completed Squeek blocks rather than time, so they pass faster while the wheel is busy.

LevelRated powerMerge cooldown in completed Squeek blocks
11,0001,000
22,2003,000
34,8407,000
410,64814,000
523,42621,000
651,53628,000
7113,38035,000
8249,43642,000
9548,75949,000
101,207,269Can't merge

Staking SQK is how a Squeek earns at its full rating. On its own, a Squeek earns with bootstrap power, a fixed fraction of its rated power. SQK you stake to a Squeek you own raises its power in a straight line: enough stake brings it to its rated power, and more takes it into Overdrive, up to a ceiling below the next level's rating. A level 10 Squeek's ceiling is above its own rating.

The SQK a Squeek earns is split by where its power comes from. The share earned by bootstrap power belongs to the Squeek and goes with it if it's sold. The share earned by your stake belongs to you, and so does the stake itself, whoever owns the Squeek later.

Stake changes take effect at the next round. When you unstake, the power your stake added ends at the next round and an exit fee is taken, which rises when a lot of stake has left recently. Half of the fee is burned and half goes to the stakers who remain. The rest can be withdrawn from that round on.

Figure Staking SQK to a Squeek
  1. On its own, a Squeek earns with bootstrap power: a fixed fraction of the rated power its level sets.
  2. You stake SQK to a Squeek you own. The SQK moves from your wallet into the Staking contract, recorded as your backing.
  3. From the next round, the Squeek's power rises in a straight line with your stake. Enough stake brings it to its rated power.
  4. More stake takes it past its rating into Overdrive, up to a ceiling below the next level's rating.
  5. Each block's SQK is split by where the power comes from. The bootstrap share follows the Squeek, even if it's sold; the staked share is yours.
  6. When you unstake, the staked power ends at the next round. An exit fee is taken, half burned and half shared with the stakers who remain, and the rest can be withdrawn from that round on.

Staking raises a Squeek's power. The share your stake earns, and the stake itself, stay yours.

New power starts earning in the next round, never in the round it was added.

Checkpoints and claimsLink to this section

Settled blocks become SQK when someone calls the checkpoint. It takes no inputs, anyone can call it, and the Keeper service calls it routinely. A checkpoint works through settled rounds in order. Each stretch of blocks is paid to the power that was active while it was earned, and only then are scheduled power changes applied. One call applies at most 32 power changes; the next call carries on where it stopped.

Figure What a checkpoint does
  1. SqueekCore has settled blocks that SqueekMining hasn't paid out yet. A new Squeek's power is scheduled to start at round 5.
  2. Someone calls the checkpoint. It takes no inputs and works through the settled rounds in order.
  3. Blocks earned before round 5 are paid to the power that was active then. The new Squeek gets none of them.
  4. At round 5 the scheduled power is applied, and the new Squeek joins the total.
  5. Blocks from round 5 on are shared by the new total.
  6. The checkpoint mints the SQK in one go, 6,900 for each block, into SqueekMining, and records every Squeek's share.
  7. If more than 32 power changes are waiting, the next checkpoint carries on where this one stopped.

Blocks are always paid to the power that earned them; new power only counts from its start round.

Claiming moves SQK that a checkpoint already issued from SqueekMining to your wallet. One claim covers 1 to 32 Squeeks, never mints anything, and keeps working while settlement is paused. Unclaimed rewards belong to the Squeek, so they go with it if it's sold.

Figure Claiming rewards
  1. SqueekMining holds the SQK that checkpoints issued, recorded as each Squeek's unclaimed rewards.
  2. The owner claims for up to 32 Squeeks in one transaction.
  3. The SQK moves from SqueekMining to the owner's wallet. Total supply doesn't change, because nothing is minted.
  4. If a Squeek is sold before its rewards are claimed, its unclaimed rewards go to the new owner.

Claiming moves SQK that already exists; a claim never mints.

Claims only move SQK that a checkpoint already issued. They never mint.

Merging SqueeksLink to this section

You can merge two Squeeks of the same level that you own into one Squeek a level higher. You choose which one survives. The survivor keeps its ID and image and takes the other Squeek's unclaimed rewards; the donor is burned.

Both Squeeks must be past their merge cooldown and have no pending power. Until the next round, the survivor earns with both Squeeks' old power. Then it switches to its new level's power, and a new cooldown starts, counted in completed Squeek blocks. Level 10 Squeeks can't merge.

SQK you staked to the donor follows the survivor without an exit fee. A Squeek backed by someone else's stake can't be merged.

Figure Merging two Squeeks
  1. Two level 3 Squeeks you own, both past their merge cooldown and with no pending power. Each has 4,840 power.
  2. You choose the survivor. The donor's unclaimed rewards move to it.
  3. The donor is burned permanently.
  4. Until the next round, the survivor earns with both Squeeks' power: 9,680.
  5. From the next round it earns as a level 4 Squeek: 10,648, which is 10% more than the two Squeeks it combines.
  6. Its merge cooldown restarts: it can merge again after 14,000 more completed Squeek blocks.

A merge adds power and can't be undone.

A merge can't be undone: the donor is burned.

Distributing the SqueeksLink to this section

Squeeks
9,999 Squeeks
For sale to the community
8,888 Squeeks
For the protocol
1,000 Squeeks
For the team
111 Squeeks

There are 9,999 Squeeks. 8,888 of them will be sold to the community, 1,000 are for the protocol and 111 for the team. No more can ever be minted: a Squeek burned in a merge doesn't free its ID.

All 9,999 Squeeks start earning together. Governance can start SqueekMining only once every Squeek is minted. Earning begins with the next full round, and no SQK is paid for blocks completed before then.

There will only ever be 9,999 Squeeks. A burned Squeek's ID is never minted again.

FlywheelsLink to this section

Three loops follow directly from the rules above: two that compound and one that balances. Every block issues the same 6,900 SQK however much power exists, so the loops change how SQK is divided, never how much is issued. They describe what the contracts do, not what prices will do.

  1. Earn and stake

    A Squeek's SQK can be staked back to it. The stake raises its power, more power takes a larger share of each block, and that share can be staked again. The loop stops at the Squeek's ceiling, just below the next level's rating; merging is how it goes further.

  2. Merge

    Merging is the only way a Squeek's level rises, and the only way a Squeek leaves circulation. Each merge burns the donor and rates the survivor about 10% above the pair, with a higher ceiling for stake, so as Squeeks grow there are fewer of them. Cooldowns count completed Squeek blocks, so the wheel sets how soon the next merge can happen.

  3. Exit fees

    Unstaking costs an exit fee that rises when a lot of stake has left recently. Half is burned and half goes to the stakers who remain, so the more stake leaves at once, the more each exit pays the stakers who stay.

Who can change whatLink to this section

Some rules are permanent, some can change only through a delayed governance process, and one role exists only to stop things safely.

  • SqueekToken can't be upgraded. Its lifetime cap and its single minter, SqueekMining, are permanent.
  • SqueekCore and SqueekMining can be upgraded. An upgrade is scheduled through a Timelock and can run only after its delay. Because an upgrade could change how work or rewards are handled, upgrades are a trust assumption, not a technical guarantee.
  • The Guardian can pause settlement and checkpoint funding, and can replace the Reporter while paused. It can't set difficulty, mint SQK or upgrade contracts. Pausing cancels every signed batch that hasn't been settled.
  • A Reporter address is never reused.
Figure Who can do what
ActionSqueek ownerReporterGuardianGovernance
Sign a settlement batchNoYesNoNo
Submit a signed batchAnyone
Run a checkpointAnyone
Claim a Squeek's rewardsYesNoNoNo
Merge SqueeksYesNoNoNo
Pause settlement and checkpoint fundingNoNoYesNo
Replace the Reporter while pausedNoNoYesNo
Change the difficulty ruleNoNoNoOnly by upgrading SqueekCore
Upgrade SqueekCore or SqueekMiningNoNoNoAfter the Timelock delay
Change the SQK cap or its minterNobody

Each role can do a few named things, and nobody can change the SQK cap or its minter.

Difficulty has no setter. Only settled work changes it.

What the system provesLink to this section

Each step adds a specific, limited guarantee.

Figure What each step proves
  1. Sensor and Pi: a wheel-magnet passage was accepted under the device's rules. Not which animal, which direction, or what moved the wheel.
  2. Trust M signature: this chip signed these exact bytes. Not that the measurement is true.
  3. Oracle: the upload passed its signature, identity, sequence and policy checks. Not physical truth, and not settlement.
  4. Reporter: this exact batch of accepted rounds was authorized. Not the physical events behind it.
  5. SqueekCore: the batch was settled under the contract's rules. Not the animal or the cause.
  6. Public views: a confirmed copy, 12 Ethereum confirmations deep, with no authority of its own.

Each step adds one narrow guarantee of its own.

A work record says a passage was accepted under the device's rules. It doesn't identify the animal, show the wheel's direction or establish what made it move. A round with no work means no passage was accepted, which could also mean the device was off. The livestream shows the wheel, but cameras never create, confirm or correct work.

A signature proves which chip signed the bytes, not that the measurement is true.

When things failLink to this section

Squeekchain is built to stop rather than guess. Each part fails on its own, and the parts that hold records keep them.

Figure What keeps working when a part fails
View the data
FailureCountAcceptSignSubmitSettleIssueClaimShowWatch
Internet down at the device (the link to the Oracle fails)WorksWaitsWaitsWaitsWaitsWaitsWorksWorksWorks
Oracle unavailableWorksFailsWaitsWaitsWaitsWaitsWorksWorksWorks
RPC providers disagreeWorksWorksFailsWaitsWaitsWaitsWorksWorksWorks
Guardian pauseWorksWorksWaitsWaitsFailsWaitsWorksWorksWorks
Indexer rebuildingWorksWorksWorksWorksWorksWorksWorksFailsWorks
Camera offlineWorksWorksWorksWorksWorksWorksWorksWorksFails

Count, accept, sign, submit, settle, issue and claim are the record's steps: the WHEELY9000, the Oracle, the Reporter, the Relayer, SqueekCore, SqueekMining and claims of SQK already issued. Show is the Indexer, API and website; watch is the camera and livestream.

Figure When a part fails

Choose a failure to see which parts keep working and which wait.

View the data
  • Internet down at the device. Keeps working: counting, closing rounds, the signed upload held on the device, and claims of SQK already issued. Waits: the Oracle's receipt, settlement and new SQK.
  • Oracle unavailable. Keeps working: counting and closing rounds on the device, everything already on Ethereum, and claims. Waits: acceptance and settlement of new rounds.
  • RPC providers disagree. Keeps working: counting, Oracle intake and claims. Waits: settlement, until the disagreement is reconciled. The Reporter stops signing rather than guess.
  • Guardian pause. Keeps working: counting, Oracle intake, claims of SQK already issued, and Squeek transfers. Waits: settlement and checkpoint funding. Signed batches that weren't settled are cancelled.
  • Indexer rebuilding. Keeps working: the device, the Oracle, settlement, checkpoints and claims. Waits: website and API data, which are shown as unavailable rather than estimated.
  • Camera offline. Keeps working: everything that counts, settles or pays. Waits: the livestream picture only.

Recovery never edits work, skips a round or reuses a nonce.

Building on SqueekchainLink to this section

The contracts, their events and a public API are open to anyone. Prediction markets, games, dynamic NFTs and SqueekFi can all build on Squeektoshi's work. The developer documentation lists the contracts, events and API.

ParametersLink to this section

Parameter Value
Round length 600 seconds
Work in one round, at most 10,000 work units
Rounds with work in one batch, at most 16
Confirmations before public views 12 Ethereum blocks
Block units in one Squeek block 1,000,000,000
Minimum difficulty 1,000 work per 1,000 blocks
Work needed to steer difficulty 40 in a round
Steering target 40 Squeek blocks per round
Steering step One-thirtieth of the way to the target
SQK per completed block 6,900
Lifetime SQK cap 2,100,000,000
Premine 210,000,000 SQK, 10% of the cap, for protocol liquidity
Issued by Squeek blocks 1,890,000,000; the last 300 in block 273,914
SQK decimals 18
Squeeks 9,999
Distribution 8,888 for sale to the community; 1,000 for the protocol; 111 for the team
Squeek levels 1 to 10
Rated power 1,000 at level 1 to 1,207,269 at level 10
Merge cooldown 1,000 to 49,000 completed Squeek blocks
Power changes per checkpoint, at most 32
Squeeks per claim 1 to 32