✅ Analyse détaillée de Crawler (CrawlPi) Dépôt : https://t.co/DjKmIYN0OD 1. Objectif général CrawlPi est un crawler Node.js en temps réel qui extrait des données de la blockchain Pi (basée sur Stellar). Son objectif principal est de récupérer toutes les données nécessaires (blocs, transactions, opérations, effets, soldes, bénéficiaires/verrouillages, etc.) et de les stocker dans MySQL, tout en envoyant des analyses/statistiques vers Firebase Firestore pour le site ExplorePi. Contrairement à l’Explorateur officiel de Pi, il maintient sa propre base de données indexée → permettant des tableaux de bord et des analyses plus rapides et bien plus riches. 2. Stack technologique Composant Technologie utilisée Runtime Node.js Blockchain stellar-sdk + API Pi Horizon Base de données MySQL (mysql2) Base de données d’analyse Firebase Firestore Planificateur node-schedule (dans getdata.js) Configuration .env + dotenv Dépendances (package.json) : stellar-sdk, mysql2, firebase-admin, dotenv, node-schedule 3. Logique de fonctionnement (index.js) // Fichier principal block.block() // Flux de ledgers effect.crawl() // Flux d’effets operation.operation() // Flux d’opérations tx.transaction() // Flux de transactions (frais) Utilise des flux (server.ledgers().stream(), .transactions().stream(), etc.). Écrit les données dans MySQL instantanément dès l’arrivée de nouveaux ledgers/opérations/effets. Prend en charge la reprise fluide grâce au système de curseur (stocké dans .env). Appuyez sur q pour un arrêt propre — enregistre les derniers curseurs dans last.txt. 4. Modules (dossier lib/) — Détails Fichier Responsabilité Remarques importantes block.js Flux de ledgers (blocs) → écriture dans la table block Durée du bloc (spend), total Pi, pool de frais, nombre de tx réussies/échouées transaction.js Enregistre les frais des transactions réussies dans la table fee Traite uniquement les tx réussies operation.js Flux d’opérations → table operation + création spéciale de compte Le type 0 (create_account) distingue Pionnier vs CoreTeam effect.js Module le plus critique. Gère les mises à jour de solde, les lignes de confiance, les bénéficiaires/verrouillages Crédit/débit, création/suppression de lignes de confiance, solde claimable, verrouillage, statut du bénéficiaire database.js Pool de connexions MySQL + wrappers ex_sql() et query() Mélange de connexions pool et individuelles firestore.js Initialisation Firebase Admin (à partir de .env) Envoie les statistiques vers Firestore 5. Schéma de la base de données (database.sql) 6 tables principales : Account → public_key, balance, Role (Pionnier/CoreTeam), lock, created_at asset → Suivi des lignes de confiance (actif non natif) block → Résumé de chaque ledger (y compris le temps de traitement) claimant → Mécanisme de verrouillage/réclamation de Pi (lock_time, unlock_time, statut 0/1/2, claimed_at) fee → Frais de transaction operation → Toutes les opérations (avec type_i) Traitement spécial (dans le module Effect) : Crédit/débit du solde natif Création/suppression de lignes de confiance Création de solde claimable (verrouillage) Réclamations de bénéficiaires (statut 1 = réclamation normale, 2 = récupération par Core Team) 6. Configuration (.env.example) HORIZON_URL=https://t.co/knkyx5qMhh FIRST_ACCOUNT=GDL35MYH4XX2KH4T5AILQQC2FN4NIOQF2QNKXKX74R2B2XHWWWQ4SFU4 # Curseurs (prêts pour le premier lancement) LEDGER_CURSOR=8589934592 TX_CURSOR=60129546240 OP_CURSOR=60129546240 EFFECT_CURSOR=1 pre_time=2020-12-31T22:47:31Z # MySQL DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=explorepi DB_USERNAME=... DB_PASSWORD=... # Firebase (Firestore) FIRESTOREID=... FIRESTORE_EMAIL=... FIRESTORE_KEY=... 7. Moteur d’analyse (getdata.js) Script planifié séparé (utilisant node-schedule) : Exécute des requêtes spécifiques toutes les heures/jour. Envoie les résultats vers le document statistic/data sur Firestore. Calcule des métriques riches : Top 10 comptes les plus riches (après frais) Temps de bloc (journalier/mensuel) Top émetteurs de paiements Top payeurs de frais Répartition des opérations Statistiques des bénéficiaires/verrouillages (réclamés, récupérés, durées de verrouillage, etc.) Utilisateurs actifs quotidiens, paiements quotidiens, frais quotidiens Total Pi, Total Verrouillé, Total Pionniers, etc. Le site lit directement ces données depuis Firestore → tableaux de bord très rapides. Projet de référence très précieux pour toute personne souhaitant effectuer une analyse de données dans l’écosystème Pi. @nkokkalis @inanjaccuse @Gerek_yokkikiki @mehmetozal @erdincdincer13 @incegorbaskan @tekin63081 @Chengdiao @DrChengdiaoFan @PiCoreTeam @krakenfx #PiNetwork #CiDiGames #Web3Gaming

Partager






Source:Afficher l'original
Clause de non-responsabilité : les informations sur cette page peuvent avoir été obtenues auprès de tiers et ne reflètent pas nécessairement les points de vue ou opinions de KuCoin. Ce contenu est fourni à titre informatif uniquement, sans aucune représentation ou garantie d’aucune sorte, et ne doit pas être interprété comme un conseil en investissement. KuCoin ne sera pas responsable des erreurs ou omissions, ni des résultats résultant de l’utilisation de ces informations.
Les investissements dans les actifs numériques peuvent être risqués. Veuillez évaluer soigneusement les risques d’un produit et votre tolérance au risque en fonction de votre propre situation financière. Pour plus d’informations, veuillez consulter nos conditions d’utilisation et divulgation des risques.
