#
###
#####
#######
###
#####
#######
#########
#####
#######
#########
###########
#
#
The browser tab is the easy way in. But anything works: the contract accepts a valid nonce from any software. Here is everything you need to build a faster miner.
The contract doesn't care what software you mine with.
Good for phones, laptops, and trying things out. For real hashrate, read on.
cast):# node: nodejs.org or your package manager, then: curl -L https://foundry.paradigm.xyz | bash && foundryup # installs cast
curl -O http://this-host/miner/miner.mjs curl -O http://this-host/miner/keccak.mjs
RPC_URL=https://rpc.mainnet.chain.robinhood.com \ PRIVATE_KEY=0x<fresh-wallet-key> \ CONTRACT=0x<contract-address> \ node miner.mjs
mint(nonce, digest) with the 0.00005 ETH mining cost attached automatically, pays a few cents of L2 gas, and the reward lands on your address.The reference miner is pure JS (~tens of kH/s) — a correctness baseline, not a race car. It re-checks the challenge every couple of seconds and refreshes automatically when someone else mines.
Everything the contract checks, byte for byte. Port the loop to GPU / SIMD / whatever you have:
challengeNumber() → bytes32, miningTarget() → uint256.challenge(32) ‖ yourAddress(20) ‖ nonce(32) — packed, no ABI padding.uint256(keccak256(message)) ≤ miningTarget.mint(uint256 nonce, bytes32 digest) where digest is your winning hash — payable, attach MINT_PRICE() (0.00005 ETH; it becomes contract-locked pool liquidity). Selector: 0x1801fbe5.Mint event or poll challengeNumber() and restart your sweep.seedLiquidity() exists as a backup.)Expected work per mine = 2²⁵⁶ / miningTarget hashes. More hashrate wins
more often, but the retarget keeps the network pace fixed — you're competing for share, not raising the
ceiling. Existing open-source EIP-918 GPU miners (0xBitcoin family) adapt by changing the packed-message
layout to the 84 bytes above.
A pool is just an address that submits solutions: miners hash with the pool's address in the message, submit shares off-chain, and the pool splits on-chain rewards by share count — the classic 0xBitcoin model. No pool is live yet; if you run one, say so.
[!] Use a burner, not your treasury. Mine with a fresh wallet that holds a little ETH for gas and nothing else. The miner needs the key to sign its mining tx — never feed it a key that guards real funds.