SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
20.11.2024

Lição: 087: Implementando Streaming de Dados em Tempo Real

Nesta aula, vamos explorar como implementar streaming de dados em tempo real em uma aplicação Rust utilizando a blockchain Solana. O streaming de dados em tempo real é crucial para aplicações que precisam processar e reagir a dados recebidos continuamente. Vamos criar um exemplo simples onde escutamos por atualizações de dados na cadeia e transmitimos essas atualizações em tempo real.

Pré-requisitos

Antes de mergulharmos na implementação, certifique-se de ter o seguinte instalado:

  • Rust e Cargo
  • Solana CLI
  • Um ambiente de desenvolvimento Solana configurado (use o devnet para testes)

Passo 1: Configurando o Projeto Rust

Primeiro, crie um novo projeto Rust:

cargo new streaming_dados_tempo_real
cd streaming_dados_tempo_real

Em seguida, adicione as dependências necessárias no seu Cargo.toml:

[dependencies]
solana-client = "1.10.0"
tokio = { version = "1.20", features = ["full"] }
futures = "0.3"

Passo 2: Conectando ao Cluster Solana

Para receber atualizações da blockchain Solana, precisamos estabelecer uma conexão com um cluster Solana. Coloque o seguinte código no seu src/main.rs para configurar a conexão:

use solana_client::rpc_client::RpcClient;
use std::str::FromStr;

#[tokio::main]
async fn main() {
    // Conectar ao devnet Solana
    let rpc_url = "https://api.devnet.solana.com";
    let client = RpcClient::new(rpc_url);

    // Imprimir o status da conexão do cliente
    match client.get_balance(&solana_sdk::pubkey::Pubkey::from_str("Sua_Chave_Pública_Solana_Aqui").unwrap()).await {
        Ok(balance) => println!("Conectado! Saldo: {}", balance),
        Err(err) => eprintln!("Erro ao conectar ao cluster Solana: {:?}", err),
    }
}

Substitua Sua_Chave_Pública_Solana_Aqui pela sua chave pública Solana real.

Passo 3: Implementando um Stream em Tempo Real

Agora, vamos criar uma assinatura para escutar por mudanças em uma conta específica. Usaremos o módulo solana_client::rpc_subscribe, que nos permite assinar mudanças de conta.

Adicione o seguinte código à sua função main:

use solana_client::rpc_pubsub::RpcPubSubClient;
use solana_sdk::signature::Keypair;
use std::time::Duration;

#[tokio::main]
async fn main() {
    let rpc_url = "https://api.devnet.solana.com";
    let client = RpcClient::new(rpc_url);

    // Substitua pela sua chave pública real
    let public_key = solana_sdk::pubkey::Pubkey::from_str("Sua_Chave_Pública_Solana_Aqui").unwrap();

    // Crie um RpcPubSubClient para receber atualizações de conta
    let mut pubsub_client = RpcPubSubClient::new(rpc_url).await.unwrap();

    // Assine por mudanças de conta
    let subscription_id = pubsub_client
        .account_subscribe(public_key)
        .await
        .unwrap();

    println!("Inscrito na conta: {:?}", public_key);

    tokio::spawn(async move {
        loop {
            match pubsub_client.recv().await {
                Ok(update) => {
                    println!("Atualização de conta: {:?}", update);
                }
                Err(err) => {
                    eprintln!("Erro ao receber atualização: {:?}", err);
                    break;
                }
            }
        }
    });

    // Mantenha a aplicação rodando para escutar por atualizações
    tokio::time::sleep(Duration::from_secs(60)).await; // Escutar por 60 segundos
}

Passo 4: Executando a Aplicação

Certifique-se de que você tenha configurado a Solana CLI e criado sua carteira. Você pode financiar sua carteira no devnet usando o seguinte comando:

solana airdrop 2

Agora, execute sua aplicação Rust:

cargo run

Você deve ver uma saída indicando que você está inscrito na conta especificada. Quaisquer mudanças na conta — como atualizações de saldo — serão impressas no console.

Conclusão

Nesta aula, implementamos com sucesso streaming de dados em tempo real em uma aplicação Rust utilizando a blockchain Solana. Ao assinar atualizações de conta, podemos reagir a mudanças em tempo real, tornando nossas aplicações mais responsivas e interativas. Este exemplo fornece uma base que pode ser expandida para casos de uso mais avançados em aplicações descentralizadas.

Sinta-se à vontade para experimentar com o código, modificá-lo para assinar contas diferentes e explorar mais funcionalidades da blockchain Solana!

Did you like this article? Rate it from 1 to 5:

Thank you for voting!