Supported networks
Supported Networks
Typink comes with built-in support for many well-known Substrate networks, ready to use out of the box. You can also define and register your own custom networks.
Typink supports two types of smart contract platforms:
ink! v4/v5 (WASM) - Contracts running on
pallet-contracts
using WebAssemblyink! v6/Solidity (PolkaVM) - Contracts running on
pallet-revive
using PolkaVM
Smart Contract Support Overview
ink! v4/v5
WASM (pallet-contracts)
alephZero, astar, shiden, popTestnet, alephZeroTestnet, shibuyaTestnet
ink! v6 / Solidity
PolkaVM (pallet-revive)
popTestnet, passetHub, westendAssetHub, kusamaAssetHub
Note: popTestnet
supports both contract types.
Well-Known Supported Networks
Mainnet
Typink provides built-in support for the following mainnet networks:
ink! v4/v5 Networks (WASM, pallet-contracts)
alephZero
- Aleph Zeroastar
- Astarshiden
- Shiden
ink! v6/Solidity Networks (PolkaVM, pallet-revive)
kusamaAssetHub
- Kusama Asset Hub
Polkadot
polkadot
- Polkadot Relay ChainpolkadotAssetHub
- Polkadot Asset HubpolkadotPeople
- Polkadot People Chain
Kusama
kusama
- Kusama Relay ChainkusamaPeople
- Kusama People Chain
Other Networks
hydration
- Hydrationbasilisk
- Basiliskvara
- Vara Network
Example Usage:
import {
alephZero,
astar,
kusamaAssetHub,
polkadot,
kusama
} from 'typink';
// Example 1: Mix of contract and general Substrate networks
<TypinkProvider
supportedNetworks={[alephZero, astar, polkadot, kusama]}
defaultNetworkId={alephZero.id}>
<MyAppComponent />
</TypinkProvider>
// Example 2: PolkaVM contract network with general Substrate
<TypinkProvider
supportedNetworks={[kusamaAssetHub, kusama]}
defaultNetworkId={kusamaAssetHub.id}>
<MyAppComponent />
</TypinkProvider>
Testnet
Typink provides built-in support for the following testnet networks:
ink! v4/v5 Testnets (WASM, pallet-contracts)
popTestnet
- POP Network Testnet (supports both WASM and PolkaVM)alephZeroTestnet
- Aleph Zero TestnetshibuyaTestnet
- Shibuya Testnet
ink! v6/Solidity Testnets (PolkaVM, pallet-revive)
popTestnet
- POP Network Testnet (supports both WASM and PolkaVM)passetHub
- Passet HubwestendAssetHub
- Westend Asset Hub
Westend
westend
- Westend TestnetwestendPeople
- Westend People Chain
Paseo
paseo
- Paseo TestnetpaseoPeople
- Paseo People ChainpaseoAssetHub
- Paseo Asset HubpaseoHydration
- Paseo Hydration
Example Usage:
import {
popTestnet,
alephZeroTestnet,
shibuyaTestnet,
passetHub,
westendAssetHub,
westend,
paseo
} from 'typink';
// Example 1: ink! v4/v5 (WASM) contract networks
<TypinkProvider
supportedNetworks={[popTestnet, alephZeroTestnet, shibuyaTestnet]}
defaultNetworkId={popTestnet.id}>
<MyAppComponent />
</TypinkProvider>
// Example 2: ink! v6/Solidity (PolkaVM) contract networks
<TypinkProvider
supportedNetworks={[popTestnet, passetHub, westendAssetHub]}
defaultNetworkId={popTestnet.id}>
<MyAppComponent />
</TypinkProvider>
// Example 3: Mix of contract and general Substrate networks
<TypinkProvider
supportedNetworks={[popTestnet, westend, paseo]}
defaultNetworkId={popTestnet.id}>
<MyAppComponent />
</TypinkProvider>
Development
For local development with a Substrate node:
development
- Local Development Network (ws://127.0.0.1:9944)
Example Usage:
import { development } from 'typink';
<TypinkProvider
supportedNetworks={[development]}
defaultNetworkId={development.id}>
<MyAppComponent />
</TypinkProvider>
Define & Register Custom Network Info
You can define a new network info following the NetworkInfo
interface:
type NetworkId = string;
enum NetworkType {
DEVNET = 'devnet',
TESTNET = 'testnet',
MAINNET = 'mainnet',
}
enum JsonRpcApi {
LEGACY = 'legacy',
NEW = 'new',
}
interface NetworkInfo {
id: NetworkId;
type?: NetworkType; // default to mainnet
name: string;
logo: string;
providers: string[];
symbol: string;
decimals: number;
subscanUrl?: string;
pjsUrl?: string;
faucetUrl?: string;
jsonRpcApi?: JsonRpcApi; // default to new
chainSpec?: () => Promise<string>; // for light client support
relayChain?: NetworkInfo; // for parachains using light client
}
Basic Custom Network Example
For a basic custom network:
import { NetworkInfo, NetworkType } from 'typink';
const myNetwork: NetworkInfo = {
id: 'my_network',
type: NetworkType.MAINNET,
name: 'My Network',
logo: 'https://path/to/your/network/logo.png',
providers: ['wss://mynetwork.dev'],
symbol: 'MYN',
decimals: 12,
};
Custom Network with Light Client Support
To add light client support to your custom network:
import { NetworkInfo, NetworkType } from 'typink';
const myNetwork: NetworkInfo = {
id: 'my_network',
type: NetworkType.MAINNET,
name: 'My Network',
logo: 'https://path/to/your/network/logo.png',
providers: ['wss://mynetwork.dev'],
symbol: 'MYN',
decimals: 12,
chainSpec: async () => {
// Option 1: Use known chain from @substrate/connect-known-chains
return (await import('@substrate/connect-known-chains/polkadot')).chainSpec;
// Option 2: Fetch from URL
// const response = await fetch('https://example.com/chainspec.json');
// return await response.text();
// Option 3: Inline chain spec
// return '{"name":"MyChain","id":"my_chain",...}';
},
};
Custom Parachain with Light Client Support
For parachains, you must specify the relay chain:
import { NetworkInfo, NetworkType, polkadot } from 'typink';
const myParachain: NetworkInfo = {
id: 'my_parachain',
type: NetworkType.MAINNET,
name: 'My Parachain',
logo: 'https://path/to/your/parachain/logo.png',
providers: ['wss://myparachain.dev'],
symbol: 'MPC',
decimals: 12,
chainSpec: async () => {
const response = await fetch('https://myparachain.dev/chainspec.json');
return await response.text();
},
relayChain: polkadot, // Reference to the relay chain NetworkInfo
};
Register Custom Network
Once defined, register your custom network with Typink:
<TypinkProvider
supportedNetworks={[myNetwork]}
defaultNetworkId={myNetwork.id}>
<MyAppComponent />
</TypinkProvider>
You can also combine custom networks with built-in networks:
import { popTestnet, alephZero } from 'typink';
<TypinkProvider
supportedNetworks={[myNetwork, popTestnet, alephZero]}
defaultNetworkId={myNetwork.id}>
<MyAppComponent />
</TypinkProvider>
Network Properties
Required Properties
id
- Unique network identifiername
- Human-readable network namelogo
- URL to network logoproviders
- Array of RPC endpoint URLssymbol
- Native token symboldecimals
- Native token decimals
Optional Properties
type
- Network type (mainnet, testnet, devnet)subscanUrl
- Subscan explorer URLpjsUrl
- Polkadot.js Apps URLfaucetUrl
- Faucet URL for testnetsjsonRpcApi
- RPC API version (new or legacy)chainSpec
- Chain specification for light client supportrelayChain
- Parent relay chain for parachains (required for parachain light clients)
Last updated
Was this helpful?