Skip to content

Instantly share code, notes, and snippets.

@alanshaw
Last active December 18, 2020 19:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alanshaw/de6c8dff6e9c72bdbad5f966b84513e2 to your computer and use it in GitHub Desktop.
Save alanshaw/de6c8dff6e9c72bdbad5f966b84513e2 to your computer and use it in GitHub Desktop.
// 1. Install deps with `npm i csv-parse @glif/filecoin-number`
// 2. Drop `balances.baseline.clean.out` and `balances.claus.clean.out` into the CWD
// 3. Run `node balances-to-json.js`
// 4. It'll create `balances.baseline.json` and `balances.claus.json` and `actors.json` in the CWD
const fs = require('fs')
const parse = require('csv-parse')
const { FilecoinNumber } = require('@glif/filecoin-number')
async function main () {
const uniqueAddrs = new Set()
const baselineParser = fs.createReadStream('balances.baseline.clean.out').pipe(parse({ columns: true, delimiter: ' ' }))
const baselineData = []
for await (let { epoch, address, balance } of baselineParser) {
balance = new FilecoinNumber(balance, 'attofil')
uniqueAddrs.add(address)
baselineData.push({ epoch, address, balance: parseFloat(balance.toFil()) })
}
await fs.promises.writeFile('balances.baseline.json', JSON.stringify(baselineData))
const clausParser = fs.createReadStream('balances.claus.clean.out').pipe(parse({ columns: true, delimiter: ' ' }))
const clausData = []
for await (let { epoch, address, balance } of clausParser) {
balance = new FilecoinNumber(balance, 'attofil')
uniqueAddrs.add(address)
clausData.push({ epoch, address, balance: parseFloat(balance.toFil()) })
}
await fs.promises.writeFile('balances.claus.json', JSON.stringify(clausData))
await fs.promises.writeFile('actors.json', JSON.stringify(Array.from(uniqueAddrs.values()).sort((a, b) => a.localeCompare(b))))
}
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment