01
Цепь blake3 с дозаписью в конец.
Каждое исполнение, перевод и изменение баланса хешируется вместе с предыдущим событием. Подмените любую запись — и цепь дальше рвётся, заметно, по построению.
ПРОВЕРЯЕМОСТЬ
Хеш-цепь blake3 с дозаписью в конец над каждым событием. Двойная запись на каждый перевод. Детерминированный повтор из WAL с нуля. Цепь выгружается наружу — её можно проверить независимо.
Четыре механизма, а не прилагательные. Каждый — это система, которую можно изучить, выгрузка, которую можно проверить, свойство, на которое можно опереться.
01
Каждое исполнение, перевод и изменение баланса хешируется вместе с предыдущим событием. Подмените любую запись — и цепь дальше рвётся, заметно, по построению.
02
Каждое изменение баланса — сбалансированная пара переводов. Контрольный гейт сверяет кеш и реестр шаг в шаг на каждой пачке. Расхождение — обрыв обработки.
03
База аудита вынесена отдельно и имеет лишь необходимый минимум прав. Горячий путь не может переписать историю — её можно только дополнять.
04
Вершина хеша цепи выгружается во внешнюю систему по фиксированному графику. Любой, у кого есть эта вершина, может независимо проверить целостность цепи.
Аудит-цепь — не заявление, которое надо принять на веру. Каждое событие хешируется вместе с предыдущим — поэтому кликните любой блок ниже, чтобы подменить его, и смотрите, как рвётся каждый хеш дальше по цепи, заметно, по построению.
↑ Нажмите на любой блок (кроме genesis), чтобы подменить. Хеши после него сломаются — заметно.
Безопасность здесь — не одна стена, а четыре независимых слоя: кто вы, что может ключ, кто двигает средства и можно ли верить записи. У каждого свой разбор.
Passkeys + step-up
Вход устойчив к фишингу по построению — на passkeys, а пограничные действия — вывод, смена whitelist, выпуск ключа — требуют свежего подтверждения на периметре (RFC 9470). Сессии по риску ужимают окно доверия, когда сигналы выглядят аномально.
Разбор: /identity — сессии, step-up, риск.
Scoped API-ключи
У API-ключей есть область — read, trade и withdraw это раздельные права, — а запросы подписываются Ed25519, а не несут секрет-предъявитель, так что утёкший ключ сам по себе не рабочий токен. Ключи с правом вывода работают только на whitelist-адреса.
Разбор: /identity — ключи с областью и подписью.
Пороговое хранение
Средства в покое хранятся под пороговой подписью t-of-n: ни одна машина не держит ключ целиком и не подпишет вывод в одиночку. Новый адрес проходит выдержку по времени, а внешний аудит гейтит mainnet.
Разбор: /custody — пороговая подпись.
Детерминированный повтор
Каждое событие записано в WAL до подтверждения, а весь реестр детерминированно повторяется от генезиса до бит-в-бит того же состояния — записи доверяют потому, что её можно пересчитать, а не потому, что так сказано.
Разбор: /technology — запись до ack.
Что может утёкшая сессия, кто двигает средства, что такое следы вмешательства конкретно и можно ли переписать историю.
Сессия — не отмычка. Действия высокой ставки — движение средств, смена whitelist, выпуск ключа — стоят за step-up на периметре и требуют свежего сильного подтверждения в момент запроса, так что украденная сессия не выведет средства втихую. Сессии по риску ужимают окно доверия, когда сигналы аномальны, а запросы к API подписываются, а не полагаются на секрет-предъявитель.
Ни одна сторона в одиночку. Выводы подписывает порог t-of-n независимых сторон, и полный приватный ключ никогда не собирается ни на одной машине — взлома одного сервера мало, чтобы подписать вывод. Вдобавок вывод обязан пройти step-up, whitelist-адрес и выдержку по времени, прежде чем порог вообще подпишет.
Каждое исполнение, перевод и изменение баланса хешируется вместе с предыдущим событием в цепь blake3 с дозаписью. Подмените любую запись — и каждый хеш дальше рвётся, заметно, по построению, ведь каждый хеш зависит от предыдущего. База аудита работает с минимумом прав, так что горячий путь не может переписать историю — её можно только дополнять.
Не тихо. Горячий путь не может переписать базу аудита — роли с минимумом прав разрешают только дозапись, — а вершина хеш-цепи выгружается наружу по фиксированному графику, становясь обязательством, которое уже держит кто-то другой. Чтобы переписать историю незаметно, пришлось бы сломать цепь и сойтись с вершиной, что уже покинула здание.