JevmineJevmine
Scored on chain. The vault factory is on BNB Chain, and a full season ran end to end on BNB Chain testnet: sixteen answers, every one scored by the contract.
A single small server with three live connections coming in — a public randomness beacon, the published packs and the model API — and answers going out to the vault on chain.one rigone small boxnear the modelpublic beaconpublished packsthe model APIanswersto the vaultyour account · your key · your host
One small instance, three connections held open, answers going out to the vault. No key of yours ever reaches us.

One small box near the model, and a stake.

The rig is one Node.js file. This page is what it does and what it never does, so it can be held to it.

from nothing to mining

Five steps.

  1. 01Stake the tokenLock at least 0.1% of supply in the vault from the vault page or with `rig.mjs stake`. Only a stake counts, and it is locked from your first answer in a round until that round closes.
  2. 02Start one small instanceClose to the model's API. The rig is one Node.js file under a systemd unit; it keeps a warm connection to the API and watches the chain.
  3. 03Give it your own keysYour model API key, and the key of the wallet that staked. The wallet key signs every answer, and it can also withdraw the stake, so treat the instance as holding the stake: keep only gas on it besides.
  4. 04Self-test`rig.mjs selftest` sends real packs to the model and compares the p95 with the window. If the machine cannot make it, the rig refuses to mine.
  5. 05Let it runIt skips any pack whose box carries no usable sealed copy of its key, opens each pack at the beacon, answers, commits within two blocks, opens its answers for the contract to score, opens any key the operator holds back from that sealed copy (which works only if the operator sealed the right key), and claims when the season is final.

the stake

Only a stake counts.

A wallet staking tokens into the vault, which weighs every score by that stake and locks it until the round closes, after which it can be withdrawn.your walletstakes the tokenat least 0.1% of supplythe vaultholds the stakeweighs every scoreby the stake at yourfirst answer of the roundround closesthe lock liftsunstake whenever you likeno withdrawal while a round you answered in runsonly a stake counts, and one token counts once
The vault weighs every score by the stake the wallet had at its first answer of the round, and holds that stake until the round closes.

Why a stake and not a balance: a balance can be read only in the transaction that answers, and the same tokens can pass through ten wallets inside one block, each counted once. A stake sits in the vault and is locked for the round, so one token counts once. When the round has closed, the stake can be withdrawn, from the vault page or with rig.mjs unstake.

custody

Who holds what.

Three boxes — your rig with the wallet key, your cloud account with the model API key, and this project holding nothing — with crossed-out links showing that no secret moves to it.your rigthe wallet keysigns answers, can unstakeyour cloud accountthe model API keynever leaves itthis projectnothing of yoursno key, no ability to read oneyour keys stay yours; nothing crosses to this projecttreat the rig as holding the stake: keep only gas on it besides
Three separate custodies. The line between them is not a policy, it is that nothing is ever sent across it.

The model API key lives in your own cloud account and is read by your own instance. Our servers never see it. That is also why there is no shared key and no proxy: a proxy would be a place where your key could be read.

The wallet key is on the rig, because every answer is a transaction from the wallet that staked. The same key can withdraw the stake once its round has closed, so treat the instance as holding the stake, and keep nothing else on that wallet but gas.

A rate limit on one API account can carry many thousands of wallets, so "one account per wallet" is not a real constraint and this project will never ask for it. Opening extra accounts to farm free credit breaks the API provider's terms, and we would rather say so than design a rule that pushes you into it.

the small print that matters

What it costs to run, and what the rules of use are.

Running cost

About $6.72 a month for the instance and roughly $8 a month of API calls. Gas: an answer and its settlement are about 155,000 gas, so at 0.05 gwei a day of full frequency is about 0.001 BNB; a rig that opens a pack itself pays about 180,000 gas more for that pack, so budget up to roughly twice that. Not a Lambda: a cold start eats the window.

Cost of a pack

Measured at $0.00132 per pack of 128 at the shipped split, sending each half once; the shipped rig sends each half twice, so it pays about twice that. The cheapest contender that was measured came in at a few times that, so cost is not the moat and this site will not claim it is. The window is the moat.