ответ
Никакой компании в цепочке.
Только математика, на публичном реестре.
Onym заменяет доверенного оператора четырьмя деталями: ключевой храповик на телефоне, доказательство членства в группе с нулевым разглашением, сменный транспорт и правила группы, закреплённые в публичном смарт-контракте. Вместе они скрывают содержимое сообщений и личность отправителя от сети. Что они не скрывают — указано в модели угроз.
математика в работе
Ключи не покидают телефон.
Чейн видит только доказательство.
Отправитель доказывает «это отправил один из участников», не раскрывая, кто именно. Группа не узнаёт, кто. Транспорт видит шифротекст и тайминг, не содержание и не отправителя.
канал сменный
Релэи — это тупые трубы.
Меняйте их, как кабели.
Сегодня Onym идёт с Nostr и одинаково относится к тому, что появится завтра. Релэй видит мимо себя только непрозрачные блобы — ни отправителя, ни получателя, ни сообщения. Пользуйтесь стандартным, поднимите свой или одолжите у друга.
Каждый блоб выглядит одинаково для любого релэя. Поменяйте релэй — содержимое остаётся непрозрачным. Транспорт — это курьер с запечатанным конвертом и без обратного адреса.
правила — публично
Никакой консоли оператора.
Контракт, который может прочитать любой.
Правила на виду. Среда исполнения — это и есть правила. Нет админа, который мог бы их переопределить, нет консоли, которая могла бы вас заблокировать, нет версии приложения, которая делала бы что-то отличное от того, что вы можете прочитать.
выгода (и пределы)
Скрыто по конструкции.
Честно о том, что нет.
Что не скрыто — тайминг соединения, существование группы, диапазон размера группы, тайминг операций в блокчейне — указано в модели угроз.
четыре потока
Что происходит, по шагам,
когда вы нажимаете кнопку.
Создание идентичности
[устройство] [сеть] | | сгенерировать BIP-39 (128 бит) | вывести ключи secp256k1, Ed25519, | X25519, BLS12-381 | сохранить только на устройстве | | (трафика нет. идентичность локальна | до первого действия.)
Создание группы
[основатель] [релеер] [Soroban-контракт] | выбрать group_id | вычислить commitment | подписать Soroban-auth | для create_group | |--- отправить -->| |-- Stellar tx+fee -->| | проверить auth | проверить ZK-доказ. | id не занят | сохранить commitment | emit GroupCreated |<-- tx подтверждён ---| |<- подтверждено -|
Отправка сообщения
[отправитель] [Nostr-релей] [получатели] | зашифровать участникам | подписать ключом отправителя | |--- опубликовать -->| |-- разослать -->| | расшифровать, | проверить подпись, | отрисовать
Действие участника (принять · голосование · обновление)
[участник] [релеер] [Soroban-контракт] | вычислить новый commitment | построить ZK-доказательство | корректного перехода | БЕЗ подписи пользователя | |--- отправить -->| |-- Stellar tx+fee -->| | проверить ZK-доказ. | c_old совпадает | сохранить c_new |<-- tx подтверждён ---| |<- подтверждено -|
В каждом потоке участвует не более трёх сторон: ваше устройство, опционально релеер для оплаты комиссий Stellar, и Soroban-контракт в блокчейне. Релеер никогда не держит плейнтекст и не имеет права подписи. Контракт — единственное долговременное общее состояние.