cryptofoundry

Contacter cryptofoundry

Dites-nous ce que vous voulez construire ou automatiser.

adamant

ADAMANT Node v0.10.2

al-onyxprotocolDepuis la fonderie ↗

Le nœud blockchain ADAMANT v0.10.2 est une version axée sur la fiabilité, la récupération et les capacités API, destinée aux opérateurs de nœuds, aux délégués, aux explorateurs, aux messagers et aux développeurs de services. Elle permet aux nœuds de se remettre d’une synchronisation bloquée et d’arrêts interrompus, ajoute un accès aux données REST et Socket.IO plus riche, corrige des régressions de l’API des délégués, améliore les requêtes sur les grandes bases de données, et met à jour les dépendances ainsi que les guides destinés aux opérateurs. La mise à niveau est recommandée pour améliorer la fiabilité, le temps de récupération, la maintenance de la sécurité et les capacités API, mais elle n’est pas obligatoire pour la compatibilité réseau. Cette version n’introduit aucun fork de consensus et ne modifie ni la sérialisation des blocs ou des transactions, ni les signatures, ni l’ordre des délégués, ni les récompenses, ni les frais, ni les hauteurs d’activation, ni le minutage des slots, ni la relecture déterministe.

Les mises à jour de l’API incluent une nouvelle API des comptes principaux avec un ordre déterministe, une pagination, un filtrage isDelegate, des métadonnées de réponse et des requêtes de comptage uniquement. La correction du rang des délégués est rétablie, et l’API des votants de délégués est corrigée pour éviter de basculer vers l’ensemble des comptes, tout en ajoutant un filtrage par liste d’adresses. La visibilité du consensus est améliorée en exposant le calendrier effectif d’activation du consensus et le calendrier complet des paliers de récompense de bloc via les API de statut. Les montants forgés par les délégués sont ajoutés aux réponses, la projection du prochain forgeur est stabilisée aux limites de round, et le filtrage des blocs prend correctement en charge les requêtes avec zéro transaction.

L’API WebSocket client ajoute des événements newBlock compacts en opt-in, ainsi que des événements balances/change pour balance, unconfirmedBalance, ou les deux. Les abonnements aux blocs, transactions et soldes sont désormais indexés pour éviter de scanner des clients non concernés. Les lectures de comptes affectés sont regroupées autour de l’application et du rollback des blocs, et les échecs de publication sont isolés de la mutation de l’état de consensus. La livraison reste au mieux et non durable ; les clients doivent donc restaurer leurs abonnements après reconnexion et reconcilier l’état critique via REST.

Les règles de protocole et de consensus restent inchangées, bien que le calendrier effectif d’activation et le nom de code du consensus actif soient désormais observables via les API de statut publiques. Le correctif du prochain forgeur corrige uniquement une projection d’API publique précédemment incorrecte aux limites de round. Aucune règle de consensus, hauteur d’activation, octet de transaction ou de bloc, ID, signature, récompense, frais, règlement de round ou comportement de relecture n’est modifié dans cette version.

Les améliorations de fiabilité et de récupération incluent un watchdog de synchronisation qui détecte les exécutions de synchronisation ne réalisant aucune progression de hauteur de bloc pendant cinq minutes, interrompant proprement l’exécution bloquée et permettant une récupération automatique. Les rejets PostgreSQL sont désormais propagés à travers la vérification et le chargement des blocs au lieu de mettre silencieusement en attente les chaînes de callbacks. Des points de contrôle persistés de la mem-table avec trois slots rotatifs vérifiés par SHA-256 sont ajoutés pour l’état dérivé. La récupération est en mode fail-closed, restaurant uniquement les points de contrôle qui passent toutes les vérifications et revenant à une reconstruction déterministe complète en cas d’échec de vérification. Les blocs canoniques et la relecture déterministe restent la source de vérité.

Les mises à jour de sécurité comprennent des mises à jour de dépendances dans les versions majeures actuelles et la suppression d’une dépendance d’exécution npm directe inutilisée. Un override compatible étroit de grunt vers js-yaml est ajouté, réduisant le graphe de dépendances audité à zéro découverte modérée, haute ou critique. Aucun changement de comportement n’est introduit concernant les signatures, les mnémoniques, la validation des transactions, le handshake entre pairs ou le protocole cryptographique.

Les améliorations réseau, base de données et performance incluent un index partiel de solde pour les requêtes déterministes des comptes principaux. L’index de hachage du générateur de blocs est remplacé par un index B-tree composite pour éviter les scans de table complète pour les générateurs inconnus. Les abonnements Socket.IO indexés et les lectures d’état final regroupées réduisent les scans de clients inutiles et les requêtes de comptes, et le stockage rotatif de points de contrôle permet une récupération plus rapide à partir d’un état dérivé incohérent.

Pour les opérations de nœuds et les outils, les points de contrôle persistés de l’état mémoire sont activés par défaut, tout en conservant le repli vers une reconstruction complète pour les points de contrôle invalides ou obsolètes. L’arrêt propre est clarifié, nécessitant d’attendre que le traitement actif se termine et qu’un message « Cleaned up successfully » s’affiche avant de redémarrer. Le chemin de reconstruction ABI Node natif pg-native et libpq est documenté, et la prérequis Node.js reste la version 22.13.0 ou supérieure.

Les améliorations de l’expérience développeur étendent la couverture des tests pour la récupération de synchronisation, les points de contrôle, les comptes, les délégués, les blocs, les API de statut et les flux Socket.IO. Le README est réorganisé, et la documentation complémentaire ainsi que les modifications OpenAPI sont alignées pour les API mises à jour.

Les opérateurs effectuant la mise à niveau vers cette version doivent utiliser Node.js 22.13.0 ou supérieur et sauvegarder la base de données. Arrêtez le nœud proprement et attendez le message « Cleaned up successfully » avant de déployer la v0.10.2. Le premier démarrage nécessitera du temps et de l’espace disque supplémentaires pour terminer toutes les migrations, créer le stockage de points de contrôle et construire les nouveaux index. Après le démarrage, vérifiez le statut du nœud, la progression de la synchronisation, le traitement des blocs en direct et toutes les capacités REST ou Socket.IO utilisées par vos services.

Changements incompatibles

Il n’y a aucun changement incompatible de protocole, de consensus, de format de transmission ou de contrat d’API dans la v0.10.2. Les nouveaux champs REST et les abonnements Socket.IO sont additifs et rétrocompatibles. L’option de configuration héritée topAccounts est supprimée, et le point de terminaison GET /api/accounts/top est désormais enregistré de manière cohérente sur chaque nœud. Cette version ajoute des migrations de base de données uniquement vers l’avant, ce qui signifie que le premier démarrage après la mise à niveau peut nécessiter du temps et de l’espace disque supplémentaires pour créer le stockage de points de contrôle et les index de comptes/blocs.