Connect a wallet

Your wallet signs; this site never sees a secret key. Pick the wallet you use on Kadena.

Everything, checkable

Every number on this page is read from the blockchain by your own browser when the page loads. Nothing here is typed in by us, so nothing here can quietly go out of date. Where the contract does not report something, this page says so rather than leaving a blank.

What this page is

Network…
Contract…
Module hash the chain reports…
Same program on all 20 chains…

That hash identifies the running code on this network. It is not meant to match a hash you compute yourself — a Pact module hash covers its dependencies too — so the check that proves something is the byte-for-byte comparison in VERIFY.md at github.com/SmartPacts/spt ↗, which reads the code back off the chain and diffs it against the published source.

Chain time when this page loaded…
Upgradeable, or frozen for good…
It reads the chain, not our records
Each figure below is a query your browser sends straight to a public Kadena node. You can send the same queries yourself — the exact commands are at the bottom.
It asks nothing of you
No wallet, no connection, no account. This page only reads.
A blank is never a zero
If a query cannot be answered, you will see why — “the contract has no such record on this chain” and “the network did not answer” are different statements, and this page never turns either into a 0.

Where all the tokens are

Are you sitting on a pile you are about to sell into the market?

Tokens that exist…
In circulation…

Reading the chain…

…
Adds up to…

The four allocations below are constants inside the deployed contract, and the contract refuses to start unless they add up to the total. So this is not a summary we prepared — it is the arithmetic the program enforces on itself.

Can more be created?

Can you mint more and shrink what mine is worth?

Not under the contract’s rules. The only function that creates tokens runs once, on one chain, and refuses to run a second time. There is exactly one place in the whole contract that can increase an account’s balance, and every use of it is paired with a matching decrease somewhere else — a transfer, not a mint.

The honest caveat: the total can go down. A transfer between chains is two steps, and one abandoned halfway strands those tokens permanently. Nothing in the contract’s code can push the number up; the one exception, until the contract is frozen, is the administrator override stated under “What the administrator can and cannot do”.

Can we take yours?

Once I hold some, can you freeze my account, claw them back, or stop me selling?

Not under the contract’s rules, and this is worth checking rather than believing. Spending from an account requires that account’s own guard and nothing else. There is no blacklist function, no pause switch, no clawback and no administrative transfer anywhere in the contract — not disabled, not gated behind a key, absent. The same is true of changing an account’s key: only the account’s current guard can do it. One exception, and it is ours: until the contract is frozen, two of our three admin devices can override those rules in a single transaction, with no new code — including changing any account’s balance or key. It is stated in full under “What the administrator can and cannot do”, and freezing ends it.

The accounts holding everything

Who is actually holding it, and what would it take to move it?

They are not all guarded the same way, and the difference matters:

Guarded by a rule — no key exists

No key can satisfy these. They are guarded by a rule inside the contract rather than by a signature, so no private key can spend from them under the contract’s rules — not ours, not anyone’s. They move only through the specific routes the contract provides, with one exception until the contract is frozen: the administrator override stated below reaches these accounts too.

…

Guarded by the contract

These are guarded by the contract itself. No outside key can touch them either, but the contract’s own code can move them through the routes it defines — funding a reward pool, settling a sale. Those routes are listed further down, and each one leaves a permanent record on chain. Until the contract is frozen, the administrator override stated below reaches these accounts as well.

…

These are real addresses on Kadena mainnet. Look any of them up in a block explorer — you do not have to take these balances from us.

The release calendar

Could you just take the treasury tomorrow?

🔴 Read the scope of this before the numbers. Three of the four allocations sit under a release calendar. The fourth — the sale reserve — is under no calendar at all: it is the pool tokens are sold from, and it can move whenever the sale is open. Do not read the locks below as covering it.

A calendar has two dates. Nothing at all is available until the cliff. After that it unlocks smoothly, a little each day, until the full-unlock date. The amount available right now is shown for each — and releasing is something anyone can trigger, not a private lever.

…

What the calendar does not do: it controls when tokens can move, never where they go afterwards. Once an amount has unlocked, the destination is the administrator’s to choose. And until the contract is frozen, the administrator override stated below can reach locked tokens too.

The money

Is there any money in this, and where has it gone?

…

All of these read zero because nothing has happened yet: the sale has never been open, so nothing has been received, and no reward round has ever been declared, so nothing has been set aside or paid out.

The contract holds funds in named accounts, and those balances are public. Every label below says exactly what the contract reports — not a friendlier version of it.

Follow the money

Where did the money from the sale go, and what is it doing now?

Sale funds leave the contract by exactly one door: a withdrawal signed by two of the three administration keys, into an account that is also under that same two-of-three rule — the company account. From there every move is a public transaction. Below, the accounts that money has touched, with their balances read from the chain right now, and every transaction on that path so far, each checked against the chain when this page loads.

The accounts on the path

Balances are read from the chain when the page loads. “Explorer” opens the account on the public block explorer, which lists its recent transfers — the place to follow anything this page does not list.

