whitepaper · the mining adventure

a curious machine on the
ethereum frontier.

no team. no admin. no presale. no telegram group of insiders. one contract, one exponential curve, and a question that’ll decide whether you make money or fund somebody else who does: how long can you hold?

ch · 1the frontier

You stumble onto an Ethereum contract. It accepts ETH. It mints something called ascend in return. The total supply is capped at 100,000,000 — a hard mathematical ceiling the curve approaches but can never reach. Same idea Bitcoin had with its 21M cap, scaled up.

You poke around. There’s no documentation about who runs it. No Twitter announcement of a token launch. No vesting schedule. No “founder allocation.” You read the source code: there’s no onlyOwner function. There’s no setFee() setter. There’s no pause() switch. The fees, the math, the rules — all hardcoded in the constructor. The deployer’s key is already irrelevant.

You realize: this is a machine. Not a company. Not a DAO. A machine. It runs on math. It runs forever. And it’s asking you a question: do you want to mine some?

ch · 2striking ore

You send 0.1 ETH. The machine doesn’t just hand you a flat number of tokens. It runs your ETH through this curve:

supply = 100,000,000 × (1 − e^(−ETH_deposited / S))

Don’t worry about the math — here’s what it looks like:

The curve is steep at the start, flat at the end. That’s the whole story.

Every miner moves the curve forward by exactly the amount of ETH they put in. Every miner pays a higher per-token price than the one before them. The early prospector eats well.

ch · 3the patience game

So you have ascend. Now what?

You can hold it. You can transfer it. You can burn it — send it back into the curve in exchange for ETH. The contract has a function called sell. You call it, it pays you out.

But here’s where the machine gets clever. The amount you receive depends on how long you’ve been holding:

Three things to notice on this curve:

Now ask: where does the 10% penalty go? It doesn’t burn into the void. It doesn’t go to some treasury that a team controls. It goes into a surplus reserve — a pool sitting inside the same machine.

And once that surplus crosses a threshold, it starts paying bonuses to anyone burning patiently.

So: flippers literally fund diamond hands. The faster someone panic-sells, the more they donate to the patient holder. It’s not a marketing slogan — it’s a contract instruction. Look at the code if you doubt it.

ch · 4the ascension grid

There’s another mechanic. Every time someone mints or burns, 0.2% of the fee gets shaved off and sent to a separate contract called the TileEngine.

Every 24 hours, this contract runs a deterministic lottery:

The distribution is locked in the contract. ×1 is common (62.5%), ×4 is rare (6.25%). On average, your reward is 1.625× the base the pool sets for the epoch.

But here’s the unique part: you don’t get paid in ETH. The TileEngine takes your reward ETH and routes it back through the bonding curve as a fresh mint. You get the resulting ascend.

ch · 5the asymptote

Bitcoin’s 21M cap isn’t a hard-coded limit. It’s the sum of an infinite geometric series of halving block rewards: 50 + 25 + 12.5 + ... The math itself converges to 21M and never goes past.

ascend uses the same idea, scaled to 100M. The curve q(e) = K × (1 − e^(−e/S)) approaches 100M from below, asymptotically. After 5 × S of ETH has been deposited, supply reaches 99.3% of cap. After 10 × S, it’s 99.9995%. But never quite 100,000,000.

The last ascend can never be minted. Eventually the curve flattens so much that even massive ETH inputs produce only fractional tokens. The cap is structural, not stipulated.

This isn’t deflationary marketing. It’s arithmetic. The contract refuses to mint past the integral of an exponentially decaying rate.

ch · 6walking away

The hardest thing about most token projects: someone is at the wheel. The dev can change parameters. The DAO can vote to inflate. The multisig can pause. The treasury can “rebalance.” You’re always in someone else’s house.

ascend is different by construction.

Read the source. Find the admin. There isn’t one. When the deployer walks away from the keyboard, the contract keeps running on the same rules. The blockchain is the operator. The math is the spec. There is no shutdown.

ch · 7why this matters

You came for the same reason anyone comes to a new chain: you want a position in something that might be big later. Most tokens give you that, but in exchange you sign up for a team’s good behavior. Their roadmap. Their decisions. Their potential rugpull.

ascend gives you a position too, but the deal is different. The rules are math, visible in the source, immutable forever. The early miner gets cheap tokens. The patient holder gets the full curve payout plus a bonus from flippers. The flipper gets a structural loss. The tile claimer gets a buyback-funded reward.

No one gets a special deal. Not even the deployer.

That’s the whole adventure. Mine when the curve is shallow. Hold past the penalty. Claim your tiles. Watch the surplus grow. And when the curve eventually saturates near 100M, you’ll either have been part of it from the start, or you’ll be a late buyer paying premium prices to early miners who came in cheap.

Either way, the contract doesn’t care. It just runs.

ch · 8for the nerds

The above was the story. Here’s the precise machinery, for anyone who wants to read the contract.

curve

q(e) = K · (1 − e^(−e/S))

p(e) = (S/K) · e^(e/S) — marginal mint price

ΔE(b) = S · ln((K − mF + b) / (K − mF)) — inverse curve for burns

mintedFair is the cumulative sum of all minted amounts. It’s frozen during burns — only currentSupply shrinks when ascend is destroyed. This is what makes the displayed floor monotone non-decreasing forever.

block-age penalty (smooth exponential decay)

payout(b) = FLOOR + (CEIL − FLOOR) · (1 − e^(−b/TAU))

With FLOOR = 9000bps, CEIL = 10000bps, TAU = 100 blocks, CAP = 1000 blocks. Hold-age is tracked per-holder via a weighted-average receive block — closes the transfer-bypass exploit. Sending tokens to a fresh wallet doesn’t reset the penalty; the receiving wallet’s wRB advances to the current block on every receive.

surplus and bonus

surplusRatioBps = (surplusReserve · 10000) / cumulativeEthIn

bonusBps = max(0, (surplusRatioBps − 1000) / 5) capped at 500

Bonus activates once over-collateralization tops 10% of curve obligation. Linear ramp at 1/5 to a 5% maximum at 35% over-collat. Bonus is paid from the surplus reserve, which grew from block-age penalties + the 3% surplus take on every mint.

tile rewards

Selection: keccak256(epochSeed, wallet) mod 10000 < 6800. 68% of holders eligible per 24-hour epoch.

Reward routing: TileEngine.claimTile() hook.claimReward{value: reward}(claimer) → hook treats it like a mint (curve advances, ascend minted to claimer, ETH stays in reserve). Recipients don’t receive ETH — they receive fresh ascend at the marginal curve price.

Multiplier draw: keccak256-based, low nibble. Distribution 10/3/2/1 over 16 nibbles → ×1 (62.5%), ×2 (18.75%), ×3 (12.5%), ×4 (6.25%). Expected multiplier = 1.625, locked in EXPECTED_MULTIPLIER_SCALED = 1_625_000.