Verify
Check it yourself, do not take our word
Every universe on this site is a pure function of a block hash. The function is open source, so anyone can run it and compare the result with what is stored on BNB Chain. Two commands, no account, no server involved.
Recompute any universe
git clone https://github.com/q3579338/bnbbang-engine
cd bnbbang-engine
node tools/recompute.js 0x0d21840abff46b96c84b2ac9e10e4f5cdaeb5693cb665db62a2f3b02d2d57b5b
recompute.js rebuilds the 23 parameters, the outcome, the grade and the cardHash from the hash alone. The derivation is integer-only, so the result is identical on every platform. Zero dependencies, Node 18 or later.
Diff it against the chain
node tools/verify-onchain.js 1
verify-onchain.js reads token #1 from the MirrorUniverse contract on BSC mainnet, recomputes the universe from the block hash stored with it, and compares parameters, outcome, grade and cardHash byte for byte. A universe that was rescued (constants nudged by burning BANG) is recomputed from the block hash plus the operation log written into the transaction, so the server's archive is not needed.
The repository ships 292 engine self-checks and 118 on-chain comparison tests. node engine/test.js runs the first set locally.
What the signature proves, and what it does not
Minting requires a server signature: the contract exposes only bangSigned(). The server recomputes the parameters and stamps them so nobody can mint a forged cosmology. The signer address is readable on-chain via signer() and is listed below; anyone can check that an NFT's signature recovers to that address. The protocol, with a runnable verifier and real vectors, is in docs/signing-protocol.md.
The signature does not let the server invent universes: the signed parameters must equal what recompute.js produces from the hash, and that is exactly what verify-onchain.js checks.
Contracts on BSC mainnet
chainId 56, deployed 2026-08-22. No proxy, no upgrade path, no selfdestruct, no delegatecall, no pause.
| Contract | Address |
|---|---|
| BangToken (BEP-20) | 0xa5306b022f24b920aeafbff9f0dba1a391c4442d |
| MirrorUniverse (NFT) | 0x1661086ee19cc8ef938e98ad9058e74fa870aa78 |
| MirrorMarket | 0x5f1def4874613b64bac2272424f2041e1359b001 |
| BangNames | 0x6a732c3dd5555ee6c60c380e4e53b9a1f9cb17d6 |
| BangNames2 | 0x36e5d8358b9d97ab41ac9daf1ee962f4ec6001b0 |
| MirrorCrafted | 0x12ce81dbfbfae6614ae98a64a223a9369b43d30a |
| BangVesting (team 100M) | 0xb3e1af9f2b57f9ed6d73a75a895f66f757e6e0e1 |
| BangPromo (listing fees 100M) | 0xaddd4a144b7371afc37cb590fa5570a0f2e72179 |
| Referral treasury (200M) | 0xfaec0579f6f15ec7e5048b0e11e273a6e40641c6 |
Signer (on-chain signer()) | 0x81F355093ef706bA5a6e74e9F286C28A479D33Ee |
Live checks: /api/health reports the chain id and the signer the server is using; they must match the contract. /api/market/status shows how far the market index is behind the chain.
Tests that run against real bytecode
All contract tests execute the compiled bytecode on a local EVM, from bnbbang-economy:
| Suite | Checks | Suite | Checks |
|---|---|---|---|
| economytest | 196 | craftedtest | 110 |
| markettest | 127 | vestingtest | 41 |
| nametest | 125 | promotest | 49 |
| names2test | 156 | crosscheck | 110 |
Three things that are not trustless
- Minting needs the server stamp. Contract-level requirement, not a frontend choice; the signer is on-chain and the stamped parameters are recomputable.
- Referral rebates are paid after human review. Tier-1 10%, tier-2 5% of the invitee's mint reward; sybil patterns are not paid. Each on-chain grant carries a reason.
- A few owner knobs exist, all bounded. The three free-mint switches can only be tightened; rescue skim defaults to 0 (cap 20%); market fees cap at 10%; per-mint issuance sits in 100–2000.