> ## 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.

# Механіка токена DA

> Модель ціни «лише вгору».

export const DaPriceSimulator = () => {
  if (typeof window === 'undefined') {
    return null;
  }
  var [minted, setMinted] = useState(1000000);
  var [liquidity, setLiquidity] = useState(1000000);
  var [burned, setBurned] = useState(0);
  var [dbMinted, setDbMinted] = useState(1000000);
  var [dbLiquidity, setDbLiquidity] = useState(1000000);
  var [dbBurned, setDbBurned] = useState(0);
  var timerRef = useRef(null);
  useEffect(function () {
    if (timerRef.current) clearTimeout(timerRef.current);
    timerRef.current = setTimeout(function () {
      setDbMinted(minted);
      setDbLiquidity(liquidity);
      setDbBurned(burned);
    }, 150);
    return function () {
      if (timerRef.current) clearTimeout(timerRef.current);
    };
  }, [minted, liquidity, burned]);
  var fmtUsd = function (n) {
    if (n >= 1000000) return '$' + (n / 1000000).toFixed(1) + 'M';
    if (n >= 1000) return '$' + (n / 1000).toFixed(1) + 'K';
    if (n >= 100) return '$' + Math.round(n);
    if (n >= 10) return '$' + n.toFixed(1);
    return '$' + n.toFixed(2);
  };
  var fmtUsdFull = 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 circulating = minted - burned;
  if (circulating < 1) circulating = 1;
  var price = liquidity / circulating;
  var basePrice = liquidity / minted;
  var priceChange = (price - basePrice) / Math.max(basePrice, 0.0001) * 100;
  var burnedMax = minted - 1;
  var actualBurned = burned > burnedMax ? burnedMax : burned;
  var moonCirculating = Math.max(minted * 0.05, 1);
  var moonPrice = liquidity / moonCirculating;
  var chartData = useMemo(function () {
    var points = [];
    var steps = 200;
    for (var i = 0; i <= steps; i++) {
      var pct = i / steps * 95;
      var b = pct / 100 * dbMinted;
      var s = dbMinted - b;
      if (s < 1) s = 1;
      var p = dbLiquidity / s;
      points.push({
        pct: pct,
        burned: b,
        price: p
      });
    }
    return points;
  }, [dbMinted, dbLiquidity]);
  var W = 640, H = 280;
  var PAD = {
    top: 28,
    right: 56,
    bottom: 44,
    left: 64
  };
  var cW = W - PAD.left - PAD.right;
  var cH = H - PAD.top - PAD.bottom;
  var minP = chartData[0] ? chartData[0].price : 1;
  var maxP = chartData[chartData.length - 1] ? chartData[chartData.length - 1].price : minP * 2;
  var capP = minP * 50;
  var displayMaxP = Math.min(maxP, capP);
  var yPad = (displayMaxP - minP) * 0.08 || 0.01;
  displayMaxP = displayMaxP + yPad;
  var sqrtScale = function (val) {
    var norm = (Math.min(val, displayMaxP) - minP) / (displayMaxP - minP || 0.01);
    if (norm < 0) norm = 0;
    return Math.sqrt(norm);
  };
  var getX = function (pct) {
    return PAD.left + pct / 95 * cW;
  };
  var getY = function (p) {
    return PAD.top + cH - sqrtScale(p) * cH;
  };
  var currentPct = dbMinted > 0 ? dbBurned / dbMinted * 100 : 0;
  if (currentPct > 95) currentPct = 95;
  var currentChartPrice = dbLiquidity / Math.max(dbMinted - dbBurned, 1);
  var pathParts = [];
  for (var k = 0; k < chartData.length; k++) {
    var d = chartData[k];
    var px = getX(d.pct).toFixed(1);
    var py = getY(d.price).toFixed(1);
    pathParts.push((k === 0 ? 'M' : 'L') + ' ' + px + ' ' + py);
  }
  var pathD = pathParts.join(' ');
  var lastPt = chartData[chartData.length - 1];
  var areaD = pathD + ' L ' + getX(lastPt.pct).toFixed(1) + ' ' + (PAD.top + cH) + ' L ' + getX(0).toFixed(1) + ' ' + (PAD.top + cH) + ' Z';
  var dotX = getX(currentPct);
  var dotY = getY(currentChartPrice);
  var milestones = [10, 100, 1000, 10000];
  var visibleMilestones = milestones.filter(function (m) {
    return m > minP * 1.2 && m < displayMaxP * 0.95;
  });
  var xPcts = [0, 20, 40, 60, 80];
  var yLabelFracs = [0, 0.25, 0.5, 0.75, 1];
  var hdZoneX = getX(50);
  var hdZoneW = getX(95) - hdZoneX;
  var sliderStyle = {
    touchAction: 'manipulation',
    height: '6px',
    borderRadius: '3px',
    background: 'linear-gradient(to right, rgba(255,255,255,0.4), rgba(255,255,255,0.15))',
    outline: 'none',
    WebkitAppearance: 'none',
    appearance: 'none'
  };
  var pulseKeyframes = '@keyframes daPulse{0%,100%{opacity:0.6;r:12}50%{opacity:0.2;r:18}}';
  return <div style={{
    backgroundColor: '#000000',
    color: '#FFFFFF',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="p-6 rounded-xl not-prose">

      {}
      <style>{pulseKeyframes}</style>

      {}
      <div className="flex items-center justify-between mb-6">
        <h3 style={{
    color: '#FFFFFF',
    margin: 0
  }} className="text-lg font-serif italic">DA Price Simulator</h3>
        <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 className="grid grid-cols-1 sm:grid-cols-3 gap-4 mb-6">
        {}
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4">
          <label style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '11px',
    fontWeight: 500,
    display: 'block',
    marginBottom: '4px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>DA Minted</label>
          <span style={{
    color: '#FFFFFF',
    fontSize: '18px',
    fontWeight: 800,
    display: 'block',
    marginBottom: '8px'
  }}>{fmtNum(minted)} DA</span>
          <input type="range" min="10000" max="21000000" step="10000" value={minted} onChange={function (e) {
    var val = Number(e.target.value);
    setMinted(val);
    if (burned >= val) setBurned(val - 1);
  }} className="w-full cursor-pointer" style={sliderStyle} />
          <div className="flex justify-between text-[10px] mt-1">
            <span style={{
    color: 'rgba(255,255,255,0.5)'
  }}>10,000</span>
            <span style={{
    color: 'rgba(255,255,255,0.5)'
  }}>21,000,000</span>
          </div>
        </div>
        {}
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4">
          <label style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '11px',
    fontWeight: 500,
    display: 'block',
    marginBottom: '4px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>USDT Liquidity Pool</label>
          <span style={{
    color: '#FFFFFF',
    fontSize: '18px',
    fontWeight: 800,
    display: 'block',
    marginBottom: '8px'
  }}>{fmtUsdFull(liquidity)}</span>
          <input type="range" min="10000" max="100000000" step="10000" value={liquidity} onChange={function (e) {
    setLiquidity(Number(e.target.value));
  }} className="w-full cursor-pointer" style={sliderStyle} />
          <div className="flex justify-between text-[10px] mt-1">
            <span style={{
    color: 'rgba(255,255,255,0.5)'
  }}>$10,000</span>
            <span style={{
    color: 'rgba(255,255,255,0.5)'
  }}>$100,000,000</span>
          </div>
        </div>
        {}
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4">
          <label style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '11px',
    fontWeight: 500,
    display: 'block',
    marginBottom: '4px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>DA Burned</label>
          <span style={{
    color: '#FFFFFF',
    fontSize: '18px',
    fontWeight: 800,
    display: 'block',
    marginBottom: '8px'
  }}>{fmtNum(actualBurned)} DA</span>
          <input type="range" min="0" max={burnedMax} step="10000" value={actualBurned} onChange={function (e) {
    setBurned(Number(e.target.value));
  }} className="w-full cursor-pointer" style={sliderStyle} />
          <div className="flex justify-between text-[10px] mt-1">
            <span style={{
    color: 'rgba(255,255,255,0.5)'
  }}>0</span>
            <span style={{
    color: 'rgba(255,255,255,0.5)'
  }}>{fmtNum(burnedMax)}</span>
          </div>
        </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="/DAalpha-Uncompressed8-bit422.webm" type="video/webm" />
          </video>
        </div>
        {}
        <div style={{
    flex: '1 1 0%',
    minWidth: '240px',
    display: 'flex',
    flexWrap: 'wrap',
    gap: '12px'
  }}>
          {}
          <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)',
    flex: '1 1 160px'
  }} className="rounded-xl p-4">
            <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em',
    marginBottom: '4px'
  }}>DA Price</div>
            <div style={{
    color: '#4ade80',
    fontSize: '28px',
    fontWeight: 900,
    lineHeight: 1.2
  }}>{fmtUsdFull(price)}</div>
            <div style={{
    color: 'rgba(255,255,255,0.7)',
    fontSize: '12px',
    fontWeight: 600,
    marginTop: '4px'
  }}>
              {priceChange >= 0 ? 'Up' : 'Down'} {Math.abs(priceChange).toFixed(2)}% from base
            </div>
          </div>
          {}
          <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)',
    flex: '1 1 160px'
  }} className="rounded-xl p-4">
            <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em',
    marginBottom: '4px'
  }}>Circulating Supply</div>
            <div style={{
    color: '#FFFFFF',
    fontSize: '20px',
    fontWeight: 900
  }}>{fmtNum(circulating)} DA</div>
            <div style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '12px',
    marginTop: '4px'
  }}>of 21M hard cap</div>
          </div>
          {}
          <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)',
    flex: '1 1 160px'
  }} className="rounded-xl p-4">
            <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em',
    marginBottom: '4px'
  }}>Liquidity Pool</div>
            <div style={{
    color: '#FFFFFF',
    fontSize: '20px',
    fontWeight: 900
  }}>{fmtUsdFull(liquidity)}</div>
            <div style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '12px',
    marginTop: '4px'
  }}>100% USDT backed</div>
          </div>
        </div>
      </div>

      {}
      <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4 overflow-x-auto">
        <div style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '12px',
    fontWeight: 600,
    marginBottom: '8px'
  }}>Price vs Burn Percentage</div>
        <svg viewBox={'0 0 ' + W + ' ' + H} className="w-full" style={{
    minWidth: '400px'
  }}>
          <defs>
            <linearGradient id="daAreaGrad" x1="0" y1="0" x2="1" y2="0">
              <stop offset="0%" stopColor="#4ade80" stopOpacity="0.03" />
              <stop offset="100%" stopColor="#4ade80" stopOpacity="0.25" />
            </linearGradient>
          </defs>

          {}
          <rect x={hdZoneX} y={PAD.top} width={hdZoneW} height={cH} fill="rgba(251,191,36,0.04)" />
          <text x={hdZoneX + 6} y={PAD.top + 12} fill="rgba(251,191,36,0.3)" style={{
    fontSize: '8px',
    fontWeight: 500
  }}>High Deflation Zone</text>

          {}
          {yLabelFracs.map(function (frac, idx) {
    var val = minP + (displayMaxP - minP) * frac;
    var y = getY(val);
    return <line key={'yg-' + idx} x1={PAD.left} y1={y} x2={W - PAD.right} y2={y} stroke="rgba(255,255,255,0.05)" strokeWidth="0.5" />;
  })}

          {}
          {visibleMilestones.map(function (m) {
    var y = getY(m);
    return <g key={'ms-' + m}>
                <line x1={PAD.left} y1={y} x2={W - PAD.right} y2={y} stroke="rgba(255,255,255,0.08)" strokeWidth="0.5" strokeDasharray="4 4" />
                <text x={W - PAD.right + 4} y={y + 3} fill="rgba(255,255,255,0.35)" style={{
      fontSize: '8px'
    }}>{fmtUsd(m)}</text>
              </g>;
  })}

          {}
          {yLabelFracs.map(function (frac, idx) {
    var val = minP + (displayMaxP - minP) * frac;
    var y = getY(val);
    return <text key={'yl-' + idx} x={PAD.left - 8} y={y} textAnchor="end" dominantBaseline="middle" fill="rgba(255,255,255,0.4)" style={{
      fontSize: '9px'
    }}>
                {fmtUsd(val)}
              </text>;
  })}

          {}
          <path d={areaD} fill="url(#daAreaGrad)" />

          {}
          <path d={pathD} fill="none" stroke="#4ade80" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" />

          {}
          <line x1={dotX} y1={PAD.top} x2={dotX} y2={PAD.top + cH} stroke="rgba(255,255,255,0.15)" strokeWidth="1" strokeDasharray="4 3" />

          {}
          <circle cx={dotX} cy={dotY} r="12" fill="none" stroke="#4ade80" strokeWidth="1.5" opacity="0.4" style={{
    animation: 'daPulse 2s ease-in-out infinite'
  }} />

          {}
          <circle cx={dotX} cy={dotY} r="6" fill="#4ade80" stroke="#000000" strokeWidth="2" />

          {}
          <rect x={dotX + 10} y={dotY - 12} width={Math.max(fmtUsd(currentChartPrice).length * 7 + 12, 48)} height={20} rx="4" fill="rgba(0,0,0,0.7)" stroke="rgba(74,222,128,0.3)" strokeWidth="1" />
          <text x={dotX + 16} y={dotY + 2} fill="#4ade80" style={{
    fontSize: '10px',
    fontWeight: 700
  }}>{fmtUsd(currentChartPrice)}</text>

          {}
          {xPcts.map(function (pct) {
    return <text key={'xl-' + pct} x={getX(pct)} y={H - PAD.bottom + 18} textAnchor="middle" fill="rgba(255,255,255,0.4)" style={{
      fontSize: '9px'
    }}>
                {pct}%
              </text>;
  })}
          <text x={W / 2} y={H - 4} textAnchor="middle" fill="rgba(255,255,255,0.3)" style={{
    fontSize: '8px'
  }}>Burn Percentage (% of Minted Supply)</text>
        </svg>

        {}
        <div className="flex items-center gap-4 mt-2" style={{
    paddingLeft: PAD.left + 'px'
  }}>
          <div className="flex items-center gap-1">
            <span style={{
    display: 'inline-block',
    width: '8px',
    height: '8px',
    borderRadius: '50%',
    backgroundColor: '#4ade80'
  }} />
            <span style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px'
  }}>DA Price</span>
          </div>
          <div className="flex items-center gap-1">
            <span style={{
    display: 'inline-block',
    width: '8px',
    height: '8px',
    borderRadius: '50%',
    backgroundColor: '#4ade80',
    boxShadow: '0 0 6px rgba(74,222,128,0.6)'
  }} />
            <span style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px'
  }}>Current Position</span>
          </div>
          <div className="flex items-center gap-1">
            <span style={{
    display: 'inline-block',
    width: '12px',
    height: '6px',
    backgroundColor: 'rgba(251,191,36,0.15)',
    borderRadius: '2px'
  }} />
            <span style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px'
  }}>High Deflation Zone</span>
          </div>
        </div>

        {}
        <div style={{
    marginTop: '10px',
    paddingLeft: PAD.left + 'px'
  }}>
          <span style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '12px'
  }}>
            If 95% of supply is burned:{' '}
            <span style={{
    color: '#FFFFFF',
    fontWeight: 700
  }}>{fmtUsdFull(moonPrice)}</span>
            {' '}USDT per DA
          </span>
        </div>
      </div>

      {}
      <p style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '12px',
    lineHeight: 1.6,
    marginTop: '16px',
    marginBottom: 0
  }}>
        Direct formula calculator. DA Price = Liquidity Pool ÷ Circulating Supply. Supply starts at 0 and grows via farming — hard cap 21M. Every sale burns 100% of sold tokens. On every sale, 25% (manual) or 30% (auto) of USDT backing stays in the pool — this drives the price upward.
      </p>
    </div>;
};

