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

# Resolver dominios .sol de Solana con métodos RPC de SNS

> Resuelve dominios .sol principales, busca nombres de wallets por lotes, lista dominios propios y encuentra propietarios con el RPC de Solana Tracker.

Usa los métodos RPC de SNS para convertir direcciones de wallet en nombres visibles `.sol` o para resolver un dominio a su propietario. Consulta dominios principales por lotes al mostrar una lista de holders o un leaderboard.

> [!NOTE]
>
> Cada método RPC de SNS cuesta **1 crédito** por llamada. Los handles de Twitter/X (`.twitter`) no están soportados.

| Objetivo | Método |
| - | - |
| Obtener el dominio `.sol` principal de una wallet | [`getPrimaryDomain`](https://docs.solanatracker.io/es/solana-rpc/http/getprimarydomain) |
| Resolver los dominios principales de muchas wallets | [`getMultiplePrimaryDomains`](https://docs.solanatracker.io/es/solana-rpc/http/getmultipleprimarydomains) |
| Listar todos los dominios `.sol` de una wallet | [`getAllDomains`](https://docs.solanatracker.io/es/solana-rpc/http/getalldomains) |
| Resolver `name.sol` a la wallet propietaria | [`resolveSolDomain`](https://docs.solanatracker.io/es/solana-rpc/http/resolvesoldomain) |

## Endpoint RPC

Todos los ejemplos usan JSON-RPC 2.0 sobre HTTP:

```bash theme={null}
https://rpc-mainnet.solanatracker.io/?api_key=YOUR_API_KEY
```

## Obtén el dominio principal de una wallet

Usa `getPrimaryDomain` para obtener el nombre visible `.sol` principal de la wallet.

```bash cURL theme={null}
curl "https://rpc-mainnet.solanatracker.io/?api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getPrimaryDomain",
    "params": ["9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p"]
  }'
```

```javascript JavaScript theme={null}
const rpcUrl = "https://rpc-mainnet.solanatracker.io/?api_key=YOUR_API_KEY";

const { result } = await fetch(rpcUrl, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "getPrimaryDomain",
    params: ["9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p"]
  })
}).then(r => r.json());

const label = result.value.domain ?? result.value.wallet;
console.log(label);
```

```python Python theme={null}
import requests

res = requests.post(
    "https://rpc-mainnet.solanatracker.io/?api_key=YOUR_API_KEY",
    json={
        "jsonrpc": "2.0",
        "id": 1,
        "method": "getPrimaryDomain",
        "params": ["9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p"]
    }
)

result = res.json()["result"]["value"]
print(result["domain"] or result["wallet"])
```

Cuando existe un dominio:

```json theme={null}
{
  "context": { "slot": 423867852, "apiVersion": "3.0.0" },
  "value": {
    "wallet": "9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p",
    "domain": "solanatracker.sol"
  }
}
```

Cuando no existe un dominio principal, `domain` es `null`:

```json theme={null}
{
  "context": { "slot": 423867852, "apiVersion": "3.0.0" },
  "value": {
    "wallet": "FMmaHPDL47V1gXsfh9WjgAT7Er3dfDvarQubTU1Jxc1r",
    "domain": null
  }
}
```

> [!TIP]
>
> En la UI, usa el dominio como etiqueta cuando exista y recurre a una dirección de wallet abreviada cuando `domain` sea `null`.

## Dominios principales por lotes

Usa `getMultiplePrimaryDomains` para una lista de wallets:

El método acepta hasta **100 wallets** y devuelve los resultados en el mismo orden que la lista de entrada.

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getMultiplePrimaryDomains",
  "params": [
    [
      "9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p",
      "FMmaHPDL47V1gXsfh9WjgAT7Er3dfDvarQubTU1Jxc1r"
    ]
  ]
}
```

Ejemplo de respuesta:

```json theme={null}
{
  "context": { "slot": 423867852, "apiVersion": "3.0.0" },
  "value": {
    "results": [
      {
        "wallet": "9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p",
        "domain": "solanatracker.sol"
      },
      {
        "wallet": "FMmaHPDL47V1gXsfh9WjgAT7Er3dfDvarQubTU1Jxc1r",
        "domain": null
      }
    ]
  }
}
```

Como la respuesta conserva el orden de entrada, puedes combinarla con tu lista de wallets por índice del array:

```javascript theme={null}
const wallets = [
  "9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p",
  "FMmaHPDL47V1gXsfh9WjgAT7Er3dfDvarQubTU1Jxc1r"
];

const { result } = await fetch(rpcUrl, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "getMultiplePrimaryDomains",
    params: [wallets]
  })
}).then(r => r.json());

