尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
CopyLab — simulateur de copy trading (démo, argent fictif) Application web pour s'entraîner au copy trading sans risque : on parcourt un classement de wallets, on colle l'adresse d'un wallet, et une simulation démarre avec un solde fictif. Aucun dépôt n'est possible, aucun vrai wallet n'est connecté, aucune transaction réelle n'est passée. Anciennement « ViralVI » (générateur de scripts TikTok GTA 6). L'ancienne version est conservée dans le tag Git legacy-gta6-saas.檢視完整 README ↗
Application web pour s'entraîner au copy trading sans risque : on parcourt un classement de wallets, on colle l'adresse d'un wallet, et une simulation démarre avec un solde fictif. Aucun dépôt n'est possible, aucun vrai wallet n'est connecté, aucune transaction réelle n'est passée.
Anciennement « ViralVI » (générateur de scripts TikTok GTA 6). L'ancienne version est conservée dans le tag Git
legacy-gta6-saas.
/) : solde fictif avec bouton « Déposer » (argent fictif stocké dans le navigateur, aucun paiement), meilleurs traders de la semaine, et liste des 250 premières cryptomonnaies avec prix en dollars, variation 24 h, favoris (étoile), recherche et filtres (Cryptomonnaies, Tendances, Plus échangés, Baisses), actualisée toutes les 30 s.0x…) : ouvre le profil du wallet et lance la simulation.Sans clé API : les performances des wallets sont simulées (générées de façon déterministe
à partir de l'adresse, static/js/engine.js). L'interface l'indique partout.
Avec MORALIS_API_KEY : pour toute adresse collée (hors traders vedettes), CopyLab lit les
vrais swaps DEX du wallet sur 30 jours (Solana + réseaux EVM : Base, Ethereum, BNB Chain,
Arbitrum, Polygon, Optimism) via l'API Moralis, et reconstitue des trades :
Garde-fous : résultats mis en cache 20 min par (wallet, réseau) dans wallet_cache, plafond de
ONCHAIN_MAX_FETCHES_PER_DAY wallets analysés par 24 h (défaut 250, ~50 CU par page Moralis), et
chaque simulation on-chain fige un instantané des trades utilisés. Si le fournisseur échoue,
l'interface affiche l'erreur : elle ne bascule jamais silencieusement sur des données inventées.
Le classement « Wallets réels analysés » liste les wallets récemment analysés (≥ 5 trades), triés
par ROI réalisé.
Les 12 « traders vedettes » restent des adresses fictives au track record simulé.
Lancer une copie peut envoyer sur le téléphone un flux de notifications (achats et ventes du trader copié), une par seconde pendant 20 s, façon pile sur l'écran de verrouillage.
static/sw.js, Web Push + VAPID).push_queue, à raison d'un par seconde, après 4 s de délai (le temps de verrouiller le téléphone). Constantes STREAM_COUNT, STREAM_GAP, STREAM_LEAD dans static/js/app.js./api/push/dispatch envoie chaque notification à son heure : il patiente jusqu'à la suivante (90 s au maximum par appel ; une fonction Vercel a été mesurée à 100 s sans problème) et peut passer le relais à un nouvel appel de lui-même (3 relais au plus, en secours). Le téléphone peut donc être verrouillé et la page fermée. Tant que l'écran reste allumé, la page relance aussi l'envoi toutes les 6 s en filet de sécurité. Aucun déclencheur externe (cron) n'est nécessaire.Mes ventes (/ventes) : onglet à part du copy trading, avec un seul bouton « Lancer la simulation ». Il envoie sur le téléphone une pile de 60 notifications de vente, quatre par seconde (une toutes les 0,25 s) (POST /api/sales-simulation, contenu généré côté serveur : « Vente #1001 », montant, nombre d'articles, « MyKingdom (aperçu) »). Elles portent le nom et le logo de Copy Trade. Constantes SALES_* dans push.py (nombre, écart, délai avant la première).
Pour l'activer : définir VAPID_PUBLIC_KEY et VAPID_PRIVATE_KEY (variables d'environnement Vercel), puis redéployer. Sans elles, le bloc est masqué.
iPhone : les notifications web ne fonctionnent qu'une fois le site ajouté à l'écran d'accueil (Partager → Sur l'écran d'accueil), puis ouvert depuis son icône (iOS 16.4 minimum).
app.py factory Flask (routes /, /healthz, 404)
auth.py inscription / connexion / déconnexion (paramètre ?next=)
auth_utils.py hash mot de passe, utilisateur courant, @login_required
sim.py pages (/traders, /trader/<wallet>, /app, /sim/<id>) + API /api/simulations
db.py accès PostgreSQL (psycopg 3)
schema.sql tables users + simulations
onchain.py fournisseur Moralis, swaps → trades, cache et quota
markets.py prix des cryptos (CoinGecko, repli CoinPaprika), cache 60 s, /api/markets
push.py notifications push (abonnements, file d'attente, envoi VAPID), /api/push/*
static/js/engine.js moteur de simulation (trades simulés ou réels), testable sous Node
static/js/ui.js formats, avatars, graphiques SVG
static/js/app.js logique des pages
tests/engine.test.js tests du moteur (node tests/engine.test.js)
Le serveur ne stocke que les paramètres d'une simulation (wallet, solde, part par trade, vitesse, heure de départ). L'état (positions, PnL, courbe) est recalculé côté client à partir de ces paramètres : pas de worker, pas de cron, rien de lourd côté serveur.
Variables d'environnement :
| Nom | Rôle |
|---|---|
APP_SECRET_KEY | signature des sessions |
DATABASE_URL (ou POSTGRES_URL, y compris préfixée par l'intégration Neon) | base PostgreSQL |
MORALIS_API_KEY (optionnel) | active les vraies données on-chain (clé gratuite sur moralis.com) |
ONCHAIN_MAX_FETCHES_PER_DAY (optionnel, défaut 250) | plafond de wallets analysés par 24 h |
ONCHAIN_CACHE_TTL_SECONDS (optionnel, défaut 1200) | durée du cache par wallet |
Le schéma est créé automatiquement au premier démarrage (db.init_db). Les anciennes
tables de la version GTA 6 (news_items, scripts) ne sont plus utilisées ; tu peux les
supprimer à la main si tu veux nettoyer la base.
python -m venv .venv && source .venv/bin/activate # Windows : .venv\Scripts\activate
pip install -r requirements.txt
export DATABASE_URL="postgresql://…" APP_SECRET_KEY="dev"
python app.py # http://127.0.0.1:5000
node tests/engine.test.js