HyperBubble connecting

Every asset has a state.
The emptiest one pays the most.

Moving between states costs 2%. What it costs goes to the states you did not join, split so that the least crowded one takes the largest share. There is no yield here from anywhere else: what you receive comes from someone who moved.

Where the next toll would go

These shares are read from the chain, live, and they move every time anyone enters, shifts or leaves. A state holding nothing shows 0% and not the largest share, because there is nobody in it to pay. Being the first one in is the whole game.

Your position

What you hold, where it sits, when it can move, and what it has earned from other people's movement.

In your wallet

0

BUBBLE, free to move

Earned, not yet taken

0

Neither locked nor tolled. It is yours the moment it lands.

How it works

Four paragraphs, and then you have read all of it.

The rule

You put BUBBLE into one of three states. Entering costs nothing. Changing state costs 2%, and so does leaving, because leaving is also a change of state.

That 2% does not go to us. Nine tenths of it is paid to the states you did not join, and one tenth goes to a single address written into the contract at deploy, which can never point anywhere else.

Why the emptiest state wins

The toll is not split evenly, and not by deposits either. Each state's share is inversely proportional to how crowded it already is, weighted by what it asks you to give up.

An almost empty state is worth roughly eleven times a state holding everything. So the best place to be is always the one everybody just left, and there is no resting point. The state is changing.

What each state costs you

The three states do not differ by a rate. They differ by what you accept to give up, and that is the only reason one weighs more than another.

SOLID locks for seven days and weighs 3. FLUID locks for a day and weighs 2. LIQUID never locks and weighs 1. A lock does not protect you: it protects everyone else from you taking back your share of their toll.

The token

BUBBLE, one billion, minted once. No transfer tax, no owner, no mint, no blocklist. A transfer does exactly what its name says, which is what a v3 pool needs and what a scanner reads cleanly.

The toll lives in the Surface contract, never in transfer. The logo is carried on-chain by contractURI(), baked at deploy.

Toll

2%

flat, both ways, no setter

To the states

90%

of every toll

Owner

none

not a role, not an address

Oracle

none

nothing to manipulate

Where it lives

What can go wrong

The mechanism is small enough that nothing needs hiding. Here is the whole of it, including the parts that are not flattering.

The one that matters most

This is not yield. It is redistribution. Every BUBBLE you receive was paid by someone who moved. Between participants, minus the tenth that goes to the protocol, it is zero sum: if you gain, someone else paid.

There is no treasury behind it, no emissions, no fee stream from somewhere else. No page here will ever show you an APY, because there is nothing that could produce one.

No movement, nothing paid

The toll only exists when somebody changes state. A quiet room produces nothing and pays nobody, for as long as it stays quiet.

We did not write a function that could promise otherwise, and one could not exist without a source of value we do not have.

A lock does not protect you

SOLID protects the others from you. For seven days you cannot take back your share of their toll, and that is exactly what its weight of 3 is paying for.

If the crowd moves to the state you just left, you will watch it pay more than yours until your lock expires. That is the cost, and it is the whole cost.

An empty state pays nothing

The largest weight belongs to the emptiest state, but a state with nobody in it has nobody to pay, so it shows 0%.

You capture that weight by entering, not by watching. The first one in is briefly alone in a room with the largest share, and that is the game.

What we can take, and what we cannot

One tenth of every toll goes to one address, written into the contract at deploy. It has no setter, so it can never point anywhere else. Anyone can push it there.

There is also skim(), which sends tokens that were mailed to the contract by accident to that same address. It is computed as the balance minus everything owed, so it reads zero unless something is genuinely in excess: it cannot reach a holder's deposit or a holder's unclaimed earnings, and a test asserts exactly that.

What has no owner at all

Nobody can pause this, upgrade it, change the toll, change the weights, change the locks, or move a deposit. Those are not permissions we chose not to use — they were never written.

The flip side is honest: if something is wrong in this code, nobody can fix it either, and your exit is the only thing anyone can rely on.

New code, and what that is worth

These contracts are tested and untested by the world. The suite is public and it is the only reason to believe any of the sentences above: it proves the toll is 2%, that it reaches the states you did not join, that the emptiest one takes the largest share, that a lock is real, that everyone can take everything out, and that the last one to leave pays nothing, because there would be nobody left to pay.

Two bugs were found by those tests and not by reading: a weight that collapsed to zero in integer division, which made the toll silently disappear, and an accounting gap that would have let skim() reach money owed to holders. Both are fixed and both now have a test that fails if they come back. There is no reason to assume they were the last two.