Cheat Sheet — Power Formulas
The full Soeng chain (QI → MAI → XIA → XIE → ZI → PANG) in one page, plus the downstream consumers (RING, META, WAR).
Each step composes modular exponentiation with reads of balances divided by Entropy. Read bottom-up if you want to see what finally matters.
Layer 0 — inputs
Section titled “Layer 0 — inputs”| Input | What it is | Source |
|---|---|---|
SHIO.balanceOf(x) |
How much of the venue’s SHIO token x holds. | SHIO |
QING.balanceOf(x) |
How much of the QING token x holds. | QING |
Fomalhaute |
The Fomalhaute SHIO token (modulus source). | XIE |
Fornax |
The Fornax token (feeds Omicron/Omega into XIE). | XIE |
Tethys |
Feeds Omega/Eta into ZI. | ZI |
Yuan(QING) |
bal(user) + 10·bal(LAU) + 40·bal(YUE) for the QING’s underlying asset. |
CHOA |
User.Entropy |
Per-user entropy counter. | LAU |
QING.Entropy() |
Per-QING entropy counter. | QING |
Step 1 — QI (energy)
Section titled “Step 1 — QI (energy)”Qi(user) = SHIO.balanceOf(user) / User.EntropyQi(QING) = SHIO.balanceOf(QING) / QING.Entropy()Source: QI.
Step 2 — MAI (venue-specific power)
Section titled “Step 2 — MAI (venue-specific power)”Mai(user @ QING) = QING.balanceOf(user) / User.EntropySource: MAI.
MAI is also the unit of chat reward — up to 1 token per message. See Cheat Sheet: Caps.
Step 3 — XIA / XIE (combined charge + reactions)
Section titled “Step 3 — XIA / XIE (combined charge + reactions)”Charge = modExp( Qi(QING), Mai(user @ QING), Fomalhaute.balanceOf(...) )
Omicron = Fornax.balanceOf(user) / User.EntropyOmega = Fornax.balanceOf(QING) / QING.Entropy()XIE.Charge() returns (Charge, Omicron, Omega). Sources: XIA, XIE.
The Fomalhaute balance is the modulus of the modExp — it never acts as a numerator. Holding more Fomalhaute doesn’t increase Charge; it widens the codomain.
Step 4 — ZI (spin)
Section titled “Step 4 — ZI (spin)”Iota = modExp( Omicron, Charge, Yuan(QING) )Omicron = modExp( Omega, Charge, Yuan(QING) ) ← recomputedOmega = Tethys.balanceOf(user) / User.Entropy ← replacedEta = Tethys.balanceOf(QING) / QING.Entropy()ZI.Spin() returns (Iota, Omicron, Eta, Omega). Source: ZI.
Notice:
- Yuan(QING) is the modulus in both ZI’s modExp ops. Bigger Yuan = wider codomain, but also (practically) different outputs.
- Omicron and Omega are overwritten, not additively stacked. ZI erases whatever XIE put in.
Try it — Steps 1-4 calculator
Section titled “Try it — Steps 1-4 calculator”Plug in real balances and entropy values (yours or a QING’s) to see Qi, Mai, Charge, and ZI’s Iota/Omicron/Eta computed live, using the exact same modular-exponentiation math as the contracts above.
Layer 0 — inputs
Step 1-2 — QI / MAI
Step 3 — XIA / XIE
Step 4 — ZI
Step 5 — PANG (push)
Section titled “Step 5 — PANG (push)”Iota = modExp( ZI.Iota, QING.Entropy(), Yuan(QING) )Omicron = modExp( ZI.Omicron, Charge, Yuan(QING) )Eta = ZI.Eta ← passthroughOmega = ZI.Omega ← passthroughCharge = XIE.Charge ← passthroughPANG.Push(QingWaat) returns (Iota, Omicron, Phoebe, Omega, Charge) where Phoebe is the original input passed through the chain (often represented as Eta here). Source: PANG.
QING.Entropy() appears as an exponent in PANG’s Iota — not a divisor. So a high-entropy QING produces a very different Iota, but not in a monotone way (modExp is nonlinear). Don’t assume “more entropy = more Iota”.
Step 6a — RING.Eta() (moment)
Section titled “Step 6a — RING.Eta() (moment)”Chao = YUE.React(Phobos) // accumulates Hypobar/Epibar in YUE(Iota, Omicron, Phoebe, Omega, Charge) = PANG.Push(Phobos.Waat())Chao = Chao / OmicronCharge = Charge / OmegaMoments[Soul] = Iota ← storedIota = Iota * Iota ← return-value squaredreturn (Phoebe, Iota, Chao, Charge)Source: RING.
Key behaviours:
- Every Eta() call overwrites your
Moments[Soul]with the pre-squared Iota. - Chao divides by Omicron; a large Omicron shrinks Chao (and therefore the squared Yeo scaling later).
- The squared Iota is what downstream callers see as RING’s Iota return.
Step 6b — META.Beat()
Section titled “Step 6b — META.Beat()”(Phoebe, Iota1, Chao, Charge1) = RING.Eta()(Yeo, Omicron, Dione, Omega, Charge) = PANG.Push(QingWaat)Charge = Charge1 * Charge / Iota1Deimos = modExp( Dione, Phoebe, Yuan(QING) )Yeo = Yeo / Chaoreturn (Dione, Charge, Deimos, Yeo)Source: META.
Key behaviours:
- Yeo scales inversely with Chao. Bigger Chao → smaller Code range.
- Deimos uses Phoebe (from Eta) as exponent, Dione as base, Yuan(QING) as modulus.
Step 6c — WAR.Faa()
Section titled “Step 6c — WAR.Faa()”Buzz = WORLD.Tail(Caude, Position)if Buzz == 0: return 0(Phoebe, Iota, Chao, Charge) = META.Ring().Eta() // fresh EtaWaat = modExp( Phoebe, Charge, Meridians[89] )if Waat > _taan[Caude][Position]: H2O.Mint(Chi, Iota) // Iota here is the SQUARED Iota from Eta() CO2 += Chaoreturn WaatSource: WAR.
Key behaviours:
- H2O minted = squared Iota from Eta. So a small pre-squared Iota of 3 yields 9 H2O; 10 yields 100. It’s quadratic in pre-squared Iota.
- The
_taanhigh-score is monotonic per position — once beaten high, harder to beat again. - CO2 += Chao every time a new high is set. The more frequent the high-score beats, the faster CO2 accumulates.
What the chain means, in three sentences
Section titled “What the chain means, in three sentences”- Balances divided by entropy produce raw per-player numbers at each stage (QI, MAI, XIE-Omicron/Omega, ZI-Omega/Eta).
- modExp mixes them together with nonlinear feedback; the modulus gets bigger and more context-dependent as you move down the chain (Fomalhaute → Yuan → Meridians[89]).
- Iota is the reward currency of the chain. PANG’s Iota feeds RING’s Moments (and is squared), META’s Deimos/Yeo, and WAR’s H2O mint amount.
Practical optimization cheats
Section titled “Practical optimization cheats”- Hold some Fornax and some Tethys. XIE uses Fornax; ZI replaces Omega with Tethys. Both are per-stage inputs. See Power: Soeng Chain Optimization.
- Stack the venue asset in YUE, not wallet. Yuan’s 40× weight applies to YUE. See Power: Yuan Composition.
- Don’t churn. Every reaction bumps someone’s Entropy. See Power: Entropy Discipline.
Use these calls here. Simulations preview the current state; each confirmed call is a separate transaction.
0x4d9Ce396BE95dbc5F71808c38107eB7422FD9a03QI.ReactSoul(uint64 Soul)Simulate / call
Open this function to load its call form.
0xc48B0a4E79eF302c8Eb5be71F562d08fB8E6A3d8MAI.React(uint64 Soul, uint256 QingWaat)Simulate / call
Open this function to load its call form.
0x7f4a4DD4a6f233d2D82BE38b2F9fc0Fef46f25FAXIA.Charge(uint256 QingWaat)Simulate / call
Open this function to load its call form.
0x4Df51741F2926525A21bF63E4769bA70633D2792XIE.Power(uint256 QingWaat)Simulate / call
Open this function to load its call form.
0x0f5a352fd4cA4850c2099C15B3600ff085B66197CHOA.Yuan(address Currency)Read
Open this function to load its call form.