![Taquito Logo](/img/Taquito.png) [![Node.js CI](https://github.com/ecadlabs/taquito/workflows/Node.js%20CI/badge.svg)](https://github.com/ecadlabs/taquito/actions/workflows/main.yml) [![codecov](https://codecov.io/gh/ecadlabs/taquito/branch/master/graph/badge.svg)](https://codecov.io/gh/ecadlabs/taquito) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3204/badge)](https://bestpractices.coreinfrastructure.org/projects/3204) [![npm version](https://badge.fury.io/js/%40taquito%2Ftaquito.svg)](https://badge.fury.io/js/%40taquito%2Ftaquito) Bienvenu, développeur Web3! ## Taquito, qu'est-ce que c'est ? Taquito est une librairie [TypeScript](https://www.typescriptlang.org/) rapide et légère qui permet d'accélérer le développement sur la blockchain [Tezos](https://tezos.com/developers). Grâce à elle, vous pouvez facilement interagir avec des contrats intelligents déployés sur Tezos. Elle est distribuée sous la forme d'une suite de paquets `npm` pour en réduire la taille et améliorer le temps de démarrage des applications. ## Qu'en est-il du développement de contrats intelligents ? Que vous soyez un développeur expérimenté ou débutant sur la blockchain, assurez-vous de jeter un œil à [Taqueria](https://taqueria.io), un projet de la même famille que Taquito. Taqueria est une suite d'outils de développement avec un *support riche* pour le développement de contrats intelligents et la gestion de projets sur Tezos, qui s'accorde parfaitement avec Taquito. ## Qu'est-ce qui est inclus dans Taquito? La cible première de Taquito sont les développeurs front-end Web3, c'est pourquoi il est livré avec les piles incluses, par exemple, un [modèle de projet avec React](https://github.com/ecadlabs/taquito-react-template) , un framework extensible, et de nombreuses autres utilités. Il peut être utilisé dans de nombreux contextes d'exécution, que ce soit en serverless, avec Node.js, Deno ou Electron, et bien d'autres, tout en gardant le nombre de dépendances au minimum. ## Qui utilise Taquito? Taquito est utilisé par **plus de 80% des DApps** dans l'écosystème Tezos. Il est facile à utiliser, [sa sécurité a été démontrée](https://bestpractices.coreinfrastructure.org/en/projects/3204#security) et [il est testé en permanence](https://github.com/ecadlabs/taquito/actions/workflows/main.yml) avec les nouvelles versions de Tezos (autant sur mainnet que sur les différents testnets). ## Pourquoi devrais-je utiliser Taquito ? Taquito fournit des abstractions pratique pour une multitude d'opérations récurrentes, y compris les interactions avec les wallets (avec une version qui inclut [WalletConnect2](https://docs.walletconnect.com/2.0) en préparation), le regroupage d'opérations, l'appel de contrats, les requêtes vers la blockchain, et bien plus. Taquito va protéger votre code contre les changements subtiles (et d'autres moins subtiles) qui sont apportés au protocol Tezos. Sans oublier notre communauté grandissante et accueillante qui est là pour vous aider ! ## Ok, je suis prêt ! Pour commencer rapidement avec Taquito, rendez-vous sur [Taquito QuickStart](https://tezostaquito.io/docs/quick_start). Si vous préférez démarrer avec un modèle, vous pouvez utiliser le [modèle de projet pour React](https://github.com/ecadlabs/taquito-react-template). Voulez-vous faire une contribution à Taquito ? Jetez un œil à ce lien : [Contribuer à Taquito](#contributors-getting-started). ## Versions de Node compatibles Taquito est compatible à l'heure actuelle avec les versions suivantes de Node.js®: | Version | Compatible?| | ---------------- | ---------- | | v12 LTS | ❌ | | v14 LTS | ❌ | | v16.13.1 | ✅ | | v16.13.2 | ❌ | | v16 LTS/Gallium | ✅ | | 17.3.x | ✅ | | v17.5.x | ❌ | | v18 LTS/Hydrogen | ✅ | Même si les autres versions fonctionnent en général, les versions ci-dessus sont les seules officiellement compatibles. ## Les réseaux de soutien pour la communauté Nous sommes des participants actifs et enthousiastes sur les réseaux de soutien suivants: - [ECAD Labs Discord Channel][discord] - [Tezos StackExchange][stackexchange] ## Organisation du projet Taquito est organisé comme un [monorepo](https://en.wikipedia.org/wiki/Monorepo) et il se compose de plusieurs paquets NPM qui sont [publiés sur npmjs.org](https://www.npmjs.com/package/@taquito/taquito) sous le pseudonyme `@taquito`. Chaque paquet contient son propre README que vous pouvez trouver dans le dossier correspondant à l'intérieur de `packages/`. | Paquets haut-niveau | Responsabilité | | -------------------------------------------------------------- | ------------------------------------------------------------ | | [@taquito/taquito](packages/taquito) | [Point d'entrée](https://en.wikipedia.org/wiki/Facade_pattern) vers les fonctionnalités bas-niveau des différents paquets | | Paquets bas-niveau | Responsabilité | | ---------------------------------------------------------------- | ------------------------------------------------------------- | | [@taquito/local-forging](packages/taquito-local-forging) | « Forge » locale : sérialisation des opérations Tezos en octets | | [@taquito/michelson-encoder](packages/taquito-michelson-encoder) | Créée les abstractions JS pour les contrats intelligents | | [@taquito/michel-codec](packages/taquito-michel-codec) | Convertit Michelson entre les différents formats, développe les macros, etc. | | [@taquito/remote-signer](packages/taquito-remote-signer) | Permet d'utiliser un signataire à distance, par exemple, https://signatory.io | | [@taquito/rpc](packages/taquito-rpc) | Librairie du client RPC : chaque endpoint du RPC a sa propre méthode | | [@taquito/signer](packages/taquito-signer) | Fournit une fonction pour signer des données avec les clés Tezos | | [@taquito/utils](packages/taquito-utils) | Fournit différentes utilités de codage et de décodage | | [@taquito/tzip12](packages/taquito-tzip12) | TZIP-12 permet de retrouver les métadonnées de NFT ou jetons | | [@taquito/tzip16](packages/taquito-tzip16) | TZIP-16 permet de retrouver les métadonnées de contrats et d'exécuter des vues hors-chaîne | | [@taquito/beacon-wallet](packages/taquito-beacon-wallet) | Implémentation de TZIP-10 pour une API de wallet | ## Documentation de l'API La documentation TypeDoc de l'API pour Taquito [est disponible ici](https://tezostaquito.io/typedoc). ## Stratégie de gestion des versions Les versions compatibles des paquets de Taquito sont prises en charge par les versions du protocol *existantes* et *futures* (bêta). Taquito utilise la [gestion des versions sémantique](TODO) (ou « SemVer »), mais avec un petit changement : le numéro de version *principal* que nous utilisons suit la dernière version de Tezos (cependant, les numéros *secondaires* et de *patch* suivent les conventions de SemVer). Par exemple, lors d'une publication passée, le protocol était à `004-...`, et `005-...` a été promu au travers du *processus de modification en chaîne* (une caractéristique unique de Tezos). À ce moment-là, la version actuelle de Taquito était `v4.0.0` et le travail a continué à partir de la version `v5.0.0-beta.1`. ### Gestion des publications Lorsqu'il devient évident que la proposition pour le prochain protocol va être acceptée, ET lorsque nous avons mis en place et testé l'interopérabilité avec le nouveau protocol, nous publions la nouvelles version (pour notre exemple, `v5.0.0-beta.1`) AVANT que la chaîne ne passe au protocol suivant. Il est essentiel que les paquets qui ont été mis à jour soient publiés avant que le protocol change pour que les développeurs qui utilisent Taquito puisse avoir le temps de mettre à jour leurs projets et de les tester. Pendant les mises à jour « majeures » de version, les API publiques de Taquito peuvent contenir des changements qui cassent les applications existantes, nous faisons de notre mieux pour que cela soit clair et nous l'incluons dans les notes de la publication. Veuillez noter que toutes les publications antérieurs sont *compatibles* avec les données sur la chaîne, en remontant jusqu'au *protocol de Génèse*. Le support pour les nœuds RPC de Tezos plus anciens est maintenu dans la mesure du possible, mais il est abandonné tôt ou tard. Nous vous encourageons à mettre à jour vos versions plus anciennes de Taquito et à nous contacter si vous avez des problèmes techniques qui en résultent. ## Publications Les publications sont enregistrées sur npmjs.org et la page des publications sur Github. Les mainteneurs signent toutes les publications officielles. Les publications (étiquettes Git et paquets NPM) sont signées soit par [keybase/jevonearth][2] soit par [keybase/simrob][3]. Veuillez [nous communiquer](TODO) *immédiatement* les publications qui ne sont pas signées ou qui sont signées avec d'autres clés. ## Comment démarrer en tant que contributeur Vous voulez apporter une contribution à Taquito ? C'est génial ! Veuillez lire ce qui suit. ### Mettre en place et construire un projet avec Taquito *Il est important de suivre les étapes suivantes dans l'ordre indiqué* * Installez `libudev-dev`, si vous développez sur GNU/Linux: `sudo apt-get install libudev-dev` *Ce paquet contient des fichiers bas-niveau nécessaires pour compiler avec `libudev-*`.* * Installez/utilisez une version approprié de **Node.js** (_comme indiqué ci-dessus_), par exemple : `nvm use lts/gallium` * Installez `lerna` **globalement** (il est utilisé par notre système de construction extrêmement rapide basé sur nx): `npm install --global lerna` ### Mettre en place et construire Taquito Maintenant que les programmes prérequis ont été installés, lancez les commandes suivantes : ```sh $ npm clean-install ... $ npm run build ... ``` Si tout se passe bien, la dernière étape consiste à lancer les tests d'unité, qui devraient tous passer: ```sh $ npm run test ``` ### PIÈGES au moment de la construction ! * **Ne supprimez pas les `node_modules/` manuellement, car cela va embrouiller le système de construction** Le système de construction de Taquito est basé sur `nx` qui utilise largement le cache, veuillez plutôt utiliser `npm run clean`. * **N'utilisez pas `npm install`, car cela va mettre à jour le fichier `package.json` de manière inutile.** La commande `npm clean-install` (ou simplement `npm ci`) produit une installation stable avec toutes les dépendances et suit le `package-lock.json`. Cela vous assurera une construction déterministe et répétable. En plus, c'est de 2 à 10 fois plus rapide que `npm install`, hourra ! ### Cibles/scripts de commandes npm utiles Veuillez vous reporter à la section « scripts » du `package.json`. Voici quelques cibles parmi les plus communes : * `npm run clean` : supprime de manière récursive tous les artefacts de la construction * `npm run test` : lance les tests d'unité * `npm run build` : génère les paquets, les typings, et crée les TypeDocs pour tous les paquets * `npm run lint` : lance le linter (`eslint`) * `npm run example` : lance une démo d'application Node.js qui présente toutes les fonctionnalités ### Lancer les tests d'intégration Les tests d'intégration de Taquito se trouvent dans le dossier `integration-tests/`. Veuillez vous reporter au fichier README.md dans ce dossier pour de plus amples informations. #### Modifier la source de Taquito Après avoir apporté vos changements à Taquito, lancez le linter et la suite des tests d'unité, cela vous permettra de savoir si vos tests fonctionnent bien avec le reste du projet : ```sh npm run lint npm run test npm run commit ``` Veuillez utiliser `npm run commit` pour votre dernier commit avant de l'enregistrer, car cela va produire comme par magie le format correct pour le commit. Lancez le linter et les tests une dernière fois avant que le commit soit effectué. ### Lancer le site Internet en local Vous pourriez vouloir contribuer aux exemples de code live, cette section vous explique comment faire. Veuillez noter que le [site Internet][4] de Taquito est construit avec [Docusaurus][5]. Pour lancer le site Internet de Taquioto en local en mode développement, lancez les commandes suivantes depuis la racine : * Lancez `npm clean-install` * Lancez `npm -w @taquito/website start` ## Contributions / Signalements des problèmes ### Problèmes de sécurité Pour signaler un problème de sécurité, veuillez nous contacter sur security@ecadlabs.com or via [keybase/jevonearth][2] sur keybase.io. Vous pouvez aussi _coder_ votre signalement de bug en utilisant la clé de [keybase/jevonearth][2]. ### Bug ou demandes de fonctionnalités Veuillez utiliser notre [tracker de problèmes sur Github](https://github.com/ecadlabs/taquito/issues) pour signaler un bug ou demander une nouvelle fonctionnalité. Pour contribuer, veuillez vérifier le tracker pour voir s'il n'existe pas déjà un signalement pour la contribution que vous voulez faire. S'il n'y en a pas, veuillez en créer un avant de soumettre une pull request avec votre contribution. Pour que votre contribution soit accepté, vous devez garder la documentation complète, les tests d'unité et les tests d'intégration comme requis. Vous pouvez soumettre une pull request en tant que « travail en cours » pour qu'elle soit vérifiée, les commentaires sont toujours les bienvenus ! --- ## Clause de non-responsabilité CE LOGICIEL EST FOURNI PAR LES DÉTENTEURS DU COPYRIGHT ET LES CONTRIBUTEURS « TEL QUEL » ET TOUTES LES GARANTIES FORMELLES OU IMPLICITES, Y COMPRIS, MAIS SANS S'Y LIMITER, **TOUTES** GARANTIES IMPLICITES DE QUALITÉ MARCHANDE, **D'ABSENCE DE CONTREFAÇON** OU D'ADÉQUATION À UN USAGE PARTICULIER SONT **ENTIÈREMENT** DÉCLINÉES. EN AUCUN CAS LE PROPRIÉTAIRE DU COPYRIGHT OU SES CONTRIBUTEURS **OU TOUTE PARTIE OU ENTITÉ AFFILIÉE** NE SERONT RESPONSABLES DE TOUT DOMMAGE DIRECT, INDIRECT, ACCESSOIRE, SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF (Y COMPRIS, MAIS SANS S'Y LIMITER, L'ACQUISITION DE BIENS OU SERVICES DE SUBSTITUTION ; LA PERTE D'UTILISATION, DE DONNÉES OU DE PROFITS ; OU L'INTERRUPTION D'ACTIVITÉ) QUELLE QU'EN SOIT LA CAUSE ET SUR TOUTE THÉORIE DE RESPONSABILITÉ, QU'ELLE SOIT CONTRACTUELLE, STRICTE OU DÉLICTUELLE (Y COMPRIS LA NÉGLIGENCE OU AUTRE) RÉSULTANT DE QUELQUE MANIÈRE QUE CE SOIT DE L'UTILISATION DE CE LOGICIEL, MÊME SI AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES. **LES PERSONNES UTILISANT CE LOGICIEL LE FONT ENTIÈREMENT À LEURS PROPRES RISQUES.** SI LA TRADUCTION EN FRANÇAIS DE LA CLAUSE PRÉSENTE VENAIT À CONTREDIRE L'ORIGINALE EN ANGLAIS, LA CLAUSE DE NON-RESPONSABILITÉ EN ANGLAIS EST PRIORITAIRE ET LA SEULE SOURCE NON-CONTESTABLE. ## Mentions spéciales Un remerciement spécial à ces librairies qui ont été une excellente source de références pendant le développement de Taquito : - https://github.com/AndrewKishino/sotez - https://github.com/TezTech/eztz [0]: https://github.com/ecadlabs/tezos-indexer-api [2]: https://keybase.io/jevonearth [3]: https://keybase.io/simrob [4]: https://tezostaquito.io [5]: https://docusaurus.io/ [stackexchange]: https://tezos.stackexchange.com/questions/tagged/taquito [discord]: https://discord.com/channels/934567382700146739/939205889901092874