procedure

The instructions the contract executes, in invocation order.

seed

constructor

The constructor runs once and leaves nothing behind it. It mints the full supply to the deployer, sets the thermal pair to ambient at the deployment timestamp, writes the immutable constants, and renounces ownership inside the same transaction. There is no initialize step, no proxy, no admin to wait for. From its first block the contract is already only what it will ever be.

settle

internal, every touch

Before any transfer, turn, seal, or pip does its work, the contract settles time. It evaluates the cooling curve since the last touch, computes the crossing time if the curve fell through the floor, integrates degree-hours and scorch exactly, applies the adhesion drag, updates the air cell for the elapsed days, checks whether a stage boundary was crossed, and only then hands control to the instruction that woke it. Settlement is the only place the clock moves, and it runs at the top of everything.

FIG. P1evaluate T(Δt) closed formλ = ln 2/21600find crossing t* if T fell through floorF = 15.0integrate dh and scorch to τ×2.5apply drag 10000/(10000+25a)25 bps/pointadvance air cell, check stage0.030/day ×3 coldhand off to caller instructionthresholds table

Settlement is the only place the clock moves, and it runs at the top of everything.

heat

_update, every transfer

The transfer hook is deliberately small. After settlement it adds dT = 42.0 × amount / supply, clamped by the 1.5 °C block cap, increments the epoch's transfer and volume counters, emits Heated, and returns. It never blocks a transfer, never charges a fee, never reads the market. An ordinary wallet-to-wallet send costs a handful of storage operations more than a plain token.

turn

turn()

Callable by anyone, at most once per ninety minutes. Settlement runs first, which is where any overdue adhesion is booked; the turn then stamps its caller and timestamp and emits Turned. The function has no arguments and no return; its entire purpose is to exist in the record. Turners are the site's only roll of honor.

seal

sealRing()

Once the epoch boundary passes, anyone may seal the ring. The instruction snapshots the epoch's counters into the next slot of the ring array, stamps the tone by comparing volume against the previous ring, records the air-cell grade, resets the counters, and emits RingSealed. Rings are append-only; there is no instruction anywhere in the bytecode that writes to a sealed ring.

pip

pip(amount)

Reverts before the pipped stage and after the hatch. Burns the amount (minimum one thousand tokens), derives the caller's sector, and checks the zip order: if the sector is the next unscored sector clockwise, the pip scores floor(sqrt(amount)) against the shell and emits Pipped; otherwise it emits Mispipped and the burn stands. The asymmetry is the point. Chipping at the wrong place still weakens the flock's supply, not the shell.

hatch

hatch()

Callable by anyone once every sector has scored and the cumulative scored weight meets the shell integrity. It sets the terminal stage, emits Hatched with the final clock, the total burned, and the temperature at the moment of hatching, and permanently closes pip(). Nothing else changes: transfers keep flowing, heat keeps arriving, rings keep sealing. The egg is simply open, and stays open.