3

I'm receiving the result in BN format. How can I convert it into actual string or number? I'm using ethjs library to interact with Smart Contract.

token.totalSupply().then((totalSupply) => {
  // result <BN ...>  4500000
});
4

Once you have a BN object, you can use .toString() or .toNumber() on it.

Per the comments below, your function isn't actually receiving a BN. It's getting some sort of Results object that has a single key in it: 0. (Presumably if the function returned multiple values, there would be more keys.)

So first extract the BN from the Result:

token.totalSupply().then(result => {
  const supply = result[0];
  console.log(supply.toString());  // or .toNumber()
});
  • UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: totalSupply.toNumber is not a function – Sowmay Jain Mar 30 '18 at 10:16
  • It's an object. – Sowmay Jain Mar 30 '18 at 10:19
  • Is this in the browser? If so, console.log(totalSupply) and browse through it to see what functions are available? ethjs says it uses bn.js, and those BN objects have toNumber and toString both documented. – smarx Mar 30 '18 at 10:20
  • See also github.com/ethjs/ethjs/blob/…. – smarx Mar 30 '18 at 10:21
  • It's on NodeJS server. The totalSupply logs Result { '0': <BN: 100590> } The total supply must be 1050000. – Sowmay Jain Mar 30 '18 at 10:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.