Qu'est-ce que la machine virtuelle TON (TVM) ? Guide complet (2026)
— By Tony Rabbit in Tutorials

La TVM est le moteur qui exécute chaque contrat intelligent TON. Ce guide explique le modèle de pile, le passage de messages asynchrone, la disposition des données basée sur des cellules, la mesure du gaz et comment la TVM se compare à l'EVM.
La TVM (machine virtuelle TON) est le moteur d'exécution qui exécute chaque contrat intelligent sur The Open Network. Elle est vraiment différente de l'EVM, de la SVM et d'autres machines virtuelles majeures, principalement parce que la philosophie de conception de TON est asynchrone : les contrats passent des messages au lieu de faire des appels de fonction synchrones. Comprendre la TVM fait la différence entre traiter le développement TON comme une boîte noire et écrire des contrats qui s'intègrent bien avec le parallélisme du réseau.
Réponse rapide : La TVM est une machine virtuelle basée sur une pile qui exécute des contrats intelligents TON. Elle utilise une disposition de données basée sur des cellules où tout est stocké sous forme de petits morceaux (jusqu'à 1023 bits) avec jusqu'à quatre références à d'autres cellules. L'exécution est asynchrone : un contrat reçoit un message, s'exécute jusqu'à la fin et peut émettre de nouveaux messages. Il n'y a pas d'appels synchrones entre les contrats. La mesure du gaz est par contrat par message, et le gaz non utilisé est remboursé.
- Basé sur une pile. Les opérations poussent et retirent des valeurs d'une pile plutôt que d'adresser des registres.
- Données basées sur des cellules. Le stockage utilise de petits morceaux appelés cellules avec jusqu'à quatre références chacune.
- Exécution asynchrone. Les contrats communiquent par le biais de messages, pas d'appels synchrones.
- Mesure du gaz par message. Chaque message porte son propre budget de gaz.
- Les langages se compilent en bytecode TVM. FunC, Tact et d'autres ciblent tous le même niveau d'exécution.
Ce qu'est la TVM et pourquoi elle existe
La TVM est l'environnement d'exécution qui transforme le code des contrats intelligents en opérations réelles sur la chaîne. Chaque nœud du réseau s'accorde sur la spécification de la TVM, donc un contrat qui s'exécute sur un nœud s'exécute de manière identique partout. Ce déterminisme est ce qui permet au réseau d'atteindre un consensus sur les résultats des contrats.
Pourquoi une VM personnalisée
Les concepteurs de TON ont construit une VM personnalisée pour s'adapter à l'architecture shardée et asynchrone du réseau. Emprunter l'EVM aurait signifié accepter le modèle d'appel synchrone de l'EVM, qui contredit l'exécution parallèle des shards de TON. La TVM donne à TON un modèle où chaque message est une unité de travail qui peut s'exécuter dans n'importe quel shard à tout moment sans coordination avec d'autres shards.
Où elle se situe dans la pile
En dessous de la TVM se trouvent les comptes, le stockage et le consensus du réseau. Au-dessus de la TVM se trouvent les langages de contrat intelligent (FunC, Tact). La TVM est l'interface universelle : chaque langage se compile en bytecode TVM, et chaque nœud exécute ce bytecode.
Cellules et disposition des données
Un des choix de conception emblématiques de la TVM est la cellule. Tout ce qui est stocké sur TON, de l'état du contrat aux corps de message en passant par les métadonnées NFT, est disposé sous forme d'un arbre de cellules.
Ce qu'est une cellule
Une cellule contient jusqu'à 1023 bits de données brutes et jusqu'à quatre références à d'autres cellules. Les objets plus grands (une longue chaîne, un grand tableau, un état de contrat complexe) sont représentés sous forme d'arbres de cellules. La structure est similaire en esprit à un arbre de Merkle.
Pourquoi les cellules sont importantes
La disposition des cellules prend en charge l'adressage par contenu (chaque cellule a un hachage), le diffing efficace (les changements ne modifient que les cellules affectées) et le calcul du loyer de stockage (le nombre de cellules et le temps comptent tous les deux). Les contrats à long terme paient un petit loyer basé sur le nombre de cellules qu'ils maintiennent en vie.
Loyer de stockage
Contrairement au stockage permanent d'Ethereum, TON facture une petite frais continu pour garder les cellules en vie. L'intention est de décourager le gonflement indéfini. Les contrats actifs ne paient presque rien ; les contrats abandonnés qui détiennent un état important paient plus, finissant par être gelés si leur solde atteint zéro.
Exécution asynchrone
La TVM ne permet pas au contrat A d'appeler le contrat B de manière synchrone. Au lieu de cela, le contrat A envoie un message au contrat B, qui est traité à une étape ultérieure.
Un message, une exécution
Chaque interaction sur la chaîne est déclenchée par un message. Le contrat destinataire lit le message, met à jour son état et peut émettre de nouveaux messages en tant qu'effet secondaire. Ces nouveaux messages seront traités lors des tours de réseau suivants.
Implications pour les développeurs
Les développeurs habitués aux appels synchrones de style EVM doivent penser différemment sur TON. Une "transaction" sur TON est souvent une chaîne de messages. La gestion des erreurs est également différente : un message qui rebondit renvoie des fonds à l'expéditeur, mais seulement si l'expéditeur a configuré le message comme rebondissable.
Implications pour le parallélisme
Le modèle asynchrone est ce qui permet à TON d'exécuter des chaînes de shards en parallèle. Deux shards peuvent traiter des messages non liés sans coordination, et même les messages entre shards sont mis en file d'attente et résolus lors de tours ultérieurs.
Mesure du gaz sur TON
Chaque opération de la TVM a un coût en gaz. Le système de coûts est similaire en esprit à celui du gaz d'Ethereum, avec quelques différences importantes.
Gaz par message
Chaque message entrant porte sa propre allocation de gaz. Lorsque le message est traité, le gaz est consommé par les opérations exécutées. Le gaz non utilisé est remboursé à l'expéditeur avec tout solde TON non utilisé.
Loyer de stockage vs gaz de calcul
TON facture séparément pour le loyer de stockage (stockage de cellules à long terme) et le gaz de calcul (travail effectué par la TVM). Les deux sont payés en TON. Pour la plupart des contrats destinés aux utilisateurs, le gaz de calcul est le coût le plus élevé.
Pourquoi les frais restent bas
Les frais restent bas car le réseau peut évoluer grâce au sharding lorsque la demande augmente. La plupart des exécutions de contrats sont peu coûteuses, prévisibles et remboursables lorsqu'elles sont surestimées.
TVM vs EVM
Les deux moteurs résolvent le même problème avec des mécanismes différents.
| Propriété | TVM | EVM |
|---|---|---|
| Architecture | Basée sur une pile | Basée sur une pile |
| Disposition des données | Cellules (1023 bits + 4 refs) | Stockage adressé par mot |
| Modèle d'exécution | Messages asynchrones | Appels synchrones |
| Remboursement de gaz | Oui, non utilisé remboursé | Oui, remboursement partiel |
| Coût de stockage | Loyer de stockage | Coût de stockage permanent à l'avance |
| Langages | FunC, Tact | Solidity, Vyper, Yul |
Ce que cela signifie pour les développeurs
Construire sur TON nécessite un modèle mental différent de celui de la construction sur Ethereum ou Solana.
Pensez en messages, pas en appels de fonction
Si vous vous retrouvez à vouloir "le résultat du contrat B" à l'intérieur du contrat A, vous combattez généralement le modèle. Restructurez le flux pour que le contrat A envoie un message à B et s'attende soit à un rappel, soit à compléter son propre changement d'état sans attendre.
Pensez en cellules lors du stockage de l'état
Les grands tableaux plats ne sont pas adaptés à TON. Les structures de données en forme d'arbre s'intègrent mieux à la disposition des cellules. L'état qui croît de manière illimitée doit être partitionné entre plusieurs cellules ou sous-contrats.
Utilisez Tact pour une syntaxe plus conviviale
FunC est plus proche de l'assemblage. Tact fournit une syntaxe de niveau supérieur qui se compile en bytecode TVM et est plus facile à lire. La plupart des nouveaux projets TON utilisent Tact à moins qu'ils n'aient besoin d'un contrôle précis.
Un parcours d'apprentissage pratique
- Commencez par des tutoriels Tact. Une syntaxe de niveau supérieur vous aide à saisir d'abord le modèle de message.
- Lisez une implémentation de Jetton. Les contrats de maître et de portefeuille illustrent clairement le modèle asynchrone.
- Construisez un petit contrat sur testnet. Envoyez des messages, observez comment ils se propagent.
- Descendez à FunC lorsque vous devez optimiser le gaz ou peaufiner la disposition des cellules.
- Utilisez un outil de trace d'exécution TVM pour inspecter la pile et les messages pendant le développement.
Questions fréquemment posées
La TVM est-elle compatible avec l'EVM ?
Non. Les modèles d'exécution, les dispositions de données et les systèmes de gaz sont différents. Certaines couches de compatibilité EVM expérimentales existent mais ne sont pas le chemin de développement par défaut.
Puis-je écrire des contrats TON en Solidity ?
Le développement natif TON utilise FunC ou Tact. Certains adaptateurs permettent une syntaxe similaire à Solidity, mais la plupart du code de production utilise les langages natifs de TON.
Pourquoi la TVM est-elle basée sur une pile ?
Les VM basées sur une pile sont plus simples à spécifier et à vérifier que les VM basées sur des registres, et elles facilitent la conception de modèles de gaz déterministes. L'EVM est également basée sur une pile pour les mêmes raisons.
Qu'est-ce qu'une cellule sur TON ?
L'unité de base de données sur TON. Une cellule contient jusqu'à 1023 bits et jusqu'à quatre références à d'autres cellules. Tout ce qui est stocké sur TON est disposé sous forme d'un arbre de cellules.
Puis-je payer un loyer pour stocker des données sur TON ?
Oui. Le loyer de stockage est une petite frais continu proportionnel au nombre de cellules et au temps. Les contrats actifs le remarquent à peine ; les contrats abandonnés peuvent se vider jusqu'à zéro et geler.
Conclusion finale : La TVM est la pièce la plus distinctive de la conception de TON. Une fois que vous comprenez la disposition des cellules, le modèle de message asynchrone et le système de gaz par message, le reste des particularités du réseau (sharding, frais bas, finalité rapide) a du sens comme conséquences naturelles. Construisez avec le modèle, pas contre lui.
Avertissement : Ce guide est à des fins éducatives uniquement et ne constitue pas un conseil en investissement, financier, juridique ou commercial.