forked from trezor-graveyard/insight-api
-
Notifications
You must be signed in to change notification settings - Fork 16
Code Examples
MSFTserver edited this page Jun 7, 2018
·
7 revisions
let needle = require('needle');
var previousHeight = 123456;
needle.get('https://ravencoin.network/api/txs?block=' + previousHeight, function(error, response) {
if (error || response.statusCode !== 200) {
console.log('Explorer Api Not Available!')
} else {
var winners = getWinner(response.body, previousHeight);
console.log(winners);
}
function getWinner(array, previousHeight) {
var winner = [];
var winnerAddys = [];
var count = 0;
for (var i = 0; i < array.txs.length; i++) {
var position = i++
if (array.txs[position].hasOwnProperty('isCoinBase')){
winner.push(array.txs[position]);
}
}
for (var l = 0; l < winner[0].vout.length; l++) {
var addys = winner[0].vout[l].scriptPubKey.addresses
if (addys){
winnerAddys.push(addys)
}
}
var previousBlockWinner = winnerAddys.join('<br>');
return previousBlockWinner
}
let socketClient = require('socket.io-client');
exports.custom = ['socketBlocks'];
exports.socketBlocks = function(bot) {
let eventToListenTo = 'raven/block';
let room = 'raven';
let socket = socketClient('https://ravencoin.network/');
socket.on('connect', function() {
socket.emit('subscribe', room);
});
socket.on(eventToListenTo, function(data) {
var poolName = data.block.poolInfo.poolName;
var poolUrl = data.block.poolInfo.url;
var blockHeight = data.block.height;
var blockHash = data.block.hash;
let dt = new Date();
let timestamp = moment()
.tz('America/Los_Angeles')
.format('MM-DD-YYYY hh:mm::ss a');
if (poolName) {
console.log('Won by ' +
poolName +
' (' +
poolUrl +
')\n (' +
SocketUrl +
'/block/' +
blockHash +
')');
}
});
};
let socketClient = require('socket.io-client');
exports.custom = ['socketBlocks'];
exports.socketBlocks = function(bot) {
let eventToListenTo = 'raven/tx';
let room = 'raven';
let socket = socketClient('https://ravencoin.network/');
socket.on('connect', function() {
socket.emit('subscribe', room);
});
socket.on(eventToListenTo, function(data) {
if (!data.isRBF){
var vinAddresses = [];
var voutAddresses = [];
console.log(data.txid);
console.log(data.valueOut);
var vin = data.vin;
var vout = data.vout;
for (i=0; i < vin.length; i++) {
vinAddy = new Object();
vinAddy['address'] = vin[i].address
vinAddresses.push(vinAddy);
}
console.log(countDuplicates(vinAddresses));
for (l=0; l < vout.length; l++) {
voutAddy = new Object();
voutAddy['address'] = vout[l].address
voutAddy['amount'] = vout[l].value
voutAddresses.push(voutAddy);
}
console.log(voutAddresses);
}
});
function countDuplicates(names){
const result = [...names.reduce( (mp, o) => {
if (!mp.has(o.address)) mp.set(o.address, Object.assign(o, { inputs: 0 }));
mp.get(o.address).inputs++;
return mp;
}, new Map).values()];
return result;
}
};