Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

251
Visualizações
Convertir correctamente Lamports a SOL

Probando devnet y airdrops. A continuación se muestra mi código para una billetera básica con un airdrop de 2 soles. Estoy tratando de convertir Lamports nuevamente en SOL dividiendo la constante LAMPARTS_PER_SOL . El resultado esperado debería ser que el Wallet balance is 2 cuando se divide por la constante mencionada anteriormente, en su lugar, el Wallet balance is 0 . ¿Cómo puedo resolver esto?

Mi código:

 const { Connection, PublicKey, clusterApiUrl, Keypair, LAMPORTS_PER_SOL, } = require("@solana/web3.js"); const wallet = new Keypair(); const publicKey = new PublicKey(wallet._keypair.publicKey); const secretKey = wallet._keypair.secretKey; const getWalletBalance = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); const walletBalance = await connection.getBalance(publicKey); console.log(`Wallet balance is ${walletBalance}`); } catch (err) { console.error(err); } }; const airDropSol = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); const fromAirDropSignature = await connection.requestAirdrop( publicKey, (2 * LAMPORTS_PER_SOL) /= LAMPORTS_PER_SOL ); await connection.confirmTransaction(fromAirDropSignature); } catch (err) { console.log(err); } }; const main = async () => { await getWalletBalance(); await airDropSol(); await getWalletBalance(); }; main();
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

En todas las librerías creo que hay operaciones auxiliares para realizar estas conversiones, en la librería Solnet para .Net hacemos esta operación:

 decimal ConvertToSol(ulong lamports) { return decimal.Round((decimal)lamports / 1000000000m, 9); }

Si lo traduces a JS te dará el mismo resultado y te funciona

about 4 years ago · Juan Pablo Isaza Relatório

0

No hay mucho que pueda encontrar para mi situación particular ya que el desarrollo de Solana es tan nuevo, pero pude resolverlo cuando tropecé con el método parseFloat() .

Primero tuve que eliminar el cociente de la const fromAirDropSignature y anteponer el método parseFloat() a walletBalance dentro de la sección console.log.

Código inicial:

 const getWalletBalance = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); const walletBalance = await connection.getBalance(publicKey); console.log(`Wallet balance is ${walletBalance}`); } catch (err) { console.error(err); } }; const airDropSol = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); const fromAirDropSignature = await connection.requestAirdrop( publicKey, (2 * LAMPORTS_PER_SOL) /= LAMPORTS_PER_SOL );

Producción:

 Wallet balance is 0

Código de trabajo:

 const getWalletBalance = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); const walletBalance = await connection.getBalance(publicKey); console.log( `Wallet balance is ${parseFloat(walletBalance) / LAMPORTS_PER_SOL} SOL` ); } catch (err) { console.error(err); } }; const airDropSol = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); const fromAirDropSignature = await connection.requestAirdrop( publicKey, 1.0024 * LAMPORTS_PER_SOL );

Producción:

 Wallet balance is 1.0024 SOL

Una cosa que noto es que al usar 'devnet' , no permitirá una denominación superior a 2. Cualquier número entero por debajo de eso funcionará.

about 4 years ago · Juan Pablo Isaza Relatório

0

Entonces puede convertir walletBalance a BigInt de Javascript, para que pueda dividir fácilmente por BigInt (LAMPORTS_PER_URL)

 const { Connection, PublicKey, clusterApiUrl, Keypair, LAMPORTS_PER_SOL, } = require("@solana/web3.js"); const wallet = new Keypair(); const publicKey = new PublicKey(wallet._keypair.publicKey); const secretKey = wallet._keypair.secretKey; const getWalletBalance = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); let walletBalance = await connection.getBalance(publicKey); **walletBalance = BigInt(walletBalance) / BigInt(LAMPORTS_PER_SOL)** console.log(`Wallet balance is ${walletBalance}`); } catch (err) { console.error(err); } }; const airDropSol = async () => { try { const connection = new Connection(clusterApiUrl("devnet"), "confirmed"); const fromAirDropSignature = await connection.requestAirdrop( publicKey, 2 * LAMPORTS_PER_SOL ); await connection.confirmTransaction(fromAirDropSignature); } catch (err) { console.log(err); } }; const main = async () => { await getWalletBalance(); await airDropSol(); await getWalletBalance(); }; main();
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda