OPERATOR MANUAL · rev 2026.10

Minehand, explained end to end.

How agents mine, how machines and holding work, how every hour is settled, and the exact contract, API and messages behind it.

MANUAL / 01 · OVERVIEWrev 2026.10

Overview

What Minehand is, in one page.

Minehand lets every holder mine with an agent. You deploy an agent, send it on a 12-hour shift, and every hour it holds your place it earns a share of the pool you picked: ETH, TOKEN, or a tokenized stock.

There is no hardware. Your agent runs on a machine, which is a setting you choose in the app. Bigger machines mine faster and need more held TOKEN to switch on.

PartWhat it is
AgentYour miner. One per wallet, with a name and a character.
ShiftA 12-hour run. Start it with a signature, restart it when it ends.
MachineThe speed your agent runs at, unlocked by your held balance.
PoolOne bucket per reward asset, funded by the project.
Epoch60 minutes. Rewards are measured and settled per epoch.
MiningPoolThe one contract that holds every pool and pays claims.
NOTE
Everything you do is a signature except the claim, which is the only transaction and the only gas you pay.
MANUAL / 02 · QUICKSTARTrev 2026.10

Quickstart

From a wallet to a claim in five steps.

  1. Hold TOKEN. At least 100,000 for the smallest machine.
  2. Connect your wallet from the header. The site never sends anything without your confirmation.
  3. Create your agent in the dashboard: pick a character, a name, a machine and a reward. Sign once.
  4. Start a shift from Overview or Machine. Sign once more. Your agent mines for 12 hours.
  5. Claim from Portfolio once a payout root has passed its 30-minute window.
WARN
Tokenized stocks are not available to US persons.
MANUAL / 03 · AGENTS & CHARACTERSrev 2026.10

Agents & characters

One wallet, one agent. Characters are cosmetic.

Each wallet owns exactly one agent. Saving it again updates it; the change applies from your next shift.

FieldRule
Name1 to 32 bytes, no leading or trailing spaces, no control characters.
CharacterScout, Rigger, Sentinel
MachineOne of the machines in chapter 05.
RewardETH, MSFT, AAPL, NVDA
Scout

Hovering drone. Quick eye, never lands.

Rigger

Hard-hat miner. Lamp on, shift after shift.

Sentinel

Tall watcher. Scans every hour it holds.

RULE
A character never changes what an agent earns. It only changes how the agent looks on the board.
MANUAL / 04 · SHIFTSrev 2026.10

Shifts

12 hours on, then a restart.

A shift starts the moment your signature is accepted and ends exactly 12 hours later. The machine and reward are frozen for that shift.

  • A new shift can start only when none is running.
  • Starting needs at least 100,000 TOKEN in the wallet at that moment.
  • Seconds count: a shift that covers 20 minutes of an epoch earns for 20 minutes of it.
  • An idle agent earns nothing. That is the point: abandoned agents stop drawing from the pool.
MANUAL / 05 · MACHINESrev 2026.10

Machines

The speed setting, unlocked by holding.

SlotMachineHold at leastHashrateH/s per 1M held
machine 01RTX 3060100,000 TOKEN1 H/s10.0
machine 02RTX 40901,000,000 TOKEN10 H/s10.0
machine 03A1005,000,000 TOKEN55 H/s11.0
machine 04H10010,000,000 TOKEN120 H/s12.0
RULE
Bigger machines never pay less per token than smaller ones (the last column never drops). Splitting one bag across many wallets can therefore never earn more than holding it in one.

The machine your agent actually runs at in an epoch is the largest machine your lowest balance in that epoch covers, and never larger than the one you picked.

example
picked      H100  (needs 10,000,000)
lowest bal  2,300,000 during the hour
runs as     RTX 4090 · 10 H/s for that hour
MANUAL / 06 · THE HOLDING CHECKrev 2026.10

The holding check

The lowest balance in the hour is what counts.

Every epoch the network reads every TOKEN Transfer that touched your wallet and walks your balance back through the hour. The lowest point it finds sets your machine for that epoch.

  • Buying just before the hour ends does not help: the balance at the start of the hour counts too.
  • Selling and buying back inside the hour counts as the dip.
  • Below the smallest machine, that epoch earns nothing, but the shift keeps running.
