Wallet creation with derived balances from confirmed blockchain transactions
Portfolio System
Browser-Based Proof-of-Work Simulation & Validation Lab
A browser-based Proof-of-Work blockchain lab that simulates wallets, transactions, pending pools, blocks, mining rewards, validation, tamper detection, benchmarks, persistence, and a JavaScript/WASM mining engine fallback.
Simulation Scope
Proof-of-Work Concepts In The Browser
MiniMiner simulates Proof-of-Work mining for education and does not mine real cryptocurrency.
Project Interface
Simulation Screens
Interface captures show the dashboard, wallet state, and mining workflow across desktop and mobile viewports.






Build
Technical Stack
The simulator keeps blockchain behavior, UI state, mining work, validation, persistence, and optional WebAssembly acceleration separated into clear modules.
Stack
React, Vite, Zustand, Tailwind CSS, Recharts, crypto-js, C++ WebAssembly
- block.js
- blockchain.js
- transaction.js
- wallet.js
- miner.js
- validation.js
- simulation.js
- useMinerStore.js
Engineering
What The Project Shows
MiniMiner is designed as a teaching lab and a portfolio signal for frontend architecture, deterministic state, validation rules, and browser-safe compute.
Validated pending transactions with available-balance checks and SYSTEM wallet restrictions
Responsive Proof-of-Work mining with progress, cancellation, rewards, difficulty, and active engine reporting
Explorer and validation flows that expose hashes, nonces, previous hashes, mining stats, and tamper detection
Benchmark runs across difficulty levels with table and chart output
localStorage persistence with JSON export, import, and reset workflows
Optional C++ WebAssembly miner with automatic JavaScript fallback
Architecture
Design Decisions
The app is intentionally local, deterministic, and inspectable so users can understand the full lifecycle from pending transactions to mined blocks.
Core blockchain logic is separated from React pages through dedicated block, transaction, wallet, miner, validation, and simulation modules
Core blockchain logic is separated from React pages through dedicated block, transaction, wallet, miner, validation, and simulation modules.
Zustand coordinates UI actions, persistence, mining jobs, settings, import/export, and derived chain state
Zustand coordinates UI actions, persistence, mining jobs, settings, import/export, and derived chain state.
Mining runs in bounded batches and yields back to the browser so the UI remains usable during Proof-of-Work
Mining runs in bounded batches and yields back to the browser so the UI remains usable during Proof-of-Work.
Validation recomputes hashes and balances from chain data instead of trusting stored wallet balances
Validation recomputes hashes and balances from chain data instead of trusting stored wallet balances.
Usage Flow
How The Lab Is Used
The workflow shows mining rewards, confirmed transactions, validation, and tamper detection without touching real cryptocurrency networks.
- Create a wallet and mine the first reward block.
- Create another wallet, submit a pending transaction, then mine again to confirm it.
- Inspect blocks in the explorer and validate the chain.
- Tamper with an old transaction to show why hash-linked history detects changes.
- Run benchmarks to compare difficulty, attempts, elapsed time, and hash rate.
Ownership
Role And Engineering Ownership
The lab is presented as a technical system because the value is in the architecture, validation model, state boundaries, and browser-safe execution behavior.
Designed the browser simulation architecture around deterministic state, bounded mining work, validation rules, persistence, and import/export workflows.
Separated blockchain behavior from React views through dedicated modules for blocks, transactions, wallets, mining, validation, and simulation data.
Implemented the JavaScript/WebAssembly fallback direction so the simulator remains portable while still showing compute-bound execution concerns.
Evidence
Confirmed Evidence Signals
The lab is public-facing and documented through concrete browser workflows rather than source-code disclosure.
Public browser lab with wallet, transaction, mining, validation, benchmark, persistence, import/export, and tamper-detection workflows
Screenshots available for dashboard, wallet, and mining workflows across desktop and mobile
Architecture documented around React, Vite, Zustand, crypto-js, Recharts, and optional C++ WebAssembly execution
Constraints
Execution Constraints
The simulator keeps the learning value of Proof-of-Work while respecting browser responsiveness and safety boundaries.
- The simulator intentionally avoids real cryptocurrency mining or network interaction.
- Mining difficulty is bounded so browser execution remains educational and responsive.
Reflection
Engineering Lessons
The project turns Proof-of-Work concepts into practical engineering lessons about state, validation, and compute boundaries.
- Browser-based compute needs cancellation, progress reporting, and bounded batches so educational simulations do not freeze the interface.
- Balances should be derived from confirmed chain data because trusted mutable wallet fields make validation and tamper detection less meaningful.