<CardGroup cols={2}>
  <Card title="Жорсткий ліміт 21M" icon="cube">
    Максимальна емісія зафіксована назавжди. Без інфляції, без мінтингу.
  </Card>

  <Card title="100% забезпечення USDT" icon="shield-check">
    Кожен токен DA забезпечений реальним USDT у пулі ліквідності.
  </Card>

  <Card title="Спалювання при кожному продажу" icon="fire">
    100% проданих токенів безповоротно спалюється. Користувач отримує 75% (ручний продаж) або 70% (автопродаж) вартості в USDT. Решта 25% (ручний) або 30% (авто) — комісія протоколу, яка залишається у пулі як забезпечення; саме це й штовхає ціну DA вгору.
  </Card>

  <Card title="Без P2P-переказів" icon="ban">
    DA можна лише продати, заставити або погасити кредит — переказів між гаманцями немає.
  </Card>
</CardGroup>

## Формула ціни «лише вгору»

Ціна = Ліквідність ÷ Обігова Пропозиція

Кожного разу, коли DA продається, токени спалюються (пропозиція зменшується), тоді як USDT залишається в пулі (ліквідність зберігається або зростає). Менше токенів ÷ та сама або більша кількість USDT = вища ціна за токен.

<Info>
  **Як це працює:** 200 DA в обігу, 200 USDT у пулі ліквідності. Ціна = 1,00 USDT за DA. Користувач продає 100 DA. Пул виплачує 70 USDT (70% від вартості 100 USDT). Усі 100 DA спалюються. Результат: 100 DA залишається, 130 USDT у пулі. Нова ціна = 130 ÷ 100 = **1,30 USDT за DA**.
