Une approche différente des mises à niveau des applications
La plupart des logiciels conservent leurs données dans une base de données distincte, ce qui signifie que chaque mise à jour du code comporte le risque de perdre ou d’endommager ces données. Le Internet Computer de @dfinity emprunte une voie différente pour les applications construites en Motoko, son langage de programmation conçu à cet effet.
Plutôt que d’acheminer des données vers un stockage séparé et d’en revenir à chaque mise à jour, Motoko a toujours su préserver automatiquement l’état du programme lors des mises à niveau, sans aucun code supplémentaire pour gérer la persistance. L’innovation clé est simple : l’exécution évite tout transfert de l’état vers la mémoire stable en se contentant de conserver la mémoire principale, sans la supprimer. Le système d’exécution garantit désormais la cohérence des données lors des mises à niveau d’une manière très efficace, indépendamment de la taille de la mémoire.
Cette approche est appelée formellement persistance orthogonale. Les canisters utilisent la persistance orthogonale pour donner l’impression que l’instance du module vit indéfiniment, rendant obsolètes les bases de données ou les E/S de fichiers. Pour stocker de façon persistante une variable, les développeurs peuvent simplement écrire la variable en mémoire.
Avant qu’une mise à niveau ne soit déployée en production, le système vérifie si le nouveau code peut réellement lire les données existantes stockées. Si ce contrôle de compatibilité échoue, la mise à niveau est annulée et rien n’est perdu. La persistance orthogonale améliorée de Motoko vise à libérer les programmeurs de la gestion de la mémoire stable en proposant un mécanisme de mise à niveau à la fois simple, sûr et rapide.
Un chemin plus difficile pour les développeurs Rust
Le contraste avec d’autres langages est net. Les autres langages pris en charge sur l’Internet Computer utilisent des implémentations prêtes à l’emploi qui n’ont pas été conçues en tenant compte de la persistance orthogonale. Les programmeurs doivent donc utiliser explicitement la mémoire stable ou des structures de données stables spécifiques pour récupérer leurs données entre les mises à niveau. Contrairement à Motoko, cette approche est non seulement fastidieuse, mais aussi peu sûre et inefficace.
Pour les développeurs Rust sur l’Internet Computer, DFINITY conserve bien une bibliothèque de structures de données conçues pour être sûres lors des mises à niveau. Il s’agit d’un ensemble de structures de données évolutives pour l’Internet Computer qui persistent au-delà des mises à niveau, conçues pour utiliser la mémoire stable comme stockage de fond. Elles leur permettent de croître jusqu’à des tailles de plusieurs gigaoctets. Toutefois, la responsabilité de gérer ce processus incombe encore au développeur plutôt qu’à l’environnement d’exécution du langage lui-même.
L’écart de capacités est le plus important à mesure que les applications se développent. Stellarator, une étape récente de l’Internet Computer, est décrit comme une percée en matière de persistance des données on-chain qui augmente substantiellement la scalabilité et la gestion du stockage des données, ouvrant de nouvelles opportunités pour des applications complexes riches en données auparavant limitées par les contraintes du système, et apportant un nouveau niveau d’utilité à la technologie blockchain.
Sources :
DFINITY : Un voyage vers Stellarator, partie 2 (persistance orthogonale améliorée)
Documentation Internet Computer : variables stables et méthodes de mise à niveau
Documentation Internet Computer : mises à niveau des canisters, stockage et persistance
