Перейти к содержанию

Кредитный трафик

Каждый пользователь Ace Stream имеет "кредитный лимит" по трафику в размере 10 Гб. Это означает, что во время взаиморасчетов за трафик пользователь может потреблять трафик в кредит, если у него недостаточно средств для оплаты трафика. Кредиторами являются узлы, отдающие трафик. Максимальный суммарный объем кредитов для одного пользователя - 10 Гб. Если пользователь исчерпал свой кредитный лимит, узлы сети перестают отдавать ему трафик, пока кредит не будет погашен (полностью либо частично).

Кредитный лимит каждого пользователя хранится в блокчейне и выражается целым числом от 0 до 10240 - это количество мегабайт трафика, которые пользователь может взять в кредит.

Погашение кредита

Погашение кредита выполняется автоматически системными смарт-контрактами со счета для оплаты сервисов по алгоритму оплаты трафика. Цена трафика расчитывается на момент погашения кредита.

Техническая реализация

Кредитный лимит для отдельно взятого аккаунта формируется на основе двух чисел, хранящихся в основном блокчейне:

  • системная настройка traffic_credit_limit - максимальное количество единиц трафика, которые можно взять в кредит
  • поле traffic_credit_used аккаунта - целое число, количество единиц трафика, которые аккаунт взял в кредит. Это поле могут изменять только системные смарт-контракты

Формула кредитного лимита:

credit_limit = SystemSettings.traffic_credit_limit - account.traffic_credit_used

Информация о самих кредитах (кто, кому и сколько должен) хранится в блокчейнах второго уровня.

Пример

Введем такие обозначения:

  • UserA - новый пользователь сети: кредитный лимит 10240, на счету 0 токенов.
  • UserB, UserC, UserD - узлы сети, которые отдают трафик узлу UserA

Теперь рассмотрим пример взаимодействия данных узлов:

  1. UserA получает 3 Гб (3072 Mб) трафика от UserB. Поскольку у UserA нет токенов, он получает трафик в кредит. Это означает, что теперь UserA должен UserB 3072 Мб. Кредитный лимит UserA уменьшается до 7168 (10240 - 3072).
  2. UserA получает 7 Гб (7168 Мб) трафика от UserС. Поскольку у UserA нет токенов, он получает трафик в кредит. Теперь UserA должен UserC 7168 Мб. Кредитный лимит UserA уменьшается до 0. UserC перестает отдавать данные UserA, поскольку тот исчерпал свой кредитный лимит и не может оплатить трафик.
  3. UserA пополняет свой счет для оплаты сервисов на 0.2 XAB.

    Системный смарт-контракт закрывает кредиты пользователя UserA:

    • UserB получает 0.03 XAB (минус комиссия системы) - оплата за 3 Гб трафка, отданного ранее в кредит
    • UserC получает 0.07 XAB (минус комиссия системы) - оплата за 7 Гб трафка, отданного ранее в кредит
    • с UserA списывается 0.1 XAB
    • кредитный лимит UserA увеличивается до 10240
    • UserA получает 15 Гб (15360 Мб) трафика от UserD. У UserA на счету 0.1 XAB - этого достаточно для оплаты 10 Гб трафика. Остальные 5 Гб трафика UserA берет у UserD в кредит:
    • UserD получает 0.1 XAB (минус комиссия системы)
    • с UserA списывается 0.1 XAB
    • кредитный лимит UserA уменьшается до 5120
    • UserA должен UserD 5 Гб трафика