Роль Всегда онлайн Использует Делает Если жульничает
пользователь (user) нет браузер заказывает, пополняет, подтверждает получение, открывает споры ―
покупатель-посредник (proxy shopper) да Go-узел + shopper-bot выставляет цену, покупает от имени пользователя, сообщает об отправке; получает комиссию теряет свою долю по решению гаранта; оператор убирает его из списка
гарант (escrow) нет браузер или Go-узел разрешает споры до T1 оператор убирает его из списка; в зависимости от их условий его залог конфискуется и идёт на компенсацию
оператор (operator) нет браузер, Go-узел или psctl подписывает для каждого региона список надёжных сочетаний «покупатель-посредник × гарант»; принимает жалобы координатор отзывает его делегирование
координатор (coordinator) нет браузер или psctl подписывает делегирования операторам пользователи удаляют его из своих настроек («увольнение»)

Пользователь

  1. Откройте веб-приложение, создайте мнемонику (12 слов), запишите её и выберите парольную фразу для шифрования ключа.
  2. Введите URL магазина, регион магазина и товары.
  3. Выберите одно из предложенных сочетаний «покупатель-посредник × гарант» и оформите заказ.
  4. Приходит предложение цены. Если его курс отличается от ваших собственных источников более чем на 3%, вы увидите предупреждение; больше 10% — серьёзное предупреждение.
  5. Примите и пополните. Деньги делятся между мультиподписью и авансовой комиссией гаранта.
  6. Когда товар придёт, нажмите «получено» (после экрана с суммой и получателем ваша частичная подпись уходит покупателю-посреднику).
  7. Если товар не пришёл, откройте спор. Приложение соберёт доказательства за вас.

Покупатель-посредник

  • Запустите Go-узел с role: shopper и подключите shopper-bot (инструмент автоматизации браузера).
  • Настройте способы оплаты, валюты, регионы, где вы можете платить наличными, свою комиссию и политику оценки риска магазинов.
  • Данные карты хранятся только внутри shopper-bot; они никогда не передаются узлу или в сеть.
  • Если пользователь так и не подтвердил получение и прошёл T1, вы можете забрать средства в одиночку.

Гарант

  • Разрешает споры только по заказам, за которые была оплачена его авансовая комиссия.
  • Обычно он не может прочитать адрес доставки. В споре покупатель-посредник (или пользователь) передаёт ему ключ расшифровки.
  • Решение приходит обеим сторонам в виде подписанной транзакции; оно становится окончательным, когда одна из них ставит встречную подпись.

Оператор

  • Подписывает свои регионы (один или несколько), список сочетаний, а также рекомендуемые реле и точки доступа к блокчейнам.
  • По жалобе публикует новую версию списка без нарушителя. Залог — по условиям, согласованным с гарантом.

Координатор

  • Выдаёт делегирования операторам. Отзыв — это публикация новой версии с revoked.

Как попасть в список (реестр)

Реестр доверия сопровождающего — это GitHub-репозиторий pad01g/proxy-shopping-registry. Принятый (merged) pull request и есть одобрение: после каждого слияния CI подписывает новые делегирования и списки ключами реестра и публикует их (на публичных Nostr-реле и в https://pad01g.github.io/proxy-shopping-registry/events.json).

Вы хотите быть Добавьте в pull request Что даёт слияние
покупателем-посредником shoppers/<name>.json (pk, контакт, описание, регионы для наличных, способы оплаты, гаранты, с которыми вы работаете) оператор реестра вносит ваши сочетания «покупатель-посредник × гарант» в список
гарантом escrows/<name>.json (pk, контакт, описание, SLA в днях) покупатели-посредники могут указывать вас; ваши сочетания появляются
оператором operators/<name>.json (pk, контакт, описание, регионы) координатор реестра делегирует вам; дальше вы сами подписываете свои списки
координатором coordinators/<name>.json (pk, контакт, описание) вы появляетесь в каталоге координаторов, который приложения предлагают пользователям (каждый пользователь сам решает, кому доверять)

pk — ваш открытый ключ Nostr (64 шестнадцатеричных символа): веб-приложение показывает его в настройках, а psctl keys --mnemonic-file … выводит его. Чтобы кого-то убрать, нужен pull request, который перемещает его файл в revoked/ с указанием причины. Точные форматы файлов и команды описаны в README реестра.