> ## Documentation Index
> Fetch the complete documentation index at: https://whitepaper.rwanftfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Майнинг және фарминг

> NFTM-нен DA-ға екі қадаммен.

export const MiningPipeline = () => {
  const [selectedLevel, setSelectedLevel] = useState(5);
  const LEVELS = {
    5: {
      name: 'HYDRO',
      price: 550,
      days: 45,
      c1: 0.10,
      c2: 0,
      cycles: 1
    },
    6: {
      name: 'QUANTUM',
      price: 1100,
      days: 44,
      c1: 0.10,
      c2: 0,
      cycles: 1
    },
    7: {
      name: 'PULSE',
      price: 2200,
      days: 43,
      c1: 0.10,
      c2: 0,
      cycles: 1
    },
    8: {
      name: 'AURORA',
      price: 5500,
      days: 42,
      c1: 0.10,
      c2: 0.15,
      cycles: 2
    },
    9: {
      name: 'FLAME',
      price: 11000,
      days: 41,
      c1: 0.10,
      c2: 0.15,
      cycles: 2
    },
    10: {
      name: 'INFINITY',
      price: 24000,
      days: 40,
      c1: 0.10,
      c2: 0.15,
      cycles: 2
    }
  };
  const fmtUsd = function (n) {
    var digits = Math.abs(n) >= 10000 ? 0 : 2;
    return new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD',
      maximumFractionDigits: digits
    }).format(n);
  };
  var fmtNum = function (n) {
    return new Intl.NumberFormat('en-US').format(Math.round(n));
  };
  var lvl = LEVELS[selectedLevel];
  var nftmCycle1 = lvl.price * lvl.c1;
  var nftmCycle2 = lvl.price * lvl.c2;
  var totalNftm = nftmCycle1 + nftmCycle2;
  var totalDays = lvl.days * 2 * lvl.cycles;
  var daPrice = 1.00;
  var daReceived = totalNftm / daPrice;
  return <div style={{
    backgroundColor: '#000000',
    color: '#FFFFFF',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="p-6 rounded-xl not-prose">

      {}
      <div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6">
        <div>
          <h3 style={{
    color: '#FFFFFF',
    margin: 0
  }} className="text-lg font-serif italic">Mining Dashboard</h3>
          <p style={{
    color: 'rgba(255,255,255,0.4)',
    margin: '4px 0 0 0'
  }} className="text-xs">Full pipeline overview — from NFT purchase to DA harvest</p>
        </div>
        <div className="flex items-center gap-3">
          <select value={selectedLevel} onChange={function (e) {
    setSelectedLevel(Number(e.target.value));
  }} style={{
    backgroundColor: '#383838',
    color: '#FFFFFF',
    border: '1px solid rgba(255,255,255,0.1)',
    borderRadius: '8px',
    padding: '8px 12px',
    fontSize: '13px',
    cursor: 'pointer',
    outline: 'none'
  }}>
            {Object.entries(LEVELS).map(function (entry) {
    var k = entry[0];
    var d = entry[1];
    return <option key={k} value={k}>L{k} — {d.name} ({d.price} USDT) — {d.days} days</option>;
  })}
          </select>
          <span style={{
    color: 'rgba(255,255,255,0.6)',
    backgroundColor: 'rgba(255,255,255,0.1)',
    border: '1px solid rgba(255,255,255,0.2)',
    fontSize: '11px',
    padding: '4px 12px',
    borderRadius: '9999px',
    fontWeight: 500
  }}>Interactive</span>
        </div>
      </div>

      {}
      <div className="mb-6">
        <div className="flex justify-between items-center mb-2">
          <span style={{
    color: 'rgba(255,255,255,0.5)'
  }} className="text-xs font-medium">Total Pipeline</span>
          <span style={{
    color: '#FFFFFF'
  }} className="text-sm font-bold">{totalDays} days</span>
        </div>

        <div className="flex items-center gap-0.5" style={{
    height: '48px',
    borderRadius: '12px',
    overflow: 'hidden'
  }}>
          <div style={{
    backgroundColor: 'rgba(255,255,255,0.18)',
    width: '48%',
    height: '100%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    borderTopLeftRadius: '12px',
    borderBottomLeftRadius: '12px'
  }}>
            <div style={{
    textAlign: 'center'
  }}>
              <div style={{
    color: '#FFFFFF',
    fontSize: '12px',
    fontWeight: 700
  }}>Mining</div>
              <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px'
  }}>
                {lvl.cycles === 1 ? lvl.days + ' days' : '2 × ' + lvl.days + ' days'} — {fmtNum(totalNftm)} NFTM
              </div>
            </div>
          </div>
          <div style={{
    backgroundColor: '#ef4444',
    width: '4%',
    height: '100%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center'
  }}>
            <div style={{
    color: '#FFFFFF',
    fontSize: '9px',
    fontWeight: 900
  }}>72h</div>
          </div>
          <div style={{
    backgroundColor: 'rgba(255,255,255,0.08)',
    width: '48%',
    height: '100%',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    borderTopRightRadius: '12px',
    borderBottomRightRadius: '12px'
  }}>
            <div style={{
    textAlign: 'center'
  }}>
              <div style={{
    color: '#FFFFFF',
    fontSize: '12px',
    fontWeight: 700
  }}>Farming</div>
              <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px'
  }}>{lvl.cycles === 1 ? lvl.days + ' days' : '2 × ' + lvl.days + ' days'} — {fmtNum(daReceived)} DA</div>
            </div>
          </div>
        </div>

        <div className="flex items-center gap-2 mt-2">
          <span className="relative flex" style={{
    height: '8px',
    width: '8px'
  }}>
            <span className="animate-ping absolute inline-flex rounded-full" style={{
    height: '100%',
    width: '100%',
    backgroundColor: '#ef4444',
    opacity: 0.75
  }} />
            <span className="relative inline-flex rounded-full" style={{
    height: '8px',
    width: '8px',
    backgroundColor: '#ef4444'
  }} />
          </span>
          <span style={{
    color: '#f87171',
    fontSize: '11px',
    fontWeight: 500
  }}>72-hour critical window — miss it and the entire cycle restarts from scratch</span>
        </div>
      </div>

      {}
      <div className="mb-6" style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '16px',
    alignItems: 'center'
  }}>
        {}
        <div style={{
    flexShrink: 0,
    display: 'flex',
    justifyContent: 'center'
  }} className="w-[160px] sm:w-[140px] mx-auto sm:mx-0">
          <video autoPlay muted loop playsInline style={{
    borderRadius: '12px',
    objectFit: 'cover'
  }} className="w-[160px] h-[160px] sm:w-[140px] sm:h-[140px]">
            <source src="/NFTMp.webm" type="video/webm" />
          </video>
        </div>
        {}
        <div style={{
    flex: '1 1 0%',
    minWidth: '240px'
  }}>
          <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-5 text-center">
            <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">
              You Receive After {totalDays} days
            </div>
            <div style={{
    color: '#FFFFFF',
    fontSize: '36px'
  }} className="font-black">
              {fmtNum(daReceived)} DA
            </div>
            <div style={{
    color: 'rgba(255,255,255,0.5)'
  }} className="text-xs mt-1">
              Worth {fmtUsd(daReceived * daPrice)} at current DA price
            </div>
            <div style={{
    color: 'rgba(255,255,255,0.5)'
  }} className="text-xs mt-2">
              from {fmtUsd(lvl.price)} investment · {lvl.cycles === 1 ? 'cycle 1: ' + fmtNum(nftmCycle1) + ' NFTM' : 'cycle 1: ' + fmtNum(nftmCycle1) + ' + cycle 2: ' + fmtNum(nftmCycle2) + ' NFTM'}
            </div>
          </div>
        </div>
      </div>
      <div className="grid grid-cols-3 gap-3" style={{
    marginTop: '12px'
  }}>
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-3 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">Investment</div>
          <div style={{
    color: '#FFFFFF'
  }} className="text-base font-bold">{fmtUsd(lvl.price)}</div>
        </div>
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-3 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">DA Value</div>
          <div style={{
    color: '#FFFFFF'
  }} className="text-base font-bold">{fmtUsd(daReceived * daPrice)}</div>
        </div>
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-3 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-[10px] uppercase tracking-wider mb-1">Pipeline</div>
          <div style={{
    color: '#FFFFFF'
  }} className="text-base font-bold">{totalDays} days</div>
        </div>
      </div>
      {lvl.cycles === 1 && <div style={{
    backgroundColor: 'rgba(255,255,255,0.05)',
    border: '1px solid rgba(255,255,255,0.15)',
    marginTop: '12px'
  }} className="rounded-xl p-4 text-center">
          <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '12px'
  }}>
            This NFT tier has 1 mining cycle producing 10% of NFT price in NFTM.
          </div>
        </div>}
      <div style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-xs text-center mt-3">
        Once harvested, compare your options on{' '}
        <a href={'/en/da-selling-lending'} style={{
    color: '#FFFFFF',
    textDecoration: 'underline'
  }}>
          Selling & Lending
        </a>
      </div>

    </div>;
};