Sale proceeds — Where the KDA paid for tokens is received. The contract holds it; only a two-key withdrawal moves it.
reading the contract…
reading the chain…
Company account — Where withdrawals go. Guarded by the same two-of-three rule as the contract’s administration, so no single key can spend it; it exists on chain 0 (where the sale is) and chain 2 (where the roulette table is).
r:n_48867b242317a0216a67f8c7ca26696b5878e0e3.spt-gov
reading the chain…
Roulette pot — The table’s capital at play.smartpacts.io. Held by the roulette contract itself — no key can spend it; it pays winners and its fee, and only a two-key withdrawal can take capital out.
m:n_48867b242317a0216a67f8c7ca26696b5878e0e3.roulette:roulette-pot
reading the chain…
SPT funding account — Where the table’s fee arrives, on chain 2. Held by the SPT contract.
reading the contract…
reading the chain…
Roulette helper 1 — Pays the transaction fees that settle rounds and send winners their payouts. Funded with 5 KDA from a founder’s own wallet, not from the sale.
k:535f34ebf0a8ab0605f4c1c5f3a3d31a23966804f25f53c9706c30a1f0755737
reading the chain…
Roulette helper 2 — The second, independent helper: the same duty from another machine. Funded the same way.
k:2023550ab269d4d877456e85f426b520e2db8d5572f1ffe91947384faf304baa
reading the chain…
Baccarat pot — The baccarat table’s capital at play.smartpacts.io/baccarat/. Held by the baccarat contract itself — no key can spend it; it pays winners and its fee, and only a two-key withdrawal can take capital out.
m:n_48867b242317a0216a67f8c7ca26696b5878e0e3.baccarat:baccarat-pot
reading the chain…
Baccarat helper 1 — Deals the coups from the beacon and sends winners their payouts; pays only its own transaction fees. Funded with 5 KDA from a founder’s own wallet, not from the sale.
k:e338ab566fbdab007c777d76a86d4db499a8bc48882de0129f5511420816967d
reading the chain…
Baccarat helper 2 — The second, independent helper: the same duty from another machine. Funded the same way.
k:4b2af89367b841def981a386385433ebfc1fa4d0d8a34f6fdfd3ddccd02c6ba6
reading the chain…
Slots pot — The slots machines’ capital at play.smartpacts.io/slots/. Held by the slots contract itself — no key can spend it; it pays winners and its fee, and only a two-key withdrawal can take capital out.
m:n_48867b242317a0216a67f8c7ca26696b5878e0e3.slots:slots-pot
reading the chain…
Slots helper 1 — Submits the beacons, settles the boards and sends winners their payouts; pays only its own transaction fees. Funded with 5 KDA from a founder’s own wallet, not from the sale.
k:f2be0b38ee4b878b5302aa269e2a9d73e767d8ee6244de2c642a17979948d5a5
reading the chain…
Slots helper 2 — The second, independent helper: the same duty from another machine. Funded the same way.
k:9afcbe3d0d837127ea30363d3b6e61129afbc1d4fd32e9c4d6551ff9822314cb
reading the chain…

Each table — roulette, baccarat and slots — pays a fee on every board it accepts, from its own pot to the SPT funding account — never from a player’s stake. The funding account’s chain 2 balance above is those fees so far.

Every transaction so far

The list of transactions is ours; the amount, the block and the outcome beside each one are read from the chain when the page loads, and a transaction the network does not confirm is shown as unconfirmed, never as done. Each key opens the transaction on the public explorer.

