Раздел 2 · Урок 2.6
Граф транзакций и кластеризация адресов
Один человек в блокчейне почти никогда не пользуется одним адресом. У него их десятки, сотни, а у биржи — миллионы. Как же аналитику понять, что двадцать разных адресов на самом деле принадлежат одному кошельку? Ответ — граф транзакций и эвристики кластеризации. Это фундамент всей блокчейн-аналитики: именно так Chainalysis, Elliptic и AMLConsensus превращают хаос анонимных адресов в понятные сущности «биржа», «миксер», «мошенник».
Что такое граф транзакций
Блокчейн по своей природе — это гигантский граф. В математике граф состоит из вершин (узлов) и рёбер (связей между ними). В блокчейн-анализе:
- Вершины — это адреса (или, в модели UTXO, сами транзакции и их выходы).
- Рёбра — это транзакции, переносящие ценность от одного адреса к другому, со стрелкой направления и весом (суммой).
Когда вы вводите адрес в AML-проверку, система не смотрит на него изолированно. Она подтягивает его окружение — кто ему платил, кому платил он, — и строит подграф. Именно по форме и содержанию этого подграфа делается вывод о риске.
Простейший пример графа: адрес A отправил 1 BTC адресу B, B отправил 0.5 BTC адресу C и 0.5 BTC адресу D. Нарисуйте это стрелками — и вы получите направленный взвешенный граф. Аналитик читает такие структуры как текст: разветвление на множество мелких выходов может означать «дробление» (structuring), схождение множества входов в один — сбор средств, а прохождение через известный контракт миксера — попытку разорвать связь.
Мини-схема потока.
Жертва фишинга → Адрес вора A → дробит на A1, A2, A3 → каждый на новый адрес → миксер → биржа-депозит.
Задача аналитика — не потерять «нить» через все эти пересадки и понять, что A1, A2, A3 — один и тот же владелец.
Проблема: адрес ≠ владелец
Ключевая сложность блокчейн-анализа в том, что адрес — это не аккаунт. Создать новый адрес бесплатно и мгновенно; кошельки автоматически генерируют новый адрес для каждой транзакции ради приватности. Поэтому напрямую по одному адресу нельзя сказать, сколько всего денег у человека и с кем он связан. Нужно сначала сгруппировать адреса в кластеры, каждый из которых с высокой вероятностью контролируется одной сущностью. Этот процесс называется кластеризацией, а инструменты для него — эвристики.
Эвристика 1: общий вход (common-input-ownership)
Это самая мощная и надёжная эвристика для сетей на модели UTXO (Bitcoin, Litecoin). Её идея проста и опирается на то, как работают подписи.
Логика common-input
Чтобы потратить средства в транзакции, нужно подписать каждый её вход приватным ключом соответствующего адреса. Если в одной транзакции несколько входов с разных адресов, значит, тот, кто её создал, владел приватными ключами всех этих адресов одновременно.
- Наблюдаем транзакцию. Входы: адрес X (0.3 BTC), адрес Y (0.2 BTC), адрес Z (0.5 BTC). Выход: один платёж 1 BTC. Три входа собраны вместе.
- Делаем вывод. X, Y и Z подписаны одним человеком → все три принадлежат одному кошельку. Объединяем их в кластер.
- Расширяем. Если завтра X участвует в транзакции вместе с адресом W, то W тоже втягивается в тот же кластер. Кластеры растут «снежным комом».
Именно так один кластер биржи может разрастись до сотен миллионов адресов — все они хоть раз участвовали в совместных транзакциях consolidation.
Ограничение. Эвристику общего входа ломает технология CoinJoin — намеренное объединение входов от разных, не связанных пользователей в одну транзакцию. Здесь наивное применение даёт ложное склеивание. Поэтому качественные аналитические движки сначала распознают паттерн CoinJoin (равные суммы выходов, много участников) и исключают такие транзакции из кластеризации.
Эвристика 2: адрес сдачи (change address)
Вторая классическая эвристика тоже родом из UTXO-модели. Когда вы платите частью своего баланса, «сдача» возвращается вам — но на новый адрес, чтобы не раскрывать остаток. Если аналитик поймёт, какой из выходов является сдачей, он свяжет этот новый адрес с отправителем.
- Признак «нового адреса». Один из выходов идёт на адрес, который никогда прежде не появлялся в блокчейне, — вероятный кандидат в сдачу.
- Признак «круглой суммы». Если один выход — ровно 0.50000000 BTC (платёж), а второй — 0.34172618 BTC (некруглый остаток), то некруглый, скорее всего, сдача отправителю.
- Признак типа скрипта. Сдача обычно возвращается на адрес того же типа/формата, что и входы (например, тот же bech32-формат).
Пример: адрес A тратит 1 BTC. Выходы: 0.7 BTC на адрес продавца B и 0.29 BTC на новый адрес C. Эвристика change: C — это сдача, а значит, C принадлежит тому же владельцу, что и A. Теперь A и C — в одном кластере, даже если формально это разные адреса.
Другие сигналы кластеризации
Поведенческие и внешние эвристики
- Тайминг и паттерны. Адреса, которые платят одному и тому же сервису в одинаковые моменты одинаковыми суммами, могут управляться одним ботом/владельцем.
- Повторное использование адресов. В сетях account-модели (Ethereum) один адрес используется многократно, и common-input не работает — там кластеризуют по взаимодействию с контрактами, депозитными адресами бирж, паттернам газа.
- Депозитные адреса бирж. Биржа выдаёт каждому пользователю уникальный адрес для пополнения, а затем сметает («sweep») средства на горячий кошелёк. Отследив sweep, аналитик связывает пользовательский депозит-адрес с кластером биржи.
- Внешние метки (attribution). Данные из реального мира: адрес, опубликованный на форуме, в санкционном списке OFAC, в судебном деле, или полученный при собственном KYC-депозите на биржу. Именно метки дают кластеру имя.
От кластера к сущности: как аналитик «видит» кошелёк
Соберём всё вместе на сквозном примере. Аналитик расследует адрес жертвы, у которой украли средства.
- Строит граф вокруг адреса вора. Видит, что украденное дробится на A1, A2, A3. Первый слой отмывания.
- Применяет common-input. Через две недели A1 и A3 засветились в одной consolidation-транзакции — значит, это один владелец. Кластер собран. Дробление не помогло — эвристика склеила обратно.
- Применяет change-эвристику. Отслеживает сдачу и не теряет «нить», когда часть средств уходит на «новые» адреса. Кластер растёт.
- Ловит точку выхода. Кластер отправляет средства на адрес, помеченный как депозит биржи X. Здесь начинается off-chain.
- Делает вывод для отчёта. «Похищенные средства через 4 пересадки и дробление осели на депозите биржи X — туда следует направить запрос на раскрытие KYC». Анонимный граф превратился в actionable-вывод.
Почему это важно для AML-скоринга. Когда вы проверяете кошелёк в AMLConsensus и видите «связь с миксером» или «получение средств с даркнет-маркета», за этой строкой стоит именно кластеризация: система знает, что множество адресов миксера — одна сущность, потому что склеила их эвристиками. Без кластеризации каждый адрес был бы безымянным, и скоринг был бы невозможен.
Помните об ошибках. Эвристики — это вероятностные предположения, а не доказательства. Common-input ломается CoinJoin'ом, change-эвристика — умышленным использованием круглых выходов и одинаковых типов адресов. Хороший аналитик всегда указывает уровень уверенности и не выдаёт кластер за неопровержимый факт. Ложное склеивание двух владельцев в один кластер — реальный источник несправедливых «красных» скоров, о чём мы поговорим в разделе о ложных срабатываниях.
Материалы носят образовательный характер.