IOTA TypeScript SDK Quick Start
The IOTA TypeScript SDK is a modular library of tools for interacting with the IOTA blockchain. Use it to send queries to RPC nodes, build and sign transactions, and interact with a IOTA or local network.
Installation
- npm
- Yarn
- pnpm
npm i @iota/iota-sdk
yarn add @iota/iota-sdk
pnpm add @iota/iota-sdk
Network locations
The following table lists the locations for IOTA networks.
IOTA Testnet
Base Token | IOTA Token (no value) |
---|---|
Explorer URL |
|
JSON RPC URL |
|
Indexer RPC |
|
GraphQL RPC |
|
RPC Websocket URL |
|
IOTA Devnet
Base Token | IOTA Token (no value) |
---|---|
Explorer URL |
|
JSON RPC URL |
|
Indexer RPC |
|
GraphQL RPC |
|
RPC Websocket URL |
|
IOTA Localnet
To create a local IOTA network, you can refer to Local Development page.
Base Token | IOTA Token |
---|---|
JSON RPC URL |
|
Indexer RPC |
|
GraphQL RPC |
|
RPC Websocket URL |
|
Use dedicated nodes/shared services rather than public endpoints for production apps. The public
endpoints maintained by the IOTA Foundation (api.<NETWORK>.iota.cafe:443
) are rate-limited, and support
only 100 requests per 30 seconds or so. Do not use public endpoints in production applications with
high traffic volume.
You can either run your own Full nodes, or outsource this to a professional infrastructure provider (preferred for apps that have high traffic). You can find a list of reliable RPC endpoint providers for IOTA on the IOTA Dev Portal using the Node Service tab.
Migrate to version 0.38.0
The IOTA TypeScript SDK was refactored beginning with version 0.38.0. If you are updating from an earlier version of the SDK, there are some changes you should consider when updating your code.
Module structure
The IOTA TypeScript SDK is now divided into modular components. Before version 0.38.0, you imported the complete SDK module. Now, you upload the individual packages of the SDK module instead. See the Module Packages section for the list of packages.
Signing transactions
Signing and sending transactions changes slightly with the deprecation of the Signer
pattern. For an example of transaction signing, see the
IOTA Programmable Transaction Blocks Basics topic.
Faucet requests
The ability to request IOTA from a faucet is not part of IotaClient
as it was with
JsonRpcProvider
. Instead, you must use the requestIotaFromFaucetV0
method from
@iota/iota-sdk/faucet
. The @iota/iota-sdk/faucet
import also provides a getFaucetHost
method
to retrieve the faucet URL for localnet
, testnet
, or devnet
networks.
import { getFaucetHost, requestIotaFromFaucetV0 } from '@iota/iota-sdk/faucet';
await requestIotaFromFaucetV0({
host: getFaucetHost('devnet'),
recipient: '<IOTA_ADDRESS>',
});
Module packages
The SDK contains a set of modular packages that you can use independently or together. Import just what you need to keep your code light and compact.
@iota/iota-sdk/client
- A client for interacting with IOTA RPC nodes.@iota/iota-sdk/bcs
- A BCS builder with pre-defined types for IOTA.@iota/iota-sdk/transaction
- Utilities for building and interacting with transactions.@iota/iota-sdk/keypairs/*
- Modular exports for specific KeyPair implementations.@iota/iota-sdk/verify
- Methods for verifying transactions and messages.@iota/iota-sdk/cryptography
- Shared types and classes for cryptography.@iota/iota-sdk/multisig
- Utilities for working with multisig signatures.@iota/iota-sdk/utils
- Utilities for formatting and parsing various IOTA types.@iota/iota-sdk/faucet
- Methods for requesting IOTA from a faucet.