Claim XCORE
HEX holders · testHEX pool · separate from XEN. The HEX and XEN claims draw from two independent pools. Held both? You can claim both: this page for HEX, /claim for XEN. Claiming one never reduces the other.
not connected- Liquid
- —
- Staked principal
- —
- Total counted
- —
- Snapshot
- —
- Balance source
- —
- HEX counted
- Liquid + staked principal stakedHearts
- Pool
- HEX pool separate from XEN
- Allocation rule
- —
- Minimum HEX
- —
- Network fee
- None signature only, no gas
You sign a free message (personal_sign) that names your Ethereum address, the destination and a one-time code. No transaction, no approval, no gas.
Claim recorded
Simulation: recorded on the demo server. No XCORE was sent.
- XCORE allocated
- —
- HEX counted
- —
- Liquid · staked
- —
- From (Ethereum)
—- To (Solana / X1)
—- Recorded
- —
- Claim #
- —
One HEX claim per Ethereum address. This does not use up a XEN claim: XEN holders claim separately at /claim. In production the destination wallet would collect this XCORE from an on-chain claim program on Solana / X1.
Admin · test allowlist
Give an Ethereum address a test HEX balance so it can try the claim without holding HEX. Set a liquid amount and, optionally, an amount as if staked; the allocation uses their total. A test balance replaces the on-chain balance (liquid and stakes) for that address and is labelled “test” everywhere.
- Snapshot block
- —
- Block time
- —
- Liquid supply (totalSupply)
- —
- Staked principal (lockedHeartsTotal)
- —
- Counted supply (liquid + staked)
- —
- HEX claims recorded
- —
Balances are read with balanceOf at the snapshot block from a public Ethereum archive RPC.
What counts: liquid + staked principal. Liquid = balanceOf(address). Staked = the sum of stakedHearts (the HEX principal locked at stakeStart) over every entry in stakeLists(address, i) for i < stakeCount(address), all read at the snapshot block. HEX deletes a stake from that list when it is ended, so this includes every stake that was started and not yet ended (active, pending, or matured but not ended).
Not counted: T-shares (stakeShares, not HEX), interest/yield accrued on stakes (only known when a stake ends, and end penalties can change it), and stakes already ended before the snapshot (their HEX is back in balanceOf).
HEX contract 0x2b59…Eb39 ↗ (8 decimals). HEX also exists on PulseChain; this test checks Ethereum mainnet only. PulseChain is a follow-up.
Allocation
Example parameters · not final—
Separate pool. This HEX pool is independent of the XEN pool on /claim. Sizes for both are open and not final.
- XCORE pool
- —
- Minimum HEX
- —
- Cap per address
- —
- Claims per address
- 1
None of these numbers are decided. The pool size, formula, minimum, cap, snapshot block, chains and claim window are open decisions.
Recent HEX claims
Simulated| Time | Ethereum | Solana / X1 | XCORE |
|---|
No claims yet.
How it works
- Snapshot. Liquid HEX and active stakes are fixed at one Ethereum block, so buying, moving, staking or ending stakes afterwards changes nothing.
- Prove the wallet. Connect the Ethereum wallet that held HEX and sign a free message. The message names that address, your Solana / X1 destination, the snapshot block, a one-time code and an expiry. The server checks the signature and that the code was never used.
- Claim. The allocation is computed from your liquid + staked HEX at the snapshot and recorded once per Ethereum address, from the HEX pool. A XEN claim is separate and unaffected.
On this test page
Liquid balances and stakes come live from a public Ethereum archive RPC at the snapshot block (one Multicall3 eth_call for balanceOf + stakeCount, then stakeLists in batches of 200). Claims are stored in the demo database. No XCORE exists yet and nothing is sent. Admins can give a test wallet a test HEX balance.
In production
- Index every HEX holder at the snapshot block from
Transferlogs (or an indexer), compute every allocation and publish the full list plus its Merkle root. - A claim program on Solana / X1 holds the XCORE pool and stores the root. The Ethereum signature binds the HEX address to one destination; the destination then submits the Merkle proof and receives XCORE.
- No Ethereum transaction and no ETH gas for holders. The destination pays a tiny Solana / X1 fee to receive the tokens.
- Contract wallets (multisigs) need EIP-1271 signature checks; this test supports normal wallets only.
- Staked HEX for every holder: enumerate stakers from
StakeStart/StakeEndlogs up to the snapshot (or readstakeListsfor every address that ever staked) and add each address's unendedstakedHeartsto its liquid balance.