Skip to content

Lightweight typescript library for cross-chain wallets. Connect with multiple blockchains via a common interface, with support for the minimum features necessary.


Notifications You must be signed in to change notification settings


Repository files navigation

Contributors Forks Stargazers Issues MIT License

XChainJS is a comprehensive toolkit designed to facilitate blockchain development by providing developers with a wide range of utilities, modules, and functionalities. Its purpose is to streamline the process of building decentralized applications (DApps), interacting with blockchain networks, and integrating blockchain technology into various projects.

The library aims to abstract away the complexities of blockchain development, allowing developers to focus on building innovative solutions without getting bogged down in low-level implementation details.


  • Simplify Blockchain Development: The primary purpose of the XchainJS library is to simplify blockchain development by providing developers with high-level abstractions and ready-to-use tools for common blockchain tasks.

  • Promote Interoperability: The library aims to promote interoperability by offering support for multiple blockchain protocols and standards, enabling developers to build applications that can interact seamlessly with different blockchain networks.

  • Empower Developers: By abstracting away the complexities of blockchain technology, the XchainJS library empowers developers of all skill levels to leverage the potential of blockchain in their projects, regardless of their expertise in cryptography or distributed systems.


Blockchain Interaction: The XchainJS library covers a wide range of functionalities related to interacting with blockchain networks, including transaction handling, wallet management, protocols interactions, and data querying. Protocol Support: It provides support for various blockchain protocols and standards, such as THORChain and MAYAProtocol.

Utilities and Tools: The library offers a collection of utilities and tools for common blockchain tasks, including cryptographic operations, address formatting, transaction parsing, and fetching data.

Key Features

Modularity: The xchain library is modular, allowing developers to pick and choose the modules and functionalities they need for their specific use cases. This modular approach promotes flexibility and scalability in blockchain development.

Abstraction: It abstracts away the complexities of blockchain technology, providing developers with high-level interfaces and abstractions that shield them from low-level implementation details.

Protocol Agnosticism: The library is designed to be protocol-agnostic, meaning it can support multiple blockchain protocols and standards. This allows developers to build applications that are not tied to a specific blockchain network.

Community Support: The xchain library is supported by a vibrant community of developers and contributors who actively maintain and improve the library, ensuring its relevance and usability in the rapidly evolving blockchain landscape.


To show different use cases and to facilitate developers experience with XChainJS, we have created a few examples on CodeSandbox where you will be able to see and fork our examples to create yours.

Follow the examples instructions to be able to start working with the library in just a few minutes.



More information about how to use each XChainJS package can be found on documentation


XChainJS is a library made up of different packages through which you can interact with different blockchains, data providers and protocols, or use its utility functions to simplify blockchain development.

Client packages

Blockchain clients with whom you can prepare, make and broadcast transactions, estimate transactions fees and get address balances.

Name Keystore support Ledger support Download
@xchainjs/xchain-bitcoin  ✅ npm
@xchainjs/xchain-ethereum  ✅ npm
@xchainjs/xchain-thorchain  ✅ npm
@xchainjs/xchain-mayachain  ✅ npm
@xchainjs/xchain-bitcoincash  ✅ npm
@xchainjs/xchain-litecoin  ✅ npm
@xchainjs/xchain-doge  ✅ npm
@xchainjs/xchain-dash  ✅ npm
@xchainjs/xchain-avax  ✅ npm
@xchainjs/xchain-arbitrum  ✅ npm
@xchainjs/xchain-bsc  ✅ npm
@xchainjs/xchain-kujira  ✅ npm
@xchainjs/xchain-cosmos  ✅ npm
@xchainjs/xchain-binance  ✅ npm

Utility packages

Utility packages

Name Download
@xchainjs/xchain-util npm
@xchainjs/xchain-client npm
@xchainjs/xchain-crypto npm

Data provider packages

Data providers to retrieve blockchain data

Name Download
@xchainjs/xchain-utxo-providers npm
@xchainjs/xchain-evm-providers npm

Protocol packages


Packages to interact with Thorchain

Name Download
@xchainjs/xchain-thornode npm
@xchainjs/xchain-midgard npm
@xchainjs/xchain-thorchain-query npm
@xchainjs/xchain-thorchain-amm npm


Packages to interact with Mayachain

Name Download
@xchainjs/xchain-mayanode npm
@xchainjs/xchain-mayamidgard npm
@xchainjs/xchain-mayachain-query npm
@xchainjs/xchain-mayachain-amm npm

Really cool packages

Poweful tool to build whatever you want...

Name Download
@xchainjs/xchain-wallet npm
@xchainjs/xchain-aggregator npm



Tx Jammer is a script which pushes a random amount of different types of transactions to stagenet to verify new stagenet releases


What to become a XChainJS contributor? Read our and be part of our contributor member. It's people like you that make XChainJS better.