§ 0What comes from the book
In Snowmoon, Minpentai is a strategy game played on a grid under a time-reversible rule, with gliders, walls, symbols and intervention turns. This game keeps the physics and adds a ledger. The table says which is which.
§ 1The board and its neighborhood
The board is a grid of cells, each alive (1) or empty (0). Time moves in generations \(t = 0, 1, 2, \dots\). Unlike Conway’s Life, a generation does not look at each cell’s eight neighbors. It cuts the board into 2 × 2 blocks and updates every block on its own.
The trick is that the cut moves. On even generations the blocks start at the corner \((0,0)\); on odd generations they start at \((1,1)\), one cell down and one cell right. Something on the edge of a block at one tick sits in the middle of a block at the next, so patterns can travel.
\[ \begin{gathered} B^{(t)}_{ij} = I^{(t)}_i \times I^{(t)}_j \\[2pt] I^{(t)}_i = \{\,2i+p_t,\ 2i+p_t+1\,\} \\[2pt] p_t = t \bmod 2 \end{gathered} \tag{1} \]In wordsAt tick \(t\), block \((i,j)\) covers two rows and two columns starting at \(2i+p\) and \(2j+p\), where \(p\) is 0 on even ticks and 1 on odd ticks.
§ 2The rule
Read a block row by row as \(x = (a\,b\,/\,c\,d)\). Write \(|x| = a+b+c+d\) for its live count, \(\bar x\) for its complement (every cell flipped) and \(\rho\) for the half turn:
\[ x = \begin{pmatrix} a & b \\ c & d \end{pmatrix}, \qquad \rho(x) = \begin{pmatrix} d & c \\ b & a \end{pmatrix} \]The whole physics of Minpentai is one function on the sixteen possible blocks:
\[ f(x) = \begin{cases} x & \text{if } |x| = 2 \\[2pt] \rho(\bar x) & \text{if } |x| = 3 \\[2pt] \bar x & \text{if } |x| \in \{0, 1, 4\} \end{cases} \tag{2} \]In wordsA block with two live cells is left alone. A block with three is flipped and then given a half turn. Every other block is flipped. The middle line is the one Zei names in chapter 4: “rotate one eighty if three.”
This is the Critters rule of Toffoli and Margolus (1987), and it is the only rule in season 1. Fig. 2 is generated by feeding all sixteen blocks through the game’s step function.
§ 3Three theorems
Three facts follow from (2), and the game is built on them. Each comes with a short proof and something you can run.
Proof.\(f\) sends the blocks with \(|x| = 2\) to themselves, swaps the classes \(|x| = 0\) and \(|x| = 4\), and sends \(|x| = 1\) to \(|x| = 3\) and back. Flipping and turning are one-to-one, and the paired classes have equal sizes (1 and 1, 4 and 4), so \(f\) is a one-to-one map of a finite set into itself, hence onto. Substituting (2) into (3) gives \(f^{-1}(f(x)) = x\) in every case. A tick applies \(f\) to disjoint blocks that tile the board, so it is a product of bijections.∎
In wordsRun backward, the rule reads “rotate one eighty if one.” Zei puts it plainly in chapter 2: “So if you can do something in one direction, you can always run the same steps in reverse.”
- generation
- t = 0
- live cells, display
- 0
- live cells, raw
- 0
- fingerprint
- vs. the start
Proof.Look at one block of the cut, with raw contents \(x\). On an even tick its display goes from \(x\) to \(\overline{f(x)}\); on an odd tick it goes from \(\bar x\) to \(f(x)\). Checking the classes of (2) one by one shows that the new display block has exactly as many live cells as the old one; in fact it only moves cells, as the table below shows. Summing over the blocks of the cut gives (4).∎
| display, live cells | k = 0 | k = 1 | k = 2 | k = 3 | k = 4 |
|---|---|---|---|---|---|
| even tick | stay | stay | swap | turn 180° | stay |
| odd tick | stay | turn 180° | swap | stay | stay |
Swap: the two live cells jump to the two empty places.
In wordsOn the board you see, cells only ever move around; nothing is created or destroyed. The raw state is not conserved (on odd ticks the empty background is all ones), which is why the game draws the display, and why every move a player makes is applied on an even tick, where raw and display agree.
Proof.On an even tick the cut starts at even coordinates, so the block’s four cells fall into four different blocks of the cut, one each: \(k = 1\), which the display table leaves alone. On an odd tick the cut starts at odd coordinates, so the block is exactly one block of the cut: \(k = 4\), also left alone.∎
In wordsAlignment is everything. Put the same block at even coordinates and the roles swap: on odd ticks each cell is alone in its block and turns 180°, so the block bursts into four corners and comes back two ticks later, a period-4 oscillator. That is why every piece in the game is anchored at odd coordinates, and why a sigil sits at \((8i+3,\ 8j+3)\).
§ 4The pieces
Everything a player can place is one of four patterns, stamped on an even generation with its top-left corner at odd coordinates. The contract accepts (piece, odd \(y\), odd \(x\)) and nothing else. One cell off, a glider stops flying: it stays where it is and oscillates.
What the pieces do
Measured on the real rule in our physics tests; Fig. 7 replays one case of each.
- A single glider cannot break a lone sigil: 0 of 32 distinct hits break it. It bounces straight back.
- A ram cracks it: 4 of 4 touching aims, in all four directions.
- Posts make mirrors. A row of nine posts 8 cells apart reflected 42 of 42 glider aims with no leaks. Against rams it lost 0.48 posts per ram, and the sigil behind it was never killed (0 of 21 aims, against 4 of 21 with no wall). This is the wall Zei describes in chapter 2, “a wall structure that reflected their gliders right back at them.”
The census
Fig. 7a shows the problem: a harmless bounce leaves the sigil broken for a while. So the game never judges a sigil at a single instant. At generations 96, 104, 112, 120 and 128 of every bell it checks whether the sigil’s 2 × 2 is complete, and
\[ \text{alive}_n \iff \bigvee_{t\, \in\, \{96,\,104,\,112,\,120,\,128\}} I_n(t) \tag{5} \]In words\(I_n(t)\) is 1 if the sigil is intact at generation \(t\) of bell \(n\). One intact sample out of five is enough. A sigil that fails all five is cracked: it stops earning until its owner repairs it, and if it fails again at the next bell it falls and becomes a ruin.
Proof.The samples run from generation 96 to 128, a span of 33 generations, so a shorter window misses the first sample or the last. A bounce breaks the sigil for at most 28 generations, measured over every hit.∎
Our tests show why it matters. With a single census at generation 128, one well-timed glider could fake a kill in 496 of 3,920 placements. With five samples, in none.
§ 5The money
Nothing in this section comes from the book: Minpentai in Snowmoon has no buy-in. Every payment below is ours.
The price of a sigil
Let \(p_0 = 0.003\) ETH be the floor, \(t_s\) the time of the last sale and \(p_s\) the price that sale left behind. Then
\[ \begin{gathered} p(t) = p_0 + (p_s - p_0)\, 2^{-(t - t_s)/6\,\mathrm{h}} \\[2pt] p_s \leftarrow 1.003\; p(t_s) \end{gathered} \tag{6} \]In wordsEvery sale makes the next sigil 0.3% more expensive, and whatever sits above the floor halves every six hours.
Proof.Let \(q_n\) be the premium \(p - p_0\) just before sale \(n\). The sale lifts it to \(1.003\,(p_0 + q_n) - p_0\), and the next \(1/r\) hours multiply it by \(a\), so \(q_{n+1} = a\,(1.003\, q_n + 0.003\, p_0)\). This map is a contraction exactly when \(1.003\,a < 1\), and its fixed point gives (7).∎
In wordsAt 10 sales an hour the price hovers near 0.0040 ETH; at 30 an hour, near 0.0135 ETH. The six-hour half-life is strong: the price only runs away if sigils sell faster than one every 93 seconds.
From day 8 there is one more floor, where \(C\) is the war chest and \(n\) the number of standing sigils:
\[ p(t) \;\ge\; 0.8 \cdot \frac{0.9\, C}{n} \tag{8} \]In wordsA late sigil costs at least 80% of what one sigil’s share of the war chest is worth, so nobody can buy into the chest cheaply in the last days.
Where each payment goes
A sigil bought at price \(p\) is split four ways: tribute, war chest, buy-and-burn of TAUFA, and operations.
\[ p \;=\; 0.45\,p \;+\; 0.42\,p \;+\; 0.08\,p \;+\; 0.05\,p \tag{9} \]Tribute without a loop
Paying hundreds of sigils one by one would cost too much gas. Instead the contract keeps one running number \(A\), the tribute earned so far by a sigil that has always stood, and a debt \(D_i\) for each player. When player \(b\) buys at price \(p\) while \(n\) sigils stand, \(n_b\) of them \(b\)’s own:
\[ \begin{gathered} \Delta A = \frac{0.45\, p}{n - n_b} \\[2pt] A \leftarrow A + \Delta A, \qquad D_b \leftarrow D_b + n_b\, \Delta A \end{gathered} \tag{10} \]A player with \(a_i\) standing sigils can claim at any time
\[ \mathrm{pending}_i = a_i\, A - D_i \tag{11} \]In wordsThe 45% is shared equally by every standing sigil except the buyer’s own. Whenever \(a_i\) changes by \(\delta\) (a plant, a crack, a repair), \(D_i \leftarrow D_i + \delta A\), so each sigil earns only from sales after it was planted and while it stands.
Creator fees go the same way. Stockereum pays a creator fee of 2% of TAUFA trading volume, and all of it goes to tribute, with nobody excluded:
\[ \Delta A = \frac{F}{n} \qquad \text{for a fee payment } F \tag{12} \]Season settlement
At the end of the 14 days, 90% of the war chest \(C\) is paid out by claim weight, and 10% carries over to the next season:
In wordsA standing sigil holds one unit of claim, plus half a unit for each of the \(m\) ruins it has captured; a ruin keeps half a unit. When a sigil falls, half of its unit stays with the ruin and half moves to the nearest older standing sigil, so a fall moves claim weight around rather than destroying it.
The identity
Add up what comes back to the season’s players. With \(S\) the season’s spending on sigils, \(F\) the creator fees and \(K\) what players spend on cells:
\[ \begin{aligned} R &= (0.45 + 0.9 \times 0.42)\, S + F - K \\ &= 0.828\, S + F - K \end{aligned} \tag{14} \]In wordsAs a group, players get back 82.8% of what they pay for sigils, plus all trading fees, minus what they burn on cells. Without trading fees the group loses at least 17.2%, and any one player’s gain is other players’ loss. Tribute flows from later sigils to earlier ones: if new sigils stop, tribute stops.
Who loses
The identity fixes the total, not the split. For the split we coupled the real 256 × 256 board to this economy and simulated whole seasons, with the tuned parameters on this page. Slide through the creator-fee levels we simulated.
§ 6Weather and the attack budget
In the book, Minpentai is training for a war. Mu tells Zei in chapter 10: “It’s military training.” Here the enemy is the market. Let \(s\) be the net amount of TAUFA sold over the last 24 hours, measured from the pool’s time-weighted reserves with the game’s own buys added back. Each bell, \(k\) Arctic rams enter from the board edge:
\[ k = \min\!\left(4,\ \left\lfloor \log_2\!\left(1 + \frac{s}{0.1\ \mathrm{ETH}}\right) \right\rfloor \right) \tag{15} \]In words\(k\) rams need \(s \ge 0.1\,(2^k - 1)\) ETH: 0.1, 0.3, 0.7 and 1.5 ETH for one to four. No selling, no rams; each extra ram needs about twice as much selling as the one before.
Players’ own attacks share one budget: 8 weapon cells per bell for the whole board, which is one ram, with a target of 4. The price of a cell moves like Ethereum’s base fee under EIP-1559, where \(u_n \le 8\) is the number of weapon cells used at bell \(n\):
\[ c_{n+1} = \max\!\left( c_0,\ c_n \left( 1 + \frac{1}{8} \cdot \frac{u_n - 4}{4} \right) \right) \tag{16} \]In wordsA bell that uses the whole budget makes the next one 12.5% more expensive, a bell that uses none of it makes the next one 12.5% cheaper, and the price never drops below the launch price. Repairs sit outside this budget and always cost the launch price.
With these numbers, our simulations lost about 28% of untended sigils per season and 13% of tended ones, and 92% of the sigils standing when the siege began were still standing at the end. The edge takes most of the weather: untended loss was 63% on the outer ring of sites, against 15% in the interior.
§ 7Assumptions and limits
- The edge is not reversible. The real board has a 2-cell frame that deletes whatever enters it, so debris can leave. Theorem 1 holds in the interior; once something has touched the frame, running backward no longer brings it back.
- Proofs and measurements are different things. Theorems 1–3 and the lemma are proved. The piece facts in §4 are measurements on isolated setups: one sigil, one wall, one projectile. On a crowded board, two gliders arriving together can break what one cannot.
- The census can still be wrong. Five samples remove bounce misreads, but in simulation 4–6% of declared deaths were still false.
- The money results are simulations. Player behavior is assumed, not measured: 40% tend their sigils, 8% attack, attackers aim well, nobody builds posts, and demand does not react to returns. The low loss shares at high fees are optimistic for that reason.
- Capacity is small. The board has 512 sites. In the simulations a season held about 190–230 players; with 1,000 arrivals, 78% could not get a sigil.
- Everything here is for one rule card. A new season rule changes the physics, and §2–§4 would have to be redone.
- No promise of profit. Later sigils pay earlier ones. You can lose what you pay.
Sources
- Norman Margolus, “Physics-like models of computation,” Physica D 10 (1984). The shifting 2 × 2 cut of §1.
- Tommaso Toffoli and Norman Margolus, Cellular Automata Machines (MIT Press, 1987). The Critters rule of §2.
- Snowmoon (2026, GPL v3), chapters 2, 4, 10, 17 and 21: every quotation on this page, and the game itself.
- EIP-1559, “Fee market change for ETH 1.0 chain” (2019). The pricing rule behind (16).
- This game’s physics tests and integrated season simulations, run on independent engines that agree bit for bit. The figures on this page are computed in your browser by the step function of the playable demo; view the source to check.