Présentation de sCrypt : un cadre de contrat intelligent de couche 1 pour BTC
Cet article a été publié pour la première fois sur Medium.
Nous sommes extrêmement heureux de vous présenter crypte: un framework Typescript moderne pour développer aujourd'hui des contrats intelligents de couche 1 sur BTC, aucun fork n'est nécessaire. Il est désormais possible d'écrire, de tester, de déboguer, de déployer et d'appeler des contrats intelligents dans un cadre unifié facile à utiliser à l'aide d'outils de développement modernes. Tout développeur Web2 peut développer des applications basées sur des contrats intelligents sur BTC à condition de connaître JavaScript/TypeScript. Il constitue une base solide pour transformer BTC en une plateforme de contrats intelligents.
Contrats intelligents sur BTC
Traditionnellement, BTC est considéré comme uniquement capable d’effectuer des paiements et de stocker de la valeur. Ordinals a changé cette idée fausse en démontrant qu'il prend également en charge les jetons. Une autre idée fausse est le manque de capacités de contrat intelligent de BTC. En fait, BTC prend en charge les contrats intelligents depuis le premier jour sous la forme de Bitcoin Script. Les Hashlocks, les timelocks et le multisig en sont quelques exemples marquants.
L’un des plus grands obstacles dans les contrats intelligents BTC réside dans le script. Étant un langage assembleur de bas niveau, Script est extrêmement difficile à coder et à raisonner. Il n'existe pratiquement aucun outil pour tester, déboguer et déployer comme dans un flux de travail de développement logiciel classique. Écrire un contrat intelligent en script natif est fastidieux et sujet aux erreurs. Cela devient rapidement insoluble lorsque la taille et la complexité du contrat augmentent.
crypte
Entrez sCrypte. Avec sCrypt, les développeurs peuvent coder directement les contrats intelligents BTC dans Typescript, l'un des langages de programmation les plus populaires au monde et utilisé chaque jour par des millions de développeurs. Les contrats sCrypt sont compilés dans Bitcoin Script.
sCrypt offre une multitude d'avantages :
- Pas besoin d'apprendre un nouveau langage de programmation. Nous avons choisi TypeScript car il fournit un langage simple et familier (JavaScript) mais avec une sécurité de type, ce qui facilite la création de contrats intelligents sécurisés. Il n'est pas nécessaire d'apprendre un nouveau langage ou de nouveaux outils de programmation si vous êtes déjà familier avec TypeScript/JavaScript
- Pas besoin d'apprendre de nouveaux outils. Les développeurs Web2 peuvent réutiliser des millions de bibliothèques TypeScript/JavaScript existantes et leurs outils préférés : Visual Studio Code/WebStorm pour l'IDE, NPM pour la gestion des packages, Jest/Mocha/Jasmine pour les tests
Un exemple concret
Examinons un contrat intelligent pratique.
Le code ci-dessous représente un simple engagement de porte logique NAND (NOT-AND) pour BitVM, tiré de la figure 2 de son livre blanc. Il vérifie si les deux bits d'entrée (A, B) et un bit de sortie (E), tous validés à l'avance à l'aide de hachages, de la porte correspondent, c'est-à-dire E = NAND(A, B).
Les détails exacts du fonctionnement de ce code ne sont pas importants. Le message central ici est que l’on est loin de ce à quoi ressemble un langage de programmation moderne. ésotérique.
Engagement de la porte NAND dans le script
L'équivalent fonctionnel est exprimé dans sCrypt simplement comme :
Engagement de la porte NAND dans sCrypt
En comparant les implémentations de Script et de sCrypt, il est évident que cette dernière est considérablement plus conviviale et accessible aux développeurs modernes. Le premier n'est connu que par une poignée de développeurs capables de coder dans un langage assembleur obsolète, tandis que le second peut être maîtrisé par des millions de développeurs connaissant JavaScript/TypeScript, ou tout autre langage de programmation orienté objet tel que Java, C++ ou Golang. Plus un contrat intelligent devient compliqué, plus il est avantageux de le développer en sCrypt plutôt qu'en Script.
Le code complet est répertorié ci-dessous, basé sur la bibliothèque sCrypt scrypt-ts-btc.
Contrat BitVM
Déployer et appeler des contrats intelligents
Nous utilisons Pay-to-Witness-Script-Hash (P2WSH) pour le déploiement sous contrat. Le déploiement consiste à compiler le code des contrats intelligents pour produire un script, à hacher ce script et à placer le hachage dans une transaction P2WSH (Tx0), qui est diffusée sur le réseau.
Lorsque quelqu'un souhaite appeler le contrat déployé, il intégrera le script de contrat complet ainsi que les entrées de la méthode appelée comme données de témoins dans la transaction suivante (Tx1), dépenser Tx0.
Déployer et appeler des transactions : la gauche représente l'entrée, la droite la sortieVoici l'extrait de code pour déployer et appeler le contrat :
Déployer et appeler le contrat
Il est à noter que le déploiement (Ligne 8) et l'appel (Ligne 12) du contrat ne prennent que une seule ligne.
Ces identifiants de transaction représentent une instance du contrat BitVM déployé et appelé sur le testnet BTC.
Le code complet de l'exemple est disponible sur GitHub. Les développeurs intéressés peuvent accéder au code complet et l’exécuter eux-mêmes. Pour plus d'informations sur sCrypt, veuillez vous référer à notre documentation complète.
Limites connues
sCrypt peut fonctionner sur n'importe quelle blockchain prenant en charge Bitcoin Script. Cela inclut les forks Bitcoin et les chaînes dérivées du Bitcoin telles que Litecoin et Doge.
BTC a désactivé de nombreux opcodes de script, tels que OP_CAT et OP_MUL, limitant considérablement les types de contrats intelligents pouvant être exprimés dans sCrypt. La communauté BTC discute activement de la réactivation de ces opcodes et de l'introduction de nouveaux, ce qui rendra sCrypt sur BTC plus puissant qu'il ne l'est aujourd'hui si les modifications proposées sont acceptées.
En attendant, certaines chaînes disposent de la suite complète d'opcodes de script, comme Bitcoin SV et MVC. sCrypt atteint aujourd'hui sa pleine capacité sur ces chaînes.
Utilisation dans la racine pivotante
Nous utilisons un script de type P2WSH pour intégrer les contrats sCrypt afin de faciliter l'exposition dans l'exemple, ce qui autorise une taille de script maximale de 10 Ko. Les contrats sCrypt peuvent également être utilisés dans le script Taproot. Ils peuvent être rendus plus expressifs et complexes puisque Taproot a une limite de taille de script beaucoup plus grande d'environ 4 Mo.
Travaux connexes
Comparer aux autres couches 1 (L1)
Il existe d'autres tentatives pour améliorer la programmabilité de Script, dont nous énumérons quelques-unes ci-dessous.
- Miniscript : un langage autonome pour représenter Bitcoin Script de manière composable et lisible. Sa portée est très limitée et moins expressive que Script : il ne peut exprimer que des exigences de signature, des timelocks, des pré-images de hachage et des combinaisons arbitraires de ceux-ci
- Simplicité : un langage de programmation de bas niveau en cours de développement avec une plus grande flexibilité et expressivité que Bitcoin Script. Cela nécessite un fork pour être implémenté sur BTC
Contrairement aux deux, sCrypt fait pas inventez un nouveau langage de programmation et réutilisez simplement TypeScript, qui a une courbe d'apprentissage nettement moins profonde. En outre, il fournit un cadre plus complet en plus du langage de contrat intelligent, comprenant l'IDE, la gestion des packages, le débogueur, le SDK et les API. Autrement dit, il offre tout ce dont les développeurs ont besoin pour créer une application full-stack alimentée par des contrats intelligents.
Comparer aux couches 2 (L2)
sCrypt est un langage spécifique à un domaine (DSL) basé sur Typescript, compilé dans Bitcoin Script, qui fonctionne aujourd'hui sur BTC sans aucun fork. Il hérite de la sécurité totale du BTC, le rendant ainsi plus sécurisé et sans confiance que n'importe quel BTC L2.
Cela dit, BTC L2 pourrait utiliser plus de fonctionnalités sCrypt s'il utilise également Script et a plus d'opcodes activés que BTC L1. En fait, il existe déjà des L2 qui exploitent sCrypt de cette façon, comme Note Protocol.
Hackathon sCrypt à l'Université d'Exeter : créer des contrats intelligents avec la blockchain
Nouveau sur la blockchain ? Consultez la section Blockchain pour les débutants de CoinGeek, le guide de ressources ultime pour en savoir plus sur la technologie blockchain.
