Виды лимитов в Holders
В системе Holders есть два основных типа лимитов расходов:- Лимит банка-эмитента карты. Ограничивает траты пользователя по всем аккаунтам и может отличаться в зависимости от банка.
- Блокчейн-лимит расходов. Устанавливается самим пользователем и ограничивает списания с аккаунтов на уровне блокчейна.
Лимит расходов эмитента
Банк-эмитент обязан ограничивать расходы по выпущенным картам в соответствии с правилами платежных систем Visa или Mastercard и нормативными требованиями. Лимит рассчитывается совокупно по всем картам пользователя вне зависимости от того, к каким аккаунтам они привязаны.Лимиты Wallester
Блокчейн-лимит расходов
Блокчейн-лимит расходов — это ограничение на списания с аккаунта пользователя, которое он устанавливает сам на уровне блокчейна. Это ограничение записывается в смарт-контракт и может быть изменено только владельцем аккаунта. Ни партнерский банк, ни сотрудники Holders не могут изменить этот лимит, что гарантирует полную безопасность средств.Изначально на аккаунте нет никаких лимитов, кроме банковских. Пользователь может установить их в любой момент. Лимиты распространяются на все карты, привязанные к этому аккаунту.
Доступно три типа лимитов:
- лимит одной транзакции — максимальная сумма одной покупки,
- дневной лимит — сколько можно потратить за день,
- месячный лимит — сколько можно потратить за месяц.
- дневной лимит не может превышать месячный;
- лимит одной транзакции не может превышать дневной;
- нельзя установить лимит, равный нулю — система посчитает, что лимит не задан.
Комиссия за установку лимита
Каждый лимит, установленный пользователем, записывается в блокчейн и требует оплаты сетевой комиссии, то есть gas. Комиссию оплачивает клиент, то есть владелец контрактаOwner, при подтверждении операции в кошельке.Примерные значения комиссии:
- установка лимита в TON ≈ 0.05 TON,
- установка лимита в Solana ≈ 0.000005 SOL.
Техническая реализация
Контракт хранит дневную сумму расходов и месячную сумму расходов. Если пользователь пытается провести операцию, для которой:- дневная сумма расходов + сумма текущей операции > дневного лимита,
- месячная сумма расходов + сумма текущей операции > месячного лимита,
- сумма текущей операции > лимита одной транзакции,
Controller списывать сумму операции со смарт-контракта, то есть аккаунта, даже если на нем достаточно средств.Важно учитывать, что на смарт-контракте может находиться сумма, превышающая фактически доступный баланс пользователя. Это происходит из-за задержек записи расходных транзакций в блокчейн внутри rollup. Поэтому проверка лимитов сначала выполняется на backend стороне Holders, а затем уже в блокчейне, что обеспечивает безопасность и актуальность оценки лимита.
После того как пользователь подтверждает установку лимита, на адрес контракта отправляется транзакция, подписанная бинарным payload, содержащим информацию об изменяемых лимитах. Контракт проверяет, кто отправил транзакцию, и если это владелец аккаунта, он принимает ее и записывает новые лимиты.
Автоматическое обновление блокчейн-лимитов
Дневной лимит обновляется каждый день в то время, когда пользователь его установил. Месячный лимит обновляется после истечения одного календарного месяца. То есть если пользователь установил лимит 22 сентября в 00:01 UTC, он обновится 22 октября в 00:01 UTC.Если пользователь хочет изменить ранее установленный лимит, увеличить, уменьшить или отключить его, он может сделать это тем же способом, что и при первоначальной настройке.