TON est une blockchain de couche 1 où chaque smart contract est un acteur indépendant qui ne communique avec les autres que par des messages asynchrones. Ce modèle passe bien à l'échelle, mais une même opération s'étale alors sur plusieurs transactions. Développer sur TON, c'est concevoir et faire auditer des chaînes de messages plutôt que de simples appels de fonctions.
Développer sur TON
Une action utilisateur déclenche généralement une suite de messages entre plusieurs contrats, chacun traité dans sa propre transaction : une opération peut donc réussir en partie et échouer en partie. Les messages transportent de la valeur, et un message en échec peut revenir à son expéditeur sous forme de bounce. Chaque contrat paie son propre stockage et son propre calcul. Les tokens fongibles (Jettons) reposent sur un contrat wallet par détenteur plutôt que sur une table de soldes unique.
- Langages : FunC, Tact et Tolk, compilés pour la TON Virtual Machine
- Outils : le framework Blueprint et son sandbox de test
- Non compatible EVM
Ce que regardent les auditeurs
- Les flux asynchrones : états intermédiaires entre messages, situations de concurrence, actions impossibles à annuler
- Le traitement des bounces : restauration correcte des soldes et de l'état après un message en échec
- L'authentification de l'expéditeur : vérifier qu'un message entrant provient du contrat attendu, par exemple d'un wallet de Jetton légitime
- La gestion du gas et de la valeur : valeur suffisante transmise pour toute la chaîne de messages, frais de stockage susceptibles de geler un contrat
- La protection contre le rejeu des messages externes et le décodage correct des données de message
Avant de demander des devis
- Schématisez le flux de messages de chaque opération, y compris les chemins d'échec et de bounce
- Précisez le langage de chaque contrat et la version de son compilateur
- Fournissez des tests en sandbox couvrant les échecs partiels, pas seulement les chaînes réussies
- Décrivez précisément les contrats de tokens si vous implémentez des Jettons ou des NFT