</Info>

<Tip>
  5% комісія з усіх маркетингових винагород надходить безпосередньо до пулу ліквідності DA — окремо від відсотків при продажу. Додаткова ліквідність надходить від комісій за кредитування, доходів від RWA та доходів FinPro.
</Tip>

<Info>
  **Захист Seed Supply:** невеликий постійний резерв DA — **Seed Supply** — попередньо депонується в протокол при запуску як технічний запобіжник для формули ціноутворення.

  * **Постійний і непродаваний.** Seed Supply заблокований на рівні протоколу: його **не можна спалити**, **не можна продати** (вручну чи через автопродаж), і він **виключений з циклів автопродажу**.
  * **Поза обігом.** Він **не враховується як обігова пропозиція** і ніколи не бере участі в балансах користувачів, фармінгу, кредитуванні чи маркетингових розподілах.
  * **Гарантує ненульовий знаменник.** Оскільки `Ціна = Ліквідність ÷ Обігова Пропозиція`, формула ніколи не повинна ділити на нуль. Seed Supply гарантує `totalSupply > 0` у будь-який момент часу, тому функція ціни завжди визначена — навіть у крайньому випадку, коли всі інші токени в обігу були спалені.
  * **Захист лише для крайніх випадків.** За нормальних умов експлуатації Seed Supply не впливає на формування ціни. Він існує винятково як детермінована «підлога», що утримує `getPrice()` коректно визначеною за наявності ліквідності, коли обігова пропозиція інакше досягла б нуля.
</Info>

## Джерела пулу ліквідності

Пул Ліквідності — фундамент економіки DA. Він фінансується з декількох джерел по всій екосистемі RWANFTFI, забезпечуючи безперервне зростання забезпечення токена. Кожен потік доходу протоколу надходить в єдиний пул, посилюючи формулу Ціна = Ліквідність ÷ Пропозиція.

<AccordionGroup>
  <Accordion title="Активність NFT">
    **Купівля NFT** — 20% від кожної купівлі NFT автоматично спрямовується до Пулу Ліквідності для мінтингу нового DA.

    **Rebuy та Autobuy** — додаткові 20% з кожної повторної або автоматичної купівлі NFT надходять до Пулу Ліквідності. Це стимулює поновлення позицій та підтримує ріст системи.
  </Accordion>

  <Accordion title="Збори та комісії">
    **Податок на маркетингові винагороди** — 5% усіх маркетингових винагород по всій реферальній мережі автоматично спрямовуються до Пулу Ліквідності. Активність мережі безпосередньо посилює забезпечення DA.

    **Комісія за переказ Накопичувального Балансу** — при переказі Накопичувального Балансу іншому користувачу 20% від суми переказу спрямовуються до Пулу Ліквідності DA. Будь-який рух Накопичувального Балансу — чи то використання у купівлі NFT, чи переказ між гаманцями — генерує 20% надходження до Пулу.

    **Комісія за купівлю з Накопичувального Балансу** — при купівлі NFT з Накопичувального Балансу 20% інтегрованої суми спрямовуються до Пулу Ліквідності DA для мінтингу нового DA. Приклад: 898 USDT на Накопичувальному Балансі — при інтеграції в купівлю NFT 718 USDT йдуть на вартість NFT, а 180 USDT (20% від 898) надходять до Пулу Ліквідності DA. Кожна така купівля поповнює Пул і створює основу для нового DA.

    **Комісія за кредитування** — при оформленні кредиту позичальник одноразово сплачує 5% комісії, що спрямовується до Пулу Ліквідності. Приклад: кредит \$1 000, позичальник отримує \$950, \$50 йдуть до Пулу. Комісія стягується з кожного нового кредиту.
  </Accordion>

  <Accordion title="Прострочені та невикористані кошти">
    **Автопродаж із нульовим Лімітом Доходу** — якщо спрацьовує автопродаж DA, а у користувача нульовий Ліміт Доходу на NFT, 100% надходжень йде або до Пулу Ліквідності, або на спалювання DA (точний механізм визначається налаштуваннями DAO).

    **Прострочені ваучери** — якщо ваучер залишається невикористаним 365 днів, 100% коштів спрямовуються до Пулу Ліквідності. Це запобігає простою коштів та усуває неактивні зобов'язання.

    **Невикористаний Накопичувальний Баланс** — якщо Накопичувальний Баланс залишається невикористаним 120 днів, 70% коштів спрямовуються до Пулу Ліквідності для мінтингу нового DA.
  </Accordion>

  <Accordion title="Зовнішній дохід">
    **Комісії SWAP** — комісії з усіх обмінних (SWAP) операцій автоматично спрямовуються до Пулу Ліквідності.

    **Комісії дебетової картки** — комісії з програми дебетової картки надходять до Пулу Ліквідності, створюючи реальний грошовий потік із зовнішньої економіки.

    **Дохід RWA** — частина доходу від нерухомості, орендних платежів, комерційних активів та інших реальних активів спрямовується до Пулу Ліквідності, прив'язуючи систему до реальної економіки.

    **Дохід FinPro** — частина прибутку від фінансових продуктів (Кредитування, інвестиційні продукти, фінансові послуги) надходить до Пулу Ліквідності.

    **Дохід екосистеми** — частина загального доходу протоколу може спрямовуватися до Пулу Ліквідності або використовуватися для створення додаткової ліквідності для мінтингу нового DA.
  </Accordion>
