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

# Configuração de Nós Dedicados Solana: Guia Completo de Introdução

> Guia completo para configurar seu nó dedicado Solana com streaming gRPC, plugin Yellowstone e configuração otimizada para dados de blockchain.

## Como Solicitar Nós Dedicados

Nós Dedicados podem ser solicitados diretamente no [portal do desenvolvedor](https://dashboard.helius.dev/dedicated-nodes) na aba Nós Dedicados.

<Frame caption="Solicitar um nó dedicado no seu painel Helius">
  <img src="https://mintcdn.com/helius/RGuN9Tphu9J_7kRM/images/dedicated-nodes-order.png?fit=max&auto=format&n=RGuN9Tphu9J_7kRM&q=85&s=eadf4de4e3908e93fd59aa289cab4fca" alt="Solicitar um nó dedicado no seu painel Helius" width="1914" height="954" data-path="images/dedicated-nodes-order.png" />
</Frame>

### Tipo de Nó

O tipo de nó que você escolhe depende dos seus requisitos. Como não impomos limites de taxa, o desempenho do seu nó dependerá inteiramente de suas especificações.

**Para aplicações de streaming gRPC** (caso de uso primário), qualquer tipo de nó terá um bom desempenho.

<Warning>
  **Importante**: Embora [`getProgramAccounts`](/docs/pt-BR/api-reference/rpc/http/getprogramaccounts) seja suportado, os nós dedicados não são otimizados para essas chamadas. O uso intenso pode impactar o desempenho do nó ou até causar falha do nó. Use seu plano compartilhado para consultas `getProgramAccounts`, pois ele tem um indexador personalizado que torna essas chamadas muito mais rápidas e confiáveis.
</Warning>

<Frame caption="Escolha o tipo e a localização do seu nó dedicado">
  <img src="https://mintcdn.com/helius/RGuN9Tphu9J_7kRM/images/dedicated-nodes-type-and-location.png?fit=max&auto=format&n=RGuN9Tphu9J_7kRM&q=85&s=3405ddb182f616be9e50c6d7acb43299" alt="Escolha o tipo e a localização do seu nó dedicado" width="2812" height="1274" data-path="images/dedicated-nodes-type-and-location.png" />
</Frame>

### Localização do Nó

Oferecemos nós em várias regiões: na América do Norte (Pittsburgh, Newark, Salt Lake City, Los Angeles, Vancouver); na Europa (Dublin, Londres, Amsterdã, Frankfurt); e na Ásia (Tóquio, Cingapura) para garantir a melhor cobertura geográfica com a infraestrutura global Solana.

Para latência otimizada, escolha um nó mais próximo do seu servidor. Seu nó será implantado dentro de três horas após o pagamento.

### Cliente do Nó

Você pode personalizar seu nó selecionando o tipo de cliente — seja Agave ou Jito Labs (fork do Agave com um método adicional `simulateBundle`)

<Frame caption="Selecione o tipo de cliente do seu nó dedicado">
  <img src="https://mintcdn.com/helius/RGuN9Tphu9J_7kRM/images/dedicated-nodes-client-type.png?fit=max&auto=format&n=RGuN9Tphu9J_7kRM&q=85&s=351033efab719a4f3ce647468ccad8e6" alt="Selecione o tipo de cliente do seu nó dedicado" width="1468" height="484" data-path="images/dedicated-nodes-client-type.png" />
</Frame>

<Note>
  Nós dedicados **não podem** enviar Jito Bundles por conta própria. Para enviar Jito Bundles, você deve usar a Jito API, que lida com a embalagem e o envio dos pacotes através do sistema Jito.
</Note>

### Plugin Geyser (Recomendado)

**Recomendamos fortemente adicionar o Plugin Geyser [Yellowstone](https://github.com/helius-labs/yellowstone-grpc)**, que é o principal caso de uso para nós dedicados. Ele fornece alto desempenho de [gRPC streaming](/docs/pt-BR/grpc) de slots, blocos, transações e atualizações de contas.

<Frame caption="Selecione o Plugin Geyser Yellowstone gRPC (Recomendado)">
  <img src="https://mintcdn.com/helius/RGuN9Tphu9J_7kRM/images/dedicated-nodes-geyser-plugin.png?fit=max&auto=format&n=RGuN9Tphu9J_7kRM&q=85&s=dcc31d0cb8f15a5246818c47411f6cc6" alt="Selecione o Plugin Geyser Yellowstone gRPC (Recomendado)" width="1450" height="492" data-path="images/dedicated-nodes-geyser-plugin.png" />
</Frame>

<Note>
  **Melhores Práticas**: Nós dedicados são otimizados para streaming gRPC. Use seu plano compartilhado para submissão de transações, consultas de arquivamento e operações complexas de RPC.
</Note>

### Opções de Pagamento

Você pode pagar via moeda fiduciária ou criptomoeda (USDC). Assim que seu pagamento for processado, seu nó será implantado dentro de 3 horas.

Para cobrança, pagamentos em moeda fiduciária receberão um desconto na próxima fatura mensal pelo número de dias que levou para provisionar o nó. Para pagamentos em criptomoeda, o ciclo de cobrança começa assim que o nó for entregue.

### Demonstração

<iframe width="560" height="315" src="https://www.youtube.com/embed/KjgUzY_3dsQ?si=r3aKXpc_H6b7hnqE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

## Introdução

Assim que seu Nó Dedicado estiver configurado e pronto (status: **Succeeded**), você pode começar a trabalhar com ele.

## Conectando-se ao seu nó dedicado

### Streaming gRPC (Caso de Uso Primário)

**Nós dedicados são otimizados para streaming gRPC via Plugin Geyser Yellowstone.** Esta é a maneira principal e recomendada de usar seu nó dedicado.

<Info>
  **Considere o LaserStream para Streaming gRPC**: O LaserStream oferece desempenho superior, confiabilidade e recursos avançados, como reprodução histórica de 24 horas para streaming gRPC. É recomendado para 99% dos casos de uso de streaming. [Compare LaserStream vs Nós Dedicados](/docs/pt-BR/laserstream/laserstream-vs-dedicated-nodes) para avaliar a melhor solução para suas necessidades, ou [comece com o LaserStream](https://dashboard.helius.dev/laserstream) no seu painel Helius.
</Info>

### RPC Básico e Websocket (Funcionalidade Limitada)

Cada nó dedicado também fornece funcionalidade básica de RPC, mas com limitações. **Para aplicações de produção, combine nós dedicados com um plano compartilhado.**

Aqui estamos usando Solana web3.js para chamar [`getSlot`](/docs/pt-BR/api-reference/rpc/http/getslot) usando nosso nó dedicado:

```javascript theme={"system"}
// Using @solana/web3.js
const { Connection } = require('@solana/web3.js');

const connection = new Connection('https://liveried-grazings-gxzjabdgqa-dedicated.helius-rpc.com?api-key=465964ff-f718-47d2-a51c-66ddcce332d7');

// Get the current slot
const getSlot = async () => {
    const slot = await connection.getSlot();
    console.log('Current slot:', slot);
};

getSlot();
```

É assim que você configuraria uma conexão websocket nativa para transmitir novos slots:

```javascript theme={"system"}
const Websocket = require('ws');
const ws = new Websocket('wss://liveried-grazings-gxzjabdgqa-dedicated.helius-rpc.com?api-key=465964ff-f718-47d2-a51c-66ddcce332d7	');

ws.onopen = () => {
    ws.send(JSON.stringify({
        jsonrpc: '2.0',
        id: 1,
        method: 'slotSubscribe'
    }));
};

ws.onmessage = (event) => {
    console.log(JSON.parse(event.data));
};
```

<Warning>
  **Lembre-se**: Os exemplos de RPC acima são apenas para funcionalidade básica. Limitações dos nós dedicados:

  * [`sendTransaction`](/docs/pt-BR/api-reference/rpc/http/sendtransaction) suportado, mas não otimizado - a maioria das transações não será processada (use seu plano compartilhado para envio de transações confiáveis)
  * Sem consultas de dados de arquivamento (use seu plano compartilhado)
  * [`getProgramAccounts`](/docs/pt-BR/api-reference/rpc/http/getprogramaccounts) suportado, mas não otimizado - o uso intenso pode afetar o desempenho ou causar falha do nó (use seu plano compartilhado para confiabilidade)

  **Caso de uso primário**: Use a configuração de streaming gRPC abaixo para desempenho otimizado.
</Warning>

### Configure seu Plugin Geyser

Para começar a usar o plugin Geyser, você precisa clonar o repositório Yellowstone:

```shell theme={"system"}
git clone https://github.com/helius-labs/yellowstone-grpc.git
```

#### Usando o CLI

```sh theme={"system"}
cd yellowstone-grpc/examples/rust/
cargo run --bin client -- -e "https://liveried-grazings-gxzjabdgqa-dedicated-lb.helius-rpc.com:2053" --x-token 42f03938-1daa-4162-a457-bb551ecaf590 subscribe --slots
```

Uma vez concluído, você deverá ver o terminal exibindo novos slots. Não se esqueça de substituir a URL e o Token pelos seus.

<Frame caption="Terminal exibindo novos slots">
  <img src="https://mintcdn.com/helius/RGuN9Tphu9J_7kRM/images/slots.png?fit=max&auto=format&n=RGuN9Tphu9J_7kRM&q=85&s=370b4cbd02fd7ff8811bd9d63ed4976c" width="667" height="288" data-path="images/slots.png" />
</Frame>

### Exemplo em TypeScript

Este exemplo transmite todas as transações Raydium ao vivo no formato JSON:

```typescript theme={"system"}
import Client, { CommitmentLevel, SubscribeRequest } from "@triton-one/yellowstone-grpc";
import * as bs58 from 'bs58';

const processBuffers = (obj: any): any =>
  !obj ? obj :
  Buffer.isBuffer(obj) || obj instanceof Uint8Array ? bs58.encode(obj) :
  Array.isArray(obj) ? obj.map(processBuffers) :
  typeof obj === 'object' ? Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, processBuffers(v)])) :
  obj;

const main = async () => {
  const client = new Client("grpc_url", 
    "x_token", 
    { "grpc.max_receive_message_length": 64 * 1024 * 1024 });

  const stream = await client.subscribe();
  const write = (req: SubscribeRequest) => new Promise<void>((resolve, reject) => 
    stream.write(req, (err) => err ? reject(err) : resolve()));

  stream.on("data", (data) => {
    try { console.log(JSON.stringify(processBuffers(data), null, 2)); }
    catch (e) { console.error('Error:', e); }
  });

  await write({
    slots: {},
    accounts: {},
    accountsDataSlice: [],
    transactions: {
      allRaydiumTxs: {
        accountInclude: ["675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"],
        accountExclude: [],
        accountRequired: [],
      }
    },
    blocks: {},
    blocksMeta: {},
    entry: {},
    commitment: CommitmentLevel.PROCESSED,
  });

  setInterval(() => write({
    ping: { id: 1 },
    accounts: {},
    accountsDataSlice: [],
    transactions: {},
    blocks: {},
    blocksMeta: {},
    entry: {},
    slots: {},
  }).catch(console.error), 30000);

  await new Promise<void>((resolve, reject) => {
    stream.on("error", (e) => { console.error("Stream error:", e); reject(e); stream.end(); });
    stream.on("end", resolve);
    stream.on("close", resolve);
  });
};

main().catch(console.error);
```

<Frame caption="Exemplo de saída de uma transação parcial Raydium">
  <img src="https://mintcdn.com/helius/RGuN9Tphu9J_7kRM/images/raydium-tx.png?fit=max&auto=format&n=RGuN9Tphu9J_7kRM&q=85&s=e11b512cd7851eb33be9e425eaf1a0c8" width="1778" height="1147" data-path="images/raydium-tx.png" />
</Frame>

<Frame caption="Example output of a partial Raydium transaction">
  <img src="https://mintcdn.com/helius/RGuN9Tphu9J_7kRM/images/raydium-tx.png?fit=max&auto=format&n=RGuN9Tphu9J_7kRM&q=85&s=e11b512cd7851eb33be9e425eaf1a0c8" width="1778" height="1147" data-path="images/raydium-tx.png" />
</Frame>
