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.

nighthawk-apps/xchainjs-lib

 
 

Repository files navigation

xchainjs logo

XChainJS - xchainjs Library

⭐ Developed / Developing by xchainjs

XChainJS is a library with a common interface for multiple blockchains, built for simple and fast integration for wallets and more.

License

License

Telegram group: https://t.me/xchainjs
Homepage: https://xchainjs.org
Live Examples: https://dev.thorchain.org/thorchain-dev/xchainjs-integration-guide/query-package
Docs: http://docs.xchainjs.org/overview
Integration guide: https://dev.thorchain.org/thorchain-dev/xchainjs-integration-guide/overview

Interface

The interface is defined here.

Common Interface

A single common interface:

  1. Initialise with a valid BIP39 phrase and specified network (testnet/mainnet)
  2. Get the address, with support for BIP44 path derivations (default is Index 0)
  3. Get the balance (UTXO or account-based)
  4. Get transaction history for that address
  5. Make a simple transfer
  6. Get blockchain fee information (standard, fast, fastest)

Packages - Thorchain

Packages - Mayachain

Working Examples

Tools / TxJammer

Advanced Features

For wallets that need even more flexibility (smart contract blockchains) the client can be retrieved and the wallet is then free to handle directly.

XChainJS uses following libraries, frameworks and more:

Test

Tests

Make sure Jest and Lerna is installed

yarn add --dev jest lerna

Start with

yarn
yarn build

unit

yarn test

Integration Tests

There are a suite of integration test which work against testnet. You will need to specify a phrase which controls testnet coins

export PHRASE="secret phrase here"
yarn e2e

Development

lerna bootstrap

Releasing

To test the publish via a dryrun:

NPM_USERNAME="test123" NPM_PASSWORD="test123" NPM_EMAIL="test123@test123.com" ./dryrun_publish.sh

To publish:

NPM_USERNAME="TODO Use real npm username" NPM_PASSWORD="TODO Use real npm password" NPM_EMAIL="TODO Use real npm email" ./publish.sh

Contributing

Please ask in the telegram group to be added as a contributor.

Bug Reports

Please submit an issue and flag in the telegram group.

About

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

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 87.9%
  • JavaScript 11.7%
  • Shell 0.4%