# Monetarisierung - kashilo.com ## Preismodell **1 Anzeige = 1 Monat = 1 EUR/USD/CHF/GBP (oder 200 JPY)** - Einfach, transparent, fair - Power-User (mit Reputation): 2 Monate Laufzeit - Bezahlung ausschließlich via **Monero (XMR)** über eigenen BTCpay-Server ## Reputation & Trust-System ### Sichtbarkeit - Anzeigen von Accounts mit erfolgreichen Verkäufen werden höher gerankt - Neue Accounts erscheinen weiter unten in Suchergebnissen ### Reputation-Stufen | Stufe | Deals | Vorteile | |-------|-------|----------| | Neu | 0 | Standard (1 Monat Laufzeit) | | Verifizierter Verkäufer | 5+ | Badge, bessere Sichtbarkeit | | Power-User | 15+ | 2 Monate Laufzeit, höheres Ranking | | Top Seller | 50+ | Badge, Priority-Ranking, maximale Sichtbarkeit | - Käufer bestätigt erfolgreichen Abschluss - Deals werden erst nach Käufer-Bestätigung gezählt ### Proof of Wallet (optional) - Einmalige Monero-Mikrozahlung als Verifikation - Zeigt: "Wallet verifiziert" im Profil - Freiwillig, keine Pflicht ## Anti-Abuse Maßnahmen ### Rate-Limiting - Max. 3 neue Anzeigen pro Tag für neue Accounts - Limit erhöht sich mit Reputation ### Captcha (Eigenes PoW) - Proof-of-Work basiert, kein Tracking - Keine externe Abhängigkeit, keine Lizenzkosten - Client löst SHA256-Challenge (Difficulty 4, ~1-3 Sek) - Bei Account-Erstellung (immer) - Bei Anzeigen-Erstellung (nur neue Accounts ohne bisherige Listings) - Bei Login (nur nach 3+ Fehlversuchen) - Implementierung: `js/services/pow-captcha.js`, `js/components/pow-captcha.js` ## Payment-Integration - **Provider**: BTCpay Server (self-hosted) - **URL**: https://pay.xmr.rocks/ - **Proxy**: `pow.kashilo.com` — alle API-Aufrufe laufen über den PHP-Proxy (BTCPay API-Key bleibt serverseitig) - **Primär**: Monero (XMR) - **Alternativ**: Andere Kryptos via Trocador-Plugin (automatischer Swap zu XMR) - **Preisumrechnung**: Live XMR-Kurs via Kraken API - EUR, USD, CHF, GBP, JPY - **Bestätigung**: Nach 1 Blockchain-Confirmation (via Webhook) ### Flow: Draft → Processing → Published 1. User erstellt Listing → wird als `draft` mit `payment_status: unpaid` gespeichert 2. BTCPay Invoice wird über `pow.kashilo.com/btcpay/invoice` erstellt 3. BTCPay Checkout-Modal öffnet sich im Frontend (`js/services/btcpay.js`) 4. Nach Zahlung: - **Frontend**: Prüft Status via `pow.kashilo.com/btcpay/status` nach Modal-Close - **Webhook**: `pow.kashilo.com/btcpay/webhook` empfängt BTCPay Events, setzt `status: published` + `payment_status: paid` nach 1 Confirmation 5. Listing wird veröffentlicht (30 Tage Laufzeit, `expires_at` wird gesetzt) ### Endpunkte (pow.kashilo.com) | Endpoint | Methode | Beschreibung | |----------|---------|-------------| | `/btcpay/invoice` | POST | Invoice erstellen (listingId, currency) | | `/btcpay/status?id={id}` | GET | Invoice-Status abfragen | | `/btcpay/webhook` | POST | BTCPay Webhook (auto-publish nach Confirmation) | ## Offene Fragen - [x] ~~BTCpay Server Setup & Hosting~~ → https://pay.xmr.rocks/ - [x] ~~XMR-Kurs API für Umrechnung~~ → Kraken API - [x] ~~Anzahl Deals für Power-User Status~~ → 5/15/50 Stufen - [x] ~~Captcha-Lösung~~ → Eigenes PoW-Captcha (keine Lizenzkosten) - [x] ~~Payment-Proxy~~ → `pow.kashilo.com` (PHP, API-Key serverseitig) - [x] ~~Webhook für Auto-Publish~~ → `btcpay-webhook.php` auf `pow.kashilo.com`