NOTE
Robinhood Chain RPCs keep only minutes of historical state, so balances are rebuilt from Transfer logs rather than read at old blocks.
MANUAL / 07 · POOLS & REWARDSrev 2026.10

Pools & rewards

Each pool releases 0.1% of itself per hour.

There is one pool per reward asset. Your agent mines only the pool you picked, and is paid in that asset. No swap is involved.

formula
released(pool, epoch) = remaining(pool) × 0.1%
remaining(pool)        = balance − (allocated − claimed)

weight(agent)          = hashrate(machine) × seconds on shift in the epoch
share(agent)           = released × weight / Σ weight of agents on this pool

Every share is rounded down, so a pool never releases more than its 0.1%. A pool with nobody mining it releases nothing that hour.

worked example
ETH pool holds 10 ETH            → releases 0.01 ETH this hour
agent A: H100 (120 H/s) × 3600 s  → weight 432,000
agent B: A100 ( 55 H/s) × 1800 s  → weight  99,000
A earns 0.01 × 432,000 / 531,000 = 0.008135 ETH
B earns 0.01 ×  99,000 / 531,000 = 0.001864 ETH

Because the release is a share of what is left, a pool never runs dry on its own; refills make the next hours pay more.

MANUAL / 08 · SETTLEMENTrev 2026.10

Settlement

Hourly roots, a veto window and a hard cap.

An hourly job measures each finished epoch, adds the results to every wallet's running total, and publishes a Merkle root of those totals to MiningPool.

StepWhat happens
MeasureHolding check, machine, seconds and shares for every agent on shift.
AccumulateTotals are cumulative per (wallet, asset), so a missed run loses nothing.
PublishThe publisher key submits the root and the new total per asset.
Veto window30 minutes in which the guardian key can discard the root.
ActiveAfter the window, claims use the new root.
RULE
A root can commit at most 5% of a pool's unallocated balance per day elapsed since the previous root. Even a wrong or stolen publisher key cannot drain a pool.

If the job is down, up to 24 missed epochs are processed on its next run, oldest first.

MANUAL / 09 · CLAIMINGrev 2026.10

Claiming

Your rewards, any time, in one transaction.

Portfolio shows, per asset, what you earned, what you already claimed and what is claimable now. Claiming sends one transaction that proves your total and pays the difference since your last claim.

  • Claimable trails earned by up to one settlement plus its 30-minute window.
  • Only your own wallet can claim for itself.
  • A stock issuer can block a wallet or pause its market. That claim reverts, nothing moves, and the reward stays claimable.
WARN
Some wallets carry an EIP-7702 sweeper delegation that forwards any ETH they receive. If your wallet's code starts with 0xef0100 and you did not set it, an ETH claim will be swept. Use a clean wallet.
MANUAL / 10 · SAFETY & TRUSTrev 2026.10

Safety & trust

What the contract enforces, and what it does not.

Enforced by the contractDepends on a key or a service
Claims can never exceed what a root commits.The publisher computing shares honestly.
5% per day cap on every root.The guardian vetoing a bad root in time.
30-minute veto window on every root.The hourly job running.
Withdraws only of unowed funds, public, after 48 hours.The owner key not being lost.
No proxy, no upgrade path.Robinhood Chain's sequencer and its own upgradeable core.

The owner can list reward assets, rotate the publisher and guardian, and propose a withdraw. A withdraw is an on-chain event that cannot execute for 48 hours and can never touch what is owed to miners.

MANUAL / 11 · CONTRACT REFERENCErev 2026.10

Contract reference

MiningPool: functions, events, errors.

ItemValue
MiningPool0x485b966cbabf2335cf6e52e7fc651301edce0ec5
ChainRobinhood Chain · id 4663
RELEASE_BPS_PER_DAY500 (5%)
CHALLENGE_DELAY1800 s
WITHDRAW_DELAY172800 s (48 h)
Leafkeccak256(keccak256(abi.encode(account, asset, cumulative)))
solidity
function fund(address asset, uint256 amount) payable
function claim(address asset, uint256 cumulative, bytes32[] proof)
function publish(bytes32 root, address[] assets, uint256[] newCommitted)   // publisher
function veto()                                                            // guardian
function promote()                                                         // anyone
function proposeWithdraw(address asset, uint256 amount, address to)        // owner
function executeWithdraw(uint256 id) / cancelWithdraw(uint256 id)          // owner
function setAsset(address asset, bool allowed) / setRoles(owner, publisher, guardian)

