Rent computeby the second
GPUs, CPUs, disks and databases from whoever has them spare.
Escrow USDG, pay only for the seconds you use, and stop the moment
it stops being worth it — every unspent cent comes straight back.
GPUs, CPUs, disks and databases from whoever has them spare.
Escrow USDG, pay only for the seconds you use, and stop the moment
it stops being worth it — every unspent cent comes straight back.
Token contract. Verify the address here before you trade it anywhere — this is the only one.
0x954f81c9bdce955619e8533bc5fdd9d0503cf8b4Blockscout ↗A lease in front of you: the command types itself out, then elapsed, spent, refundable and runway tick over per second against a consumption bar. The arithmetic is the contract's - same rate, same accrual, same runway.
A marketplace like this normally needs an arbiter to settle “the box was down” arguments, and an arbiter is a person who can be captured. Instant closing removes the need for one: a provider who goes dark stops being paid within seconds of being noticed, so the worst outcome is too small to need a judge.
A provider publishes a machine and an hourly price. No deposit, no application, no approval queue. The listing is a claim they make.
A renter funds however many hours they want. The USDG sits in the contract; nobody can move it but the metering.
Payment accrues to the provider second by second. They may withdraw the earned part at any moment without ending the lease.
Either side closes. Earned goes to the provider, the entire remainder returns to the renter, in one transaction.
This is not a mock. The panel on the left reads listingCountoff the contract and shows whatever is there - including nothing, when nothing is there. The ledger on the right is a demonstration of how a provider's side accrues once the shelf is stocked.
There is no deposit and no vetting, because a deposit only gates entry unless somebody can judge when to seize it - and nobody here can. Reputation is the lease history, which is public and cannot be edited.
struct Listing {
address provider; // msg.sender at list()
Kind kind; // GPU | CPU | Storage | Database
uint96 pricePerHour; // USDG, 6 decimals
bool open; // provider may close it
string spec; // "RTX 4090 / 24GB / eu-central"
string endpoint; // "ssh://box.example:22"
}Five moments. Two are transactions the provider sends, two the renter, and one is just the chain's clock. The invariant across all five: the contract's balance for a lease always equals funded minus claimed, and it ends at zero.
Kind, spec, endpoint and USDG/hour go on-chain. One transaction of gas.
Escrows USDG. The rate is frozen at this moment; a later price change cannot touch it.
Every second the lease earns pricePerHour / 3600, capped at what was funded.
Withdraws earned-so-far. The lease keeps running.
Earned to the provider, the rest to the renter, contract balance for this lease returns to zero.
The whole external surface. No owner-only functions exist because there is no owner. Fourteen tests cover it, including a 256-run fuzz over funding and timing that proves settlement always returns the contract to a zero balance.
| Function | Arguments | Effect | Caller |
|---|---|---|---|
| list | kind, pricePerHour, spec, endpoint | Puts a machine on the shelf | anyone |
| updateListing | id, pricePerHour, endpoint, open | Reprices or closes a listing; live leases unaffected | provider |
| rent | listingId, amount | Escrows USDG and starts the clock | anyone |
| topUp | leaseId, amount | Extends the runway of a running lease | anyone |
| claim | leaseId | Pays the provider what has accrued | provider |
| close | leaseId | Settles both sides and ends the lease | renter or provider |
The deployer's key was used once, to deploy, and has no standing afterwards. What is at this address is final - every guarantee on this page, and every bug.
Worth saying plainly, because most marketplaces bury it: this contract has no way to see the hardware. A listing is a claim its provider makes, not a fact anybody verified. Your protection is that leaving costs you nothing but the seconds spent.
Escrow, per-second metering, instant close. Live on RH Chain. The chain settles money; it does not see the machine.
Lease history is public and cannot be edited. A provider page that reads it - hours served, closes by renters, average tenure - with no new trust assumption.
A renter-signed attestation that a job completed, anchored on-chain. Still no arbiter: a receipt is evidence a provider can show, not a judgement.
R1 is live. Everything after it adds information around the rail without adding a party who can override it.
One contract, written for this, not forked. Solidity 0.8.28, OpenZeppelin's ReentrancyGuard and SafeERC20, Foundry for the tests, Next.js for the window onto it. The stack is short because the idea is short.