54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
const fs = require('fs');
|
|
const initKredits = require('../helpers/init_kredits.js');
|
|
|
|
module.exports = async function(callback) {
|
|
let kredits;
|
|
try {
|
|
kredits = await initKredits(web3);
|
|
} catch(e) {
|
|
callback(e);
|
|
return;
|
|
}
|
|
|
|
console.log(`Using Contribution at: ${kredits.Contribution.contract.address}`);
|
|
|
|
try {
|
|
const count = await kredits.Contribution.count;
|
|
const currentBlockHeight = await kredits.provider.getBlockNumber();
|
|
|
|
const backup = {};
|
|
const promises = [];
|
|
for (let i = 1; i <= count; i++) {
|
|
promises.push(new Promise((resolve, reject) => {
|
|
setTimeout(async () => {
|
|
console.log(`Loading contribution #${i}`);
|
|
await kredits.Contribution.contract.getContribution(i).then(contractData => {
|
|
backup[i] = {
|
|
amount: contractData.amount,
|
|
contributorId: contractData.contributorId,
|
|
hashDigest: contractData.hashDigest,
|
|
hashFunction: contractData.hashFunction,
|
|
hashSize: contractData.hashSize,
|
|
confirmedAtBlock: contractData.confirmedAtBlock,
|
|
confirmed: contractData.confirmedAtBlock <= currentBlockHeight,
|
|
vetoed: contractData.vetoed,
|
|
id: contractData.id,
|
|
}
|
|
resolve();
|
|
});
|
|
}, 100 * i);
|
|
}));
|
|
}
|
|
|
|
await Promise.all(promises).then(() => {
|
|
fs.writeFileSync("./data/contributions.json", JSON.stringify(backup, null, 2));
|
|
console.log("Exported");
|
|
});
|
|
} catch(e) {
|
|
callback(e);
|
|
return;
|
|
}
|
|
|
|
callback();
|
|
}
|