Aujourd'hui marque une autre grande sortie de la blockchain IoTeX et apporte des améliorations significatives au protocole IoTeX. iotex-core 1.7.0 a été publié pour les opérateurs de nœuds le 15 mars et vient d'être activé. [Environ le 24/03/2022 vers 23h UTC]. Cette version apporte de nombreuses améliorations API qui accéléreront le développement de dApps et le débogage de contrats intelligents complexes. Les opérateurs de nœuds bénéficieront d'une architecture simplifiée du service API Ethereum et d'une meilleure gestion des journaux. Les performances de la base de données et du réseau ont également augmenté. IoTeX construit, affine et travaille toujours de manière itérative pour faciliter le développement et l'intégration des dApps. En plus de rendre les dApps plus simples à construire, la blockchain est plus fiable et plus sécurisée avec des performances améliorées. Examinons de plus près certains des changements majeurs...
API
Traçage des exécutions de contrats
Les exécutions de contrats blockchain peuvent être complexes à déboguer, surtout si elles impliquent des appels à d'autres contrats. L'API blockchain standard sur une plateforme compatible EVM indique généralement uniquement aux développeurs si une action a réussi ou a été annulée. Le nouvel appel API TraceTransactionStructLogs
est l'équivalent de trace_call
d'Ethereum et collecte des détails de bas niveau pendant l'exécution d'un seul appel de contrat, fournissant aux développeurs des informations utiles sur ce qui s'est passé pendant l'exécution de l'action. Cette API est disponible sur n'importe quel nœud IoTeX où le service de passerelle API est activé.
API de décodage de stockage de contrat
Cette API permet de décoder les données dans le stockage d'un contrat intelligent à un emplacement mémoire spécifique. Elle est fournie en tant qu'appel API GRPc natif IoTeX (ReadContractStorage) et en tant qu'appel API JSON Ethereum (eth_getStorageAt).
Valeur des frais de gaz dans les résultats de l'API getActions
La valeur des frais de gaz réellement dépensés pour une action spécifique manquait dans l'objet de réponse lors de la requête des détails de l'action. Cette valeur est désormais fournie par tous les appels API natifs ou Ethereum qui renvoient des détails de transaction.
Valeurs d'index dans les reçus de transaction et les journaux EVM
Lors de l'activation de 1.7.0, lors de la requête des reçus de transaction, la valeur transactionIndex
ainsi que la valeur logIndex
pour chaque entrée de journal dans le tableau des journaux EVM sont désormais fournies. Le champ transactionIndex
fournit la position de la transaction dans le bloc et est utile lorsque l'ordre des transactions est important. logIndex
fournit la séquence correcte des journaux EVM pour une exécution de contrat.
Opération de nœud
API JSON Ethereum native
La version 1.2.0 de la blockchain a marqué une grande étape pour les développeurs IoTeX. Avec le support natif des transactions signées par Ethereum par le nœud IoTeX et la sortie du service API JSON Ethereum ("Babel"), la compatibilité IoTeX-Ethereum était complète. Cela permet à n'importe quelle dApp Ethereum d'être portée sur IoTeX sans nécessiter de changement dans les contrats ni dans le code client. Cependant, l'API Ethereum a été mise en œuvre comme un service externe qui devait être déployé séparément et "pointé" vers un nœud IoTeX réel pour fonctionner. Avec iotex-core 1.7.0, le serveur API Ethereum est désormais intégré de manière native et exposé directement par les nœuds IoTeX. Il n'est plus nécessaire d'exécuter, de configurer et de gérer un service externe. Il suffit d'activer la fonctionnalité Gateway de votre nœud IoTeX pour obtenir à la fois l'API native IoTeX et l'API Ethereum exposée.
Rotation des journaux
Logrotate a été installé dans l'image Docker du nœud pour gérer et stocker les fichiers journaux du nœud plus efficacement. Au lieu d'un seul gros fichier journal, le nœud crée désormais plusieurs fichiers plus petits. Ceux qui sont trop anciens sont supprimés. La configuration de logrotate est située dans l'image Docker. Les paramètres par défaut créent de nouveaux fichiers journaux quotidiennement. Les fichiers journaux sont supprimés après 30 jours.
Performance
Séparation des réseaux p2p pour Mainnet et Testnet
Avec ce changement, le Testnet et le Mainnet IoTeX ont été logiquement séparés au niveau du réseau p2p en fonction de la valeur du ChainID qui est maintenant incluse dans tous les messages p2p. Cela réduit les interférences de trafic réseau entre le Mainnet et le Testnet dans certains cas particuliers et atténue certains types d'attaques.
Divers
Traçage des exécutions de nœuds blockchain
Dans la version 1.6.0, nous avons introduit un code de traçage pour collecter des journaux de temps d'exécution sur des chemins d'exécution critiques du nœud. Ce code de traçage a maintenant été activé et configuré pour envoyer les données à un backend où elles sont agrégées et analysées. C'est un outil précieux pour l'équipe dev-core d'IoTeX pour surveiller l'exécution de la chaîne et être alertée rapidement lorsque des comportements étranges ou des erreurs sont détectés. Tout le monde peut consulter les données en visitant https://tracing.iotex.me.
Plus
De nombreux autres correctifs mineurs et améliorations ont été mis en œuvre dans 1.7.0. Consultez la page de version sur GitHub pour plus d'informations. Nous aimerions que vous soyez plus impliqué. Veuillez rejoindre notre canal Discord.