Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
¿Problema para obtener el saldo de la billetera Phantom con la solicitud json-rpc usando la función asíncrona de javascript?

Tengo una conexión con la billetera Phantom.

Espero que phantom_balance() devuelva un saldo o datos que contengan el saldo.

¿Tengo un error en el formateo json-rpc ?

Recibo el siguiente error de JsonRpcEngine en catch() .

 Phantom - RPC Error: JsonRpcEngine: Response has no error or result for request: { "jsonrpc": "2.0", "id": 1161935556, "method": "getBalance", "params": [ "iQKBP3tSX6g3j6pS6g3LuzhoqTQKBP3tSX6g33tSX6g3j6pS6g" ] }

Aquí está el js

 // get wallet provider, phantom const get_provider = () => { if ("solana" in window) { const provider = window.solana; if (provider.isPhantom) { return provider; } } window.open("https://phantom.app/", "_blank"); }; // async get wallet balance async function phantom_balance() { // alt window.solana const phantom = get_provider(); console.log("Still Connected: " + phantom.isConnected); if (phantom.isConnected !== false) { const wallet_address = phantom.publicKey.toString(); console.log("Getting Balance For: " + wallet_address); // json-rpc request (ERROR!) const balance = await phantom.request({ method: "getBalance", params: [wallet_address] }) .then(function(data) { console.log(data); }).catch(function(e) { console.log(e); }); } }

También probé lo siguiente y aparece un error que dice que phantom.getBalance() no es una función.

 const balance = await phantom.getBalance(wallet_address) .then(function(data) { console.log(data); }).catch(function(e) { console.log(e); });

Actualmente no estoy incluyendo ningún <script> en el encabezado del documento. Según los documentos de Phantom, inyectan window.solana en el documento (que también expone la interfaz RPC). ¿Quizás todavía necesito web3 en la cabeza para acceder a window.solana.getBalance(wallet_address) y/o al método RPC window.solana.request(method: "getBalance") ?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Aquí está mi ejemplo de trabajo.

  1. Asegúrese de tener instalada la extensión de billetera Phantom. app.fantasma

  2. Incluya solana-web3 en el encabezado del documento.

 <script src="https://unpkg.com/@solana/web3.js@latest/lib/index.iife.min.js"></script>
  1. Asegúrese de que su secuencia de comandos js tenga definido el type="module" .
 <script type="module" src="/path/to/your/main.js"></script>
  1. Esto se ejecuta en su archivo js principal.
 // get wallet provider, phantom const get_provider = () => { if ("solana" in window) { const provider = window.solana; if (provider.isPhantom) { return provider; } } window.open("https://phantom.app/", "_blank"); }; // get balance from connected Phantom wallet async function phantom_balance() { // alt window.solana const phantom = get_provider(); console.log("Wallet Connected: " + phantom.isConnected); if (phantom.isConnected !== false) { const wallet = phantom.publicKey; const wallet_b58 = phantom.publicKey.toString(); // connect to the cluster console.log("Connecting Cluster"); var connection = new solanaWeb3.Connection( solanaWeb3.clusterApiUrl('devnet'), 'confirmed', ); // remember, do not use base 58 encoded key with getBalance(); console.log("Getting Balance: " + wallet_b58); let _balance = await connection.getBalance(wallet) .then(function(data) { console.log("Wallet Balance: " + data); return data; }) .catch(function(error) { console.log(error); return error; }); } }
  1. Uso
 var balance = phantom_balance();

Devuelve un número entero de Lamports

 992953240
about 4 years ago · Juan Pablo Isaza Denunciar

0

Este código si desea obtener un número que no está en Lamports let _balance = await connection.getBalance(wallet).then(function(data) { console.log("Wallet Balance: " + data / lamports_per_sol); return data; })

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda