PoLM (Proof of Legacy Memory) is a Proof-of-Work consensus algorithm where the primary bottleneck is real DRAM access latency β a physical property that cannot be miniaturized, parallelized, or replicated in ASIC silicon.
Unlike SHA-256 (compute-bound) or Ethash (VRAM bandwidth-bound), PoLM is latency-bound: the time to complete one unit of work is dominated by how long it takes to read random bytes from RAM.
Every generation β DDR2, DDR3, DDR4, DDR5 β mines honestly based on its physical latency characteristics. Slower RAM scores higher per nonce; faster RAM compensates with higher nonce throughput. The network needs both.
Mining rewards are bridged to Polygon as an ERC-20 token (0x79175931C54c9765E5846229a0eB118ef24fdE55), claimable at polm.com.br/claim.
Project Information
| Field | Value |
|---|---|
| Project name | PoLM β Proof of Legacy Memory |
| Symbol | POLM |
| Version | 2.0.0 |
| Website | polm.com.br |
| Explorer | polm.com.br/explorer.html |
| Claim rewards | polm.com.br/claim |
| @polmram | |
| Founder | AluΓsio Fernandes β @aluisiofer |
| Repository | GitHub β |
| License | MIT |
| Status | β Mainnet Live |
| ERC-20 Contract | 0x79175931C54c9765E5846229a0eB118ef24fdE55 |
| Oracle wallet | 0xcD128d1112Bbb44D61f0557a375E512f14856c93 |
Objectives
- β Support any RAM generation β DDR2 through DDR5 and beyond
- β Be fully decentralized β no central authority, no pool required
- β Resist ASICs naturally via DRAM physics
- β Drive a new hardware upgrade cycle through epoch-based DAG growth
- β Maintain honest competition across all RAM generations
- β Create a new hardware market by Epoch 7 (1 TB RAM arrays)
Protocol Parameters
Network Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Full Nodes (Consensus) β
β Validate blocks Β· Store chain Β· REST API β
β polm.com.br/api/ β
ββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β
ββββββββ΄βββββββββββββββ
βΌ βΌ
Mining Clients Polygon Oracle
(CLI / GUI) (ECDSA bridge)
β β
DDR2Β·DDR3Β·DDR4Β·DDR5 ERC-20 POLM token
Any RAM mines polm.com.br/claim
PoLM Algorithm
Flow
1. Generate Memory DAG (256 MB in Epoch 0, seeded from epoch + prev_hash)
2. Initialize hash from: prev_hash + miner_address + nonce
3. Execute random memory walk (1,000 steps)
4. Measure average access latency (ns)
5. Compute score = 1.0 (fixed β telemetry only)
6. Validate: block_hash must start with "0" Γ difficulty
Memory Walk
h = sha3_256(f"{prev_hash}:{address}:{nonce}".encode())
pos = int.from_bytes(h[:8], 'little') % dag_size
for step in range(100_000):
mem = DAG[pos : pos+32] # random DRAM read
h = sha3_256(h + mem) # hash chain
pos = int.from_bytes(h[:8], 'little') % dag_size
avg_latency = total_ns / 100_000
score = 1.0 / avg_latency
final_hash = h
Properties: Unpredictable access pattern (CPU prefetch cannot help) Β· Sequential dependency (cannot parallelize steps) Β· Cache-defeating (256 MB DAG > all L1/L2/L3) Β· Tamper-proof (latency embedded in block header)
Score Formula
Why this is fair
| RAM | Avg Latency | Score/nonce | Nonces/sec | Result |
|---|---|---|---|---|
| DDR2 | ~3800 ns | High | Low | High score per nonce |
| DDR3 | ~2000 ns | Medium | Medium | Balanced |
| DDR4 | ~1200 ns | Lower | Higher | More nonces |
| DDR5 | ~600 ns | Lowest | Highest | Maximum throughput |
Difficulty Adjustment
expected_time = 144 Γ 120 = 17,280 seconds
actual_time = Ξt of last 144 blocks
ratio = clamp(0.75, 1.25, expected_time / actual_time)
D_new = D_old Γ ratio
Adjusts every 144 blocks. Maximum Β±25% change per window prevents oscillation. Target: one block every 2 minutes.
Memory DAG
dag_seed = sha3_256("polm:" + str(epoch) + ":" + prev_hash[:32])
dag_size = 256 * (2 ** epoch) # MB β doubles each epoch
The DAG doubles each epoch. This prevents caching across epochs and increases RAM requirements over time β the core mechanism driving hardware evolution.
Epoch Schedule
epoch = height // 100_000
reward = 50.0 / (2 ** epoch)
| Epoch | Blocks | ~Days | DAG | Min RAM | Reward | Who mines? |
|---|---|---|---|---|---|---|
| NOW 0 | 0β100k | ~138d | 256 MB | 4 GB | 50 POLM | Any PC with 4 GB+ RAM |
| 1 | 100kβ200k | ~138d | 512 MB | 8 GB | 25 POLM | Most modern PCs |
| 2 | 200kβ300k | ~138d | 1 GB | 16 GB | 12.5 POLM | Gaming PCs |
| 3 | 300kβ400k | ~138d | 2 GB | 32 GB | 6.25 POLM | Workstations |
| 4 | 400kβ500k | ~138d | 4 GB | 64 GB | 3.125 POLM | High-end PCs |
| 5 | 500kβ600k | ~138d | 8 GB | 128 GB | 1.5625 POLM | Servers |
| 6 | 600kβ700k | ~138d | 16 GB | 256 GB | 0.781 POLM | Dedicated RAM rigs |
| 7 β‘ | 700kβ800k | ~138d | 32 GB | 512 GB | 0.390 POLM | RAM mining boards |
| 8+ π | 800k+ | β | 64 GB+ | 2 TB+ | 0.195 POLM | New hardware industry |
β‘ Epoch 0 is the most accessible window. Any machine with 4 GB+ RAM β DDR2 to DDR5 β can mine today.
Block Validation Rules
A block is valid if ALL of the following hold:
1. block_hash starts with "0" Γ difficulty
2. block_hash == sha3_256(all_header_fields)
3. height == chain.tip.height + 1
4. prev_hash == chain.tip.block_hash
5. latency_ns >= 5 (anti-cache-exploit)
6. reward == 50.0 / (2 ** epoch) (epoch halving enforced)
7. timestamp <= now + 120 (Β±2 min tolerance)
8. ram_size_mb >= MIN_RAM_MB[epoch]
Transactions
Transaction format
tx_id = sha3_256(signing_bytes + signature)
signing = "sender:receiver:amount:fee:timestamp:memo"
signature = ECDSA secp256k1
Transaction validation
1. amount > 0
2. fee >= 0.0001 POLM
3. sender.balance >= amount + fee
4. signature valid (ECDSA secp256k1)
5. not already confirmed
6. addresses start with "POLM"
Wallet Standard
| Parameter | Value |
|---|---|
| HD wallet | BIP-39 / BIP-44 |
| Mnemonic | 12 words |
| Derivation path | m/44'/7070'/account'/0/index |
| Address prefix | POLM |
| Signature | ECDSA secp256k1 |
| Coin type | SLIP-44 #7070 |
Polygon Bridge & Oracle
1. Miner submits block β PoLM node validates
2. Oracle signs block data with ECDSA secp256k1
3. Oracle submits signed batch to Polygon smart contract
4. Miner claims ERC-20 POLM at polm.com.br/claim (fee: 0.5 MATIC)
| Parameter | Value |
|---|---|
| Network | Polygon PoS (Chain ID 137) |
| Contract | 0x79175931C54c9765E5846229a0eB118ef24fdE55 |
| Oracle | 0xcD128d1112Bbb44D61f0557a375E512f14856c93 |
| Claim fee | 0.5 MATIC |
| Verification | Sourcify β Blockscout β |
Security Model
ASIC gap: DDR2 (~3800ns) vs DDR5 (~600ns) = ~6Γ. SHA-256 ASICs are 100,000Γ faster than CPUs. PoLM's physical constraint means custom silicon has no useful advantage.
Economics
Emission Schedule
| Epoch | Reward | ~POLM minted |
|---|---|---|
| NOW 0 | 50 POLM | 5,000,000 |
| 1 | 25 POLM | 2,500,000 |
| 2 | 12.5 POLM | 1,250,000 |
| 3 | 6.25 POLM | 625,000 |
| 4 | 3.125 POLM | 312,500 |
| β¦ | halving | β 210M total |
Full supply takes 30+ years to mine completely. Emission is predictable and manipulation-resistant.
95% community mining Β· 5% founder (locked 5yr) Β· No pre-mine Β· No ICO Β· No VCs
Founder Allocation
| Parameter | Value |
|---|---|
| Founder | AluΓsio Fernandes (@aluisiofer) |
| Allocation | 10,500,000 POLM (5% of max supply) |
| Lock period | 5,256,000 blocks (~5 years) |
| Address | POLMD872771E5F0017C5B5C08D353B5E7B4B |
Enforced at consensus level β no transaction from the founder address is valid before the lock expires:
if tx.sender == FOUNDER_ADDRESS:
assert current_height >= GENESIS_HEIGHT + 5_256_000
REST API
| Endpoint | Method | Description |
|---|---|---|
/api/ | GET | Node status + chain summary |
/api/getwork | GET | Mining job |
/api/submit | POST | Submit mined block |
/api/tx/send | POST | Broadcast transaction |
/api/chain | GET | Block list (?limit=N&offset=N) |
/api/block/<h> | GET | Block + transactions |
/api/balance/<addr> | GET | Address balance |
/api/miners | GET | Mining leaderboard |
/api/register_evm | POST | Register Polygon wallet |
/api/peers | GET | Connected peers |
Technology Stack
| Component | Technology |
|---|---|
| Full Node | Python + Flask |
| CLI Miner | Python (no dependencies) Β· auto-update |
| GUI Miner | Python + Tkinter |
| Explorer | Python + Flask (v3.0.0) |
| Wallet | Python + HTML/JS (BIP-39/BIP-44) |
| Oracle | Python + web3.py (ECDSA bridge) |
| Smart Contract | Solidity (Polygon PoS) |
| Database | JSON (chain) + SQLite (oracle state) |
| API | REST / JSON |
Miner Quick Start
πͺ Windows (PowerShell)
# Install Python 3.11
winget install Python.Python.3.11
# Download miner
mkdir $env:USERPROFILE\polm
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/proof-of-legacy/Proof-of-Legacy-Memory/main/polm_miner_cli.py" -OutFile "$env:USERPROFILE\polm\miner.py"
# Run
python $env:USERPROFILE\polm\miner.py
π§ Linux / macOS
curl -O https://raw.githubusercontent.com/proof-of-legacy/Proof-of-Legacy-Memory/main/polm_miner_cli.py
python3 polm_miner_cli.py
The miner auto-updates on every run. On first run: generates 12-word BIP-39 wallet, registers Polygon address, starts mining immediately.
Roadmap
- βv1.0 β PoLM algorithm designed and tested
- βv1.2 β Mainnet infrastructure Β· polm.com.br
- βv2.0 β Pure latency consensus Β· any RAM mines Β· epoch halving
- βCLI miner β no dependencies Β· Windows & Linux Β· auto-update (v1.5.4)
- βGUI miner β Windows / Linux / macOS
- βOracle ECDSA β auto-sustaining Polygon bridge
- βClaim page β polm.com.br/claim
- βCPU / OS detection in explorer leaderboard
- βMining pool β for slow computers
- βQuickSwap DEX listing (Polygon)
- βCoinGecko / CoinMarketCap listing
- βCEX listing
- βEpoch 7 β 1 TB RAM mining arrays (new hardware market)
Conclusion
PoLM introduces a fundamentally new class of Proof-of-Work grounded in DRAM physics. By making latency β not compute power β the bottleneck:
- 01Any RAM mines β DDR2 through DDR5, all generations participate honestly
- 02No artificial rules β DAA LWMA Β· score = 1.0 fixed, nothing else
- 03ASIC-resistant by physics β DRAM latency cannot be engineered away
- 04Hardware evolution built-in β epochs force RAM upgrade cycles, creating a new industry by Epoch 7
- 05Truly decentralized β any PC with 4 GB+ RAM mines in Epoch 0
- 06Polygon bridge live β mine natively, claim ERC-20 POLM on Polygon
PoLM is experimental software. Not financial advice.