Схема процесса списания средств
(1).png?fit=max&auto=format&n=fZaf6hO1IHJn1gBp&q=85&s=a78531f305d89f5c1d320a240eef9171)
- Пользователь инициирует платежную операцию.
- Карточный провайдер отправляет в webhook Holders запрос на авторизацию, содержащий сумму транзакции и информацию о мерчанте.
- Эмитент проверяет, достаточно ли криптовалютных средств на счете клиента. Если нужная сумма доступна, она резервируется (
Hold), после чего провайдеру отправляется подтверждение об одобрении операции. Виртуальный баланс счета уменьшается, а фактический баланс остается без изменений. - После получения clearing-транзакции от провайдера средства списываются с расчетного баланса.
- Запускается формирование rollup batch, включающего список транзакций с указанными суммами и комиссиями.
- Подготавливается агрегированное состояние для последующей записи в блокчейн.
- После завершения формирования batch общая сумма rollup списывается с пользовательского контракта.
- Агрегированная сумма переводится в Treasure-кошелек.
- Batch получает статус
closed, а включенные в него транзакции связываются с соответствующим rollup.
Rollups
Что такое rollup
Rollup - это механизм группировки нескольких транзакций в один batch для оптимизации обработки и снижения комиссий при взаимодействии с блокчейном. При каждом выводе криптовалюты со счета клиента платежный сервис должен платить комиссию за проведение транзакции в блокчейне (gas). Чтобы уменьшить затраты, в Holders реализована технология rollup, которая позволяет объединять несколько операций в один batch и платить gas один раз за весь сформированный блок операций.
Что такое batch
Batch - это группа транзакций или операций, объединенных для совместной обработки с целью повышения эффективности и снижения затрат. В системе Holders batch используется для агрегирования нескольких операций в один блок перед их выполнением в блокчейне.Формирование rollup
Rollup формируется для каждого клиентского счета каждые 3 часа, это настраиваемый параметр, если за указанный период была хотя бы одна операция. Все операции, выполненные в течение этого интервала, агрегируются в один блок и затем исполняются в блокчейне.В rollup входят следующие типы операций:
- Payments — средства клиента блокируются на backend Holders в момент оплаты, а фактическая блокировка в блокчейне происходит во время формирования rollup
- Clearings — списание средств со счета клиента в Treasure-кошелек
- Reversals — операции по разблокировке ранее зарезервированных средств
Пример: клиент совершает платеж в 13:00 на 100 EUR, в 14:00 делает второй платеж на 200 EUR. В 15:00 клиент получает reversal на 300 EUR и clearing на 400 EUR по ранее завершенным операциям, все действия происходят по одному и тому же счету.
В 16:00 формируется rollup, в котором:
В 16:00 формируется rollup, в котором:
- 300 EUR блокируется на счете клиента и отображаемый баланс уменьшается, это соответствует платежам за период, при этом фактический баланс счета не меняется
- 300 EUR разблокируется и отображаемый баланс клиента увеличивается, это reversal, фактический баланс счета также не меняется
- 400 EUR списывается со счета клиента в treasure, отображаемый баланс не меняется, а фактический баланс уменьшается на 400 EUR
Clearings
Что такое clearing
Clearing - это процесс сверки и взаиморасчетов, а также финального подтверждения операций между банком-эмитентом, эквайером, платежной системой и Holders на основе авторизаций. Обычно clearing по операции происходит в течение 24 часов.Роль clearing в платежном потоке
Clearing служит мостом между авторизацией и финальным settlement.Он отвечает за:
- Сопоставление авторизаций и фактических операций: подтверждает, какие именно авторизованные суммы нужно реально списать, с учетом возможных изменений, таких как partial clearing, отмены и возвраты.
- Преобразование “обещания списать” в обязательство: после clearing сумма перестает быть просто зарезервированной и становится подтвержденным требованием к счету клиента.
- Обновление балансов в системе: виртуальный баланс в интерфейсе и фактический баланс смарт-контракта или расчетного счета приводятся в соответствие с реальными данными из платежной системы и от банка-эмитента.
Участники процесса
В clearing участвуют несколько сторон и компонентов:- Банк-эмитент карты - отправляет clearing-события в Holders, то есть финальные данные транзакции после авторизации: суммы, комиссии, валюту и дату clearing.
- Платежная система (Visa) - задает правила и инфраструктуру обмена транзакциями между банком-эмитентом, эквайером и Holders, а также стандартизирует формат clearing-сообщений.
- Holders Backend - получает clearing-события, сопоставляет их с авторизациями, включает их в rollup и инициирует изменения в счете или контракте клиента.
- Controller (on-chain компонент/сервис) - на основе результатов clearing и rollup инициирует фактическое списание средств со смарт-контракта пользователя и перевод средств в соответствующий Treasure-контракт.
- Клиентские смарт-контракты - хранят средства пользователя; по итогам clearing и rollup с них списываются агрегированные суммы.
- Treasure-кошельки - получают агрегированные суммы после clearing, по токенам и сетям, и служат точкой накопления средств компании.
Этапы clearing в Holders
Процесс clearing в Holders включает следующие этапы:- Банк-эмитент карты отправляет clearing-событие в систему Holders.
- Backend Holders обрабатывает полученное событие и включает его в rollup транзакций, относящихся к соответствующему смарт-контракту.
- После истечения заданного временного интервала информация передается в Controller.
- Controller инициирует перевод средств со смарт-контракта в Treasure. Для каждой монеты используется отдельный Treasure-контракт.
- Последующий вывод средств из Treasure возможен только на заранее авторизованные адреса, включенные в whitelist.
Важно учитывать: в некоторых случаях сумма clearing может превышать сумму, зарезервированную на контракте клиента, это связано со спецификой работы платежных систем. Сейчас механизм дополнительных запросов средств через инвойсы для покрытия таких расхождений находится в разработке.
Типы clearing
Regular clearing
Стандартный процесс clearing, при котором сумма clearing совпадает или почти совпадает с исходной суммой транзакции.Partial clearing
Partial clearing происходит, когда исполняется только часть обязательств или транзакций. Это может происходить в следующих случаях:- Недостаточная ликвидность: когда банк не может обработать все операции одновременно и закрывает только часть транзакций.
- Постепенное исполнение: когда договоры или транзакции предполагают выполнение в несколько этапов, а обязательства исполняются по мере появления средств.
Over-clearing
Over-clearing означает ситуацию, когда итоговый settlement превышает первоначальные обязательства. Это может быть связано со следующими факторами:- Сложные финансовые операции: например, при использовании производных финансовых инструментов или хеджирования, когда риски могут превышать первоначальные позиции.
Returns и reversals
Return
Return - это операция, инициированная мерчантом после завершения оплаты и clearing, в рамках которой средства по исходной транзакции возвращаются клиенту полностью или частично.Характеристики return:
- Выполняется после завершения clearing, когда средства уже были списаны
- Создает новую входящую операцию (
credit) в выписке
Returns в Holders
В Holders возвраты обрабатываются вручную после получения уведомления от банка-эмитента. Такой подход дает дополнительную защиту от мошеннических операций.Особенности return:
- Обычно возврат доходит до клиента в течение 30 дней после его инициации мерчантом
- Операцию выполняет авторизованный сотрудник Backoffice
- Возвращается только основная сумма платежа, комиссия не возвращается, так как покрывает операционные расходы Holders
Важная особенность: сумма возврата рассчитывается по курсу на момент возврата, а не на момент исходной оплаты.
Пример: клиент заплатил 100 TON. Мерчант инициировал возврат. Банк одобрил его и уведомил Holders. К этому моменту курс TON упал в два раза. Клиент получит 200 TON, за вычетом комиссии, то есть вдвое больше исходно потраченной суммы в криптовалюте.
Пример: клиент заплатил 100 TON. Мерчант инициировал возврат. Банк одобрил его и уведомил Holders. К этому моменту курс TON упал в два раза. Клиент получит 200 TON, за вычетом комиссии, то есть вдвое больше исходно потраченной суммы в криптовалюте.
Reversal
Reversal - это операция отмены авторизации до момента clearing. Во время reversal заблокированные средства освобождаются и снова становятся доступны на счете клиента без фактического движения денег между банком-эмитентом и эквайером.Характеристики reversal:
- Выполняется между стадиями authorization и clearing
- Отменяет резервирование суммы на счете
- Снимает блокировку средств без создания новой операции в выписке
Reversals в Holders
В Holders reversals обрабатываются автоматически после получения уведомления от банка-эмитента.Особенности reversal:
- Возвращается полная сумма покупки, курс не пересчитывается
- Комиссия из reversal не удерживается