> For the complete documentation index, see [llms.txt](https://docs.clusters.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clusters.xyz/integration-guides/registering-a-name/ethereum-networks.md).

# Ethereum Networks

We currently support the following networks for name registration

<table><thead><tr><th width="138">ID</th><th>Name</th></tr></thead><tbody><tr><td>1</td><td>Mainnet</td></tr><tr><td>10</td><td>Optimism</td></tr><tr><td>56</td><td>BNB Smart Chain</td></tr><tr><td>137</td><td>Polygon</td></tr><tr><td>8453</td><td>Base</td></tr><tr><td>42161</td><td>Arbitrum One</td></tr><tr><td>43114</td><td>Avalanche</td></tr><tr><td>11155111</td><td>Sepolia</td></tr><tr><td>17000</td><td>Holesky (testnet)</td></tr></tbody></table>

1. **Let the user decide what name they want**

<figure><img src="/files/0RvG1cLL8QtO3CQGhE23" alt=""><figcaption></figcaption></figure>

You'll want to provide some sort of input box that allows a user to see if the name they want is available.

2. **Check if the name is valid**

There are some restrictions for registering a name. In short, the name must fit in 32 bytes, must not have a space, or a /.

```javascript
import { isNameValid } from "@clustersxyz/sdk"

const validName = "clusters";
console.log(isNameValid(validName)); // true

const invalidName = "c/c/c/c";
console.log(isNameValid(invalidName)); // false
```

3. **Once you know the name is valid, make sure the name is not taken**

```javascript
import { isNameValid } from "@clustersxyz/sdk"

const name = "clusters";
const nameAvailability = await clusters.getNameAvailability([name]);
console.log(nameAvailability[0].isAvailable) // false
```

4. **Get the raw transaction data for the on-chain transaction**

This call will get you the on-chain transaction data to register the names you want at the minimum registration fee of 0.01 ETH. If you are on a chain, such as Polygon, that has a different gas token than ETH, you'll receive back the converted value in MATIC.

{% hint style="info" %}
If you want to impose a specific registration amount, you can do so in the names array. Check out the documentation on [getting the transaction data](/getting-started/javascript/registration.md#getregistrationtransaction-names-sender-network) to learn more.
{% endhint %}

```javascript
const names = [{ name: 'mynewname' }];
const signerAddress = '0x..123';
const chainId = '1';
const data = await clusters.getRegistrationTransactionEvm(names, signerAddress, chainId);
```

5. **You can now display the registration fee, bridge fee (if any), and what gas token the user will be paying with**

```typescript
import { formatUnits } from 'viem';

const registrationFee = formatUnits(BigInt(data.registrationFee), data.gasToken.decimals);
const bridgeFee = formatUnits(BigInt(data.bridgeFee), data.gasToken.decimals);

// Total Registration fee: 0.01 ETH
console.log(`Total Registration fee: ${registrationFee} ${data.gasToken.symbol}`);

// Bridge fee: 0 ETH
console.log(`Bridge fee: ${bridgeFee} ${data.gasToken.symbol}`);
```

6. **Submit the transaction**

```javascript
// https://viem.sh/docs/actions/wallet/sendTransaction

const hash = await walletClient.sendTransaction({
  data: data.tranasctionData.data, 
  account: signerAddress,
  to: data.tranasctionData.to,
  value: BigInt(data.transactionData.value)
})
```

7. **Track the status of the transaction**

Once the transaction is submitted, you can check when the registration has been processed. This is especially useful when bridging. An alternative method is pinging the `getNameAvailability()` function to see when the name becomes taken.

```javascript
const getStatus = await clusters.getTransactionStatus(hash);
console.log(getStatus.status) // finalized
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clusters.xyz/integration-guides/registering-a-name/ethereum-networks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
