Note: As of January 2023, ConseilJS is maintained on a best effort basis for Tezos: https://discourse.cryptonomic.tech/t/psa-conseil-conseiljs-will-now-be-maintained-on-a-best-effort-basis-for-tezos/235/2
A library for building decentralized applications in Typescript and Javascript, currently focused on the Tezos platform.
ConseilJS connects to Tezos nodes for live chain data and operations and to Conseil servers for high-performance analytics on blockchain data. Internally, Cryptonomic uses Nautilus for infrastructure deployments of these services. This is the library at the core of our products – Arronax, Periscope, Harpoon and certainly Galleon. There are ReasonML bindings as well.
Cryptonomic offers an infrastructure service - Nautilus Cloud which enables quick access to the Tezos platform along with products that make it easier build on it.
As of version 5.0.0, ConseilJS has been split into three parts: this library, which is considered to be the core, ConseilJS-softsigner and ConseilJS-ledgersigner. This was done in an effort to make the library more portable across different environments. If neither of these additional modules meet your needs, the Signer
and KeyStore
interfaces can be implemented separately. In addition to a Signer
and a KeyStore
, fetch
and logger
objects are required to be provided, see below.
For more details on how to use these libraries see their respective readme files: ConseilJS-core, ConseilJS-softsigner, ConseilJS-ledgersigner. There is also an AWS KMS signer that is compatible with ConseilJS, maintained by @tacoinfra.
Add our NPM package to your project and a signing library.
npm i conseiljs
npm i conseiljs-softsigner
import fetch from 'node-fetch';
import * as log from 'loglevel';
import { registerFetch, registerLogger, Signer, TezosMessageUtils } from 'conseiljs';
import { KeyStoreUtils, SoftSigner } from 'conseiljs-softsigner';
const logger = log.getLogger('conseiljs');
logger.setLevel('debug', false);
registerLogger(logger);
registerFetch(fetch);
let signer: Signer;
const keyStore = await KeyStoreUtils.restoreIdentityFromSecretKey('edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH');
signer = await SoftSigner.createSigner(TezosMessageUtils.writeKeyWithHint(keyStore.secretKey, 'edsk'), -1);
We have a complete React application tutorial for you to check out.
Project honeybadger, which is the basis for Galleon Mobile us built with ConseilJS as well. Due to limitations of react-native we re-implemented some of the necessary functionality into a separate module.
<html>
<head>
<script src="https://cdn.jsdelivr.net/gh/cryptonomic/conseiljs/dist-web/conseiljs.min.js"
integrity="sha256-RsfjLoUXxZo1G4OGSlIuZEkSkVnlqn1eMvAYXwYwXXnnfMyiYg/PNWqjv4oWA2tb"
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/gh/cryptonomic/conseiljs-softsigner/dist-web/conseiljs-softsigner.min.js"
integrity="sha384-V1iaajn0x/SMFcZ9Y/xNQmqQSKyll6Dzt27U6OWiv8NdbHTVaHOGHdQ8g0G68HPd"
crossorigin="anonymous"></script>
<script>
//conseiljssoftsigner.
</script>
</head>
<body>
...
</body>
</html>
The web version sets fetch and logger internally to window.fetch
and console
respectively.
A fully functional sample html page is available too.
We have ready-to-use examples to copy/paste.
There are many ways to contribute to this project. You can develop applications or dApps with it. You can submit bug reports or feature requests. You can ask questions about it on r/Tezos or the Tezos StackExchange. We certainly welcome pull requests as well.