Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Como Configurar o TRON Staking Engine do Zero

Como Configurar o TRON Staking Engine do Zero

Publicado por em


@CanalQb no YouTube


@CanalQb

Como Configurar o TRON Staking Engine do Zero


Leitura: ~18 min

TL;DR — Resumo Executivo:
  • Você vai configurar 4 serviços externos (Google Cloud, Google Sheets, Telegram e TronScan/TronGrid) e conectar tudo via GitHub Secrets — sem nenhum dado sensível no código.
  • A chave SSH tron_deploy_key é o que permite o robô fazer push automático para o seu repositório com segurança total, sem usar sua senha.
  • O bot do Telegram só envia mensagens para destinos que já interagiram com ele — por isso o /start é obrigatório, e grupos/canais exigem adicionar o bot como Administrador.

Aviso Financeiro: Este conteúdo é estritamente educacional. Automação de staking envolve riscos de perda de capital. Nunca configure este sistema com fundos que você não possa perder. Consulte um profissional habilitado antes de decisões financeiras.

Nota Técnica: Scripts e automações deste tutorial têm fins exclusivamente educacionais. Teste sempre em modo DRY-RUN antes de executar transações reais. O @CanalQb não se responsabiliza por perdas decorrentes do uso indevido. Conteúdo gerado com auxílio de IA — revisado e validado na prática.

Você tem o código, tem a ideia, mas travou no setup. São 4 serviços externos para configurar, uma dezena de secrets para criar, chaves SSH que parecem magia negra e ainda tem o Telegram que simplesmente não recebe mensagem. Aqui no @CanalQb, validamos cada um desses passos até o sistema rodar sozinho por semanas sem falhar uma vez.

Aqui está o detalhe que a maioria ignora: a ordem dos passos importa muito. Se você criar o GitHub Secret antes de compartilhar a planilha com a Service Account, o motor vai rodar e travar silenciosamente sem nenhum erro óbvio. Vamos resolver isso do jeito certo, na sequência certa.

Quais sites e serviços você vai precisar configurar?

Antes de executar qualquer linha de código, você precisa ter contas ativas e configuradas em exatamente 6 destinos. Cada um tem uma função específica no ecossistema do motor:

Google Cloud Console Google Sheets Telegram GitHub TronScan TronGrid
1

Google Cloud — APIs e Service Account

O Google Cloud é o ponto de partida porque é de lá que sai a credencial que permite o motor escrever na planilha automaticamente. Sem ela, toda execução do GitHub Actions vai travar no primeiro acesso ao Sheets.

Como criar o projeto

Acesse console.cloud.google.com, clique no seletor de projetos no topo e depois em "Novo projeto". Dê um nome descritivo (ex: tron-staking-engine) e clique em Criar. Aguarde alguns segundos até o projeto ser provisionado.

Quais APIs ativar?

Com o projeto selecionado, vá em APIs e serviços → Biblioteca. Você precisa ativar exatamente duas:

Google Sheets API — permite ler e escrever nas abas da planilha Dashboard.
Google Drive API — necessária para localizar a planilha pelo ID. Sem ela, o acesso é bloqueado mesmo com Sheets API ativa.

Pesquise cada uma pelo nome e clique em Ativar. Sem as duas ativas simultaneamente, o motor retorna erro 403.

Criar a Service Account (conta de serviço)

Vá em APIs e serviços → Credenciais → + Criar credenciais → Conta de serviço. Preencha:

  • Nome: tron-staking-bot (ou qualquer nome descritivo)
  • Papel/Role: selecione Editor
  • Clique em Concluído

Após criar, clique no e-mail gerado da conta de serviço (formato: nome@projeto.iam.gserviceaccount.com). Vá na aba Chaves → Adicionar chave → Criar nova chave → JSON → Criar. Um arquivo .json será baixado. Esse é o arquivo mais sensível de todo o setup — guarde-o fora do repositório Git.

Nunca faça commit desse arquivo JSON. Se ele vazar, alguém terá acesso total às suas planilhas Google. Ele vai direto para o GitHub Secret — jamais para o código.

Como alimentar esse dado no GitHub

Abra o arquivo .json em um editor de texto (Bloco de Notas, VS Code, qualquer um). Selecione todo o conteúdo (Ctrl+A), copie (Ctrl+C). No GitHub, vá em Settings → Secrets and variables → Actions → New repository secret, nomeie como GDRIVE_CREDENTIALS e cole o JSON completo no valor.

2

Google Sheets — Dashboard e Compartilhamento

A planilha funciona como o "banco de dados" do motor — registra histórico de votos, estados da máquina e o dashboard de performance. O ponto crítico aqui é o compartilhamento: a Service Account precisa ter permissão de Editor antes do motor rodar.

Criando a planilha

Acesse sheets.google.com e crie uma planilha em branco. Dentro dela, crie 4 abas com os nomes exatos abaixo (o motor busca por nome):

DASHBOARD    → Visão geral: saldo, APR atual, último ciclo
VOTE_LOG     → Histórico de todas as trocas e reinvestimentos
SR_SCORES    → Ranking de SRs com score calculado pelo motor
STATE_LOCKS  → Memória de estado da Máquina de Estados (não edite manualmente)

Compartilhar com o e-mail da Service Account

Aqui está o detalhe que trava mais gente: você precisa compartilhar a planilha com o e-mail da Service Account, não com a sua conta Google pessoal. Esse e-mail está disponível em Google Cloud → Credenciais → Contas de serviço.

  1. Na planilha, clique em "Compartilhar" (canto superior direito)
  2. Cole o e-mail da Service Account (ex: tron-staking-bot@seu-projeto.iam.gserviceaccount.com)
  3. Defina como "Editor"
  4. Desmarque "Notificar pessoas" e confirme

Como obter o ID da planilha

A URL da planilha tem o formato abaixo. O ID é a sequência de caracteres entre /d/ e /edit:

https://docs.google.com/spreadsheets/d/SEU_ID_AQUI/edit#gid=0
                                       ▲──────────▲
                                       Copie isso

Esse valor vai para o Secret ID_PLANILHA_GOOGLE no GitHub.

3

Rede TRON — TronScan e TronGrid

O motor consulta a rede TRON por dois caminhos diferentes, com funções complementares. Aqui no @CanalQb, testamos as duas integrações e cada uma tem um papel específico que não pode ser substituído pela outra.

TronScan — Dados de mercado e votos

Site: tronscan.org — é o explorador oficial da rede TRON. O motor usa a API do TronScan para:

  • Listar os Super Representantes do Top 27
  • Coletar dados de APR, produtividade e ranking de cada SR
  • Consultar recompensas pendentes (rewardNum) como referência secundária

Para obter a API Key do TronScan, acesse tronscan.org/#/setting/api, faça login e gere uma chave. Essa chave aumenta o rate limit e evita bloqueios por excesso de requisições. O motor funciona sem ela, mas pode ser limitado em ciclos intensos.

TronGrid — Transações on-chain

Site: trongrid.io — é o provedor de infraestrutura oficial da TRON Foundation. O motor usa a API do TronGrid para:

  • Construir e broadcast de transações reais (Claim, Stake, Vote)
  • Consultar saldo e recursos da carteira (Energy, Bandwidth, allowance)
  • Assinar e enviar transações on-chain com a chave privada

Para a API Key do TronGrid, acesse trongrid.io/dashboard, crie uma conta e gere uma chave. As chaves de ambos os serviços são opcionais mas altamente recomendadas — sem elas, o motor usa endpoints públicos com rate limit bem mais restritivo.

Permissões necessárias: As APIs do TronScan e TronGrid são de leitura e broadcast. Elas não têm acesso direto à sua carteira — quem assina as transações é a chave privada TRON guardada no Secret. As APIs apenas recebem a transação já assinada e a transmitem para a rede.
4

Telegram — BotFather, /start e Chat ID

O Telegram é onde você vai receber os alertas em tempo real. E o melhor? Funciona de graça. Mas tem um porém: o bot só envia mensagem para destinos que ele conhece. E ele só "conhece" você depois do /start.

Criando o bot com o BotFather

  1. Abra o Telegram e pesquise por @BotFather (conta oficial, tem selo azul)
  2. Envie o comando /newbot
  3. Escolha um nome amigável para exibição (ex: Tron Staking Monitor)
  4. Escolha um username único que termine em bot (ex: tron_staking_monitor_bot)
  5. O BotFather responderá com o Token de Acesso no formato: 1234567890:AAExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Esse token é a senha do seu bot. Com ele, qualquer pessoa pode enviar mensagens como se fosse o seu bot. Salve apenas no GitHub Secret — jamais no código, README ou qualquer arquivo versionado.

Por que o /start é obrigatório?

Por uma regra de privacidade do Telegram: bots não podem iniciar conversas com usuários arbitrários. O usuário precisa dar o primeiro passo. Sem o /start, qualquer mensagem enviada pelo motor retorna o erro 400 - chat not found, mesmo com token e Chat ID corretos.

Para ativar: pesquise seu bot pelo username criado (ex: @tron_staking_monitor_bot), abra a conversa e clique em "Iniciar" ou envie /start. Pronto — o bot agora pode te enviar mensagens.

Como obter o Chat ID numérico (mensagens diretas)

