Building on it
Run the verifier locally
@coresrent/verify is an open-source command-line tool that runs every ledger check against your own Ethereum connection. It needs Node 20 or later and no account.
@coresrent/verify is a small command-line tool that runs every check from the ledger pages against Ethereum and IPFS, using your own connection. It is open source at github.com/coresrent/verify, needs Node 20 or later, and does not talk to any CoresRent server.
Install
Run it once with npx, or install it globally if you will use it often.
$ npx @coresrent/verify --version
@coresrent/verify 1.2.0
# or install it once
$ npm install --global @coresrent/verifyCheck one record
Download a record from the machine's page or from IPFS and pass the file. The tool looks for the matching .proof.json next to it and fetches it from IPFS if it is not there.
$ npx @coresrent/verify record ./2026-09-27T14.jsonCoresRent verify 1.2.0 · Ethereum mainnet (chain 1)
record CR-IAD4-07-04 2026-09-27T14:00Z IAD-4
ok digest 0x1e59…00ca
ok signature signed by 0xa089…836D
ok custodian key of IAD-4 at 14:00Z (Registry)
ok machine IAD-4, rack 07, slot 04, active
ok arithmetic 27,360 GPU-s × 0.90 / h = 6.840000 USDC
ok chain prevHash matches the 13:00Z record
ok ledger in root 0xcf85…5f58 (4 records, posted 15:06:12Z)
7 of 7 checks passedCheck a site and hour
This fetches every record for a site and hour using the content ID stored on the Ledger, checks each one, and rebuilds the Merkle root from scratch.
$ npx @coresrent/verify hour IAD-4 2026-09-27T14hour IAD-4 2026-09-27T14:00Z
fetched 4 records from IPFS (bafybeigx3q7…wkyzi)
ok every signature is the IAD-4 custodian key
ok rebuilt root matches the Ledger: 0xcf85…5f58
ok arithmetic on 4 of 4 records
gross 26.280000 USDC across 4 sleds (8× L40S), 29.2 GPU-hoursCheck a machine's history
This walks a machine's records in order and checks the hash chain. Hours with missing samples are listed, because they are real minutes that were not billed.
$ npx @coresrent/verify chain CR-IAD4-07-04 --from 2026-09-01 --to 2026-09-27chain CR-IAD4-07-04 2026-09-01T00:00Z to 2026-09-27T23:00Z
ok 648 records, no gaps, every prevHash matches
ok 648 roots found on the Ledger
3 hours with fewer than 60 samples: 2026-09-12T03 (57), 2026-09-12T04 (41), 2026-09-19T22 (59)Check a day's payout
This adds up recorded gross rent across the pool for one UTC day and compares it with that day's settlement on the Distributor contract.
$ npx @coresrent/verify day 2026-09-27day 2026-09-27 (UTC)
fetched 192 records across IAD-4, DFW-2
ok recorded gross matches the Settled event
ok fee is exactly 8.00% of gross
ok rent per share matches net ÷ shares on every machineOptions
| Option | What it does |
|---|---|
| --rpc <url> | Ethereum RPC to read from. Also read from CORESRENT_RPC. |
| --ipfs <url> | IPFS gateway, or your own node's API. Defaults to a public gateway. |
| --from, --to | Date range for chain and day, in UTC. |
| --json | Print results as JSON, one object per check, for scripts. |
| --quiet | Print nothing unless a check fails. |
Exit codes
| Code | Meaning |
|---|---|
| 0 | Every check passed. |
| 1 | At least one check failed. The output says which. |
| 2 | Something could not be fetched: the RPC, IPFS or a file. Nothing was judged. |
Exit code 1 on a real record is worth reporting. Send the command, its output and the file to security@cores.rent.
Last updated 5 October 2026.