Documentation

Resources and Discovery (Mining)

Discovering resources via hash-based proofs, the resource taxonomy, and the Patent Office naming system.

Section #30Updated 04/05/2026

Resources and Discovery

Resources are the economic substrate of the Sprawl. Each tile continuously streams the resources it has been discovered to produce.

Resource tiers

Resources follow the physical-to-digital technology stack of the Sprawl:

| Tier | Category | Examples | Rarity multiplier | |------|----------|----------|-------------------| | Common | Atoms — raw physical substrate: matter, energy, basic materials | Electricity, Silicon, Cooling Water, Raw Steel | 1 | | Uncommon | Hardware — compute and networking infrastructure | ARM GPU, DDR6 RAM, Fiber Optic Array | 3 | | Rare | Software / Data — algorithms, datasets, exploits, proprietary code | Zero-Day Exploit, Medical Records DB, Autonomous Driving Model | 9 | | Legendary | Frontier Compute — cutting-edge LLM infrastructure | GPT-7 Weights, Frontier Inference Cluster, AGI Substrate | 18 |

Each tier is literally built on the one below it — Frontier Compute requires Software, Software requires Hardware, Hardware requires Atoms. Rarity is earned, not arbitrary.

Utility by tier

| Tier | Primary uses | |------|-------------| | Common (Atoms) | Tax payment · Army maintenance (food) | | Uncommon (Hardware) | Tax payment · Burning for army unit tokens | | Rare (Software/Data) | Tax payment · Burning for army unit tokens | | Legendary (Frontier Compute) | Tax payment · Burning for army unit tokens |

Common resources serve as army upkeep — cut the Atoms stream and your force goes dark. Only uncommon and above can be burned to mint unit tokens.

Discovery and mining

Resources are mined by submitting a proof of work against a tile's seed and a resource name:

hash(resourceName + tileSeed + salt) → must meet difficulty target (leading zeros)

Difficulty determines rarity class. A successful proof on a tile unlocks a production stream for that resource on that tile. The same resource name can be mined on any number of tiles — there is no exclusivity on production. Mining is entirely independent of the Patent Office (see below).

If two players submit a valid proof for the same name on the same tile in the same block, the contract accepts whichever transaction is ordered first. Standard on-chain ordering applies — no special tie-break logic needed.

Flow rate is determined by hash quality within the tier's band. Each rarity tier occupies a difficulty range between two thresholds:

Common:    hash in [T_uncommon, T_common)
Uncommon:  hash in [T_rare,     T_uncommon)
Rare:      hash in [T_legendary, T_rare)
Legendary: hash in [0,           T_legendary)

The tier is determined by which band the hash falls in. The flow rate is determined by where within that band it lands:

flowRate = baseRate × (tierUpperThreshold / hashValue)