Para DMs (mensagem direta para você), o Telegram exige o Chat ID numérico, não o @username. Usernames são aceitos apenas para canais e grupos públicos.

  1. No Telegram, pesquise por @userinfobot
  2. Envie qualquer mensagem para ele
  3. Ele responderá com seu Id: (um número como 683972422)
  4. Esse número vai para o Secret TELEGRAM_CHAT_ID

Enviando para um grupo ou canal

Se você preferir receber os alertas em um canal privado (o que facilita manter histórico organizado), o processo é diferente:

  1. Crie um canal ou grupo privado no Telegram
  2. Adicione seu bot como Administrador com permissão de "Postar mensagens"
  3. Envie qualquer mensagem no canal/grupo
  4. Acesse no navegador: https://api.telegram.org/botSEU_TOKEN/getUpdates
  5. No JSON retornado, localize: "chat": {"id": -1001234567890}
  6. Esse número negativo é o ID do canal — use-o no Secret TELEGRAM_CHAT_ID
# Exemplo de retorno do getUpdates para um canal { "ok": true, "result": [{ "channel_post": { "chat": { "id": -1001234567890, ← este é o Chat ID do canal "title": "Meu Canal de Alertas", "type": "channel" } } }] }
Se o getUpdates retornar "result": [] (array vazio), é porque o bot ainda não tem mensagens para processar. Envie uma mensagem de teste no canal/grupo após adicionar o bot como admin e tente novamente.
5

O que são tron_deploy_key e tron_deploy_key.pub?

Esse é o ponto que mais confunde quem está começando. A tron_deploy_key é uma chave SSH dedicada para o repositório — ela permite que o motor faça git push automaticamente, sem precisar da sua senha do GitHub.

Pense assim: é como uma crachá de acesso exclusivo para o robô entrar no repositório e postar atualizações. Se esse crachá for comprometido, você revoga e emite um novo — sem afetar sua conta GitHub principal.

Como gerar o par de chaves do zero

Execute no terminal do seu computador (Linux, macOS ou WSL no Windows):

# Gera o par de chaves SSH sem passphrase (necessário para automação)
ssh-keygen -t ed25519 -f tron_deploy_key -C "tron-staking-deploy" -N ""

# Dois arquivos serão criados:
# tron_deploy_key      → chave PRIVADA (fica no GitHub Secret)
# tron_deploy_key.pub  → chave PÚBLICA (fica no GitHub como Deploy Key)

Onde cada arquivo vai

Arquivo Destino Como usar
tron_deploy_key.pub GitHub → Settings → Deploy keys Cole o conteúdo e marque "Allow write access"
tron_deploy_key GitHub → Settings → Secrets → DEPLOY_KEY Cole o conteúdo completo incluindo o cabeçalho -----BEGIN...

Proteger as chaves localmente

Após configurar no GitHub, nunca suba esses arquivos para o repositório. Certifique-se que o .gitignore contém:

tron_deploy_key
tron_deploy_key.pub
*.pem
*.json
.env
Se a chave privada vazar: vá imediatamente em GitHub → Settings → Deploy keys, revogue a chave comprometida e gere um novo par com o mesmo comando acima. Não precisa alterar nada no código.
6

GitHub Secrets — O que colocar em cada um

Os Secrets são a cofre do projeto. Tudo que é sensível fica aqui — nunca no código. Para acessar: seu repositório → Settings → Secrets and variables → Actions → New repository secret.

Secret Tipo O que colocar
TRON_PRIVATE_KEY Chave privada da carteira TRON em formato hexadecimal (64 caracteres). Obtida no TronLink ao exportar a carteira.
TRON_VOTER_ADDRESS Endereço público da carteira em formato Base58 — começa com T. Ex: TXyz1234...abc
TELEGRAM_TOKEN Token do bot gerado pelo @BotFather. Formato: 1234567890:AAExxxx...
TELEGRAM_CHAT_ID ID numérico do destino. Para DM: número positivo (obtido via @userinfobot). Para canal: número negativo (obtido via getUpdates).
ID_PLANILHA_GOOGLE ID da planilha Google Sheets — a sequência entre /d/ e /edit na URL.
GDRIVE_CREDENTIALS Conteúdo JSON completo da Service Account do Google Cloud. Cole o arquivo inteiro, incluindo chaves e aspas.
TRONSCAN_MIN_WALLET Saldo mínimo de TRX a manter disponível na carteira. Padrão se omitido: 49
TRON_MIN_REWARD_CLAIM Valor mínimo em TRX para acionar o resgate de recompensas. Padrão: 2
TRON_PERSISTENCE_THRESHOLD Número de ciclos consecutivos de má performance para trocar um SR. Padrão: 4
DRY_RUN Use true para ativar o modo simulação. Sem transações reais. Recomendado para os primeiros testes.
TRONSCAN_API_KEY Chave de API do TronScan para aumentar o rate limit das consultas de mercado.
TRONGRID_API_KEY Chave de API do TronGrid para aumentar o rate limit das transações on-chain.
TELEGRAM_CHAT_PROFILE Destino alternativo para o Telegram (username de canal público). Funciona como fallback se o CHAT_ID falhar.
7

