Перейти к основному содержимому

Доверие и приватность

Что вы можете проверить сами

Ничто из перечисленного не требует доверия к оператору:

  • Каждое изменение состояния подписано. Схема проверяет подпись Ed25519 тем ключом, которого требует операция, поэтому имя не может перейти без ключа владельца.
  • У каждого пакета есть ZK-доказательство. Якорный контракт не примет корень без него; доказательство проверяется относительно programVkey — обязательства к конкретной скомпилированной схеме, которую вы можете пересобрать сами.
  • Каждое разрешение имени сопровождается доказательством Меркла. Вы можете сверить запись с корнем, а корень — с контрактом. См. Проверка доказательств.
  • Каждый корень детерминирован. Любой индексатор, проигрывающий те же команды, обязан получить тот же корень, поэтому расхождение видно немедленно.
  • Корни образуют цепочку, каждый привязан к высоте блока PIVX, которую он покрывает.

Чему приходится доверять

Короткий и честный список — всё остальное на этой странице вы можете проверить сами:

  1. PIVX и BNB Smart Chain работают как задумано — транзакции финальны, цепочки не реорганизуются глубже своих порогов подтверждения.
  2. Стандартная криптография надёжна — SHA-256, Ed25519 и система доказательств SP1.
  3. Выплата приходит на тот адрес, который вы указали. Суммы, комиссии и обязательства полностью проверяемы публично; адрес назначения — единственная деталь, которую подтверждаете вы сами, а не сторонний наблюдатель. Подробнее в разделе Балансы и вывод средств.

Почему регистратор подотчётен благодаря воспроизведению

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

  1. просканировать PIVX и расшифровать каждую команду и каждый платёж с самого начала, в каноническом порядке,
  2. воспроизвести их через индексатор с открытым исходным кодом,
  3. независимо вычислить корень состояния и
  4. сравнить его с корнем, закреплённым в 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 защищает вашу приватность от индексатора. Честнее индексатор от этого не становится — это делают доказательство Меркла и сверка корня в блокчейне, и выполнять их стоит независимо от того, как вы подключаетесь.