{"id":7,"date":"2026-06-03T01:48:17","date_gmt":"2026-06-03T01:48:17","guid":{"rendered":"https:\/\/mining.stinkyhammer.com\/?page_id=7"},"modified":"2026-06-03T01:48:17","modified_gmt":"2026-06-03T01:48:17","slug":"cryptofan-monero-mining-strategy","status":"publish","type":"page","link":"https:\/\/mining.stinkyhammer.com\/","title":{"rendered":"CryptoFan Monero Mining Strategy"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>The CryptoFan Mining Method \u2014 Closed Loop Monero Mining<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Share+Tech+Mono&#038;family=Barlow+Condensed:wght@300;400;600;700&#038;family=Barlow:wght@300;400;500&#038;display=swap\" rel=\"stylesheet\">\n<style>\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n  :root {\n    --amber: #EF9F27;\n    --amber-dim: #BA7517;\n    --amber-dark: #633806;\n    --amber-glow: rgba(239,159,39,0.08);\n    --bg: #0a0a08;\n    --bg2: #111110;\n    --bg3: #181816;\n    --text: #e8e4d8;\n    --text-dim: #9a9488;\n    --text-muted: #5a5650;\n    --border: rgba(239,159,39,0.15);\n    --border-bright: rgba(239,159,39,0.35);\n    --mono: 'Share Tech Mono', monospace;\n    --cond: 'Barlow Condensed', sans-serif;\n    --body: 'Barlow', sans-serif;\n    --red: #D85A30;\n    --green: #3B6D11;\n    --green-bright: #639922;\n  }\n\n  html { scroll-behavior: smooth; }\n\n  body {\n    background: var(--bg);\n    color: var(--text);\n    font-family: var(--body);\n    font-size: 16px;\n    line-height: 1.7;\n    overflow-x: hidden;\n  }\n\n  \/* \u2500\u2500 SCANLINE TEXTURE \u2500\u2500 *\/\n  body::before {\n    content: '';\n    position: fixed;\n    inset: 0;\n    background: repeating-linear-gradient(\n      0deg,\n      transparent,\n      transparent 2px,\n      rgba(0,0,0,0.03) 2px,\n      rgba(0,0,0,0.03) 4px\n    );\n    pointer-events: none;\n    z-index: 999;\n  }\n\n  \/* \u2500\u2500 HEADER \u2500\u2500 *\/\n  header {\n    border-bottom: 1px solid var(--border);\n    padding: 0 2rem;\n    position: sticky;\n    top: 0;\n    background: rgba(10,10,8,0.95);\n    backdrop-filter: blur(8px);\n    z-index: 100;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    height: 56px;\n  }\n\n  .logo {\n    font-family: var(--mono);\n    font-size: 13px;\n    color: var(--amber);\n    letter-spacing: 0.08em;\n    text-decoration: none;\n  }\n\n  nav { display: flex; gap: 2rem; }\n  nav a {\n    font-family: var(--cond);\n    font-size: 13px;\n    font-weight: 400;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n    color: var(--text-dim);\n    text-decoration: none;\n    transition: color 0.2s;\n  }\n  nav a:hover { color: var(--amber); }\n\n  \/* \u2500\u2500 HERO \u2500\u2500 *\/\n  .hero {\n    min-height: 92vh;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    padding: 6rem 2rem 4rem;\n    max-width: 1100px;\n    margin: 0 auto;\n    position: relative;\n  }\n\n  .hero-tag {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--amber);\n    letter-spacing: 0.2em;\n    text-transform: uppercase;\n    margin-bottom: 1.5rem;\n    opacity: 0;\n    animation: fadeUp 0.6s ease forwards 0.2s;\n  }\n\n  h1 {\n    font-family: var(--cond);\n    font-size: clamp(52px, 9vw, 110px);\n    font-weight: 700;\n    line-height: 0.92;\n    letter-spacing: -0.01em;\n    text-transform: uppercase;\n    color: var(--text);\n    margin-bottom: 0.2em;\n    opacity: 0;\n    animation: fadeUp 0.7s ease forwards 0.35s;\n  }\n\n  h1 span { color: var(--amber); }\n\n  .hero-sub {\n    font-family: var(--cond);\n    font-size: clamp(20px, 3vw, 32px);\n    font-weight: 300;\n    letter-spacing: 0.05em;\n    color: var(--text-dim);\n    text-transform: uppercase;\n    margin-bottom: 2.5rem;\n    opacity: 0;\n    animation: fadeUp 0.7s ease forwards 0.5s;\n  }\n\n  .hero-desc {\n    max-width: 580px;\n    font-size: 17px;\n    font-weight: 300;\n    color: var(--text-dim);\n    line-height: 1.8;\n    opacity: 0;\n    animation: fadeUp 0.7s ease forwards 0.65s;\n    margin-bottom: 3rem;\n  }\n\n  .hero-cta {\n    display: flex;\n    gap: 1rem;\n    flex-wrap: wrap;\n    opacity: 0;\n    animation: fadeUp 0.7s ease forwards 0.8s;\n  }\n\n  .btn {\n    font-family: var(--mono);\n    font-size: 12px;\n    letter-spacing: 0.15em;\n    text-transform: uppercase;\n    padding: 14px 28px;\n    text-decoration: none;\n    transition: all 0.2s;\n    display: inline-block;\n  }\n\n  .btn-primary {\n    background: var(--amber);\n    color: #0a0a08;\n    border: 1px solid var(--amber);\n  }\n  .btn-primary:hover {\n    background: #FAC775;\n    border-color: #FAC775;\n  }\n\n  .btn-ghost {\n    background: transparent;\n    color: var(--amber);\n    border: 1px solid var(--border-bright);\n  }\n  .btn-ghost:hover {\n    border-color: var(--amber);\n    background: var(--amber-glow);\n  }\n\n  \/* oscillating fan animation *\/\n  .fan-visual {\n    position: absolute;\n    right: -2rem;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 420px;\n    height: 420px;\n    opacity: 0;\n    animation: fadeIn 1.2s ease forwards 1s;\n  }\n\n  @keyframes spin-slow {\n    from { transform: rotate(0deg); }\n    to { transform: rotate(360deg); }\n  }\n  @keyframes oscillate {\n    0%,100% { transform: translateX(0) rotate(-25deg); }\n    50% { transform: translateX(-60px) rotate(25deg); }\n  }\n\n  .fan-group {\n    transform-origin: 210px 210px;\n    animation: spin-slow 8s linear infinite;\n  }\n  .fan-oscillate {\n    transform-origin: 210px 210px;\n    animation: oscillate 4s ease-in-out infinite;\n  }\n\n  \/* \u2500\u2500 TICKER \u2500\u2500 *\/\n  .ticker {\n    border-top: 1px solid var(--border);\n    border-bottom: 1px solid var(--border);\n    background: var(--bg2);\n    overflow: hidden;\n    padding: 10px 0;\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--text-muted);\n    letter-spacing: 0.08em;\n  }\n\n  .ticker-inner {\n    display: flex;\n    gap: 4rem;\n    white-space: nowrap;\n    animation: ticker 30s linear infinite;\n  }\n\n  @keyframes ticker {\n    from { transform: translateX(0); }\n    to { transform: translateX(-50%); }\n  }\n\n  .tick-item { display: inline-flex; gap: 0.5rem; }\n  .tick-val { color: var(--amber); }\n  .tick-sep { color: var(--text-muted); }\n\n  \/* \u2500\u2500 SECTIONS \u2500\u2500 *\/\n  section {\n    max-width: 1100px;\n    margin: 0 auto;\n    padding: 6rem 2rem;\n  }\n\n  .section-tag {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--amber);\n    letter-spacing: 0.2em;\n    text-transform: uppercase;\n    margin-bottom: 1rem;\n  }\n\n  h2 {\n    font-family: var(--cond);\n    font-size: clamp(36px, 5vw, 64px);\n    font-weight: 700;\n    text-transform: uppercase;\n    line-height: 0.95;\n    letter-spacing: -0.01em;\n    margin-bottom: 1.5rem;\n    color: var(--text);\n  }\n\n  h2 span { color: var(--amber); }\n\n  h3 {\n    font-family: var(--cond);\n    font-size: 24px;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    color: var(--text);\n    margin-bottom: 0.75rem;\n  }\n\n  \/* \u2500\u2500 OPEN VS CLOSED \u2500\u2500 *\/\n  .compare-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 2px;\n    margin-top: 3rem;\n    border: 1px solid var(--border);\n  }\n\n  .compare-card {\n    padding: 2.5rem;\n    background: var(--bg2);\n    position: relative;\n  }\n\n  .compare-card.closed {\n    background: var(--bg3);\n    border-left: 3px solid var(--amber);\n  }\n\n  .compare-label {\n    font-family: var(--mono);\n    font-size: 10px;\n    letter-spacing: 0.2em;\n    text-transform: uppercase;\n    margin-bottom: 1rem;\n    display: inline-block;\n    padding: 4px 10px;\n  }\n\n  .label-open {\n    color: var(--text-muted);\n    border: 1px solid var(--text-muted);\n  }\n\n  .label-closed {\n    color: var(--amber);\n    border: 1px solid var(--amber);\n  }\n\n  .compare-title {\n    font-family: var(--cond);\n    font-size: 36px;\n    font-weight: 700;\n    text-transform: uppercase;\n    line-height: 1;\n    margin-bottom: 1.5rem;\n    color: var(--text-dim);\n  }\n\n  .compare-card.closed .compare-title { color: var(--text); }\n\n  .compare-list {\n    list-style: none;\n    display: flex;\n    flex-direction: column;\n    gap: 0.75rem;\n  }\n\n  .compare-list li {\n    font-size: 14px;\n    color: var(--text-dim);\n    padding-left: 1.5rem;\n    position: relative;\n    line-height: 1.5;\n  }\n\n  .compare-list li::before {\n    position: absolute;\n    left: 0;\n    font-family: var(--mono);\n    font-size: 12px;\n  }\n\n  .list-bad li::before { content: '\u2717'; color: var(--red); }\n  .list-good li::before { content: '\u2713'; color: var(--green-bright); }\n\n  .compare-card.closed .compare-list li { color: var(--text); }\n\n  \/* \u2500\u2500 ANALOGY SECTION \u2500\u2500 *\/\n  .analogy-block {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 3rem;\n    margin-top: 3rem;\n    align-items: start;\n  }\n\n  .analogy-card {\n    border: 1px solid var(--border);\n    background: var(--bg2);\n    padding: 2rem;\n    position: relative;\n  }\n\n  .analogy-card::before {\n    content: attr(data-label);\n    font-family: var(--mono);\n    font-size: 9px;\n    letter-spacing: 0.25em;\n    text-transform: uppercase;\n    color: var(--amber);\n    position: absolute;\n    top: -1px;\n    left: 1.5rem;\n    background: var(--bg2);\n    padding: 0 8px;\n    transform: translateY(-50%);\n  }\n\n  .analogy-icon {\n    font-size: 48px;\n    margin-bottom: 1rem;\n    display: block;\n  }\n\n  .analogy-name {\n    font-family: var(--cond);\n    font-size: 22px;\n    font-weight: 600;\n    text-transform: uppercase;\n    color: var(--text);\n    margin-bottom: 0.5rem;\n  }\n\n  .analogy-text {\n    font-size: 14px;\n    color: var(--text-dim);\n    line-height: 1.7;\n  }\n\n  \/* \u2500\u2500 CONCEPTS GRID \u2500\u2500 *\/\n  .concepts-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n    gap: 1px;\n    margin-top: 3rem;\n    border: 1px solid var(--border);\n    background: var(--border);\n  }\n\n  .concept-card {\n    background: var(--bg2);\n    padding: 2rem;\n    transition: background 0.2s;\n  }\n\n  .concept-card:hover { background: var(--bg3); }\n\n  .concept-num {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--amber-dim);\n    letter-spacing: 0.1em;\n    margin-bottom: 1rem;\n    display: block;\n  }\n\n  .concept-title {\n    font-family: var(--cond);\n    font-size: 20px;\n    font-weight: 600;\n    text-transform: uppercase;\n    color: var(--text);\n    margin-bottom: 0.75rem;\n    letter-spacing: 0.03em;\n  }\n\n  .concept-text {\n    font-size: 14px;\n    color: var(--text-dim);\n    line-height: 1.7;\n  }\n\n  \/* \u2500\u2500 CODE BLOCK \u2500\u2500 *\/\n  .code-block {\n    background: var(--bg2);\n    border: 1px solid var(--border);\n    border-left: 3px solid var(--amber);\n    padding: 1.5rem 2rem;\n    font-family: var(--mono);\n    font-size: 12px;\n    line-height: 1.9;\n    color: var(--text-dim);\n    margin: 2rem 0;\n    overflow-x: auto;\n  }\n\n  .code-comment { color: var(--text-muted); }\n  .code-key { color: var(--amber); }\n  .code-val { color: #97C459; }\n  .code-chain { color: #85B7EB; }\n\n  \/* \u2500\u2500 ARCHITECTURE \u2500\u2500 *\/\n  .arch-flow {\n    display: flex;\n    align-items: center;\n    gap: 0;\n    margin: 3rem 0;\n    overflow-x: auto;\n    padding-bottom: 1rem;\n  }\n\n  .arch-node {\n    flex-shrink: 0;\n    background: var(--bg3);\n    border: 1px solid var(--border);\n    padding: 1rem 1.25rem;\n    min-width: 130px;\n    text-align: center;\n  }\n\n  .arch-node.active {\n    border-color: var(--amber);\n    background: var(--amber-glow);\n  }\n\n  .arch-node-label {\n    font-family: var(--mono);\n    font-size: 9px;\n    letter-spacing: 0.15em;\n    text-transform: uppercase;\n    color: var(--text-muted);\n    margin-bottom: 0.4rem;\n    display: block;\n  }\n\n  .arch-node-name {\n    font-family: var(--cond);\n    font-size: 15px;\n    font-weight: 600;\n    text-transform: uppercase;\n    color: var(--text);\n  }\n\n  .arch-node.active .arch-node-name { color: var(--amber); }\n\n  .arch-arrow {\n    font-family: var(--mono);\n    font-size: 18px;\n    color: var(--border-bright);\n    padding: 0 0.25rem;\n    flex-shrink: 0;\n  }\n\n  \/* \u2500\u2500 PRIORITY LADDER \u2500\u2500 *\/\n  .priority-ladder {\n    margin: 2rem 0;\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n  }\n\n  .priority-rung {\n    display: flex;\n    align-items: center;\n    gap: 1rem;\n    background: var(--bg2);\n    border: 1px solid var(--border);\n    padding: 1rem 1.5rem;\n    transition: border-color 0.2s;\n  }\n\n  .priority-rung:hover { border-color: var(--border-bright); }\n\n  .priority-rung.top { border-left: 3px solid var(--amber); }\n\n  .priority-num {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--text-muted);\n    min-width: 24px;\n  }\n\n  .priority-name {\n    font-family: var(--cond);\n    font-size: 18px;\n    font-weight: 600;\n    text-transform: uppercase;\n    color: var(--text);\n    min-width: 120px;\n  }\n\n  .priority-rung.top .priority-name { color: var(--amber); }\n\n  .priority-desc {\n    font-size: 13px;\n    color: var(--text-dim);\n    flex: 1;\n  }\n\n  .priority-badge {\n    font-family: var(--mono);\n    font-size: 10px;\n    letter-spacing: 0.1em;\n    padding: 3px 8px;\n    border: 1px solid;\n    text-transform: uppercase;\n    white-space: nowrap;\n  }\n\n  .badge-high { color: var(--amber); border-color: var(--amber-dim); }\n  .badge-mid  { color: var(--green-bright); border-color: var(--green); }\n  .badge-low  { color: var(--text-muted); border-color: var(--text-muted); }\n  .badge-fall { color: #85B7EB; border-color: #185FA5; }\n\n  \/* \u2500\u2500 DIVIDER \u2500\u2500 *\/\n  .divider {\n    border: none;\n    border-top: 1px solid var(--border);\n    margin: 0;\n  }\n\n  \/* \u2500\u2500 PULL QUOTE \u2500\u2500 *\/\n  .pull-quote {\n    border-left: 3px solid var(--amber);\n    padding: 1.5rem 2rem;\n    margin: 3rem 0;\n    background: var(--amber-glow);\n  }\n\n  .pull-quote p {\n    font-family: var(--cond);\n    font-size: clamp(20px, 3vw, 28px);\n    font-weight: 400;\n    color: var(--text);\n    line-height: 1.4;\n    font-style: italic;\n  }\n\n  .pull-quote cite {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--amber);\n    letter-spacing: 0.1em;\n    display: block;\n    margin-top: 1rem;\n    font-style: normal;\n  }\n\n  \/* \u2500\u2500 FOOTER \u2500\u2500 *\/\n  footer {\n    border-top: 1px solid var(--border);\n    padding: 3rem 2rem;\n    background: var(--bg2);\n  }\n\n  .footer-inner {\n    max-width: 1100px;\n    margin: 0 auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    flex-wrap: wrap;\n    gap: 1rem;\n  }\n\n  .footer-left {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--text-muted);\n    letter-spacing: 0.08em;\n  }\n\n  .footer-left span { color: var(--amber); }\n\n  .footer-right {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--text-muted);\n    letter-spacing: 0.05em;\n  }\n\n  \/* \u2500\u2500 ANIMATIONS \u2500\u2500 *\/\n  @keyframes fadeUp {\n    from { opacity: 0; transform: translateY(20px); }\n    to { opacity: 1; transform: translateY(0); }\n  }\n\n  @keyframes fadeIn {\n    from { opacity: 0; }\n    to { opacity: 1; }\n  }\n\n  \/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\n  @media (max-width: 768px) {\n    .compare-grid { grid-template-columns: 1fr; }\n    .analogy-block { grid-template-columns: 1fr; }\n    .fan-visual { display: none; }\n    nav { display: none; }\n    .arch-flow { flex-direction: column; align-items: stretch; }\n    .arch-arrow { transform: rotate(90deg); text-align: center; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<header>\n  <a class=\"logo\" href=\"#\">mining.stinkyhammer.com<\/a>\n  <nav>\n    <a href=\"#concepts\">Concepts<\/a>\n    <a href=\"#method\">The Method<\/a>\n    <a href=\"#architecture\">Architecture<\/a>\n    <a href=\"#glossary\">Glossary<\/a>\n  <\/nav>\n<\/header>\n\n<!-- HERO -->\n<div style=\"position:relative; overflow:hidden;\">\n  <section class=\"hero\">\n    <p class=\"hero-tag\">\/\/ Monero XMR \u00b7 P2Pool \u00b7 Defined Here First<\/p>\n    <h1>Crypto<span>Fan<\/span><br>Mining<\/h1>\n    <p class=\"hero-sub\">The Closed Loop Method<\/p>\n    <p class=\"hero-desc\">\n      Most miners set a pool and forget it. We built something different \u2014 \n      an autonomous, feedback-driven system that oscillates across P2Pool chains \n      the way a fan sweeps a room. Always in motion. Always optimizing.\n    <\/p>\n    <div class=\"hero-cta\">\n      <a href=\"#concepts\" class=\"btn btn-primary\">Read the Method<\/a>\n      <a href=\"#architecture\" class=\"btn btn-ghost\">See the Architecture<\/a>\n    <\/div>\n  <\/section>\n\n  <!-- Animated fan SVG -->\n  <svg class=\"fan-visual\" viewBox=\"0 0 420 420\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n    <circle cx=\"210\" cy=\"210\" r=\"200\" stroke=\"rgba(239,159,39,0.06)\" stroke-width=\"1\"\/>\n    <circle cx=\"210\" cy=\"210\" r=\"160\" stroke=\"rgba(239,159,39,0.06)\" stroke-width=\"1\"\/>\n    <circle cx=\"210\" cy=\"210\" r=\"120\" stroke=\"rgba(239,159,39,0.06)\" stroke-width=\"1\"\/>\n    <circle cx=\"210\" cy=\"210\" r=\"80\" stroke=\"rgba(239,159,39,0.08)\" stroke-width=\"1\"\/>\n    <g class=\"fan-oscillate\">\n      <g class=\"fan-group\">\n        <!-- blade 1 -->\n        <path d=\"M210 210 C210 150 240 100 210 60 C180 100 180 150 210 210Z\" fill=\"rgba(239,159,39,0.18)\" stroke=\"rgba(239,159,39,0.4)\" stroke-width=\"0.5\"\/>\n        <!-- blade 2 -->\n        <path d=\"M210 210 C270 210 320 180 360 210 C320 240 270 240 210 210Z\" fill=\"rgba(239,159,39,0.15)\" stroke=\"rgba(239,159,39,0.35)\" stroke-width=\"0.5\"\/>\n        <!-- blade 3 -->\n        <path d=\"M210 210 C210 270 180 320 210 360 C240 320 240 270 210 210Z\" fill=\"rgba(239,159,39,0.18)\" stroke=\"rgba(239,159,39,0.4)\" stroke-width=\"0.5\"\/>\n        <!-- blade 4 -->\n        <path d=\"M210 210 C150 210 100 240 60 210 C100 180 150 180 210 210Z\" fill=\"rgba(239,159,39,0.15)\" stroke=\"rgba(239,159,39,0.35)\" stroke-width=\"0.5\"\/>\n      <\/g>\n    <\/g>\n    <!-- hub -->\n    <circle cx=\"210\" cy=\"210\" r=\"18\" fill=\"#181816\" stroke=\"rgba(239,159,39,0.5)\" stroke-width=\"1.5\"\/>\n    <circle cx=\"210\" cy=\"210\" r=\"6\" fill=\"rgba(239,159,39,0.6)\"\/>\n    <!-- chain labels -->\n    <text x=\"210\" y=\"38\" text-anchor=\"middle\" font-family=\"'Share Tech Mono'\" font-size=\"10\" fill=\"rgba(239,159,39,0.5)\" letter-spacing=\"2\">MAIN<\/text>\n    <text x=\"382\" y=\"216\" text-anchor=\"start\" font-family=\"'Share Tech Mono'\" font-size=\"10\" fill=\"rgba(239,159,39,0.4)\" letter-spacing=\"2\">MINI<\/text>\n    <text x=\"210\" y=\"398\" text-anchor=\"middle\" font-family=\"'Share Tech Mono'\" font-size=\"10\" fill=\"rgba(239,159,39,0.35)\" letter-spacing=\"2\">NANO<\/text>\n    <text x=\"14\" y=\"216\" text-anchor=\"start\" font-family=\"'Share Tech Mono'\" font-size=\"10\" fill=\"rgba(239,159,39,0.25)\" letter-spacing=\"2\">HI_POOL<\/text>\n  <\/svg>\n<\/div>\n\n<!-- TICKER -->\n<div class=\"ticker\">\n  <div class=\"ticker-inner\" id=\"ticker\">\n    <span class=\"tick-item\">CHAIN <span class=\"tick-val\">MAIN<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DIFFICULTY <span class=\"tick-val\">3.4B<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">EMA TTF <span class=\"tick-val\">642,011s<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">CHAIN <span class=\"tick-val\">MINI<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DIFFICULTY <span class=\"tick-val\">234M<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">EMA TTF <span class=\"tick-val\">44,303s<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">CHAIN <span class=\"tick-val\">NANO<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DIFFICULTY <span class=\"tick-val\">121M<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">EMA TTF <span class=\"tick-val\">22,901s<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">ERA <span class=\"tick-val\">[ CHAOS ]<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">NETWORK DIFF <span class=\"tick-val\">657G<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DECISION <span class=\"tick-val\">[ MINI ]<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <!-- duplicate for seamless loop -->\n    <span class=\"tick-item\">CHAIN <span class=\"tick-val\">MAIN<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DIFFICULTY <span class=\"tick-val\">3.4B<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">EMA TTF <span class=\"tick-val\">642,011s<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">CHAIN <span class=\"tick-val\">MINI<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DIFFICULTY <span class=\"tick-val\">234M<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">EMA TTF <span class=\"tick-val\">44,303s<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">CHAIN <span class=\"tick-val\">NANO<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DIFFICULTY <span class=\"tick-val\">121M<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">EMA TTF <span class=\"tick-val\">22,901s<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">ERA <span class=\"tick-val\">[ CHAOS ]<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">NETWORK DIFF <span class=\"tick-val\">657G<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n    <span class=\"tick-item\">DECISION <span class=\"tick-val\">[ MINI ]<\/span><\/span>\n    <span class=\"tick-sep\">\/\/\/<\/span>\n  <\/div>\n<\/div>\n\n<hr class=\"divider\">\n\n<!-- OPEN VS CLOSED LOOP -->\n<section id=\"concepts\">\n  <p class=\"section-tag\">\/\/ 01 \u00b7 The Core Distinction<\/p>\n  <h2>Open Loop<br>vs <span>Closed Loop<\/span><\/h2>\n  <p style=\"max-width:620px; color:var(--text-dim); font-size:17px; font-weight:300;\">\n    Every mining operation is either running open loop or closed loop. \n    Most miners don&#8217;t know the difference. The distinction determines everything about long-term performance.\n  <\/p>\n\n  <div class=\"compare-grid\">\n    <div class=\"compare-card\">\n      <span class=\"compare-label label-open\">Open Loop<\/span>\n      <p class=\"compare-title\">Static<br>Mining<\/p>\n      <ul class=\"compare-list list-bad\">\n        <li>Fixed pool, fixed chain \u2014 no adaptation<\/li>\n        <li>No awareness of difficulty changes<\/li>\n        <li>Camps one chain through droughts with no self-correction<\/li>\n        <li>Blind to orphan risk accumulation<\/li>\n        <li>Reward dependent on luck of single chain<\/li>\n        <li>Runs on assumptions, not live data<\/li>\n        <li>Like an OBD1 car stuck in cold-start open loop \u2014 rich, inefficient, unresponsive<\/li>\n      <\/ul>\n    <\/div>\n    <div class=\"compare-card closed\">\n      <span class=\"compare-label label-closed\">Closed Loop<\/span>\n      <p class=\"compare-title\">The<br>CryptoFan<br>Method<\/p>\n      <ul class=\"compare-list list-good\">\n        <li>Live EMA tracking drives every routing decision<\/li>\n        <li>Autonomous chain switching on 60-second cycles<\/li>\n        <li>Drought detection \u2014 knows when a chain is overdue<\/li>\n        <li>Share weight protection \u2014 won&#8217;t abandon invested PPLNS position cheaply<\/li>\n        <li>Threshold auto-tuning every 15 minutes<\/li>\n        <li>Era detection adapts to global network difficulty regimes<\/li>\n        <li>Like a modern fuel-injected engine reading the O2 sensor in real time \u2014 always trimming, always optimal<\/li>\n      <\/ul>\n    <\/div>\n  <\/div>\n<\/section>\n\n<hr class=\"divider\">\n\n<!-- THE ANALOGY -->\n<section>\n  <p class=\"section-tag\">\/\/ 02 \u00b7 The Analogy That Defines It<\/p>\n  <h2>Your EMA Is<br>the <span>O2 Sensor<\/span><\/h2>\n\n  <div class=\"pull-quote\">\n    <p>&#8220;In open loop, the engine runs on a fixed fuel map \u2014 no feedback, no correction. \n    In closed loop, the O2 sensor reads exhaust gases in real time and the ECU trims the mix \n    every millisecond. One adapts. One doesn&#8217;t. The difference is everything.&#8221;<\/p>\n    <cite>\u2014 The CryptoFan Mining Method, 2025<\/cite>\n  <\/div>\n\n  <div class=\"analogy-block\">\n    <div class=\"analogy-card\" data-label=\"Open Loop \u00b7 Pre-OBD1\">\n      <span class=\"analogy-icon\">\u2699\ufe0f<\/span>\n      <p class=\"analogy-name\">The Carburetor Miner<\/p>\n      <p class=\"analogy-text\">\n        A cold engine on a carbureted system runs rich \u2014 dumping fuel on fixed assumptions \n        with no sensor feedback. It runs, but it wastes. It can&#8217;t respond to conditions. \n        This is every miner who picks a pool and walks away. \n        The pool changes. The difficulty shifts. The miner never knows.\n      <\/p>\n    <\/div>\n    <div class=\"analogy-card\" data-label=\"Closed Loop \u00b7 CryptoFan\">\n      <span class=\"analogy-icon\">\ud83d\udd2c<\/span>\n      <p class=\"analogy-name\">The EFI Miner<\/p>\n      <p class=\"analogy-text\">\n        A modern fuel-injected engine reads O2 content, coolant temp, and throttle position \n        continuously. The ECU trims fuel delivery in real time. The CryptoFan system \n        reads sidechain difficulty via EMA, cross-references expected time-to-find against \n        auto-tuned thresholds, and switches chains when the math says to. \n        Every 60 seconds. Autonomously.\n      <\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<hr class=\"divider\">\n\n<!-- THE METHOD -->\n<section id=\"method\">\n  <p class=\"section-tag\">\/\/ 03 \u00b7 How the Fan Oscillates<\/p>\n  <h2>The <span>Oscillating<\/span><br>Fan Concept<\/h2>\n  <p style=\"max-width:640px; color:var(--text-dim); font-size:17px; font-weight:300; margin-bottom:2rem;\">\n    A fan doesn&#8217;t cool a room by pointing in one direction. It oscillates \u2014 \n    distributing airflow across the entire space. The CryptoFan method applies \n    this principle to Monero mining across P2Pool&#8217;s chain hierarchy.\n  <\/p>\n\n  <div class=\"code-block\">\n    <span class=\"code-comment\"># Chain priority ladder \u2014 highest reward first<\/span><br>\n    <span class=\"code-key\">if<\/span> <span class=\"code-chain\">SOLO<\/span>     <span class=\"code-comment\">\u00b7 network diff below era floor \u2192 maximum reward, no pool split<\/span><br>\n    <span class=\"code-key\">elif<\/span> <span class=\"code-chain\">MAIN<\/span>   <span class=\"code-comment\">\u00b7 p2pool main chain TTF within threshold \u2192 largest payout window<\/span><br>\n    <span class=\"code-key\">elif<\/span> <span class=\"code-chain\">MINI<\/span>   <span class=\"code-comment\">\u00b7 p2pool mini chain TTF within threshold \u2192 primary operating zone<\/span><br>\n    <span class=\"code-key\">elif<\/span> <span class=\"code-chain\">NANO<\/span>   <span class=\"code-comment\">\u00b7 p2pool nano chain TTF within threshold \u2192 fallback, small pool<\/span><br>\n    <span class=\"code-key\">else<\/span>  <span class=\"code-chain\">HI_POOL<\/span> <span class=\"code-comment\">\u00b7 all p2pool chains exceed threshold \u2192 external high-hashrate pool<\/span>\n  <\/div>\n\n  <div class=\"priority-ladder\">\n    <div class=\"priority-rung top\">\n      <span class=\"priority-num\">01<\/span>\n      <span class=\"priority-name\">Solo<\/span>\n      <span class=\"priority-desc\">Engaged when global Monero network difficulty drops below the era-specific solo floor. Highest possible reward \u2014 full block to yourself.<\/span>\n      <span class=\"priority-badge badge-high\">Maximum<\/span>\n    <\/div>\n    <div class=\"priority-rung top\">\n      <span class=\"priority-num\">02<\/span>\n      <span class=\"priority-name\">P2Pool Main<\/span>\n      <span class=\"priority-desc\">The largest P2Pool sidechain. Opens when Main pool difficulty drops to ~300M range \u2014 congestion clears and TTF falls within threshold.<\/span>\n      <span class=\"priority-badge badge-high\">High<\/span>\n    <\/div>\n    <div class=\"priority-rung\">\n      <span class=\"priority-num\">03<\/span>\n      <span class=\"priority-name\">P2Pool Mini<\/span>\n      <span class=\"priority-desc\">Primary operating zone in current network conditions. ~234M difficulty, ~8 hour average block time. The sweet spot between reward size and frequency.<\/span>\n      <span class=\"priority-badge badge-mid\">Primary<\/span>\n    <\/div>\n    <div class=\"priority-rung\">\n      <span class=\"priority-num\">04<\/span>\n      <span class=\"priority-name\">P2Pool Nano<\/span>\n      <span class=\"priority-desc\">Small pool fallback. Fast share times but higher variance. Used when Mini exceeds threshold and Nano is under its difficulty ceiling of 125M.<\/span>\n      <span class=\"priority-badge badge-low\">Fallback<\/span>\n    <\/div>\n    <div class=\"priority-rung\">\n      <span class=\"priority-num\">05<\/span>\n      <span class=\"priority-name\">Hi Pool<\/span>\n      <span class=\"priority-desc\">External high-hashrate pool. Earned organically when all P2Pool chains exceed their EMA-derived thresholds simultaneously. Never forced.<\/span>\n      <span class=\"priority-badge badge-fall\">Organic<\/span>\n    <\/div>\n  <\/div>\n<\/section>\n\n<hr class=\"divider\">\n\n<!-- ARCHITECTURE -->\n<section id=\"architecture\">\n  <p class=\"section-tag\">\/\/ 04 \u00b7 System Architecture<\/p>\n  <h2>The <span>Feedback<\/span><br>Engine<\/h2>\n  <p style=\"max-width:640px; color:var(--text-dim); font-size:17px; font-weight:300; margin-bottom:1rem;\">\n    Two scripts. Fully autonomous. Running every 60 seconds and every 15 minutes respectively. \n    No human intervention required once deployed.\n  <\/p>\n\n  <div class=\"arch-flow\">\n    <div class=\"arch-node active\">\n      <span class=\"arch-node-label\">Input<\/span>\n      <span class=\"arch-node-name\">Monerod RPC<\/span>\n    <\/div>\n    <span class=\"arch-arrow\">\u2192<\/span>\n    <div class=\"arch-node active\">\n      <span class=\"arch-node-label\">Sensor<\/span>\n      <span class=\"arch-node-name\">EMA Engine<\/span>\n    <\/div>\n    <span class=\"arch-arrow\">\u2192<\/span>\n    <div class=\"arch-node active\">\n      <span class=\"arch-node-label\">Feedback<\/span>\n      <span class=\"arch-node-name\">Stickiness<br>Modifier<\/span>\n    <\/div>\n    <span class=\"arch-arrow\">\u2192<\/span>\n    <div class=\"arch-node active\">\n      <span class=\"arch-node-label\">Decision<\/span>\n      <span class=\"arch-node-name\">Chain<br>Selector<\/span>\n    <\/div>\n    <span class=\"arch-arrow\">\u2192<\/span>\n    <div class=\"arch-node active\">\n      <span class=\"arch-node-label\">Output<\/span>\n      <span class=\"arch-node-name\">XMRig<br>Switch<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"concepts-grid\">\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">SENSOR_01<\/span>\n      <p class=\"concept-title\">EMA Difficulty Tracking<\/p>\n      <p class=\"concept-text\">\n        10-period Exponential Moving Average over live P2Pool sidechain difficulty. \n        Smooths out noise while staying responsive to real trend changes. \n        Updates every 60 seconds from local node data.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">SENSOR_02<\/span>\n      <p class=\"concept-title\">Drought Detection<\/p>\n      <p class=\"concept-text\">\n        Monitors time since last mainnet block per chain vs expected average. \n        When a chain is overdue, the stickiness modifier loosens its effective threshold \u2014 \n        protecting your accumulated share weight investment before abandoning ship.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">SENSOR_03<\/span>\n      <p class=\"concept-title\">Share Weight Protection<\/p>\n      <p class=\"concept-text\">\n        Reads your live block_reward_share_percent from local P2Pool stratum API. \n        Non-zero PPLNS weight means you have skin in the game. \n        The modifier scales with your invested position \u2014 more weight, more stickiness.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TUNER_01<\/span>\n      <p class=\"concept-title\">Autonomous Threshold Tuning<\/p>\n      <p class=\"concept-text\">\n        A separate autotune script runs every 15 minutes. Counts verified blocks per chain \n        over the last hour. Loosens thresholds when chains are active, tightens when slow. \n        Always within configured guardrails.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">LOGIC_01<\/span>\n      <p class=\"concept-title\">Era Detection<\/p>\n      <p class=\"concept-text\">\n        Global Monero network difficulty is classified into eras \u2014 Chaos (&gt;600G), \n        Settling (500\u2013600G), Classic (&lt;500G). Each era has a different solo floor, \n        allowing the system to engage solo mining at the right time for each regime.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">LOGIC_02<\/span>\n      <p class=\"concept-title\">Nano Ceiling Enforcement<\/p>\n      <p class=\"concept-text\">\n        A hard difficulty ceiling on the Nano chain prevents routing to an oversaturated \n        small pool. If Nano sidechain difficulty exceeds 125M, Nano is excluded from \n        consideration entirely \u2014 regardless of TTF calculations.\n      <\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<hr class=\"divider\">\n\n<!-- GLOSSARY -->\n<section id=\"glossary\">\n  <p class=\"section-tag\">\/\/ 05 \u00b7 Defined Here First<\/p>\n  <h2>The <span>Glossary<\/span><\/h2>\n  <p style=\"max-width:580px; color:var(--text-dim); font-size:17px; font-weight:300; margin-bottom:3rem;\">\n    These concepts were developed and named on this site. \n    This is the primary reference for CryptoFan mining terminology.\n  <\/p>\n\n  <div class=\"concepts-grid\">\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_01<\/span>\n      <p class=\"concept-title\">CryptoFan Mining<\/p>\n      <p class=\"concept-text\">\n        The overarching mining methodology based on autonomous oscillation across \n        multiple P2Pool chains. Named for the oscillating fan \u2014 distributing hashrate \n        across the pool ecosystem rather than pointing in one fixed direction.\n        Monero XMR specific.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_02<\/span>\n      <p class=\"concept-title\">Closed Loop Mining<\/p>\n      <p class=\"concept-text\">\n        Mining with continuous sensor feedback driving routing decisions. \n        The EMA reads sidechain difficulty like an O2 sensor reads exhaust gases. \n        Contrast with open loop mining where no feedback exists and behavior is static.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_03<\/span>\n      <p class=\"concept-title\">Open Loop Mining<\/p>\n      <p class=\"concept-text\">\n        Traditional pool mining \u2014 fixed pool, fixed chain, no adaptation. \n        Runs on static configuration regardless of network conditions. \n        Named for the automotive open loop fuel state where the ECU ignores sensor input.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_04<\/span>\n      <p class=\"concept-title\">Drought-Aware Routing<\/p>\n      <p class=\"concept-text\">\n        A routing modifier that factors in how overdue a chain is relative to its \n        expected average block time. Overdue chains receive loosened effective thresholds, \n        preventing premature abandonment of a chain that is statistically due.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_05<\/span>\n      <p class=\"concept-title\">Share Weight Protection<\/p>\n      <p class=\"concept-text\">\n        The principle of treating your PPLNS window shares as invested capital. \n        A chain where you hold active share weight deserves protection from cheap switching. \n        Implemented via the stickiness modifier driven by live block_reward_share_percent.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_06<\/span>\n      <p class=\"concept-title\">Stickiness Modifier<\/p>\n      <p class=\"concept-text\">\n        A threshold multiplier combining drought status and share weight into a single \n        chain-retention signal. Applies up to 40% loosening to a chain&#8217;s effective \n        threshold. The EMA always wins when conditions are genuinely bad enough to leave.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_07<\/span>\n      <p class=\"concept-title\">Era Detection<\/p>\n      <p class=\"concept-text\">\n        Classification of global Monero network difficulty into behavioral regimes. \n        CHAOS, SETTLING, and CLASSIC eras each carry different solo floor thresholds, \n        allowing the system to adapt its solo engagement logic to the current difficulty landscape.\n      <\/p>\n    <\/div>\n    <div class=\"concept-card\">\n      <span class=\"concept-num\">TERM_08<\/span>\n      <p class=\"concept-title\">EMA TTF<\/p>\n      <p class=\"concept-text\">\n        Expected Time To Find \u2014 the number of seconds your hashrate would statistically \n        need to find a block on a given chain, derived from the EMA-smoothed sidechain \n        difficulty divided by your hashrate in H\/s. The primary routing signal.\n      <\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<hr class=\"divider\">\n\n<!-- FOOTER -->\n<footer>\n  <div class=\"footer-inner\">\n    <div class=\"footer-left\">\n      <span>mining.stinkyhammer.com<\/span> \u00b7 The CryptoFan Mining Method<br>\n      Concepts originated and defined here. Monero XMR \u00b7 P2Pool \u00b7 Closed Loop.\n    <\/div>\n    <div class=\"footer-right\">\n      Built by the miner who runs <span style=\"color:var(--amber)\">Holy_Cannolis<\/span><br>\n      on P2Pool since before it was fashionable.\n    <\/div>\n  <\/div>\n<\/footer>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>The CryptoFan Mining Method \u2014 Closed Loop Monero Mining mining.stinkyhammer.com Concepts The Method Architecture Glossary \/\/ Monero XMR \u00b7 P2Pool \u00b7 Defined Here First CryptoFanMining The Closed Loop Method Most miners set a pool and forget it. We built something different \u2014 an autonomous, feedback-driven system that oscillates across P2Pool chains the way a fan&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":1,"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":9,"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/pages\/7\/revisions\/9"}],"wp:attachment":[{"href":"https:\/\/mining.stinkyhammer.com\/index.php\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}