役割 常時オンライン 何を使うか 何をするか 不正をしたら
利用者 いいえ ブラウザ 注文・入金・受け取りの確認・紛争の申し立て ―
proxy shopper はい Go ノード + shopper-bot 見積・代理購入・配送の報告。手数料を受け取る escrow の裁定で取り分を失う。operator が一覧から外す
escrow いいえ ブラウザ または Go ノード 紛争を T1 までに裁定する operator が一覧から外す。規約次第で預かり金を没収され、補償に回る
operator いいえ ブラウザ または Go ノード / psctl 地域ごとに、信頼できる shopper と escrow の組み合わせ一覧に署名する。通報を受け取る coordinator が委任を失効させる
coordinator いいえ ブラウザ または psctl operator への委任書に署名する 利用者が設定から外す(解任)

利用者

  1. Web 画面を開き、ニーモニック(12 語)を作って控え、鍵を暗号化するパスフレーズを決める。
  2. 買いたい店の URL、店の地域、商品を入れる。
  3. 候補に出た shopper と escrow の組み合わせを選んで注文する。
  4. 見積が届く。レートが自分で調べた値から 3% を超えてずれていると注意、10% を超えると強い警告が出る。
  5. 承諾して入金する。お金はマルチシグと、escrow の前払い手数料に分かれる。
  6. 届いたら「受け取った」を押す(金額と宛先を確かめる画面のあと、部分署名が shopper に送られる)。
  7. 届かなければ紛争を申し立てる。証拠は画面が自動で揃える。

proxy shopper

  • Go ノードを role: shopper で動かし、shopper-bot(自動操作ツール)をつなぐ。
  • 対応する決済手段、通貨、現金で行ける地域、手数料、店の危険度の方針を設定に書く。
  • カード情報は shopper-bot の中だけに置き、ノードや網には渡さない。
  • 利用者が受け取り確認をしないまま T1 を過ぎると、自分だけで受け取れる。

escrow

  • 前払い手数料を受け取った注文の紛争だけを裁定する。
  • 住所は普段は読めない。紛争になったとき、shopper(または利用者)が復号の鍵を渡す。
  • 裁定は、署名済みのトランザクションとして両者に届く。どちらかが連署すると確定する。

operator

  • 担当する地域(複数可)と、組み合わせの一覧、推奨するリレーとチェーンの接続先を書いて署名する。
  • 通報を受け取ったら、一覧の新しい版を出して外す。預かり金の扱いは、escrow と結んだ規約に従う。

coordinator

  • operator に委任書を出す。失効させるときは revoked の新しい版を出す。

登録簿に載る

管理者の信頼の登録簿は、GitHub のレポジトリ pad01g/proxy-shopping-registry です。 pull request がマージされたことが承認になります。 マージのたびに CI が登録簿の鍵で新しい委任書と一覧に署名し、公開の Nostr リレーと https://pad01g.github.io/proxy-shopping-registry/events.json に公開します。

なりたい役割 pull request で足すもの マージで起きること
shopper shoppers/<name>.json(pk、連絡先、説明、現金で行ける地域、決済手段、組む escrow) 登録簿の operator が、あなたの shopper × escrow の組み合わせを一覧に載せる
escrow escrows/<name>.json(pk、連絡先、説明、裁定までの日数) shopper があなたを指名でき、組み合わせが表に出る
operator operators/<name>.json(pk、連絡先、説明、担当地域) 登録簿の coordinator があなたに委任する。以後は自分の一覧に署名できる
coordinator coordinators/<name>.json(pk、連絡先、説明) アプリが利用者に示す coordinator の目録に載る(誰を信頼するかは各利用者が選ぶ)

pk は Nostr の公開鍵(64 文字の 16 進数)です。Web 画面の設定に表示され、psctl keys --mnemonic-file … でも出せます。 外すときは、そのファイルを理由を添えて revoked/ に移す pull request を出します。 ファイルの形とコマンドの詳細は、登録簿の README にあります。