Как выводится риск-скор PublicAML

Методика, обновлено 8 октября 2026

Балл это результат заявленной политики, а не модели. Всё, из чего он собран, приезжает в том же ответе, что и сам балл, поэтому его можно проверить, а не принимать на доверие.

min(тяжесть, ранг)

балл в точке происхождения

от 0 до 100

один ранг доверия на источник, а не на утверждение

по категории

дальность разноса, урезанная рангом

только человек

единственное, что снимает обвинение

Два разных утверждения, которые легко перепутать

В API рядом живут два утверждения, и они не взаимозаменяемы. Атрибуция отвечает на вопрос, кто этот адрес: биржа, контракт токена, названный человек. Риск отвечает, сколько он стоит: санкция, украденные средства, выход миксера. Хранятся они отдельно, доказываются по разным планкам, и обвинением является только одно из них.

Форма графа это третья вещь, и она никогда не становится личностью. Адрес, в который платят многие, публикуется как точка схождения со структурным основанием, а не как биржа. Если его никто не назвал, категория пустая, и пустая означает именно «никто не назвал», а не «ничего не известно».

Число определяют две оси

Первая ось это справочник категорий. Он задаёт, что именно вменяется, и несёт для каждой категории свою тяжесть, свою дальность и своё затухание. Санкция, взлом, миксер и депозитный адрес игорной площадки это разные утверждения с разным весом, и вес принадлежит утверждению, а не тому, кто его высказал.

Вторая ось это таблица доверия: один ранг от 0 до 100 на источник. Санкционные органы и эмитенты стейблкоинов стоят на 100, жалобы сообщества на 25. Одно число на источник, а не на утверждение, поэтому источник не может быть сильным про один адрес и слабым про следующий.

Соединяются оси минимумом, а не взвешенной смесью. Балл в точке происхождения это меньшее из тяжести категории и ранга источника. Поэтому слабый источник не может нести тяжёлое обвинение, а сильный не может сделать мягкую категорию тяжёлой. Ровно это молча разрешает взвешенное среднее.

Минимум как затвор
санкция100

тяжесть

санкционный орган100

ранг

min100
взлом90

тяжесть

расследованный инцидент90

ранг

min90
взлом90

тяжесть

жалоба сообщества25

ранг

min25
миксер80

тяжесть

санкционный орган100

ранг

min80

Тяжесть это что вменяется. Ранг это кто вменяет. Балл в точке происхождения это меньшее из двух.

Один ранг на источник
100

санкционные органы, эмитенты стейблкоинов, наши расследования

90

вендорские санкционные списки, расследованные инциденты

80

выверенный каталог

50

вендорские метки, наши детекторы

40

открытые наборы данных

25

жалобы сообщества

20

обозреватели блоков, сервисы имён

10

выведенное из других полей

Таблица доверия по полосам. Ранг это потолок балла и делитель дальности, но никогда не цена.

Как далеко уходит обвинение

Дальность принадлежит категории и урезается рангом, а не наоборот. Санкция по замыслу выживает на глубине и несёт явный балл на каждом хопе. Взлом достаёт на шесть хопов и теряет на каждом 30 процентов веса. Миксер терминален: ценность, прошедшая через него, не несёт обвинение дальше, а интеракция с ним это отдельное и гораздо более мягкое утверждение.

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

Балл по расстоянию
санкциязаморозка эмитента
02550751000123456100908070554025.

хопов от источника

Одно утверждение о взломе, три источника

ранг 90

6 хопов

ранг 50

3 хопов

ранг 25

2 хопов

дальность = max(1, ceil(min(база, 8) x ранг / 100))

Санкция держит вес на глубине и упирается в пол. Заморозка эмитента теряет 30 процентов на хоп и останавливается на пятом.

Что делает нейтральная инфраструктура, а что нет

Бирже, мосту и контракту стейкинга платят все, поэтому окрестность такого адреса не является доказательством о нём. У нейтральных категорий унаследованная экспозиция поэтому выключена. Это единственное место, где атрибуция касается балла, и она умеет только понижать.

Прямую половину она не трогает никогда. Обвинение, записанное на самом адресе, публикуется независимо от того, чем этот адрес атрибутирован, и снимает его только зафиксированное решение человека, которое лежит отдельной строкой со своим автором. Ни ранг, ни категория, ни форма графа не могут отозвать обвинение сами по себе.

Какую половину может задеть атрибуция

Обвинительная категория

Прямая, сам адреспубликуется
Косвенная, что до него дошлопубликуется

Нейтральная инфраструктура

Прямая, сам адреспубликуется
Косвенная, что до него дошловыключена

Прямую половину снимает только зафиксированное решение человека.

Нейтральная атрибуция выключает унаследованную экспозицию. Обвинение, записанное на самом адресе, она не трогает.

Где лежит происхождение оценки