DA сатып алу үшін пайдаланушылар екі қадамды процеске қатысуы керек: Майнинг және Фарминг. Тек Премиум (5+ деңгей) және Элита NFT-тері мұны жасай алады.

<Info>
  **NFTM — токен емес.** Бұл смарт-контрактпен бақыланатын ішкі майнинг есептегіші (көрсеткіш). Интерфейсте сіз прогресс жолағын және күтілетін NFTM мөлшерін көресіз. NFTM-нің нарықтық құны жоқ және оны саудалауға немесе тасымалдауға болмайды — ол тек Фармингке стейк жасалып, DA-ға айналдыру үшін бар.
</Info>

<Info>
  **Майнинг үшін белсенді Кіріс Лимиті қажет.** Майнинг та, Фарминг те жарамды NFT-те нөлдік емес **Кіріс Лимитін** талап етеді. Егер сіздің лимитіңіз нөлге жетсе, смарт-контракт жаңа майнинг циклін бастаудан бас тартады. Майнингті жалғастыру үшін, алдымен Кіріс Лимитіңізді жаңартыңыз — Автосатып алу 3/3 жүйесі, бір деңгейлі қолмен жаңарту немесе жоғары деңгейлі NFT-ке жаңарту арқылы — содан кейін келесі циклді белсендіріңіз. Кіріс Лимиті — қақпа шарты; онсыз майнинг ағыны басталмайды.
