September 7, 2024

Криптокарты. Схемы работы. Часть I. Вводная

Итак, недавно вышло сразу несколько новостей, которые предвещают такой mass adoption, что мало не покажется. Но давайте не будем следовать за хайпом, а попробуем разобраться. Из интересующих меня вещей есть, как минимум, 2:

  1. Некастодиальная карта (в терминологии разберёмся позже) от Mastercard;
  2. И факт того, что Apple открыла платёжные чипы NFC для сторонних разработчиков.

За одну статью такую работу не проделаешь, поэтому попробуем съесть слона по кусочкам.

Пилот MM & MC

MM - МетаМаск (aka MetaMask), а MC - МастерКард (MasterCard). И они заключили соглашение, в результате чего появилась карта (далее - Пилот): людей было пару тысяч и в основном из ЕС и Великобритании. И это был пилот: уже в сентябре 2024 MC выпустили полноценный проект.

Важно отметить, что Пилот был запущен на zkEVM Linea, а это - весьма и весьма быстрая система. И дело не только в TPS, которые мало что значат сами по себе, но именно в факте ZK-обработки: “используя технологию zkEVM, Linea обеспечивает быстрое завершение транзакций, надёжную защиту и полную эквивалентность EVM…”.

Выглядит это примерно так:

Статистика по сети: l2beat.com/scaling/projects/linea.

Итак, в итоге имеем:

  1. Фиксированные комиссии для “карточных” переводов: “При использовании таких стабильных монет, как USDC и USDT, с вас будет взиматься комиссия за газ Linea, которая может меняться, но обычно составляет $0,02. При использовании нестабильных монет, таких как wETH, с вас будет взиматься комиссия за газ Linea, которая варьируется, но обычно составляет 0,02 доллара. Также взимается комиссия за своп в размере 0,875 %”.
  2. Быстрое время завершение транзакции (даже по нынешним меркам это 0.1-0.2 секунды);
  3. За счёт ZKP-механик - надёжное подтверждение завершение транзакций.

Почему это важно? Потому как схема работы карта (упрощённая) - примерно следующая:

А это значит, что в центре у нас есть держатель смарт-контракта, который при этом же умеет в процессинг карт. Таким держателем является создатель проекта Crypto Life - baanx.com.

Но есть ли слабые места у подобной схемы? Да, попробую перечислить.

Между багом и фичей

Итак, первый вектор атаки очевиден - это атака на оракула. Не обязательно даже ценового: достаточно “прокладки” между крипто-процессингом и карточным. Хотя атака на цены активов - тоже вектор. Итого, в этом разрезе два аспекта:

  1. Попробовать манипулировать ценой криптоактивов (стоимостью USDt, например, к USD), но это не так и просто, хотя опыт Ton и других показывает, что централизованные поставщики цен - пока актуальны;
  2. Можно непосредственно атаковать связку крипто и карточного процессинга на технологическом уровне: поскольку пока рыться в ней не пришлось - здесь могу (с)оставить лишь теоретический диапазон действий.

Второй очевидный вектор атаки - это MEV. Ведь упрощённый процесс выглядит так:

  1. Владелец карты пришёл в магазин;
  2. Предварительно выдал аппрувы на некую сумму, выставив тем самым max лимиты (min, как понимаю, устанавливается сервисом);
  3. Карта в этом случае служит таким же способом подписи, как Trezor или MetaMask (хотя тут можно поругаться над терминологией);
  4. Как только получили подпись - транзакция отправляется в L2-блокчейн (например, в Linea) и списывается с баланса нужная сумма.

Поэтому теоретически никто не мешает написать бота, который будет делать транзакции быстрее, чем процессинг карт. Но технически это не так просто:

  1. Не забываем про ZK-роллапы и их скорости, а также вычислительные мощности для всего этого дела;
  2. Также стоит держать в голове, что хотя карта не кастодиальная относительно хранимых средств - никто не говорил, что не будет KYC и иных аналогов для верификации держателей таковой;
  3. И да, аппрув на смарт уже выдан, а поэтому скорость списания для него - максимальная (тоже можете поругаться над деталями).

Отсюда следует, что вектор атаки возможен, но тоже требует детальной аналитики.

И, конечно же, самое слабое звено - это прокладка между картой и различными техническими причиндалами, то есть мы с вами - люди - aka пользователи подобной карты. Фишинговые QR-коды - дано реальность и данность и никто не застрахован от слишком больших списаний в этом смысле: по простой, человеческой, ошибки.

Равно как никто не застрахован от взлома связки крипто и карточного процессинга: тогда это будет похоже на взломы мостов и многомиллионные потери. “Многосотенмиллионные” даже.

И всё же: схема работает?

Короткий ответ: да. И это достигнуто, потому что:

  1. ZK-роллапы (или каналы в Bitcoin, или иные подобные решения) - довольно быстрые и споры о TPS давно не уместны;
  2. zkEVM (и подобные решения) весьма надёжны, ибо строятся на чистой математике;
  3. Выдача аппрувов или совершение депозитов - стало нормой для DEX (AMM включая) и различных DeFi-протоколов, поэтому фактически мы открываем баланс сервисам по умолчанию после этого;
  4. Связки смарт-контрактов и фиатных процессингов - отточены и не раз;
  5. KYC для кошельков и AML “на лету” - давно достижимые вещи.

Итак, процесс в среднем выглядит следующим образом:

  • Если у вас есть некастодиальный кошелёк (скажем, Metamask), вы находитесь в нужной юрисдикции (да-да, тот же ММ поддерживает санкции), то можете заказать карту;
  • Проходите KYC и/или аналогичные процедуры и делаете связку карты с кошельком, выдавая через установку лимитов аппрувы смарт-контракту BaakX;
  • После этого карта становится фактически инструментом вызова подписи (1) в вашем кошельке, который подтверждает списание на каждую транзакцию: как это происходит в Uniswap и множестве других инструментов;
  • Чтобы деньги поступили в банк Продавца - есть компания (пусть mercuryo.io), которая мгновенно переводит криптоплатёж (5) в баланс в USD/EURO и тем самым появляются взаимные обязательства у компании крипто-процессинга и агрегатора крипто-платежей, которые позволяют незаметно для продавца переводить ему, продавцу, фиатную валюту, изымая у Пользователя/Покупателя USDt, USDc или другую (установленную) криптовалюту.
  • При этом плательщик платит установленные комиссии: за списание и, если требуется, за своп, но деньги физически хранит у себя на кошельке, понимая, что выданный аппрув - это потенциальный вектор атак (впрочем, именно так мы и живём внутри банковской системы).
  • Собственно, на этом всё: Покупатель платит с кошелька, а всё остальное на себя берёт связка: MasterCard - Baakx - Mercuryo или ей подобная.

Но, конечно, теперь хочется покопаться глубже и выискать детали, чем и займусь, а пока и всё и

До!