$HELD

held / technical docs v0.1 · live reader

A reward system that measures the hold.

held reads public chain data, integrates balances over time, and publishes the arithmetic before anyone calls it a payout. This is the short route from a transfer log to a number you can recompute.

Credit is the area under your balance.

A snapshot asks what you hold at one instant. That makes the easiest strategy obvious: buy just before the snapshot, sell just after it, and collect credit for time you did not hold. held measures the whole line instead.

time-weighted average balance Σ (balance × seconds held) ÷ epoch seconds All amounts are integer units. No floating-point arithmetic touches the ledger.
A10,000

held for the full seven-day epoch

full credit
B≈ 60

10,000 bought one hour before close

one hour of credit

Linear by design. Square-root weighting can be farmed by splitting one bag across many wallets. Linear weighting keeps the credited balance equal to the balance actually held, regardless of how it is arranged.

What is live today.

The current deployment does one thing with real chain data: it reads the native balance of the developer wallet and exposes the exact value as the pot source. It does not invent a token ledger while the token is absent.

networkRobinhood Chainchain id 4663
RPCofficial public noderpc.mainnet.chain.robinhood.com
pot basiscurrent native balancedeveloper wallet → latest block
epoch7 daysread on demand · cached 60 seconds
source wallet 0xBA749c67f985D160F270B8277A4658eCcb5Bf384 open in explorer ↗

The block number, exact balance, network, and source wallet appear with the live pot on the scanner. The balance can change as the chain changes; the page never treats a stale number as current.

token contractnot configuredTOKEN is unset in this deployment
token decimalsnot availableconfigured at launch
deployment blocknot availableTOKEN_FROM_BLOCK is unset

What launch unlocks.

The reader is wired for a configured ERC-20, but it remains dormant in this deployment. Launch configuration is not a claim that rewards are payable: the contract, precision, start block, exclusions, and a complete public history must all be visible first.

  1. 01
    Configure the contract.

    TOKEN is the ERC-20 address, TOKEN_DECIMALS is its precision, and TOKEN_FROM_BLOCK is the launch/deployment block. The API exposes the configured address, decimals, and start block.

  2. 02
    Scan every Transfer log.

    The reader covers every block from the configured start through the latest block, resolves block timestamps, and folds the events into an opening balance plus balance-seconds. Large or rejected RPC pages are split and retried.

  3. 03
    Exclude only named addresses.

    The zero address and dead address are always excluded. The developer wallet, pool, treasury, distributor, and any comma-separated explicit exclusions are also named; LP positions are not silently treated as sold.

  4. 04
    Publish only complete history.

    Pages must be contiguous. Gaps, malformed or removed logs, RPC failures, and negative reconstructed balances keep the epoch unpublished instead of producing a partial holder ledger.

Current state: no holders, no rankings, no payable rewards.The native pot is real and visible; token eligibility is not.

Read-only is a feature.

The site is a reader and calculator, not a wallet. It has no route that can spend, no custody layer, and no memory of who looked up an address.

01No keys.

No private credentials are needed by the app.

02No signing.

The server can never authorize a transaction.

03No custody.

Nothing is deposited, locked, or moved here.

04Fail closed.

RPC errors, incomplete data, and imbalance are reported instead of guessed through.

No keys. No signing. No custody.Payments, if ever introduced, are sent by a person from their own wallet, from the file this produces.

Small API, exact numbers.

Every amount crosses the HTTP boundary twice: as an exact raw integer string and as a human-readable decimal. This keeps the display convenient without letting it disagree with the ledger.

GET /healthzDeployment health, cache count, and reader status.
GET /api/stateNetwork, chain, wallet, payout, token-pending, and explorer metadata.
GET /api/epochCurrent epoch, pot source, exact balances, exclusions, scan range, and published rows. Token rows appear only after a complete configured scan.
GET /api/position?addr=…One EVM address's time-weighted position. Before launch it returns 409; after launch it returns the row's raw balance, close balance, counted percentage, share, and projected payout.
GET /api/ledger.csvDownloadable holder ledger after launch. Before launch it returns 409; incomplete token history returns an unavailable response.
GET /a/<address>Shareable wallet lookup route that loads the scanner shell.

Configuration without secrets.

The live defaults are intentionally public and boring. The RPC endpoint, chain expectation, and wallet are validated at startup; nothing sensitive belongs in the browser or API state.

variabledefault / purpose
TOKENunset → token-pending mode; configured ERC-20 address activates holder scanning
TOKEN_DECIMALS0–36 · token precision; falls back to DECIMALS, then 18
TOKEN_FROM_BLOCKrequired with TOKEN · first block in the contiguous history scan
DECIMALS18 · legacy token precision fallback and display precision
LOG_BLOCKS_PER_PAGE5000 · log scan page span; failed pages split and retry
EXCLUDE_ADDRESSEScomma-separated addresses never credited
POOL_ADDRESS / TREASURY_ADDRESS / DISTRIBUTOR_ADDRESSnamed exclusions added to the token scan
EPOCH_DAYS7 · epoch length
DUST_WEI200000000000000 · below-send-cost floor
CARRIED_IN_WEI0 · prior rollover included in the pot
DEV_WALLETsupplied developer wallet · native pot source
RPC_URLRobinhood public RPC override
CHAIN_ID4663 · expected network
EPOCH_TTL_MS60000 · in-memory refresh window
PAYOUT_SYMBOLETH · displayed payout unit
TICKER / ORIGIN / PONS_URL / X_URLoptional display and sharing metadata
PORT3900 default · production uses 5000

Verify it yourself.

The claim is not that everybody will inspect the arithmetic. The claim is that anybody can. Start with the same public inputs, keep amounts as integers, and compare the raw values.

public inputs
network  Robinhood Chain
chain    4663
rpc      https://rpc.mainnet.chain.robinhood.com
wallet   0xBA749c67f985D160F270B8277A4658eCcb5Bf384
explorer https://robinhoodchain.blockscout.com
download this epoch's ledger ↗
real current epoch excerpt
GET /api/epoch
200 OK
{
  "id": "epoch-2026-08-23",
  "block": 49835151,
  "pot": {"raw": "110500394686138702", "fmt": "0.11050039"},
  "holders": 0,
  "token": null,
  "tokenPending": true,
  "rows": []
}
real holder lookup before launch
GET /api/position?addr=0x1111111111111111111111111111111111111111
409 Conflict
{
  "err": "token is not configured; holder rewards are pending launch",
  "tokenPending": true,
  "token": null,
  "payout": "ETH",
  "addr": "0x1111111111111111111111111111111111111111"
}

After launch, verify the live response rather than copying a fixture. A successful holder response carries tokenDecimals, the epoch window, exact raw strings for twab, end, and projected payout, plus the scan range on /api/epoch. None of these endpoints custody funds or sign a transaction.

Exact conservation. Every wei of the pot is either paid or rolled forward. Integer division remainders and below-dust amounts are named in the ledger, never quietly retained.