</Info>

<Steps>
  <Step title="Майнингті іске қосу">
    Жарамды NFT-іңізде майнингті бастаңыз. Цикл ұзақтығы деңгейіңізге байланысты — 45 күннен (HYDRO) 40 күнге дейін (INFINITY) азайады.
  </Step>

  <Step title="NFTM генерациялау">
    Сіздің NFT-іңіз цикл кезеңінде NFTM генерациялайды. 5–7 деңгейлерде (HYDRO, QUANTUM, PULSE) **1 майнинг циклі** бар, ол NFT бағасының **10%-ын** NFTM-де өндіреді. 8–10 деңгейлерде (AURORA, FLAME, INFINITY) **2 майнинг циклі** бар — біріншісі **10%**, ал екіншісі NFT бағасының **15%-ын** NFTM-де өндіреді.
  </Step>

  <Step title="72 сағат ішінде талап ету">
    Майнинг аяқталғаннан кейін сізде NFTM-ді Фармингке стейк жасауға дәл **72 сағат** бар. Бұл терезені өткізіп алсаңыз, нөлден қайта бастайсыз.
  </Step>

  <Step title="DA фарминг жасау">
    Стейк жасалған NFTM майнинг циклімен бірдей ұзақтыққа Фармингке кіреді. Соңында NFTM ағымдағы баға бойынша DA-ға айналады және сіздің TokenStack-іңізге есептеледі.
  </Step>
</Steps>

<Warning>
  **72 сағаттық сыни терезе:** Майнинг аяқталғаннан кейін NFTM-ді 72 сағат ішінде стейк жасамасаңыз, бүкіл цикл жоғалады. Майнингті нөлден қайта бастауыңыз керек. Еске салғыш орнатыңыз.
</Warning>

<Warning>
  **Жаңартудан бұрын талап етіңіз — талап етілмеген фарминг сыйақылары жойылады:** Кез келген NFT сатып алу немесе жаңарту пайдаланушының майнинг/фарминг күйінде `terminate()` функциясын іске қосады. Дизайн бойынша `terminate()` белсенді сеансты тоқтатады және **барлық талап етілмеген фарминг сыйақыларын жояды**, оның ішінде жетілген, бірақ әлі талап етілмеген сыйақыларды да. Команда мұны аудиттің жауабында әдейі жасалғанын растады: *"Бұл әдейі жасалған, terminate() белсенді сеанстарды тоқтату және талап етілмеген сыйақыларды жою керек дизайн бойынша."*

  **Операциялық ереже:** жетілген, бірақ талап етілмеген фарминг сыйақыңыз болса, **алдымен оны талап етіңіз**, тек содан кейін NFT сатып алыңыз немесе жаңартыңыз. Әйтпесе, жаңа NFT транзакциясы расталған сәтте сыйақы біржола жоғалады.
</Warning>

<Warning>
  **Дефляциялық циклдің кідірісі:** Жылына екі рет жүйе 30 күнге дейін созылатын Дефляциялық Циклді іске қосады. Бұл кезеңде NFTM майнингінің, стейкингтің және DA шығарудың **жаңа циклдерін бастау** тоқтатылады. Дефляциялық Цикл басталғанға дейін жұмыс істеп тұрған циклдер **жалғасады және кестеге сай аяқталады** — прогресс жоғалмайды. Жаңа циклдерді бастауды осы жоспарланған кезеңдерге сәйкес жоспарлаңыз.
</Warning>

<MiningPipeline />
