Кредитный трафик¶
Каждый пользователь 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
Теперь рассмотрим пример взаимодействия данных узлов:
UserA
получает 3 Гб (3072 Mб) трафика отUserB
. Поскольку уUserA
нет токенов, он получает трафик в кредит. Это означает, что теперьUserA
долженUserB
3072 Мб. Кредитный лимитUserA
уменьшается до 7168 (10240 - 3072).UserA
получает 7 Гб (7168 Мб) трафика от UserС. Поскольку уUserA
нет токенов, он получает трафик в кредит. ТеперьUserA
долженUserC
7168 Мб. Кредитный лимитUserA
уменьшается до 0.UserC
перестает отдавать данныеUserA
, поскольку тот исчерпал свой кредитный лимит и не может оплатить трафик.-
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 Гб трафика