Skip to main content

Схема процесса списания средств

Untitled(6)(1)
  1. Пользователь инициирует платежную операцию.
  2. Карточный провайдер отправляет в webhook Holders запрос на авторизацию, содержащий сумму транзакции и информацию о мерчанте.
  3. Эмитент проверяет, достаточно ли криптовалютных средств на счете клиента. Если нужная сумма доступна, она резервируется (Hold), после чего провайдеру отправляется подтверждение об одобрении операции. Виртуальный баланс счета уменьшается, а фактический баланс остается без изменений.
  4. После получения clearing-транзакции от провайдера средства списываются с расчетного баланса.
  5. Запускается формирование rollup batch, включающего список транзакций с указанными суммами и комиссиями.
  6. Подготавливается агрегированное состояние для последующей записи в блокчейн.
  7. После завершения формирования batch общая сумма rollup списывается с пользовательского контракта.
  8. Агрегированная сумма переводится в Treasure-кошелек.
  9. 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 — операции по разблокировке ранее зарезервированных средств
Смарт-контракт накапливает изменения, а не пересчитывает текущий баланс. Это означает, что если в один rollup попадают две противоположные операции на одну и ту же сумму, например reversal и payment, то будут выполнены обе.
Пример: клиент совершает платеж в 13:00 на 100 EUR, в 14:00 делает второй платеж на 200 EUR. В 15:00 клиент получает reversal на 300 EUR и clearing на 400 EUR по ранее завершенным операциям, все действия происходят по одному и тому же счету.
В 16:00 формируется rollup, в котором:
  • 300 EUR блокируется на счете клиента и отображаемый баланс уменьшается, это соответствует платежам за период, при этом фактический баланс счета не меняется
  • 300 EUR разблокируется и отображаемый баланс клиента увеличивается, это reversal, фактический баланс счета также не меняется
  • 400 EUR списывается со счета клиента в treasure, отображаемый баланс не меняется, а фактический баланс уменьшается на 400 EUR
Все суммы указаны в EUR для упрощения расчета. На практике все операции в блокчейне выполняются только в криптовалюте.

Clearings

Что такое clearing

Clearing - это процесс сверки и взаиморасчетов, а также финального подтверждения операций между банком-эмитентом, эквайером, платежной системой и Holders на основе авторизаций. Обычно clearing по операции происходит в течение 24 часов.

Роль clearing в платежном потоке

Clearing служит мостом между авторизацией и финальным settlement.
Он отвечает за:
  • Сопоставление авторизаций и фактических операций: подтверждает, какие именно авторизованные суммы нужно реально списать, с учетом возможных изменений, таких как partial clearing, отмены и возвраты.
  • Преобразование “обещания списать” в обязательство: после clearing сумма перестает быть просто зарезервированной и становится подтвержденным требованием к счету клиента.
  • Обновление балансов в системе: виртуальный баланс в интерфейсе и фактический баланс смарт-контракта или расчетного счета приводятся в соответствие с реальными данными из платежной системы и от банка-эмитента.
Иными словами, authorization говорит “эту операцию можно провести”, clearing говорит “эту сумму нужно списать по данной операции”, а settlement говорит “деньги окончательно перемещены и зафиксированы”.

Участники процесса

В 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 включает следующие этапы:
  1. Банк-эмитент карты отправляет clearing-событие в систему Holders.
  2. Backend Holders обрабатывает полученное событие и включает его в rollup транзакций, относящихся к соответствующему смарт-контракту.
  3. После истечения заданного временного интервала информация передается в Controller.
  4. Controller инициирует перевод средств со смарт-контракта в Treasure. Для каждой монеты используется отдельный Treasure-контракт.
  5. Последующий вывод средств из 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, за вычетом комиссии, то есть вдвое больше исходно потраченной суммы в криптовалюте.

Reversal

Reversal - это операция отмены авторизации до момента clearing. Во время reversal заблокированные средства освобождаются и снова становятся доступны на счете клиента без фактического движения денег между банком-эмитентом и эквайером.
Характеристики reversal:
  • Выполняется между стадиями authorization и clearing
  • Отменяет резервирование суммы на счете
  • Снимает блокировку средств без создания новой операции в выписке

Reversals в Holders

В Holders reversals обрабатываются автоматически после получения уведомления от банка-эмитента.
Особенности reversal:
  • Возвращается полная сумма покупки, курс не пересчитывается
  • Комиссия из reversal не удерживается