A carteira conectou. Mas o aplicativo está consultando a rede esperada?
Transparência: material da equipe de relações públicas da Atlas System, preparado com uso substancial de IA. O código é um exemplo didático original, não código extraído do aplicativo Atlas. Os testes usam respostas simuladas; nenhuma carteira real foi conectada.
Um painel exibe o endereço esperado da carteira. A equipe conclui que a conexão está pronta, mas uma consulta seguinte parece não encontrar os dados procurados. Antes de interpretar o resultado como ausência de dados, há outra informação a conferir: a rede consultada.
Neste cenário fictício, a investigação começa com uma pergunta pequena: qual chainId o provider está informando? Ela ajuda a separar identidade da conta e contexto da consulta, sem tentar resolver todo o fluxo de uma carteira em uma única função.
Uma leitura, quatro estados distintos
O método eth_chainId retorna o identificador da cadeia como uma string hexadecimal, conforme a EIP-695. Para um provider JavaScript compatível, a chamada usa request, definido pela EIP-1193.
A documentação da BNB Chain identifica a BSC Mainnet como 56 em decimal, ou 0x38 em hexadecimal. A testnet tem outro identificador: 97, ou 0x61.
Uma comparação direta entre a resposta "0x38" e o número 56 falha porque os tipos e as representações são diferentes. Em vez de converter tudo para Number, este exemplo valida o formato recebido e compara strings normalizadas com o identificador esperado.
O resultado distingue rede esperada, outra rede e resposta inválida. Uma falha de leitura recebe um quarto estado, separado: ela não comprova que a carteira está na rede errada.
function classifyBscChainId(value) {
const quantity = /^0x(?:0|[1-9a-fA-F][0-9a-fA-F]*)$/;
if (typeof value !== "string" || value.trim() !== value || !quantity.test(value)) {
return { state: "invalid-response", chainId: null };
}
const chainId = value.toLowerCase();
return {
state: chainId === "0x38" ? "expected-chain" : "other-chain",
chainId,
};
}
async function readBscNetwork(provider) {
if (!provider || typeof provider.request !== "function") {
return { state: "unavailable", chainId: null };
}
try {
const value = await provider.request({ method: "eth_chainId" });
return classifyBscChainId(value);
} catch {
return { state: "unavailable", chainId: null };
}
}
A validação segue a representação Quantity descrita na EIP-1474: prefixo 0x, dígitos hexadecimais e ausência de zeros à esquerda, com zero representado por 0x0. O documento está marcado como Stagnant, não como EIP final. O exemplo rejeita formatos fora dessa convenção em vez de tentar adivinhar o valor.
| Resposta simulada | Resultado esperado |
|---|---|
"0x38" | expected-chain |
"0x61" | other-chain |
"0x56" | other-chain: hexadecimal 56 não é decimal 56 |
"56", 56, "0x038" | invalid-response |
| Requisição rejeitada | unavailable |
Reproduza sem abrir uma carteira
Execute este segundo bloco depois das funções, em Node.js ou em um ambiente JavaScript com suporte a funções assíncronas:
(async () => {
const responses = ["0x38", "0x61", "56"];
for (const response of responses) {
const simulatedProvider = {
request: async () => response,
};
const result = await readBscNetwork(simulatedProvider);
console.log(response, result.state);
}
})();
A saída esperada é 0x38 expected-chain, 0x61 other-chain e 56 invalid-response, uma linha por entrada. O teste local também verifica entradas malformadas, ausência do provider, rejeição da requisição e o nome do método solicitado.
Onde isso entra em um diagnóstico real
O guia de diagnóstico do Atlas, consultado em 24 de setembro de 2026 (página em russo), trata conta e rede como verificações separadas e identifica BNB Smart Chain como a rede utilizada. Esse é o vínculo concreto do exemplo com o projeto: transformar uma orientação de diagnóstico em uma leitura explícita do provider. O trecho acima não demonstra como a interface Atlas implementa essa verificação.
Uma aplicação completa também precisa reagir a mudanças. A EIP-1193 prevê chainChanged; guardar o resultado inicial indefinidamente pode deixar o painel com um contexto antigo. Aqui temos apenas uma leitura pontual, não um monitor nem autorização para enviar transações.
Mesmo expected-chain significa somente que o provider respondeu com o identificador esperado. Não valida o site, o contrato, os parâmetros de uma operação ou a confiabilidade do próprio provider.
Para continuar o diagnóstico com o contexto do projeto, o guia Atlas acima separa problemas de conexão, rede e transação. Compare essas etapas com os estados retornados pelo exemplo antes de escolher qual problema investigar. Não é necessário repetir uma operação financeira para testar esta função.