</AccordionGroup>

## Механіка спалювання DA

Спалювання DA — основний дефляційний механізм: він зменшує пропозицію токенів і створює стійкий тиск на зростання вартості активу.

<CardGroup cols={3}>
  <Card title="Ручний продаж" icon="fire">
    100% проданих DA безповоротно спалюються. Користувач отримує 75% вартості в USDT. Решта 25% — комісія протоколу, що залишається в пулі як забезпечення та стимулює зростання ціни.
  </Card>

  <Card title="Автопродаж" icon="clock">
    100% автопроданих DA безповоротно спалюються. Користувач отримує 70% вартості в USDT. Решта 30% — комісія протоколу, що залишається в пулі як забезпечення та стимулює зростання ціни. Спрацьовує прогресивно з залишкового балансу протягом 4 періодів (365 днів / 1 рік загалом).
  </Card>

  <Card title="Дефолт за кредитом" icon="ban">
    Якщо кредит не погашено, заставлені DA прогресивно спалюються через цикл автопродажу. Захищає ліквідність системи та забезпечує фінансову дисципліну.
  </Card>
</CardGroup>

## Миттєвий доступ та цикл автопродажу

### Миттєвий доступ

Токени DA доступні користувачу на 100% з моменту фармінгу. Періоду блокування немає. Користувач може одразу:

