Simplicity compose les programmes à partir d’un petit ensemble de combinateurs et peut remplacer les sous-expressions reconnues par des jets rapides au sens identique, conciliant analyse et performances pratiques.
Son cœur est un petit ensemble de combinateurs typés à la sémantique dénotationnelle et opérationnelle définie mathématiquement. Un modèle formel dans Rocq permet de vérifier par machine des preuves sur le langage, son implémentation et les propriétés d’un programme précis. [1]
Le langage n’a ni boucle non bornée ni récursion générale, ce qui permet de déduire avant l’exécution des limites supérieures de calcul, de mémoire et de données. Un programme ne doit donc ni s’arrêter faute d’un gas imprévisible ni s’exécuter indéfiniment. [1]
Le programme est un arbre d’expressions merklisé et les branches inutilisées peuvent être remplacées par leur Merkle root lors de la dépense. Le validateur vérifie l’engagement envers le programme entier, mais seuls le chemin nécessaire et les witness data sont révélés on-chain. [1]
Un jet reconnaît une expression Simplicity précise et l’exécute par une fonction native optimisée. La sécurité du consensus impose un résultat exactement conforme à la sémantique de référence ; le jet n’ajoute aucun sens nouveau caché. [1]
libSimplicity contient un runtime minimal sensible au consensus en C, des composants de référence et de génération en Haskell, ainsi qu’un modèle formel en Rocq. Ces couches se contrôlent mutuellement, mais le dépôt précise que le langage et l’implémentation restent en développement. [2]
SimplicityHL est un langage plus lisible, proche de Rust, qui compile vers le bytecode Simplicity. Le projet le qualifie lui-même de work in progress et non de production-ready ; l’audit d’un contrat doit couvrir source, compilateur, bytecode, witness et jets. [3]
Simplicity a été déployé sur le mainnet Liquid en 2025. Liquid est une sidechain fédérée avec plusieurs actifs et Confidential Transactions ; ce déploiement ne constitue donc pas une activation dans le consensus du mainnet Bitcoin, qui demanderait une proposition et un soft fork distincts. [4]
La sémantique formelle ne garantit ni la justesse de l’intention économique, ni la sécurité des clés, ni la fiabilité d’une contrepartie. La vérification doit distinguer programme de bas niveau, outils SimplicityHL, jeu précis de jets, version de Liquid et intégration Bitcoin hypothétique. [2]
Pour une vision complète, lisez aussi Bitcoin Script, Miniscript, Taproot, Soft Fork, Règles de consensus, Sidechain.
01Simplicity est-il disponible sur le mainnet Bitcoin ?+
Non. Il est déployé sur le mainnet Liquid, dont le consensus diffère ; son usage comme langage de script Bitcoin demanderait une proposition et un soft fork distincts.
02Simplicity est-il identique à Miniscript ?+
Non. Miniscript est une structure analysable au-dessus du Bitcoin Script actuel ; Simplicity est un langage de bas niveau distinct et formellement défini.