Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const functions = require('firebase-functions');
- exports.distributeStakingRewards = functions.pubsub.schedule('every 1 minutes').onRun((context) => {
- const request = require('request')
- //Fetch list of users who has a positive balance for your asset..
- const assetID = 'xxx'
- request('https://testnode1.wavesnodes.com/assets/' + assetID + '/distribution', function(err, res, body) {
- if (res.statusCode === 200) {
- const bodyJSON = JSON.parse(body)
- var transfers = []
- for (uid in bodyJSON) {
- var bal = bodyJSON[uid]
- //Set minimum balance to get rewarded
- if (bal >= 1) {
- var reward = '0.005'
- var transfer = { recipient: uid, amount: reward }
- transfers.push(transfer)
- }
- }
- const waves = require('waves-transactions')
- const nodeUrl = 'https://testnode1.wavesnodes.com/'
- const params = { transfers: transfers,assetId: assetID, attachment: 'Weekly staking rewards payout', timestamp: Date.now() }
- const signedTx = waves.massTransfer(params,
- {
- 'privateKey': 'xxxx',
- }
- )
- const id = signedTx.id
- waves.nodeInteraction.broadcast(signedTx, nodeUrl).then(tx => {
- //If tx returns null or undefined tx.id will be undefined === false
- if (tx.id === id) {
- console.log('Successfully distributed staking rewards for ' + new Date().toDateString() + 'was complete')
- } else {
- console.log('Unable to distribute staking rewards for ' + new Date().toDateString())
- }
- })
- } else {
- console.log('unable to fetch asset distribution ' + err)
- }
- })
- })
Add Comment
Please, Sign In to add comment