* **Продати вручну** — отримати 75% вартості в USDT, 100% токенів спалюються
* **Взяти кредит** — 70% LTV під заставу DA, комісія 5%
* **Тримати і чекати** — зберігати токени та отримувати вигоду від зростання ціни з часом

### Цикл автопродажу

Якщо користувач не продає вручну, система запускає автоматичні продажі з **залишкового балансу** протягом 4 періодів, що в сумі тривають **365 днів (1 рік)**. Тривалість періодів он-чейн виміряна в днях (120 / 90 / 90 / 65 днів); посилання на місяці нижче — приблизні для зручності читання.

**Приклад зі стартом у 100 DA:**

<Steps>
  <Step title="Період 1 — після 120 днів (~4 місяці)">
    25% поточного балансу автоматично продається. 25% від 100 = **25 DA продано** → Залишок: **75 DA**
  </Step>

  <Step title="Період 2 — ще через 90 днів (~3 місяці, день 210)">
    40% залишкового балансу автоматично продається. 40% від 75 = **30 DA продано** → Залишок: **45 DA**
  </Step>

  <Step title="Період 3 — ще через 90 днів (~3 місяці, день 300)">
    50% залишкового балансу автоматично продається. 50% від 45 = **22,5 DA продано** → Залишок: **22,5 DA**
  </Step>

  <Step title="Період 4 — ще через 65 днів (~2 місяці, день 365)">
    100% залишкового балансу автоматично продається. 100% від 22,5 = **22,5 DA продано** → Залишок: **0 DA**
  </Step>
