Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
BeeTokenAssignment/index.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
75 lines (63 sloc)
2.85 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fs = require("fs"); | |
var Web3 = require('web3'); | |
//bee ABI copy and pasted from etherscan | |
var ABI = fs.readFileSync('./beeTokenAbi.json', 'utf8') | |
// use your infura token please | |
var web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/YOURINFURALINK")) | |
//creates contract instance at address | |
let beeContract = new web3.eth.Contract(JSON.parse(ABI),"0x4D8fc1453a0F359e99c9675954e656D80d996FbF") | |
var ABI = fs.readFileSync('./beeABI.json') | |
let beeTokenOfferingContract = new web3.eth.Contract(JSON.parse(ABI), "0x62caf75a67252f7be236a7335fed1410c7434b7f") | |
var ICOTokenHolders = {} | |
var tokenHoldersList; | |
console.log("starting ICO TOKEN HOLDER SEARCH"); | |
// get past events from token offering contract -> event = TokenPurchase | |
beeTokenOfferingContract.getPastEvents('TokenPurchase', | |
{fromBlock:5007452, toBlock:5019086}).then(function(events) { | |
// store number of past events | |
var eventsCount = events.length; | |
// for loop through each event and put purchaser address in dictionary along with 0 value | |
for (var i = 0; i < eventsCount; i++) { | |
var purchaser = events[i].returnValues[0]; | |
ICOTokenHolders[purchaser] = 0; | |
} | |
console.log("finished FINDING ICO TOKEN HOLDERS") | |
//return ICOTokenHolders; | |
return ICOTokenHolders; | |
}).then(function(ICOTokenHolders) { | |
console.log("starting TOKEN TRANSFERS SEARCH"); | |
// Get an array of token holder addresses for event filter and print | |
tokenHoldersList = Object.keys(ICOTokenHolders); | |
//get past events from BeeToken Contract -> event = Transfer | |
beeContract.getPastEvents('Transfer', {fromBlock:5019086}).then(function (events) { | |
// store number of past events | |
var eventsCount = events.length; | |
/* for loop through each event and | |
* if seller is in tokenHoldersList -> subtract value in dictionary | |
* if buyer is in tokenHoldersList -> add value in dictionary | |
*/ | |
for (var i = 0; i < eventsCount; i++) { | |
var seller = events[i].returnValues[0]; | |
var buyer = events[i].returnValues[1] | |
var tokenAmount = Number(events[i].returnValues[2])/1000000000000000000; | |
var currTokens; | |
if(seller in ICOTokenHolders) { | |
currTokens = ICOTokenHolders[seller]; | |
ICOTokenHolders[seller] = currTokens - tokenAmount; | |
} | |
if(buyer in ICOTokenHolders) { | |
currTokens = ICOTokenHolders[buyer]; | |
ICOTokenHolders[buyer] = currTokens + tokenAmount; | |
} | |
} | |
console.log("finished FINDING TOKEN TRANSFERS") | |
return ICOTokenHolders; | |
}).then(function(ICOTokenHolders) { | |
console.log("Printing TOKEN HOLDERS WHO BOUGHT MORE TOKENS POST ICO") | |
for(key in ICOTokenHolders) { | |
if(ICOTokenHolders[key] >0.001) { | |
console.log("TokenHolder " + key + " bought " + ICOTokenHolders[key] + " BeeTokens after the ICO"); | |
} | |
} | |
}); | |
}); |