역할
| 역할 | 항상 온라인 | 사용 도구 | 하는 일 | 부정행위를 하면 |
|---|---|---|---|---|
| 사용자(user) | 아니요 | 브라우저 | 주문, 자금 예치, 수령 확인, 분쟁 제기 | ― |
| 구매 대행자(proxy shopper) | 예 | Go 노드 + shopper-bot | 견적, 사용자 대신 구매, 배송 보고; 수수료를 받음 | 에스크로의 판정에서 몫을 잃고, 운영자가 목록에서 제외 |
| 에스크로(escrow) | 아니요 | 브라우저 또는 Go 노드 | T1 이전에 분쟁을 판정 | 운영자가 목록에서 제외; 조건에 따라 보증금이 몰수되어 보상에 쓰임 |
| 운영자(operator) | 아니요 | 브라우저, Go 노드 또는 psctl |
지역별로 신뢰할 수 있는 구매 대행자 × 에스크로 조합 목록에 서명; 신고를 접수 | 코디네이터가 위임을 철회 |
| 코디네이터(coordinator) | 아니요 | 브라우저 또는 psctl |
운영자에 대한 위임에 서명 | 사용자가 설정에서 삭제(해임) |
사용자
- 웹 앱을 열고 니모닉(12단어)을 만들어 적어 둔 뒤, 키를 암호화할 패스프레이즈를 정합니다.
- 상점 URL, 상점의 지역, 상품을 입력합니다.
- 제시된 구매 대행자 × 에스크로 조합 중 하나를 골라 주문합니다.
- 견적이 도착합니다. 환율이 직접 확인한 출처와 3% 넘게 차이 나면 주의가, 10%를 넘으면 강한 경고가 표시됩니다.
- 수락하고 자금을 예치합니다. 돈은 멀티시그와 에스크로의 선불 수수료로 나뉩니다.
- 물건이 도착하면 “수령함”을 누릅니다(금액과 받는 사람이 표시된 화면을 거친 뒤, 당신의 부분 서명이 구매 대행자에게 전달됩니다).
- 도착하지 않으면 분쟁을 제기합니다. 앱이 증거를 대신 모아 줍니다.
구매 대행자
role: shopper로 Go 노드를 실행하고 shopper-bot(브라우저 자동화 도구)을 연결합니다.- 결제 수단, 통화, 현금으로 결제할 수 있는 지역, 수수료, 상점 위험 정책을 설정합니다.
- 카드 정보는 shopper-bot 안에만 있으며, 노드나 네트워크에 절대 전달되지 않습니다.
- 사용자가 수령을 확인하지 않고 T1이 지나면, 혼자서 자금을 가져갈 수 있습니다.
에스크로
- 자신의 선불 수수료를 낸 주문의 분쟁만 판정합니다.
- 평소에는 배송 주소를 읽을 수 없습니다. 분쟁이 생기면 구매 대행자(또는 사용자)가 복호화 키를 넘겨줍니다.
- 판정은 서명된 트랜잭션으로 양측에 전달되며, 둘 중 한 명이 부서명하면 확정됩니다.
운영자
- 담당 지역(하나 이상), 조합 목록, 추천하는 릴레이와 체인 엔드포인트에 서명합니다.
- 신고를 받으면 위반자를 뺀 새 버전의 목록을 게시합니다. 보증금은 에스크로와 합의한 조건에 따릅니다.
코디네이터
- 운영자에게 위임을 발급합니다. 철회는
revoked가 붙은 새 버전을 게시하는 것입니다.
등재되기 (레지스트리)
관리자의 신뢰 레지스트리는 GitHub 저장소 pad01g/proxy-shopping-registry입니다. 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 공개 키(16진수 64자)입니다. 웹 앱의 설정에 표시되며, psctl keys --mnemonic-file …
로도 출력됩니다. 누군가를 제외하려면 그 파일을 사유와 함께 revoked/로 옮기는 pull request를 보냅니다. 정확한 파일 형식과
명령은 레지스트리의 README에 있습니다.