Sui User Wallets self-updates
WordPress Plugin für automatische Sui Wallet-Verwaltung - Custodial Wallets mit Auto-Update von GitHub
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/utakapp/sui-user-wallets/archive/refs/heads/main.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Sui User Wallets - WordPress Plugin
Custodial Wallet Management für WordPress User
Automatische Sui Wallet-Erstellung und -Verwaltung für WordPress User. Ideal für Plattformen, wo User keine Blockchain-Erfahrung haben.
🎯 Features
- ✅ Automatische Wallet-Erstellung bei User-Registration
- ✅ Verschlüsselte Speicherung von Private Keys in WordPress DB
- ✅ User-freundlich - Keine Blockchain-Kenntnisse erforderlich
- ✅ Integration mit Sui Course Loyalty Plugin
- ✅ Balance-Checks direkt von der Blockchain
- ✅ Admin-Interface für Wallet-Verwaltung
- ✅ Vercel API Integration für sichere Wallet-Generierung
📋 Voraussetzungen
- WordPress 5.0+
- PHP 7.4+
- Vercel API deployed (siehe
../vercel-api/README.md) - Optional: Sui Course Loyalty Plugin für automatische Badge-Zuweisung
🚀 Installation
Schritt 1: Plugin hochladen
-
Lade das gesamte
wordpress-plugin-walletVerzeichnis hoch:- Via FTP:
/wp-content/plugins/sui-user-wallets/ - Oder: Packe als ZIP und installiere über WordPress Admin → Plugins
- Via FTP:
-
Gehe zu WordPress Admin → Plugins
-
Aktiviere "Sui User Wallets"
Schritt 2: Vercel API konfigurieren
-
Gehe zu WordPress Admin → User Wallets → User Wallets (Einstellungen)
-
Fülle API Integration aus:
Vercel API URL:
https://sui-loyalty-vercel-api.vercel.appAPI Secret Key:
uPHYR1+HfXT6fE+4tJaU7zUk2qVsyvDAY4Q0tUhIdrA= -
Einstellungen:
- ☑ Automatische Wallet-Erstellung bei User-Registration
- ☑ Private Key Verschlüsselung (Empfohlen)
- ☑ User dürfen Private Keys exportieren (Optional)
- Netzwerk:
Testnet(oder Mainnet für Production)
-
Klicke "Änderungen speichern"
Schritt 3: Wallets für existierende User erstellen (Optional)
Falls Sie bereits User haben:
- Auf der Einstellungsseite sehen Sie: "Users ohne Wallet: X"
- Klicken Sie "Wallets für alle existierenden Users erstellen"
- Das Plugin erstellt automatisch Wallets für alle User
🎨 Verwendung
Als Administrator
Alle Wallets ansehen
WordPress Admin → User Wallets → All Wallets
Zeigt Liste aller User-Wallets:
- User Name & Email
- Wallet Address
- Balance
- Erstellungsdatum
User-Wallet verwalten
WordPress Admin → Users → Edit User → Sui Wallet Sektion
Für jeden User sehen Sie:
- Wallet Address (mit Copy-Button)
- Balance (mit Refresh-Button)
- Private Key anzeigen (falls aktiviert)
- Wallet erstellen (falls noch keine vorhanden)
Als User (Frontend)
Shortcode: Wallet anzeigen
Füge diesen Shortcode auf einer Seite ein:
[sui_user_wallet]
Zeigt dem eingeloggten User:
- Seine Wallet-Adresse
- Balance
- Copy-Button
🔗 Integration mit Loyalty Plugin
Das Wallet-Plugin integriert sich automatisch mit Sui Course Loyalty:
Automatische Workflow
- User registriert sich → Wallet wird automatisch erstellt
- User kauft Kurs (via PMPro) → Wallet-Check & Badge-Request
- Badge wird erstellt → Automatisch an User-Wallet gesendet
- Progress Update → Auf User-Wallet-Badge angewendet
Manuelle Integration
Falls Sie das Loyalty-Plugin manuell verwenden:
// Hole User Wallet Address
$wallet_manager = new SUW_Wallet_Manager();
$address = $wallet_manager->get_user_wallet_address($user_id);
// Verwende Adresse für Badge-Erstellung
// ...
🔒 Sicherheit
Private Key Verschlüsselung
Aktiviert (Empfohlen):
- Private Keys werden mit AES-256-CBC verschlüsselt
- Encryption Key basiert auf WordPress
AUTH_KEY+SECURE_AUTH_KEY - Keys sind in der DB nicht im Klartext lesbar
Wichtig: Stelle sicher, dass AUTH_KEY und SECURE_AUTH_KEY in wp-config.php definiert sind!
Private Key Export
Aktiviert (Standard):
- Admins können Private Keys exportieren
- Jeder Export wird geloggt
- User können ihre eigenen Keys sehen
Deaktiviert:
- Niemand kann Private Keys exportieren
- Höhere Sicherheit, aber User können Wallet nicht woanders verwenden
Empfehlung für Production:
- Deaktivieren, falls User ihre Wallets nicht exportieren müssen
- Aktivieren, falls User Wallet-Ownership haben sollen
Best Practices
-
Backups:
- Regelmäßige DB-Backups erstellen
- Private Keys gehen verloren, wenn DB verloren geht
-
Zugriffsrechte:
- Nur vertrauenswürdige Admins sollten Zugriff haben
- Private Key Export nur für Super-Admins aktivieren
-
Testnet vs Mainnet:
- Teste IMMER auf Testnet zuerst
- Auf Mainnet haben Wallets echte SUI-Coins
-
AUTH_KEY Security:
- Ändere niemals
AUTH_KEYinwp-config.phpnach Wallet-Erstellung - Sonst können Private Keys nicht mehr entschlüsselt werden!
- Ändere niemals
🧪 Testing
Test 1: Wallet-Generierung
- Gehe zu Users → Add New
- Erstelle einen Test-User
- Gehe zu User Wallets → All Wallets
- Prüfe ob Wallet automatisch erstellt wurde
Test 2: Balance-Check
- Gehe zu Users → Edit User
- Scrolle zu Sui Wallet Sektion
- Klicke "Refresh" bei Balance
- Balance sollte von Blockchain geladen werden (0.0 SUI bei neuer Wallet)
Test 3: Private Key Export
- Aktiviere "User dürfen Private Keys exportieren" in Einstellungen
- Gehe zu User-Profil
- Klicke "Private Key anzeigen"
- Private Key sollte angezeigt werden (suiprivkey1...)
Test 4: Loyalty Integration
Voraussetzung: Sui Course Loyalty Plugin installiert
- Erstelle Badge Request für Test-User
- Wallet-Adresse sollte automatisch verwendet werden
- Badge sollte an User-Wallet gesendet werden
📊 API Endpoints
Das Plugin verwendet folgende Vercel API Endpoints:
POST /api/generate-wallet
Erstellt neue Sui Wallet
Response:
{
"success": true,
"data": {
"address": "0x...",
"privateKey": "suiprivkey1...",
"network": "testnet"
}
}
POST /api/get-balance
Holt Balance von Blockchain
Request:
{
"address": "0x..."
}
Response:
{
"success": true,
"data": {
"address": "0x...",
"balance": "1.5",
"network": "testnet"
}
}
🗄️ Datenbank
Tabelle: wp_sui_user_wallets
| Feld | Typ | Beschreibung |
|---|---|---|
id |
bigint | Primary Key |
user_id |
bigint | WordPress User ID |
wallet_address |
varchar(66) | Sui Address (0x...) |
encrypted_private_key |
text | Verschlüsselter Private Key |
created_at |
datetime | Erstellungszeitpunkt |
last_balance_check |
datetime | Letzter Balance-Check |
cached_balance |
varchar(50) | Gecachte Balance in SUI |
🔧 Troubleshooting
Fehler: "API Fehler: Could not resolve host"
Problem: WordPress kann Vercel API nicht erreichen
Lösung:
- Prüfe Vercel API URL (korrekt eingegeben?)
- Teste im Browser:
https://sui-loyalty-vercel-api.vercel.app/api/hello - Prüfe Server-Firewall (erlaubt ausgehende HTTPS Requests?)
Fehler: "Encryption failed"
Problem: PHP OpenSSL Extension fehlt
Lösung:
# Ubuntu/Debian
sudo apt-get install php-openssl
# CentOS/RHEL
sudo yum install php-openssl
# Restart Apache/Nginx
sudo service apache2 restart
Fehler: "Decryption failed"
Problem: AUTH_KEY wurde geändert nach Wallet-Erstellung
Lösung:
- Kritisch! Keys können nicht mehr entschlüsselt werden
- Restore old
AUTH_KEYfrom backup - Oder: Erstelle neue Wallets für alle User (alte gehen verloren)
Wallets werden nicht automatisch erstellt
Problem: Auto-Create ist deaktiviert
Lösung:
- Gehe zu User Wallets → Einstellungen
- Aktiviere ☑ "Automatisch Wallet für neue User erstellen"
- Für existierende User: Klicke "Wallets für alle existierenden Users erstellen"
📝 FAQ
Sind Custodial Wallets sicher?
Pros:
- User-freundlich, keine Blockchain-Kenntnisse nötig
- Keine Gefahr, dass User Private Keys verlieren
- Einfache Integration
Cons:
- Platform hat Kontrolle über User-Wallets
- Bei DB-Hack könnten Private Keys kompromittiert werden
- User müssen der Platform vertrauen
Empfehlung:
- Für kleine Beträge (Badges, kleine NFTs): ✅ Gut geeignet
- Für große Werte: ❌ Besser Non-Custodial (User verwaltet selbst)
Können User ihre Wallets exportieren?
Ja, falls "User dürfen Private Keys exportieren" aktiviert ist:
- User sieht Private Key in seinem Profil
- Kann ihn in Sui Wallet importieren (z.B. Sui Wallet Browser Extension)
- Hat dann volle Kontrolle außerhalb von WordPress
Was passiert bei User-Löschung?
Standardmäßig: Wallet bleibt in DB
Option 1: Manuelles Cleanup
- Admin löscht Wallet manuell aus All Wallets
Option 2: Automatisches Cleanup (TODO für v2.0)
- Hook auf
deleted_userEvent - Wallet wird automatisch gelöscht
Wie viele Wallets kann ich erstellen?
Vercel Free Tier:
- 100,000 Function Invocations/Monat
- = 100,000 Wallet-Generierungen
Kosten:
- Testnet: Kostenlos
- Mainnet: ~0.001 SUI pro Wallet-Creation Transaction (falls nötig)
🚀 Roadmap
- [ ] Bulk Wallet Creation Interface
- [ ] Wallet Import (User bringt eigene Wallet)
- [ ] Multi-Signature Support
- [ ] Wallet Recovery via Email
- [ ] Gas-less Transactions (Platform zahlt Gas)
- [ ] Export User Wallet History
- [ ] Analytics Dashboard
📄 Lizenz
MIT
💬 Support
GitHub Repository: https://github.com/utakapp/sui-loyalty-vercel-api
Issues: https://github.com/utakapp/sui-loyalty-vercel-api/issues
Status: ✅ Production Ready (Testnet) Version: 1.0.0 Letzte Aktualisierung: 12. Januar 2026