Como o motor é acionado no GitHub Actions

O projeto tem 4 workflows distintos no GitHub Actions. Cada um tem um propósito específico e só executa quando você quer (exceto o principal, que é agendado).

Workflow principal — motor completo

O arquivo main.yml configura dois gatilhos simultâneos:

on:
  schedule:
    - cron: "0 */6 * * *"   # Executa automaticamente a cada 6 horas
  workflow_dispatch:          # Executa manualmente quando você quiser

O cron: "0 */6 * * *" significa: toda vez que o minuto for 0 e a hora for divisível por 6 (00h, 06h, 12h, 18h UTC). Para disparar manualmente, vá em Actions → TRON Staking Engine → Run workflow.

Workflows de teste (execução manual)

Os três workflows de teste só rodam quando você clica em "Run workflow" — nunca automaticamente. E todos têm a opção de escolher entre DRY-RUN e execução real antes de rodar:

Workflow Arquivo O que testa
🧪 Test Telegram Connectivity test_telegram.yml Envia uma mensagem de teste para o destino configurado
🎁 Test Reward Claim test_reward.yml Consulta recompensas pendentes e (opcionalmente) resgata
🧊 Test Staking & Vote test_staking.yml Verifica saldo, calcula excedente e (opcionalmente) executa stake e voto
Sequência de teste recomendada: sempre teste primeiro o Telegram, depois Reward, depois Staking — todos em DRY-RUN. Só passe para execução real após confirmar que os três estão retornando os dados corretos.
8

Sistemas de proteção implementados

O motor não é apenas automação — é automação com defesas em camadas. Aqui estão os mecanismos que evitam perda de TRX e comportamento inesperado:

Proteção de Energy e Bandwidth

Antes de qualquer transação, o motor executa has_enough_resources(). Se Energy ou Bandwidth estiverem abaixo do mínimo para a operação específica, o ciclo é pulado por completo — nenhuma ação, nenhum TRX gasto em taxa. O motor tenta novamente 6 horas depois.

OperaçãoEnergy mínimaBandwidth mínima
Claim (Resgate)1.000300
Stake (Congelar)1.500300
Vote (Votar/Swap)2.000300

Máquina de Estados com cooldowns

O motor usa a aba STATE_LOCKS da planilha para lembrar o que já foi feito. Cada fase tem cooldown próprio — Claim, Stake e Vote nunca executam no mesmo ciclo. Isso evita gasto duplo de recursos e garante que o motor siga exatamente a sequência correta de 24h entre cada operação.

Anti-Churn com BadCount

Para evitar trocas desnecessárias de SR (o que gastaria Energy e poderia reduzir ganhos), o motor só substitui um SR quando ele apresenta performance abaixo do limiar por 4 ciclos consecutivos. Uma queda pontual é ignorada — apenas queda persistente aciona a troca.

Buffer de 49 TRX

O motor nunca usa mais do que o excedente — sempre mantém 49 TRX disponíveis para cobrir eventuais taxas manuais ou situações inesperadas de rede. O cálculo é simples: surplus = int(saldo) - 49. Se der zero ou negativo, nenhum stake é feito.

Delta mínimo de score (+3 pontos)

Uma troca de SR só acontece se o novo SR for pelo menos 3 pontos melhor no score composto. Isso evita que o motor fique rotacionando SRs por diferenças insignificantes que não representam ganho real de APR.

Limpeza automática de logs

Cada workflow inclui um step final que deleta execuções antigas do GitHub Actions — mantém o histórico limpo e dentro dos limites de armazenamento do GitHub.

Perguntas Frequentes

Fontes e Referências

Google Cloud Console — APIs e Service Account Google Sheets API — Documentação oficial TronScan — Explorador oficial da rede TRON TronGrid — Infraestrutura de API TRON Telegram Bot Tutorial — Documentação oficial GitHub Encrypted Secrets — Documentação oficial

Gostou do tutorial? Acompanhe mais conteúdos sobre automação cripto em @CanalQb no YouTube e explore mais guias práticos em canalqb.com.br.


Marcadores: Airdrop Banco de Dados Blogger Cripto IA Jogos Python Script Sistemas Telegram Tutorial

© maio 02, 2026 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários