1,000 hulls · one race · no finish line
Every ship is sailing the same water. What separates first from last is not luck and not the market — it is the one decision the owner keeps making: how much sail to carry.
More canvas logs distance faster in any wind. More canvas also takes more damage when it blows. Reefed takes no damage at all, ever, and is the slowest thing on the water. There is no rig that wins in both conditions, so the race comes down to whether you read the weather better than the owner of hull #417.
The decision
This table is the entire game. Read down a row to see what each rig earns in that weather; the highlighted cell is the rig that wins it. The winner changes twice.
| Sea state | Reefed | Working | Full | Press | Everything |
|---|---|---|---|---|---|
| 0% | 0.80 | 1.00 | 1.30 | 1.70 | 2.20 |
| 15% | 0.80 | 0.97 | 1.21 | 1.49 | 1.75 |
| 30% | 0.80 | 0.94 | 1.12 | 1.28 | 1.30 |
| 50% | 0.80 | 0.90 | 1.00 | 1.00 | 0.70 |
| 70% | 0.80 | 0.86 | 0.88 | 0.72 | 0.10 |
| 100% | 0.80 | 0.80 | 0.70 | 0.30 | -0.80 |
Takes no damage under any conditions. Slowest rig on the water and it never, ever goes backwards. In a full gale it is the best thing you can be flying.
Nearly three times the speed of reefed in flat water. Drive it through a real blow and damage outruns distance — the hull is permanently marked and the art shows it.
How it runs
The hook bound to the uSHIP/ETH pool is purely observational —
afterInitialize | afterSwap, flags 0x1040, no return delta, no fee.
It cannot alter, tax or refuse a swap. It writes down the weather, and the fleet sails in it.
Cumulative wind: every qualifying swap adds its ETH leg, capped at 5 ETH so one whale is not a trade wind.
Cumulative storm: the same volume, scaled by how violently price is moving. A calm market adds almost nothing here.
A hull stores where those two totals stood when it last trimmed. Its position is the difference, scaled by the rig it was carrying. So nothing has to be touched when the weather changes, settling a hull is arithmetic rather than a loop, and the whole fleet costs one storage write per swap.
At sea and in harbour
This is not ERC-404. The token and the ships are two separate, standard contracts. The only
link is a backing rule enforced by revert: an account may keep at most
floor(balance / 1e18) ships at sea.
So you never need a bid on your specific hull to get out. You sell uSHIP into the pool like any token, and the ship you were over-holding puts back into harbour on its own, inside that same transfer. The log is banked first, so nothing is lost — distance, damage, DNA and rig all keep, for whoever crews her next.
Time in harbour logs nothing. Ships are drawn out lowest-hull-first, so nobody can pick which one surfaces, and buying uSHIP does no ERC-721 work at all — it only earns you the right to crew another hull.
The fleet
Rendered by the same code that runs on chain. The sails you can see are the sails she is actually carrying, so you can read an owner’s risk appetite straight off the picture. Torn canvas and patched planking are storms she has already been driven through, and they do not heal.
The record
Anything not listed here is not Uniship. Verify against this table before you trade, and treat any contract claiming the name that does not appear below as hostile.
| Contract | Role | Address |
|---|---|---|
| ShipToken | ERC-20, backing | awaiting mainnet |
| UnishipHook | v4 hook, the weather | awaiting mainnet |
| Ships | ERC-721, the fleet | awaiting mainnet |
| ShipRenderer | on-chain art | awaiting mainnet |
| Pool | uSHIP / ETH, Uniswap v4 | awaiting mainnet |
| Site | canonical | uniship.art |
| X | canonical | @UnishipV4 |