const rows = wallets.map((wallet, i) => ({
  wallet,
  displayName: result.value.results[i].domain ?? `${wallet.slice(0, 4)}...${wallet.slice(-4)}`
}));
```

## Obtén todos los dominios de una wallet

Usa `getAllDomains` para listar los dominios `.sol` que posee una wallet.

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getAllDomains",
  "params": ["9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p"]
}
```

Respuesta:

```json theme={null}
{
  "context": { "slot": 423867852, "apiVersion": "3.0.0" },
  "value": {
    "wallet": "9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p",
    "domains": ["solanatracker.sol", "othername.sol"]
  }
}
```

Si la wallet no tiene dominios, `domains` es un array vacío.

## Resuelve un dominio a su propietario

Usa `resolveSolDomain` para resolver un nombre `.sol` a la wallet propietaria.

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resolveSolDomain",
  "params": ["solanatracker.sol"]
}
```

Respuesta:

```json theme={null}
{
  "context": { "slot": 423867852, "apiVersion": "3.0.0" },
  "value": {
    "domain": "solanatracker.sol",
    "owner": "9aoUCn5J4sxhvYERCVwVnakPQxyXTHQVXe86CUJYxY8p",
    "nameAccount": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"
  }
}
```

Si no se encuentra el dominio, `value` es `null`.

`resolveSolDomain` admite dominios raíz `.sol` como `name.sol` y subdominios de un nivel como `sub.parent.sol`.

## Ejemplo: helper de identidad de wallet

Este helper usa dominios principales para mostrar nombres y conserva la dirección de la wallet para enlazar, copiar o ejecutar transacciones.

```javascript theme={null}
function shortWallet(wallet) {
  return `${wallet.slice(0, 4)}...${wallet.slice(-4)}`;
}

async function getWalletIdentity(wallet) {
  const { result } = await fetch(
    "https://rpc-mainnet.solanatracker.io/?api_key=YOUR_API_KEY",
    {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        jsonrpc: "2.0",
        id: 1,
        method: "getPrimaryDomain",
        params: [wallet]
      })
    }
  ).then(r => r.json());

  return {
    wallet,
    label: result.value.domain ?? shortWallet(wallet),
    domain: result.value.domain
  };
}
```

## Elige el método SNS adecuado

| Situación | Recomendación |
| - | - |
| Cabecera del perfil de una sola wallet | `getPrimaryDomain` |
| Leaderboard o tabla de holders | `getMultiplePrimaryDomains` |
| Página de portafolio de dominios | `getAllDomains` |
| Un campo de búsqueda acepta nombres `.sol` | `resolveSolDomain` |
| La respuesta de PnL V2 ya incluye `identity.sns` | Usa el campo de identidad incluido en PnL V2 |

> [!NOTE]
>
> PnL V2 ya incluye la identidad SNS en las respuestas compatibles de análisis de wallets y tokens. Usa estos métodos RPC cuando necesites resolver SNS directamente desde el RPC de Solana.

## Consejos de UI y producto

* Conserva siempre la dirección de la wallet, incluso cuando muestres un dominio.
* Trata `domain: null` como un resultado normal, no como un error.
* Usa la resolución por lotes en tablas y feeds en lugar de llamar a `getPrimaryDomain` en un bucle.
* Muestra los nombres `.sol` como etiquetas, pero copia y enlaza la dirección real de la wallet.
* En las búsquedas de usuarios, resuelve primero los nombres `.sol` y continúa con la wallet propietaria devuelta.

> [card] [getMultiplePrimaryDomains](https://docs.solanatracker.io/es/solana-rpc/http/getmultipleprimarydomains.md)
>
> Dominios `.sol` principales por lotes para hasta 100 wallets.

> [card] [Nombres SNS de wallets](https://docs.solanatracker.io/es/guides/pnl-v2/sns-identity.md)
>
> Consulta dónde aparece la identidad SNS en las respuestas de PnL V2.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.