A hash near the top of its band (barely qualified, easy to find) produces at baseRate. A hash near the bottom (close to the next tier's threshold, much harder to find) produces at a multiple of baseRate. The two dimensions are orthogonal — leading zeros determine what you found, hash value within the band determines how much it produces.

Miners can keep searching after finding a valid proof, hunting for a lower hash value and a higher yield. Flow rate is fixed permanently at the point of registration. The exact threshold values require empirical benchmarking to calibrate — the formula is fixed, the numbers are not.

Mining is permanent. Once a valid proof is registered for a resource name on a tile, that registration cannot be revoked. The production stream can be disrupted (e.g. stream closure) but can always be restored. This permanence is what makes registered (resource, tile) pairs a reliable basis for maintenance bonus calculations.

PoW is client-side. The contract only verifies submitted proofs. Players are responsible for finding them — in-browser workers for casual players, automated agents for sophisticated ones.

Each tile is geometrically divided into 18 resource slots — six sections of three triangles each, arranged around a central hexagon. The central hexagon is reserved for the tile's army (if present) and is not a resource slot.

Resources occupy triangles. Rarer resources occupy more:

| Tier | Triangles | Sections | Notes | |---|---|---|---| | Common | 1 | — | Up to 18 on an empty tile | | Uncommon | 3 | 1 full section | Up to 6 on an empty tile | | Rare | 9 | 3 full sections | Max 2 per tile — two rares fills all 18 slots exactly, leaving no room for anything else | | Legendary | 15 | 5 full sections | Max 1 per tile — leaves 3 slots (1 uncommon or 3 commons) |

Notable combinations:

  • Legendary + rare cannot coexist (15 + 9 = 24 > 18)
  • Two rares is a total commitment — the tile produces nothing else
  • A legendary tile has exactly 1 section left for supporting resources

ResourceToken mechanics

Each resource name gets its own Superfluid supertoken, deployed by ResourceFactory on the first mining event for that name.

Stream-mint supply model: each ResourceToken mints 1,000,000,000 tokens to itself at deployment. totalSupply() is overridden to return INITIAL_MINT - balanceOf(address(this)) — the amount that has left the contract. A permissionless sweep() on tile instances flushes accumulated token dust back to the ResourceToken to keep this counter accurate.

On a new mine, the ResourceToken:

  1. Sends a Superfluid deposit subsidy to the TileInstance (enough to cover the deposit for its outgoing streams)
  2. Opens a stream to TileInstance at the registered flowRate

TileInstance is a Superfluid super-app. Its afterAgreementCreated callback fires and it opens two outgoing streams:

  • 95% → tile beneficiary (or tile owner if no beneficiary is set)
  • 5%PatentInstance for that resource name

PatentInstance aggregates incoming 5% streams from every tile mining the resource and maintains a single outgoing stream to the patent beneficiary (or patent holder if no beneficiary is set). When the PatentNFT transfers, only this one outgoing stream is swapped — all incoming tile streams continue unaffected.

The Patent Office

The Patent Office is not a mining gatekeeper. It is a naming registry — its sole function is to validate that a proposed resource name fits the lore of the Sprawl before it can be registered on-chain.

Patenting and mining are two separate on-chain transactions:

To patent a name:

  1. Player proposes a name + tier (e.g. "ARM GPU", Uncommon)
  2. Patent Office LLM evaluates lore fit — "ARM GPU" is approved, "James" is not
  3. If approved, the service returns a cryptographic signature
  4. Player submits the signature on-chain → Patent NFT is minted to their address

To mine a resource on a tile:

  1. Player submits a PoW proof: hash(resourceName + tileSeed + salt) meeting the difficulty target
  2. Smart contract verifies the proof and registers the production stream on that tile

The Patent Office does not gate mining. Any player can mine any approved name on any tile without holding the patent. The patent only determines who receives the 5% royalty stream. A player can mine "ARM GPU" before it is ever patented — the first player to submit a valid Patent Office signature for that name claims the NFT and begins receiving royalties from all tiles mining it, including retroactively. If the patent later sets a beneficiary address, royalties route there instead of directly to the patent owner.

Note: The Patent Office is an off-chain service and is a centralised point of trust for name registration. A fallback queue or cached approval mechanism is needed to handle downtime. The same offline operations layer reports mined-tile adoption counts to the Harberger contract through a dedicated reporter key; the chain only verifies the configured reporter and enforces the threshold.

Discovery royalties

Patenting a resource name earns the discoverer a 5% royalty on all global production of that resource name, streamed continuously in the ResourceToken itself.

royaltyStream = 0.05 × Σ (flowRate on each tile mining this resource)

Every tile mining the patented resource contributes 5% of its production stream to the PatentInstance, which aggregates and forwards the total as a single stream to the patent beneficiary if one is set, otherwise to the patent holder. The remaining 95% of each tile's production goes to the tile beneficiary if one is set, otherwise to the tile owner. Royalties are additive — the miner loses nothing, the patent holder gains proportionally to adoption.

The patent is an ERC-721 NFT. Holding the NFT = receiving the royalty stream. Transferring or selling the NFT transfers the stream to the new holder. A patent attached to a widely-mined resource name is a standalone tradeable asset with a calculable present value based on current global production.

Free period

While the resource is mined on 18 or fewer tiles, the patent is free to hold — no ongoing cost, no acquisition pressure. The holder collects royalties unconditionally. 18 is not an arbitrary cap: it is the number of resource triangles in a tile, reused here as the adoption threshold at which a resource transitions from speculative to established.

Harberger phase (19+ tiles)

Once the resource is mined on more than 18 tiles, the patent enters a self-assessed Harberger system — settled entirely in ENERGY, because the holding cost is an action-fuel tax on keeping an established patent.

Self-assessed value: the patent holder streams any amount of ENERGY per day to the protocol. This is their declared value. The acquisition cost is always exactly:

acquisitionCost = holderDailyMaintenanceStream × 54

The holder sets their own price by choosing how much to pay. Stream more → higher acquisition cost → more protection. Stream less → cheaper to acquire. There are no neighbourhood modifiers — patents are non-geographic — so 54 days is always the flat multiplier.

Response window: any player can file a binding offer above currentDailyMaintenance × 54 at any time. The holder then has 24 hours:

  • Offer: claimant posts 10% of the offer amount as deposit. They do not escrow the full offer up front.
  • Accept: the contract pulls the remaining 90% from the claimant. If that pull succeeds, the holder receives the full offer amount and the NFT transfers immediately. If the pull fails, the claimant's 10% deposit is burned, the offer clears, and the holder keeps the patent.
  • Refuse: the holder burns 10% of the offer amount as the penalty. The patent stays. The holder or their delegates can adjust the daily maintenance stream after refusing — the new rate takes effect immediately and sets the price for any subsequent claim.

Streaming zero: a holder who drops their stream to zero does not automatically lose the patent. Their declared value becomes zero, the tax flow closes, and any player can submit a binding offer above that zero buyout floor. The holder still gets the 24-hour response window and must burn 10% of the live offer amount to refuse.

Why this works: the royalty income and the holding tax are deliberately separate: resource royalties are upside, while ENERGY is the action-fuel cost of keeping a widely adopted patent protected. The market finds the honest price without any external formula.

  • No magic numbers: the threshold (18) and the buyout base (54 days) both reuse constants already established elsewhere in the system.

Fungibility and official exchange rates

All resources within the same tier are interchangeable for all game purposes: maintenance payment, army upkeep, acquisition claims, and unit token minting. The specific name does not matter — only the tier.

The rarity multiplier table is the official exchange rate between tiers:

1 Legendary = 2 Rare = 6 Uncommon = 18 Common

The multipliers (1 / 3 / 9 / 18) follow the hex/triangle geometry of the tile slot system: each step is ×3 for the first two tiers (Common → Uncommon → Rare), then ×2 at the top (Rare → Legendary). This matches the slot costs (1 / 3 / 9 / 15 triangles) — the economic weight of a resource mirrors how much of a tile it occupies. Final values should be calibrated alongside PoW difficulty.

The only current non-fungible property is the local resource bonus: resources produced within a 3-ring radius of the paying tile receive a bonus on top of their base rarity credit:

| Ring distance | Bonus | |---|---| | 0 (same tile) | ×2.00 | | 1 | ×1.50 | | 2 | ×1.25 | | 3 | ×1.12 | | 4+ | ×1.00 (no bonus) |

This bonus is geographic, not licence-based — it applies regardless of who holds the licence on the source tile. A player can buy a common resource from a nearby tile they don't hold and still receive the local bonus when paying maintenance with it. This creates persistent geographic price differentials and incentivises regional commerce without breaking cross-tier interchangeability.

Further non-fungible properties may be introduced in later phases.

Economy consequences

  • Discovery is a compute race — earlier discoveries have first-mover advantage on that tile
  • A tile's seed determines what resources it is naturally suited to produce (some tiles are power plants, others are semiconductor fabs, others are AI research labs)
  • Thousands of distinct named resources exist at each tier, all player-created, all lore-consistent
  • Players compete on acquiring resources, not on which specific named resource they hold