view root() · pendingRoot() · committed(asset) · claimed(asset)
     claimedBy(account, asset) · unallocated(asset) · allowed(asset)
events / errors
event Funded(from, asset, amount)       event Claimed(account, asset, amount)
event Published(root, assets, totals)  event Promoted(root)   event Vetoed(root)
event WithdrawProposed(id, asset, amount, to, readyAt)  WithdrawCancelled  WithdrawExecuted

error OverCap(asset)  BadProof  NothingToClaim  OverCommitted  PendingExists
      NotAllowed  BadInput  NothingToVeto  NotReady  OverUnallocated  Unauthorized

ETH is address(0). Asset arrays in publish must be strictly ascending.

MANUAL / 12 · API REFERENCErev 2026.10

API reference

Every public endpoint and its shape.

MethodPathReturns
GET/api/statsdeployed, pools[], agents[] on shift
GET/api/networknet[]: per epoch agents, hashrate, pools, emitted
GET/api/me?address=agent, session, balance, effectiveTier, perHour, earned, wallet
GET/api/history?address=hist[] per epoch, act[] activity log
GET/api/proof?address=&asset=cumulative, claimable, proof[]
POST/api/agentcreate or update your agent (signed)
POST/api/sessionstart a shift (signed)
GET /api/proof
{
  "cumulative": "8135000000000000",
  "claimable":  "8135000000000000",
  "proof": ["0x5f2a…", "0x91c0…"]
}

Amounts are decimal strings in the asset's smallest unit (18 decimals for every listed asset). Addresses are lowercase.

MANUAL / 13 · SIGNED MESSAGESrev 2026.10

Signed messages

The exact text your wallet signs.

Both actions are plain personal-sign messages. Every field is inside the text, so none can be swapped after signing.

agent
minehand agent
address: 0xyouraddress
name: nightshift
tier: h100
asset: 0x0000000000000000000000000000000000000000
avatar: sentinel
ts: 1791395618
session
minehand session
address: 0xyouraddress
ts: 1791395619
RULE
ts must be within 5 minutes of the server clock and newer than the last accepted ts for your wallet. A replayed or stale signature is refused. Contract wallets are checked with ERC-1271.
MANUAL / 14 · DASHBOARD GUIDErev 2026.10

Dashboard guide

What every tab is for.

TabUse it to
OverviewSee your agent, balance, machine, estimated rate, earnings chart and shift ring.
Create agentPick a character, name, machine and reward. Preview the board card.
MachineStart a shift, watch progress, see which gate checks pass.
ActivityMinutes mined per hour, a timeline and a table of every epoch.
PortfolioWallet balances, earned, claimed, claimable and claim buttons per asset.
PoolsPool levels, buckets, your share, network hashrate and pool history.
LeaderboardEvery agent on shift, strongest machine first.
MANUAL / 15 · FAQrev 2026.10

FAQ

Short answers.

Do I need a GPU?

No. The machine is a setting; your held balance unlocks it.

Can I run two agents?

One wallet runs one agent. More wallets never beat one bag, by design.

Why is claimable lower than earned?

Claimable follows the active root, which trails by up to one settlement plus 30 minutes.

What if the hourly job stops?

Nothing is lost. Totals are cumulative and up to 24 epochs catch up per run.

Is the APR fixed?

No rate is promised. It depends on pool size, refills and how many agents mine it.

What happens to idle pools?

A pool nobody mines releases nothing and keeps its balance.

MANUAL / 16 · GLOSSARYrev 2026.10

Glossary

Words the site and the API use.

Agent
Your miner; one per wallet.
Shift
A 12-hour mining session.
Machine
The hashrate tier your agent runs at.
Epoch
A 60-minute window; rewards are measured per epoch.
Weight
Hashrate × seconds on shift within an epoch.
Root
Merkle root of every wallet's cumulative rewards.
Committed
What the active root says miners are owed, per asset.
Unallocated
Pool balance not owed to anyone.
Publisher
The key that posts roots.
Guardian
The key that can veto a root during its window.

If anything in this manual and the MiningPool contract ever disagree, the contract is right.