Каждое утверждение источника об адресе лежит отдельной строкой в реестре заявлений. Владельца публикуемой строки выбирает ранг, а не тот, кто записал последним, и проигравшее заявление сохраняется, а не затирается. Поэтому вопрос «кто это сказал и когда» отвечается по записи, а не по нашей памяти.

Это же делает спор видимым. Когда выверенный каталог называет адрес служебным контрактом, а орган называет его санкционным, на учёте стоят оба утверждения, публикуемой строкой владеет орган, и сам спор виден, а не усреднён.

Заявления об одном адресе
100

санкция

санкционные органы, эмитенты стейблкоинов, наши расследования

владеет публикуемой строкой

80

служебный контракт

выверенный каталог

на учёте

25

фишинг

жалобы сообщества

на учёте

Порядок записи не решает ничего, поэтому поздний импорт с низким рангом не может молча забрать адрес себе.

Владельца публикуемой строки выбирает ранг. Проигравшие заявления сохраняются, а не затираются.

Один ответ, прочитанный построчно

Каждая запись, участвовавшая в оценке, называет адрес-источник, сам источник, его ранг, заявленную тяжесть, получившийся балл и расстояние в хопах. Поэтому арифметику можно воспроизвести из одного ответа, без доступа к чему-либо нашему. Ниже сокращённый живой ответ по кошельку Chatex, включённого в список OFAC.

Живой ответ, сокращённо

100.0

CRITICAL

100

Прямая, сам адрес

90

Косвенная, что до него дошло

CHATEX

sanction

ХопыКатегорияИсточникТяжестьРангБаллАдрес-источник
0sanctionofac:sdn_advanced1001001000x6f1ca1…2a8352
CHATEX
1sanctionofac:sdn_advanced100100900x5512d9…0121b0
CHATEX
1issuer-freezecircle:blacklist90100630x26e0d0…2a2cfd
issuer-frozen
2sanctionofac:sdn_advanced100100800x1999ef…0c5ade
Magomedov Khadzhi Murat Dalgatovich
2issuer-freezetether:blacklist9010044.10x7f232c…7ab3bd
issuer-frozen
3sanctionofac:sdn_advanced100100700x098b71…3e2f96
Lazarus Group
3hackincident:news-pipeline909030.870x959a90…b12bd2
uniBTC exploit

Строки дальше трёх хопов здесь опущены для краткости, в ответе они есть.

Каждая строка несёт свою арифметику: тяжесть, ранг, балл и расстояние.

По первой строке видна политика: тяжесть 100, ранг 100, балл 100, ноль хопов. По последней видно затухание: взлом, заявленный расследованным инцидентом, стоит 90 в точке происхождения и 30.87 в трёх хопах от неё. Две половины над таблицей это та же арифметика в сводке: прямая берётся с самого адреса, косвенная это самое сильное, что до него дошло.

Проверки, которые можно сделать без нас

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

Проверка первичных доказательств

Санкция

органсписокдата снимкапубликация

Открыть публикацию органа и найти в ней адрес.

Заморозка эмитента

блокхеш транзакции

Найти транзакцию в сети. Она там либо есть, либо нет.

Инцидент

документальный источникдоказательный ярусссылка

Открыть названный источник и прочитать, что он вменяет адресу.

Подписанное заключение

адресуровень рискасрок действия

Восстановить подписанта через ecrecover. Балл и категория подписью не покрыты.

Четыре проверки, ни одна из которых не требует аккаунта у нас.

Мы также выдаём подписанные заключения в формате EIP-712, которые любая третья сторона проверяет одним вызовом ecrecover и без аккаунта у нас. Одна оговорка, сказанная здесь, а не обнаруженная потом: подписью покрыты адрес, уровень риска и срок действия. Числовой балл и категория едут рядом без подписи.

Ограничения, названные сразу

Методика, которая перечисляет только свои сильные места, методикой не является. Вот места, где число слабее, чем выглядит, и каждое из них свойство действующей политики, а не дефект, который мы прячем.

  • Разнос риска не знает времени. Перевод, сделанный задолго до того, как обвинение возникло, весит столько же, сколько сделанный после него.
  • Балл не калиброван по исходам. Мы не публикуем метрик точности и полноты, потому что не измеряли их, а неизмеренное число незачем ставить в таблицу.
  • Часть рангов доверия ещё проходит редакционную проверку. Они действуют, и подтверждены не все.
  • Риск не пересекает границу сети. Единственное исключение это прямой санкционный сид, зеркалируемый между EVM-сетями, и только для обычных счетов, не контрактов.
  • Кластеризация это структурный вывод. Личностью она не становится, но неверный кластер всё равно может поставить адрес рядом с ней.
  • Утверждение свежо настолько, насколько свеж последний синк. Санкции и заморозки забираются суточно, источники инцидентов ежечасно, а между двумя прогонами мы держим предыдущий снимок.

Вопрос про конкретное число

Если балл выглядит неверным в любую сторону, попросите у нас вывод оценки по этому адресу. Мы отвечаем строками, а не мнением.

Проверить адрес