</Steps>

<Note>
  Відсотки автопродажу (25% / 40% / 50% / 100%), показані вище, відображають поточну конфігурацію протоколу. Конкретні значення зберігаються як параметри протоколу та підпорядковуються стандартним процедурам управління. Завжди звіряйтеся зі смартконтрактом або поточною документацією протоколу для актуальних значень.
</Note>

Кожен автопродаж виконується за ціною DA на момент тригера цього періоду — не за початковою ціною фармінгу. 100% автопроданих токенів спалюється, а користувач отримує 70% вартості в USDT за ціною на дату автопродажу. Оскільки ціна з часом зростає, пізніші періоди спалюють токени за вищою ціною, прискорюючи дефляцію.

Користувач може продати вручну в будь-який момент до спрацьовування автопродажу, отримуючи 75% замість 70%.

<Tip>
  Ручний продаж (виплата 75%) завжди вигідніший за токен, ніж автопродаж (виплата 70%). Однак автопродаж виграє від зростання ціни з часом — пізніші періоди виконуються за вищою ціною DA.
</Tip>

<Warning>
  **Автопродаж із нульовим Лімітом Доходу:** якщо спрацьовує автопродаж, а у користувача нульовий Ліміт Доходу (NFT не поновлено), 100% надходжень йде до Пулу Ліквідності або на спалювання DA (визначається DAO). Користувач не отримує нічого. Завжди підтримуйте активний Ліміт Доходу.
</Warning>

## Multi-Batch Lending

Кожна партія DA з кожного циклу майнінгу слугує незалежною заставою. Це дозволяє безперервний цикл мікрокредитів:

<Steps>
  <Step title="Видобути партію 1">
    Користувач завершує цикл майнінгу та отримує партію DA №1.
  </Step>

  <Step title="Кредит під партію 1">
    Користувач бере кредит з фіксованим 70% LTV під партію 1 (одноразова 5% комісія на момент видачі до Пулу Ліквідності).
  </Step>

  <Step title="Видобути партію 2">
    Користувач починає новий цикл майнінгу та отримує партію DA №2.
  </Step>

  <Step title="Кредит під партію 2">
    Користувач бере ще один кредит з фіксованим 70% LTV під партію 2 (окрема одноразова 5% комісія на момент видачі).
  </Step>
</Steps>

Це дозволяє кілька одночасних мікрокредитів - по одному на кожну партію DA. Кожен кредит незалежний - прив'язаний до своєї партії - і залишається активним, поки стек цієї партії не зайшов у цикл автопродажу. Якщо окремий кредит йде в дефолт, спалюється лише застава цієї партії - не всі активи DA.

Для детального порівняння продажу та кредитування див. [Продаж і Кредитування](/uk/da-selling-lending). Кредитування також підтримує часткові погашення та пропорційне відновлення при дефолті. Повний розбір - у розділі [Механіка кредитування](/uk/da-lending).

## Дефляційний цикл

Двічі на рік система запускає спеціальний Дефляційний Цикл тривалістю до 30 днів, призначений для посилення дефіциту токенів.

<Steps>
  <Step title="Пауза нових циклів">
    Запуск нових циклів майнінгу NFTM, стейкінгу та генерації DA призупиняється на час Дефляційного Циклу. **Активні цикли, розпочаті до Дефляційного Циклу, продовжуються та завершуються за графіком** — користувачі з уже активним майнінгом не втрачають свого прогресу.
  </Step>

  <Step title="Активація механізмів продажу">
    Активуються механізми автоматичного або добровільного продажу DA.
  </Step>

  <Step title="Щоденне спалювання">
    Частина токенів спалюється щодня.
  </Step>

  <Step title="Пропозиція скорочується">
    Ринкова пропозиція скорочується, посилюючи тиск на зростання ціни.
  </Step>
</Steps>

<Info>
  Дефляційний Цикл робить економіку DA передбачуваною, керованою та сталою у довгостроковій перспективі.
</Info>

Зростання активності → зростання ліквідності → зростання емісії DA → зростання спалювання → зростання дефіциту → зростання вартості активу. Ця замкнута система означає: чим активніше розвивається екосистема, тим міцнішою стає економіка DA.

<DaPriceSimulator />
