I have a js script that used to work fine with getting events in the proper format -
receipt.events.MyEvent.returnValues.marketShare
but reading events that way seems to no longer work. So I edited my script to read the logs and use web3.eth.abi.decodeLog
.
var eventAbi = [
{
"indexed": false,
"internalType": "uint256",
"name": "earnings",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "marketShare",
"type": "uint256"
},
];
var myEvent = web3.eth.abi.decodeLog(eventAbi, receipt.logs[1].data, receipt.logs[1].topics);
This seems to return fine, however my numbers are returning as such -
earnings: 32n
marketShare: 47691443057146912922899395050909650362856399929838832537703884369061582418996n
I need it to return the WEI or ETH value (at this point I'll take either or and convert later). So I've tried -
console.log(myEvent.marketShare.toLocaleString());
console.log(web3.utils.fromWei(myEvent.marketShare, "ether"));
console.log(myEvent.marketShare.toNumber());
console.log(myEvent.marketShare.toFixed());
console.log(web3.utils.toBN(myEvent.marketShare));
I'm not having any luck getting the correct values, any suggestions?
from web3.js ETH events log - How to convert javascript big number into WEI
No comments:
Post a Comment