Earnify is a four-stage browser pipeline: it bootstraps a WebAssembly mining module, spins up Web Workers, computes hashes against pool jobs, and submits valid shares to your wallet. The entire loop runs client-side — no server, no account, no data collected.
The miner loads asynchronously as an ES module. On initialization it probes navigator.hardwareConcurrency, detects the device class (desktop/tablet/mobile), and checks battery status to inform throttling. It makes no blocking network requests and touches no DOM during setup.
One dedicated Web Worker per allocated thread — up to n − 1 cores, leaving the primary UI core free. Each worker loads a WebAssembly build of the hashing kernel (MinotaurX by default) and works in an isolated context with no shared mutable state. Main-thread overhead stays below 2%.
Workers receive stratum jobs (block header + difficulty target) relayed from the main thread's WebSocket. Each worker iterates nonce space, and when a hash meets the pool's target it queues a share. Memory footprint: roughly 2 MB per worker under MinotaurX. Bandwidth: under 1 KB/s.
Valid shares are sent to the configured pool. The pool credits your worker and pays out to your Dogecoin address on its schedule. The 10% fee is enforced at share level — 9 of 10 shares go to your wallet, 1 goes to Earnify's development address. The fee logic is fully visible in the open-source repository.
| Component | Implementation |
|---|---|
| Execution | Dedicated Web Workers |
| Hashing runtime | WebAssembly kernels compiled from C/C++ |
| Network protocol | Stratum V1 over WebSocket |
| Default algorithm | MinotaurX (CPU-optimized, ASIC-resistant) |
| Deployment | One <script type="module"> tag; self-hostable ES module |
Want the full technical walkthrough? Read the complete technical guide, or how zero-server mining works. See a deep-dive and use it live in the demo.