2026-09-22 · chain 0 — The company account is created on chain 0 (an account with no balance, under the two-of-three rule).
2026-09-22 · chain 0 — 0.1 KDA sent across to chain 2 to open the company account there — a rehearsal with dust before any real amount.
2026-09-22 · chain 0 — Rehearsal: 1 KDA withdrawn from the sale proceeds to the company account, two keys.
2026-09-22 · chain 0 — Control drill: 0.4 KDA spent out of the company account to the operations wallet, two keys — proving the company can actually spend before it holds anything large.
2026-09-22 · chain 0 — The 0.4 KDA returned to the company account.
2026-09-22 · chain 0 — Rehearsal: 1 KDA moved from the company account on chain 0 to chain 2.
2026-09-22 · chain 0 — 14,999 KDA withdrawn from the sale proceeds to the company account, two keys. With the rehearsal, exactly 15,000 KDA left the proceeds.
2026-09-22 · chain 0 — 14,999 KDA moved from the company account on chain 0 to chain 2.
2026-09-22 · chain 2 — 15,000 KDA from the company account into the roulette pot, two keys. This is the table’s capital.
2026-09-22 · chain 2 — The table’s first payout: a helper sends a winner 0.02 KDA from the pot (the second proof round).
2026-09-23 · chain 2 — A payout of 0.38 KDA from the pot to a winner (round 5).
2026-09-26 · chain 0 — Baccarat, rehearsal: 1 KDA withdrawn from the sale proceeds to the company account, two keys.
2026-09-26 · chain 0 — Rehearsal: that 1 KDA moved from the company account on chain 0 to chain 2.
2026-09-26 · chain 0 — 14,999 KDA withdrawn from the sale proceeds to the company account, two keys. With the rehearsal, exactly 15,000 KDA left the proceeds for the baccarat table.
2026-09-26 · chain 0 — 14,999 KDA moved from the company account on chain 0 to chain 2.
2026-09-26 · chain 2 — 15,000 KDA from the company account into the baccarat pot, two keys. This is the baccarat table’s capital.
2026-09-26 · chain 2 — The baccarat table’s first payout: a helper sends a winner 0.0195 KDA from the pot (the second proof round, to an account that held nothing).
2026-10-11 · chain 0 — Slots, rehearsal: 1 KDA withdrawn from the sale proceeds to the company account, two keys.
2026-10-11 · chain 0 — Rehearsal: that 1 KDA moved from the company account on chain 0 to chain 2.
2026-10-11 · chain 0 — 14,999 KDA withdrawn from the sale proceeds to the company account, two keys. With the rehearsal, exactly 15,000 KDA left the proceeds for the slots machines.
2026-10-11 · chain 0 — 14,999 KDA moved from the company account on chain 0 to chain 2.
2026-10-11 · chain 2 — 15,000 KDA from the company account into the slots pot, two keys. This is the slots machines’ capital.
2026-10-11 · chain 2 — The slots machines’ first payout: a helper sends a winner 0.02 KDA from the pot (the first proof round).

What the administrator can and cannot do

What are you locked out of, and what can you still change after I am in?

The contract’s code gives nobody a way to do any of these — but read the last item of the next list:

Can be done by the administrator:

🔴 On “two of three devices”. Some actions need two of three hardware devices and some need only one. Both sets of keys belong to the same operator — the three devices are all held by Smart Pacts. The two-of-three requirement limits the damage a single lost or misused device can do; it is not a second party’s approval, and you should not read it as one.

The contract is not yet frozen, which means it can still be upgraded, and its records changed directly by two admin devices. Freezing is permanent and has not happened. This page reads that switch on all 20 chains and reports what it finds — if it ever says frozen, upgrades have ended for good.

Why another chain looks empty

I looked at a different chain and everything was empty or errored. Is this broken?

Kadena is 20 separate chains, and the token exists on all of them — but everything was created on chain 0, so that is where it all still sits. On the other 19 the accounts have never been created, and asking for a balance there does not return zero, it returns an error. That is the correct answer to the question “what is in an account that does not exist”, and this page shows it as an absence rather than as a 0.

…

Check any of it yourself

Everything above is a public read. Nothing below needs a wallet, an account, or our permission.

# every figure on this page is a read like this one — no wallet, no account
curl -s https://api.chainweb-community.org/chainweb/0.0/mainnet01/chain/0/pact/api/v1/local \
  -H 'Content-Type: application/json' -d @- <<'JSON' | jq -r .result.data
{ "cmd": "{\"networkId\":\"mainnet01\",\"payload\":{\"exec\":{\"data\":{},
  \"code\":\"(n_48867b242317a0216a67f8c7ca26696b5878e0e3.SPT.chain-report)\"}},
  \"signers\":[],\"meta\":{\"chainId\":\"0\",\"gasLimit\":150000,
  \"gasPrice\":1e-8,\"sender\":\"\",\"ttl\":600,\"creationTime\":0},
  \"nonce\":\"n\"}", "hash": "", "sigs": [] }
JSON

The strongest check is not a balance — it is that the program running on the chain is the program we published. The source is public, and the code on chain can be compared against it directly.

# is the chain running the code we published?
# 1. ask the chain for its own copy of the source
#    (describe-module returns the module form ALONE — no preamble, no table footer)
# 2. take the module form out of the published deploy bytes:
sed -n '/^(module SPT /,/^)$/p' deploy-bytes/SPT.pact > /tmp/repo.pact

# 3. compare with the trailing newline normalised — see the note below
diff <(printf '%s' "$(cat /tmp/repo.pact)") \
     <(printf '%s' "$(cat /tmp/onchain.pact)") && echo "identical"

🔴 One trap, so you do not conclude the wrong thing. The chain’s copy of the source has no newline at the very end and a copy extracted from the repository does, so a plain diff reports a one-byte difference and exits with an error even when the code is identical. Compare with the trailing newline normalised, as shown, or you will get a false mismatch.

What this page does not tell you

Silence about an omission reads as concealment, so here is what is missing and why.

The sale price and terms
Recorded on chain, where anyone can read them. Not restated here — this page declines to restate sale terms, it does not hide them.
Anything off-chain
This page can only show what the contract knows. It cannot show money held anywhere else, what has been spent, or on what. Nothing here should be read as a complete picture of the company.
A history
These are all readings taken right now. The contract records its actions as permanent events on chain, but this page does not yet assemble them into a timeline.
Who holds what
Individual holders are not listed, and will not be.