Как выводится риск-скор PublicAML
Методика, обновлено 8 октября 2026
Балл это результат заявленной политики, а не модели. Всё, из чего он собран, приезжает в том же ответе, что и сам балл, поэтому его можно проверить, а не принимать на доверие.
min(тяжесть, ранг)
балл в точке происхождения
от 0 до 100
один ранг доверия на источник, а не на утверждение
по категории
дальность разноса, урезанная рангом
только человек
единственное, что снимает обвинение
Два разных утверждения, которые легко перепутать
В API рядом живут два утверждения, и они не взаимозаменяемы. Атрибуция отвечает на вопрос, кто этот адрес: биржа, контракт токена, названный человек. Риск отвечает, сколько он стоит: санкция, украденные средства, выход миксера. Хранятся они отдельно, доказываются по разным планкам, и обвинением является только одно из них.
Форма графа это третья вещь, и она никогда не становится личностью. Адрес, в который платят многие, публикуется как точка схождения со структурным основанием, а не как биржа. Если его никто не назвал, категория пустая, и пустая означает именно «никто не назвал», а не «ничего не известно».
Число определяют две оси
Первая ось это справочник категорий. Он задаёт, что именно вменяется, и несёт для каждой категории свою тяжесть, свою дальность и своё затухание. Санкция, взлом, миксер и депозитный адрес игорной площадки это разные утверждения с разным весом, и вес принадлежит утверждению, а не тому, кто его высказал.
Вторая ось это таблица доверия: один ранг от 0 до 100 на источник. Санкционные органы и эмитенты стейблкоинов стоят на 100, жалобы сообщества на 25. Одно число на источник, а не на утверждение, поэтому источник не может быть сильным про один адрес и слабым про следующий.
Соединяются оси минимумом, а не взвешенной смесью. Балл в точке происхождения это меньшее из тяжести категории и ранга источника. Поэтому слабый источник не может нести тяжёлое обвинение, а сильный не может сделать мягкую категорию тяжёлой. Ровно это молча разрешает взвешенное среднее.
тяжесть
ранг
тяжесть
ранг
тяжесть
ранг
тяжесть
ранг
Тяжесть это что вменяется. Ранг это кто вменяет. Балл в точке происхождения это меньшее из двух.
санкционные органы, эмитенты стейблкоинов, наши расследования
вендорские санкционные списки, расследованные инциденты
выверенный каталог
вендорские метки, наши детекторы
открытые наборы данных
жалобы сообщества
обозреватели блоков, сервисы имён
выведенное из других полей
Таблица доверия по полосам. Ранг это потолок балла и делитель дальности, но никогда не цена.
Как далеко уходит обвинение
Дальность принадлежит категории и урезается рангом, а не наоборот. Санкция по замыслу выживает на глубине и несёт явный балл на каждом хопе. Взлом достаёт на шесть хопов и теряет на каждом 30 процентов веса. Миксер терминален: ценность, прошедшая через него, не несёт обвинение дальше, а интеракция с ним это отдельное и гораздо более мягкое утверждение.
Ранг входит как доля этой дальности, с полом в один хоп, чтобы источник, которому мы доверяем меньше, не получал тот же радиус, что орган, опубликовавший список. Ниже одно и то же утверждение о взломе от трёх источников разного ранга.
хопов от источника
Одно утверждение о взломе, три источника
ранг 90
6 хопов
ранг 50
3 хопов
ранг 25
2 хопов
дальность = max(1, ceil(min(база, 8) x ранг / 100))
Санкция держит вес на глубине и упирается в пол. Заморозка эмитента теряет 30 процентов на хоп и останавливается на пятом.
Что делает нейтральная инфраструктура, а что нет
Бирже, мосту и контракту стейкинга платят все, поэтому окрестность такого адреса не является доказательством о нём. У нейтральных категорий унаследованная экспозиция поэтому выключена. Это единственное место, где атрибуция касается балла, и она умеет только понижать.
Прямую половину она не трогает никогда. Обвинение, записанное на самом адресе, публикуется независимо от того, чем этот адрес атрибутирован, и снимает его только зафиксированное решение человека, которое лежит отдельной строкой со своим автором. Ни ранг, ни категория, ни форма графа не могут отозвать обвинение сами по себе.
Обвинительная категория
Нейтральная инфраструктура
Прямую половину снимает только зафиксированное решение человека.
Нейтральная атрибуция выключает унаследованную экспозицию. Обвинение, записанное на самом адресе, она не трогает.
Где лежит происхождение оценки
Каждое утверждение источника об адресе лежит отдельной строкой в реестре заявлений. Владельца публикуемой строки выбирает ранг, а не тот, кто записал последним, и проигравшее заявление сохраняется, а не затирается. Поэтому вопрос «кто это сказал и когда» отвечается по записи, а не по нашей памяти.
Это же делает спор видимым. Когда выверенный каталог называет адрес служебным контрактом, а орган называет его санкционным, на учёте стоят оба утверждения, публикуемой строкой владеет орган, и сам спор виден, а не усреднён.
санкция
санкционные органы, эмитенты стейблкоинов, наши расследования
владеет публикуемой строкой
служебный контракт
выверенный каталог
на учёте
фишинг
жалобы сообщества
на учёте
Порядок записи не решает ничего, поэтому поздний импорт с низким рангом не может молча забрать адрес себе.
Владельца публикуемой строки выбирает ранг. Проигравшие заявления сохраняются, а не затираются.
Один ответ, прочитанный построчно
Каждая запись, участвовавшая в оценке, называет адрес-источник, сам источник, его ранг, заявленную тяжесть, получившийся балл и расстояние в хопах. Поэтому арифметику можно воспроизвести из одного ответа, без доступа к чему-либо нашему. Ниже сокращённый живой ответ по кошельку Chatex, включённого в список OFAC.
100.0
CRITICAL
100
Прямая, сам адрес
90
Косвенная, что до него дошло
CHATEX
sanction
| Хопы | Категория | Источник | Тяжесть | Ранг | Балл | Адрес-источник |
|---|---|---|---|---|---|---|
| 0 | sanction | ofac:sdn_advanced | 100 | 100 | 100 | 0x6f1ca1…2a8352 CHATEX |
| 1 | sanction | ofac:sdn_advanced | 100 | 100 | 90 | 0x5512d9…0121b0 CHATEX |
| 1 | issuer-freeze | circle:blacklist | 90 | 100 | 63 | 0x26e0d0…2a2cfd issuer-frozen |
| 2 | sanction | ofac:sdn_advanced | 100 | 100 | 80 | 0x1999ef…0c5ade Magomedov Khadzhi Murat Dalgatovich |
| 2 | issuer-freeze | tether:blacklist | 90 | 100 | 44.1 | 0x7f232c…7ab3bd issuer-frozen |
| 3 | sanction | ofac:sdn_advanced | 100 | 100 | 70 | 0x098b71…3e2f96 Lazarus Group |
| 3 | hack | incident:news-pipeline | 90 | 90 | 30.87 | 0x959a90…b12bd2 uniBTC exploit |
Строки дальше трёх хопов здесь опущены для краткости, в ответе они есть.
Каждая строка несёт свою арифметику: тяжесть, ранг, балл и расстояние.
По первой строке видна политика: тяжесть 100, ранг 100, балл 100, ноль хопов. По последней видно затухание: взлом, заявленный расследованным инцидентом, стоит 90 в точке происхождения и 30.87 в трёх хопах от неё. Две половины над таблицей это та же арифметика в сводке: прямая берётся с самого адреса, косвенная это самое сильное, что до него дошло.
Проверки, которые можно сделать без нас
Первичные доказательства не наши и в нас не нуждаются. У санкции указан орган, список, дата снимка и публикация. У заморозки эмитента указаны блок и хеш транзакции, которая в сети либо есть, либо нет. У инцидента указаны его документальные источники с доказательным ярусом и ссылкой.
Санкция
Открыть публикацию органа и найти в ней адрес.
Заморозка эмитента
Найти транзакцию в сети. Она там либо есть, либо нет.
Инцидент
Открыть названный источник и прочитать, что он вменяет адресу.
Подписанное заключение
Восстановить подписанта через ecrecover. Балл и категория подписью не покрыты.
Четыре проверки, ни одна из которых не требует аккаунта у нас.
Мы также выдаём подписанные заключения в формате EIP-712, которые любая третья сторона проверяет одним вызовом ecrecover и без аккаунта у нас. Одна оговорка, сказанная здесь, а не обнаруженная потом: подписью покрыты адрес, уровень риска и срок действия. Числовой балл и категория едут рядом без подписи.
Ограничения, названные сразу
Методика, которая перечисляет только свои сильные места, методикой не является. Вот места, где число слабее, чем выглядит, и каждое из них свойство действующей политики, а не дефект, который мы прячем.
- Разнос риска не знает времени. Перевод, сделанный задолго до того, как обвинение возникло, весит столько же, сколько сделанный после него.
- Балл не калиброван по исходам. Мы не публикуем метрик точности и полноты, потому что не измеряли их, а неизмеренное число незачем ставить в таблицу.
- Часть рангов доверия ещё проходит редакционную проверку. Они действуют, и подтверждены не все.
- Риск не пересекает границу сети. Единственное исключение это прямой санкционный сид, зеркалируемый между EVM-сетями, и только для обычных счетов, не контрактов.
- Кластеризация это структурный вывод. Личностью она не становится, но неверный кластер всё равно может поставить адрес рядом с ней.
- Утверждение свежо настолько, насколько свеж последний синк. Санкции и заморозки забираются суточно, источники инцидентов ежечасно, а между двумя прогонами мы держим предыдущий снимок.
Вопрос про конкретное число
Если балл выглядит неверным в любую сторону, попросите у нас вывод оценки по этому адресу. Мы отвечаем строками, а не мнением.
Проверить адрес