> ## Documentation Index
> Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Adding Custom Solana, Bitcoin, and TON Networks

> Configure custom Solana, Bitcoin, and TON networks for the Unity SDK at initialization.

You can add Solana, Bitcoin, and TON networks that Dynamic does not support out of the box by passing lists of `GenericNetwork` objects to the `solNetworks`, `bitcoinNetworks`, and `tonNetworks` properties in `ClientProps` when initializing the SDK.

<Warning>
  The `solNetworks`, `bitcoinNetworks`, and `tonNetworks` lists replace the Solana, Bitcoin, and TON networks enabled in your Dynamic dashboard for this session. Pass the full list of networks you want the SDK to use.
</Warning>

## Example

The following example sets Solana Mainnet and Devnet, Bitcoin Mainnet, and TON Mainnet as supported networks.

```csharp theme={"system"}
using System.Collections.Generic;
using DynamicSDK.Core;
using DynamicSDK.Models;

var solNetworks = new List<GenericNetwork>
{
    new GenericNetwork
    {
        BlockExplorerUrls = new List<string> { "https://explorer.solana.com" },
        ChainId = "solana:101",
        IconUrls = new List<string> { "https://app.dynamic.xyz/assets/networks/sol.svg" },
        Name = "Solana Mainnet",
        NativeCurrency = new NativeCurrency { Decimals = 9, Name = "Sol", Symbol = "SOL" },
        NetworkId = 101,
        RpcUrls = new List<string> { "https://api.mainnet-beta.solana.com" },
        VanityName = "Solana Mainnet"
    },
    new GenericNetwork
    {
        BlockExplorerUrls = new List<string> { "https://explorer.solana.com/?cluster=devnet" },
        ChainId = "solana:103",
        IconUrls = new List<string> { "https://app.dynamic.xyz/assets/networks/sol.svg" },
        Name = "Solana Devnet",
        NativeCurrency = new NativeCurrency { Decimals = 9, Name = "Sol", Symbol = "SOL" },
        NetworkId = 103,
        RpcUrls = new List<string> { "https://api.devnet.solana.com" },
        VanityName = "Solana Devnet"
    }
};

var bitcoinNetworks = new List<GenericNetwork>
{
    new GenericNetwork
    {
        BlockExplorerUrls = new List<string> { "https://mempool.space" },
        ChainId = "bip122:000000000019d6689c085ae165831e93",
        IconUrls = new List<string> { "https://app.dynamic.xyz/assets/networks/btc.svg" },
        Name = "Bitcoin Mainnet",
        NativeCurrency = new NativeCurrency { Decimals = 8, Name = "Bitcoin", Symbol = "BTC" },
        NetworkId = 0,
        RpcUrls = new List<string> { "https://YOUR_BTC_RPC_URL" },
        VanityName = "Bitcoin"
    }
};

var tonNetworks = new List<GenericNetwork>
{
    new GenericNetwork
    {
        BlockExplorerUrls = new List<string> { "https://tonscan.org" },
        ChainId = "ton:-239",
        IconUrls = new List<string> { "https://app.dynamic.xyz/assets/networks/ton.svg" },
        Name = "TON Mainnet",
        NativeCurrency = new NativeCurrency { Decimals = 9, Name = "Toncoin", Symbol = "TON" },
        NetworkId = -239,
        RpcUrls = new List<string> { "https://toncenter.com/api/v2/jsonRPC" },
        VanityName = "TON Mainnet"
    }
};

var props = new ClientProps
{
    environmentId = "REPLACE_WITH_YOUR_ENV_ID",
    appOrigin = "https://your-app.com",
    solNetworks = solNetworks,
    bitcoinNetworks = bitcoinNetworks,
    tonNetworks = tonNetworks
};

DynamicSDK.DynamicSDK.Init(props);
```

<Note>
  In the `GenericNetwork` constructor, `chainId` and `networkId` accept an `int` or a `string`. `decimals` is a `double`. `chainName`, `lcdUrl`, `nameService`, `privateCustomerRpcUrls`, and `vanityName` are optional.
</Note>

## Type Reference

### GenericNetwork

| Attribute              | Type              | Required/Optional |
| ---------------------- | ----------------- | ----------------- |
| blockExplorerUrls      | `List<string>`    | Required          |
| chainId                | `int` or `string` | Required          |
| iconUrls               | `List<string>`    | Required          |
| name                   | `string`          | Required          |
| nativeCurrency         | `NativeCurrency`  | Required          |
| networkId              | `int` or `string` | Required          |
| privateCustomerRpcUrls | `List<string>?`   | Optional          |
| rpcUrls                | `List<string>`    | Required          |
| vanityName             | `string?`         | Optional          |

### NativeCurrency

| Attribute | Type      | Required/Optional |
| --------- | --------- | ----------------- |
| decimals  | `double`  | Required          |
| denom     | `string?` | Optional          |
| name      | `string`  | Required          |
| symbol    | `string`  | Required          |

## Next Steps

* [Network Management](/docs/unity/wallets/general/network-management) - Switch networks and read the current network
* [Send Solana Transactions](/docs/unity/wallets/solana/send-transactions) - Interact with the Solana blockchain
