# Tool

## Tool Index

Here, we provide a list of tools available for your development needs. They are sorted by context. If you're actively maintaining a tool that might be useful to other Polkadot, Kusama or Substrate developers, feel free to [add it in](https://wiki.polkadot.network/docs/contributing).

### Wallets[​](https://wiki.polkadot.network/docs/build-tools-index#wallets) <a href="#wallets" id="wallets"></a>

Please see the [Wallets](https://wiki.polkadot.network/docs/build-wallets) page.

### Block Explorers[​](https://wiki.polkadot.network/docs/build-tools-index#block-explorers) <a href="#block-explorers" id="block-explorers"></a>

* [Polkadot-JS Apps Explorer](https://polkadot.js.org/apps/#/explorer) - Polkadot dashboard block explorer. Supports dozens of other networks, including Kusama, Westend, and other remote or local endpoints. [Access via IPFS](https://ipfs.io/ipns/dotapps.io)
* [Polkascan](https://polkascan.io/) - Blockchain explorer for Polkadot, Kusama, and other related chains. [Repo](https://github.com/polkascan/polkascan-os).
* [Subscan](https://subscan.io/) - Blockchain explorer for Substrate chains. [Repo](https://github.com/itering/subscan-essentials).
* [DotScanner](https://dotscanner.com/?utm_source=polkadot_wiki) - Polkadot & Kusama Blockchain explorer.

### Network Monitoring & Reporting[​](https://wiki.polkadot.network/docs/build-tools-index#network-monitoring--reporting) <a href="#network-monitoring--reporting" id="network-monitoring--reporting"></a>

* [Polkadot Telemetry Service](https://telemetry.polkadot.io/) - Network information including what nodes are running the chain, what software versions they are running, sync status, and location.
* [Polkabot](https://gitlab.com/Polkabot) - Polkadot network monitoring and reporting using Matrix (Riot / Element) chat. Users may create custom bot plugins. [Blogpost](https://medium.com/polkadot-network/polkabot-a3dba18c20c8).
* [Ryabina's Telegram Bot](https://github.com/Ryabina-io/substratebot) - A Telegram bot for monitoring on-chain events of Substrate chains. [GitHub Repository](https://gitlab.com/Polkabot/polkabot)
* [PolkaStats](https://polkastats.io/) - Polkadot network statistics (includes Kusama). Shows network information and staking details from validators and intentions. [GitHub Repository](https://github.com/Colm3na/polkastats-v2/).
* [Panic](https://github.com/SimplyVC/panic_polkadot) - A node monitoring and alert server for validators.
* [OpenWeb3/Guardian](https://github.com/open-web3-stack/guardian) - A CLI tool and JS library to monitor on chain states and events.

### Clients[​](https://wiki.polkadot.network/docs/build-tools-index#clients) <a href="#clients" id="clients"></a>

* [Polkadot](https://github.com/paritytech/polkadot) - The original Rust implementation of the Polkadot Host.
* [Kagome](https://github.com/soramitsu/kagome) - A C++ Polkadot implementation of the Polkadot Host developed by [Soramitsu](https://github.com/soramitsu).
* [Gossamer](https://github.com/ChainSafe/gossamer) - A Go implementation of the Polkadot Host developed by [ChainSafe Systems](https://chainsafe.io/).
* [TX Wrapper](https://github.com/paritytech/txwrapper) - Helper functions for offline transaction generation.

### Tools[​](https://wiki.polkadot.network/docs/build-tools-index#tools) <a href="#tools" id="tools"></a>

* [Substrate](https://github.com/paritytech/substrate) - Blockchain development platform written in Rust. The Rust version of the Polkadot Host is being built with Substrate.
* [Substrate Docs](https://docs.substrate.io/) - Comprehensive documentation and tutorials for building a blockchain using Substrate.
* [Substrate VSCode plugin](https://github.com/paritytech/vscode-substrate).
* [Substrate Debug Kit](https://github.com/paritytech/substrate-debug-kit) - A collection of debug tools and libraries around substrate chains. Includes tools to calculate NPoS elections offline, disk usage monitoring, test templates against chain state and other pallet-specific helper.
* [Diener](https://crates.io/crates/diener) - A tool for easy changing of Polkadot or Substrate dependency versions.
* [Polkadot Launch](https://github.com/shawntabrizi/polkadot-launch) - A tool to easily launch custom local parachain-enabled Polkadot versions.
* [Halva](https://github.com/halva-suite/halva) - A Truffle-inspired local development environment for Substrate.
* [Fork-off Substrate](https://github.com/maxsam4/fork-off-substrate) - Copies the state of an existing chain into your local version and lets you further experiment on it.
* [srtool](https://www.chevdor.com/tags/srtool/) - A tool for verifying runtime versions against on-chain proposal hashes.
* [sub-bench](https://github.com/nikvolf/sub-bench) - A tool to spam your node with transactions for the sake of benchmarking.
* [substrate-devhub-utils](https://github.com/danforbes/substrate-devhub-utils) - A set of JavaScript utilities making life with Substrate a little easier.
* [sub-flood](https://github.com/NikVolf/sub-flood) - A tool to benchmark Substrate by flooding it with requests.

### UI[​](https://wiki.polkadot.network/docs/build-tools-index#ui) <a href="#ui" id="ui"></a>

* [Polkadash](https://github.com/Swader/polkadash) - VueJS-based starter kit for custom user interfaces for Substrate chains. [Tutorials](https://dotleap.com/tag/tutorial/).
* [Polkadot JS Apps UI](https://github.com/polkadot-js/apps) - Repository of the [polkadot.js.org/apps](https://polkadot.js.org/apps) UI.
* [Substrate Front-end Template](https://github.com/substrate-developer-hub/substrate-front-end-template) - ReactJS-based starter UI for custom user interfaces for Substrate chains.
* [Polkadot JS Browser Extension](https://github.com/polkadot-js/extension) - Key management in a Chrome extension.

### Libraries[​](https://wiki.polkadot.network/docs/build-tools-index#libraries) <a href="#libraries" id="libraries"></a>

#### Polkadot-JS Common[​](https://wiki.polkadot.network/docs/build-tools-index#polkadot-js-common) <a href="#polkadot-js-common" id="polkadot-js-common"></a>

Polkadot-JS Common provides various utility functions that are used across all projects in the `@polkadot` namespace and is split into a number of internal utility packages. The documentation and usage instructions are provided at [Polkadot-JS/Common API Documentation](https://polkadot.js.org/common/).

* [@polkadot/keyring](https://polkadot.js.org/common/keyring/) This allows you to create and load accounts in JavaScript. It is helpful for creating wallets or any application that will require the user to write to chain. [Examples](https://polkadot.js.org/docs/keyring/start/create).
* [@polkadot/util](https://polkadot.js.org/common/util/) Utility functions like checking if a string is hex-encoded.
* [@polkadot/util-crypto](https://polkadot.js.org/common/util-crypto/) Useful cryptographic utilities for developing with Polkadot.

#### CLI Tools[​](https://wiki.polkadot.network/docs/build-tools-index#cli-tools) <a href="#cli-tools" id="cli-tools"></a>

* [@polkadot/api-cli](https://github.com/polkadot-js/tools/tree/master/packages/api-cli) Command line interface for the polkadot API. [Documentation](https://polkadot.js.org/docs/api/start).
* [@polkadot/monitor-rpc](https://github.com/polkadot-js/tools/tree/master/packages/monitor-rpc) An RPC monitor for Polkadot. See the RPC tools below for additional information.
* [@polkadot/signer-cli](https://github.com/polkadot-js/tools/tree/master/packages/signer-cli) A Tool to construct, sign, and broadcast transactions. Signing can be done offline.
* [Polkadot API Cpp](https://github.com/usetech-llc/polkadot_api_cpp) - A С++ API for Polkadot, can build `clip`, a command line tool.
* [Subkey](https://docs.substrate.io/v3/tools/subkey/) - Command line utility for generating and inspecting key pairs.

#### WASM[​](https://wiki.polkadot.network/docs/build-tools-index#wasm) <a href="#wasm" id="wasm"></a>

WebAssembly related tools and projects.

* [ink!](https://github.com/paritytech/ink/) - An eDSL to write WebAssembly based smart contracts using the Rust programming language.
* [parity-wasm](https://github.com/paritytech/parity-wasm) - Low-level WebAssembly format library.
* [wasm-utils](https://github.com/paritytech/wasm-utils) - Collection of WebAssembly utilities used in pwasm-ethereum and substrate contract development.
* [wasmi](https://github.com/paritytech/wasmi) - A WebAssembly interpreter conceived as a component of parity-ethereum (Ethereum-like contracts in Wasm) and Substrate.

#### RPC and API Tools[​](https://wiki.polkadot.network/docs/build-tools-index#rpc-and-api-tools) <a href="#rpc-and-api-tools" id="rpc-and-api-tools"></a>

* [@polkadot/api/rpc-provider](https://github.com/polkadot-js/api/tree/master/packages/rpc-provider) Demonstrates how the JS tools interact with the node over RPC.
* [RPC documentation](https://polkadot.js.org/docs/substrate/rpc) - Documentation of Substrate RPC methods.
* [Polkadot API Server by SimplyVC](https://github.com/SimplyVC/polkadot_api_server) - A wrapper around the Polkadot API which makes it easier to make Polkadot API calls from any programming language.
* [Go: Subscan API](https://github.com/itering/substrate-api-rpc) - Go API for Polkadot.
* [C++ Polkadot API](https://github.com/usetech-llc/polkadot_api_cpp) - С++ API for Polkadot.
* [.NET Polkadot API](https://github.com/usetech-llc/polkadot_api_dotnet) - Polkadot Substrate API for .NET.
* [Python Polkadot API](https://github.com/polkascan/py-substrate-interface) - Polkadot library for Python.
* [GSRPC](https://github.com/centrifuge/go-substrate-rpc-client/) - Substrate RPC client in Go, a.k.a. GSRPC.
* [Substrate API Sidecar](https://github.com/paritytech/substrate-api-sidecar) - An HTTP wrapper for Substrate, abstracting some complex RPC calls into simple REST calls.
* [Subxt](https://github.com/paritytech/substrate-subxt) - A Rust library to submit extrinsics to a Substrate node via RPC.

#### SCALE Codec[​](https://wiki.polkadot.network/docs/build-tools-index#scale-codec) <a href="#scale-codec" id="scale-codec"></a>

The [SCALE](https://docs.substrate.io/v3/advanced/scale-codec/) (Simple Concatenated Aggregate Little-Endian) Codec is a lightweight, efficient, binary serialization and deserialization codec.

It is designed for high-performance, copy-free encoding and decoding of data in resource-constrained execution contexts, such as the Substrate runtime. It is not self-describing in any way and assumes the decoding context has all type knowledge about the encoded data.

It is used in almost all communication to/from Substrate nodes, so implementations in different languages exist:

* [Ruby](https://github.com/itering/scale.rb)
* [Rust](https://github.com/paritytech/parity-scale-codec)
* [Go](https://github.com/itering/scale.go)
* [C++](https://github.com/soramitsu/kagome/tree/master/core/scale)
* [TypeScript](https://github.com/polkadot-js/api)
* [AssemblyScript](https://github.com/LimeChain/as-scale-codec)
* [Haskell](https://github.com/airalab/hs-web3/tree/master/src/Codec)
* [Java](https://github.com/emeraldpay/polkaj)
* [Python](https://github.com/polkascan/py-scale-codec)

### Data Crawling and Conversion[​](https://wiki.polkadot.network/docs/build-tools-index#data-crawling-and-conversion) <a href="#data-crawling-and-conversion" id="data-crawling-and-conversion"></a>

The following tools help you extract and structure data from a Substrate node.

* [Polkascan PRE Harvester](https://github.com/polkascan/polkascan-pre-harvester) ([matching explorer for harvested data](https://github.com/polkascan/polkascan-pre-explorer-gui)) - Transforms raw blockchain data into relational data.
* [Parity's Substrate Archive](https://github.com/paritytech/substrate-archive) - Can be run alongside a Substrate node to archive all blocks, state, and extrinsic data into PostgreSQL database.
* [Subsquid Archives](https://github.com/subsquid/squid-archive-setup) - Generate a GraphQL database from a Substrate chain's data with rich filtering and querying capabilities. The data (events, extrinsics, blocks) for most parachains is readily available though public archive GraphQL endpoints, kept in [Squid Archive Registry](https://github.com/subsquid/archive-registry/blob/main/archives.json)
* [Polka-store](https://github.com/TheGoldenEye/polka-store) - A tool which scans a Substrate chain and stores balance-relevant transactions in an SQLite database.
* [Substrate-graph](https://github.com/playzero/substrate-graph) - A compact indexer for Substrate based nodes providing a GraphQL interface.
