Welcome, Web3 developer!
Taquito is a fast and lightweight TypeScript library to accelerate DApp development on the Tezos blockchain. With it, you can easily interact with Smart Contracts deployed to Tezos. It is distributed as a suite of individual npm packages, reducing bloat and improving application startup times.
Taquito is primarily targeted at Front-End Web3 developers, so it comes with batteries included, such as a React Template Project, an extensible framework, and many helpful utilities. It can be used in many environments, including Serverless, Node.js, Deno, and Electron, and has minimal dependencies.
Taquito is used by over 80% of DApps in the Tezos ecosystem. It is easy to use, proven secure, and tested continuously against current versions of Tezos (both Mainnet and Testnets).
Taquito provides convenient abstractions for a multitude of common operations, including wallet interactions (with WalletConnect/Reown in the works), batching operations, calling into contracts, querying the blockchain, and more. Taquito will shield your code from subtle - and not-so-subtle - changes to the underlying Tezos protocol.
...Not to mention our thriving, helpful, and welcoming community!
To get started with Taquito quickly, visit the Taquito QuickStart.
If you prefer a skeleton project, check out our Taquito React Template.
Do you wish to contribute to Taquito? See Contributors Getting Started below.
Taquito currently supports the following versions of Node.js®:
Version | Supported? |
---|---|
v14 LTS | ❌ |
v16 LTS/Gallium | ❌ |
v18 LTS/Hydrogen | ✅ |
v20 LTS/Iron | ✅ |
v22 | ✅ |
Other versions may work, but the above are officially supported. YMMV!
We are active and enthusiastic participants of the following community channels:
Taquito is a monorepo, composed of several npm packages that are published to npmjs.org under the @taquito
scope. Each package has its own README, found in its respective directory within packages/
.
High-Level Packages | Responsibility |
---|---|
@taquito/taquito | A Facade to lower-level, package-specific functionality |
Low-Level Packages | Responsibility |
---|---|
@taquito/local-forging | Local serialization (“forging”) of Tezos operations as bytes |
@taquito/michelson-encoder | Creates JS abstractions of Smart Contracts |
@taquito/michel-codec | Converts Michelson between forms, expands macros, etc |
@taquito/remote-signer | Provides the facility to use a remote signer, such as https://signatory.io |
@taquito/rpc | RPC client library, with a method for each RPC endpoint |
@taquito/signer | Provides functionality to sign data using Tezos keys |
@taquito/utils | Encoding/decoding utilities |
@taquito/tzip12 | TZIP-12 support (retrieving NFT/token metadata) |
@taquito/tzip16 | TZIP-16 support (retrieving contract metadata and executing off-chain views) |
@taquito/beacon-wallet | TZIP-10 implementation of a Wallet API |
@taquito/http-utils | Configure and customize HTTP requests |
@taquito/core | Provides parent/core types, classes, and interfaces for Taquito packages or external uses |
@taquito/sapling | Functions to prepare and read sapling transactions |
@taquito/contracts-library | Provides functionality to specify static data related to contracts |
@taquito/ledger-signer | Provides functionality for a Ledger signer provider |
@taquito/timelock | Functions to create and open timelocks |
@taquito/wallet-connect | Enables WalletConnect integration with the TezosToolkit’s wallet API |
TypeDoc API documentation for Taquito is available here.
Taquito supports the current and next (beta) protocol versions of Tezos.
We use Semantic Versioning with a twist: the Major version typically tracks the latest version of Tezos, while Minor and Patch follow standard SemVer rules.
For example, if the Tezos protocol is at 004-...
, and 005-...
is in the on-chain amendment process, Taquito might be at v4.0.0
for the current protocol and v5.0.0-beta.1
for the upcoming protocol.
When the next protocol proposal is likely to be promoted, and Taquito has been updated and tested against it, we release the next version (e.g., v5.0.0-beta.1
) before the chain switches. This gives DApp developers time to update and test their projects.
During these “Major” version updates, the Taquito public API may undergo breaking changes. We do our best to document these in release notes.
All prior Taquito releases remain backwards compatible with historical chain data, though older node RPC endpoints may eventually lose official support. We encourage you to update older versions of Taquito, and welcome any technical questions that arise during upgrades.
Releases are published to npmjs.org and appear on the GitHub Releases page. All official releases are signed by the Taquito maintainers. If you find an unsigned release or one signed by an unrecognized party, please let us know immediately.
Interested in contributing to Taquito? Wonderful! Read on to set up your environment.
Perform these steps in order.
-
Install libudev-dev (if on GNU/Linux):
- Ubuntu / Debian-based:
sudo apt-get install libudev-dev
- Fedora / RedHat-based:
sudo dnf install libudev-devel
- Ubuntu / Debian-based:
-
Install or use a compatible version of Node.js (see Supported Versions), for example:
nvm use lts/iron
-
Install Lerna globally (used by our Nx-based build system):
npm install --global lerna
Once prerequisites are installed, run:
npm clean-install
npm run build
If everything goes well, run the unit tests:
npm run test
All tests should pass successfully.
- Do not delete
node_modules/
manually – this confuses the build system. Usenpm run clean
instead. - Use
npm ci
(ornpm clean-install
) rather thannpm install
to ensure a deterministic installation that respectspackage-lock.json
. It’s also faster!
Refer to the top-level package.json
for available scripts. Common ones:
npm run clean
: Recursively deletes build artifactsnpm run test
: Runs the unit testsnpm run build
: Generates bundles, type definitions, and TypeDocs for all packagesnpm run lint
: Runs ESLintnpm run example
: Runs an example Node.js app demonstrating Taquito functionality
See the integration-tests/
directory for details. The README in that folder explains how to configure and run integration tests.
After making your changes:
npm run lint
npm run test
npm run commit
Use npm run commit
for your final commit to automatically format it according to our conventions. A final lint/test cycle will run before the commit is applied.
The Taquito website is built with Docusaurus. To run it locally:
npm clean-install
npm -w @taquito/website start
To report a security issue, please contact security@ecadlabs.com.
Use our GitHub Issue Tracker to report bugs or request features.
Before submitting a pull request, please ensure there’s an open issue describing your changes. Contributions require appropriate documentation and tests. Feel free to open a “work in progress” pull request for early feedback!
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE, ARE ENTIRELY DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNERS, CONTRIBUTORS, OR ANY AFFILIATED ENTITIES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION). THIS LIMITATION APPLIES UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PERSONS USING THIS SOFTWARE DO SO ENTIRELY AT THEIR OWN RISK.
Special thanks to these libraries, which have been excellent references for Taquito’s development: