Доверие и приватность
Что вы можете проверить сами
Ничто из перечисленного не требует доверия к оператору:
- Каждое изменение состояния подписано. Схема проверяет подпись Ed25519 тем ключом, которого требует операция, поэтому имя не может перейти без ключа владельца.
- У каждого пакета есть ZK-доказательство. Якорный контракт не примет корень без него;
доказательство проверяется относительно
programVkey— обязательства к конкретной скомпилированной схеме, которую вы можете пересобрать сами. - Каждое разрешение имени сопровождается доказательством Меркла. Вы можете сверить запись с корнем, а корень — с контрактом. См. Проверка доказательств.
- Каждый корень детерминирован. Любой индексатор, проигрывающий те же команды, обязан получить тот же корень, поэтому расхождение видно немедленно.
- Корни образуют цепочку, каждый привязан к высоте блока PIVX, которую он покрывает.
Чему приходится доверять
Короткий и честный список — всё остальное на этой странице вы можете проверить сами:
- PIVX и BNB Smart Chain работают как задумано — транзакции финальны, цепочки не реорганизуются глубже своих порогов подтверждения.
- Стандартная криптография надёжна — SHA-256, Ed25519 и система доказательств SP1.
- Выплата приходит на тот адрес, который вы указали. Суммы, комиссии и обязательства полностью проверяемы публично; адрес назначения — единственная деталь, которую подтверждаете вы сами, а не сторонний наблюдатель. Подробнее в разделе Балансы и вывод средств.
Почему регистратор подотчётен благодаря воспроизведению
Регистратор публикует свой протокольный адрес и ключ просмотра к нему. Это сделано намеренно и несёт основную нагрузку: имея и то и другое, любой может
- просканировать PIVX и расшифровать каждую команду и каждый платёж с самого начала, в каноническом порядке,
- воспроизвести их через индексатор с открытым исходным кодом,
- независимо вычислить корень состояния и
- сравнить его с корнем, закреплённым в BNB Smart Chain.
Регистратор, который скроет оплаченную команду, выдумает передачу, ошибётся в зачислении или переставит операции, получит корень, который опровергается каждым независимым индексатором. Для такой проверки не нужно ни разрешения, ни особого доступа.
Получаемое свойство — очевидность нарушения, а не его предотвращение: плохой пакет может попасть в блокчейн и быть опровергнутым уже после. Восстановление здесь социальное, а не автоматическое.
Балансы и вывод средств
Деньги не переходят напрямую от покупателя к продавцу. Выручка от продажи зачисляется продавцу на внутренний баланс за вычетом сервисной комиссии, проигравшие ставки за спорное имя возвращаются на баланс, а вывести средства пользователь может когда захочет. Именно хранение средств на балансе делает возвраты возможными вообще: экранированная транзакция не несёт адреса отправителя, так что вернуть ошибочный платёж автоматически просто некуда.
Выплаты идут в блокчейне и снабжены атрибуцией
Регистратор публикует полный ключ просмотра, а не только входящий, поэтому исходящие платежи видны так же хорошо, как и входящие. Каждая выплата снабжена memo, называющим аккаунт, по которому она проводится:
Payout #{id}: {gross} PIVX for pubkey '{pubkey}' (including the {fee}% service fee)
Благодаря этому весь реестр может восстановить кто угодно. Просканируйте протокольный адрес опубликованным ключом просмотра — и вы увидите для каждого публичного ключа:
- все начисления, которые он заработал: выручку от продаж и возвраты, выводимые из публичного потока команд
- все выплаты, которые он получил, с атрибуцией по memo и суммой, взятой из значения ноты
- сервисную комиссию, применённую к каждой из них
что даёт текущий баланс, который любой может вычислить самостоятельно:
balance(pubkey) = Σ(sale proceeds net of fee) + Σ(refunds) − Σ(payouts sent) stays ≥ 0
Выплата без соответствующего обязательства, неверная комиссия или уход баланса в минус были бы видны любому наблюдателю. Регистратор не может ни тихо заплатить самому себе, ни пропустить обязательство, ни применить комиссию, отличную от опубликованной.
Читайте суммы из ноты, а не из memo
В memo указано валовое обязательство — сумма до вычета сервисной комиссии, — тогда как нота несёт чистую фактически выплаченную сумму. Значение ноты криптографично, а текст memo пишет регистратор. При проверке берите каждую сумму из значения ноты, а memo рассматривайте исключительно как атрибуцию.
Что подтверждает получатель, а не сторонний наблюдатель
Одна деталь выпадает из этой картины, и о ней лучше сказать прямо, чем оставить между строк. Вывод средств санкционируется на сайте вашим ключом Ed25519, и этот запрос идёт по HTTPS, а не через блокчейн. Поэтому сторонний наблюдатель видит, что по вашему аккаунту прошла выплата верного размера, но публичной записи о том, какой адрес назначения вы указали, у него нет.
На практике проверить это лучше всего можете вы сами и сразу: вы знаете, что запрашивали и дошли ли средства. И проверка эта — не вопрос мнения: у вас остаётся подписанный вами запрос, так что расхождение можно доказать криптографически, а не оспаривать на словах.
| Подтверждается | |
|---|---|
| Состояние доменов | Любым наблюдателем, автоматически — независимый индексатор сам замечает расхождение корней |
| Суммы выплат, комиссии, обязательства | Любым наблюдателем, по опубликованному ключу просмотра и атрибуции в memo |
| Адрес назначения выплаты | Получателем, по подписанному им запросу |
Если пустить вывод средств через тот же транспорт memo, последняя строка перешла бы в первую категорию практически без потерь в приватности, поскольку ключ просмотра и memo с указанием публичного ключа и так раскрывают эту связь. Такой вариант рассматривался, но был отложен в пользу того, чтобы вывод оставался простым действием на сайте; это разумное возможное изменение в будущем, а не недостаток.
Сохраняйте подписанные запросы на вывод
Храните подписанный запрос, пока не убедитесь, что средства пришли. Именно он превращает спорную выплату в то, что вы можете доказать.
Чего не может сделать вредоносный индексатор
Не может подделать запись. Разрешения имён сопровождаются доказательствами Меркла, а корень, который якорный контракт никогда не принимал, отсеивается проверкой из раздела Проверка доказательств.
Не может скрыть регистрацию. Отсутствие доказывается, а не декларируется: терминал
Blocked несёт с собой полную блокирующую запись, так что заявление можно проверить, а не
принять на веру. Кроме того, вся история восстановима из цепочки по публичному ключу
просмотра.
Не может исчезнуть. Каждая команда живёт в PIVX, а код открыт. Любой может собрать весь реестр заново с самого первого блока.
Приватное разрешение имён через Tor
Разрешение имён через обычный интернет раскрывает серверу, какие имена вы ищете и когда. Поэтому API индексатора опубликован ещё и как скрытый сервис Tor:
http://indexer.pivxns3wsp3g6rtekzjwhqtcic2yhgngqg3ovod67hp3obt2ckmtcjyd.onion
В браузере Tor:
http://indexer.pivxns3wsp3g6rtekzjwhqtcic2yhgngqg3ovod67hp3obt2ckmtcjyd.onion/v1.0/resolve/richard.pivx
Из командной строки, при локально запущенном Tor:
curl --socks5-hostname 127.0.0.1:9050 \
http://indexer.pivxns3wsp3g6rtekzjwhqtcic2yhgngqg3ovod67hp3obt2ckmtcjyd.onion/v1.0/info
Это тот же API, возвращающий те же данные, включая доказательства Меркла, так что вы ничего не теряете. Сервер никогда не узнает ваш IP, а провайдер увидит лишь то, что вы пользовались Tor.
Доверие снимает проверка, а не транспорт
Tor защищает вашу приватность от индексатора. Честнее индексатор от этого не становится — это делают доказательство Меркла и сверка корня в блокчейне, и выполнять их стоит независимо от того, как вы подключаетесь.