helium-js icon indicating copy to clipboard operation
helium-js copied to clipboard

Transfer 1 HNT with 0 HNT in wallet to another can be completed successfully

Open idoor88 opened this issue 3 years ago • 1 comments

Hi all, I am curious why with the following code, I can execute the transaction of transferring 1 HNT to another with a transaction hash returned successfully even the wallet has 0 HNT, also is there a way to check the status of the transaction from an exchange or from Helium network?

async function make_transaction(){

  const client = new Client();
  
  console.log("make_transaction the client: ", client);
  
  // the transactions library needs to be configured
  // with the latest chain vars in order to calculate fees
  const vars = await client.vars.get();
  console.log("make_transaction the vars: ", vars);

  Transaction.config(vars);
  const entropy = await crypto.randomBytes(32); 
console.log("make_transaction entropy is: ", entropy);
let entropyStr = entropy.toString("hex");
console.log("make_transaction entropyStr: ", entropyStr); 
let bob = await Keypair.fromEntropy(entropy); 

  console.log("make_transaction bob is: ", bob);
  console.log("make_transaction the bob.address: ", bob.address);
  // initialize an address from a b58 string
  const alice = Address.fromB58('148d8KTRcKA5JKPekBcKFd4KfvprvFRpjGtivhtmRmnZ8MFYnP3');
  console.log("make_transaction the alice: ", alice);
  //let mnemonic = alice.mnemonic;
  //console.log("make_transaction the mnemonic: ", mnemonic);
  // get the speculative nonce for the keypair
  console.log("make_transaction the bob.address.b58: ", bob.address.b58);
 // let publicKey = bob.publicKey;
  //console.log("make_transaction the publicKey: ", publicKey);
  //let publicKeyString = Base64.fromUint8Array(publicKey);
  //console.log("make_transaction publicKeyString: ", publicKeyString);
 // let publicKeyBack = Base64.toUint8Array(publicKeyString);
  //console.log("make_transaction publicKeyBack: ", publicKeyBack);
  //const account = await client.accounts.get(bob.address.b58);

  //console.log("make_transaction the balance.floatBalance: ", account.balance.floatBalance); 

  //console.log("make_transaction the account: ", account);
  // construct a payment txn
  const paymentTxn = new PaymentV1({
      payer: bob.address,
      payee: alice,
      amount: 1,
      nonce: alice.speculativeNonce + 1,
  });
  
  console.log("nonce is: ", paymentTxn);
  console.log('transaction fee is:', paymentTxn.fee);
  
  const signedPaymentTxn = await paymentTxn.sign({ payer: bob });
  
  console.log("make_transaction the serialized transaction: ", signedPaymentTxn.toString());
  let txHash = await client.transactions.submit(signedPaymentTxn.toString())
  console.log("make_transaction the transaction hash: ", txHash);

}

Thanks in advance!

idoor88 avatar Oct 21 '21 03:10 idoor88

If you get the HASH that it returns and pull this url https://api.helium.io/v1/pending_transactions/:hash it'll tell you the status. For all the previous pending transactions, you can do https://api.helium.io/v1/accounts/148d8KTRcKA5JKPekBcKFd4KfvprvFRpjGtivhtmRmnZ8MFYnP3/pending_transactions and you'll notice that the 1 HNT payment failed.

KnightAR avatar Jan 07 '22 23:01 KnightAR