Added the Satoshi fire alarm example.

This commit is contained in:
Chris Kleeschulte 2015-10-14 13:16:39 -04:00
parent a9bf3813df
commit d8e66d23e0
2 changed files with 92 additions and 0 deletions

88
satoshicoins/index.js Normal file
View File

@ -0,0 +1,88 @@
var index = require('../../node_modules/bitcore-node');
var log = index.log;
var util = require('util');
var Service = require('../../node_modules/bitcore-node/lib/service');
var Transaction = require('../../node_modules/bitcore-node/lib/transaction');
var spawn = require('child_process').spawn;
function SatoshiCoins(options) {
Service.call(this, options);
this.alarmActivated = false;
this.child;
this.interestingAddresses = [
'1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa', //this is the address that the genesis paid its coinbase to. Can't be spent due to a bug in the code.
'12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX', //Block 1
'1HLoD9E4SDFFPDiYfNYnkBLQ85Y51J3Zb1' //Block 2
];
this.node.services.bitcoind.on('tx', this.transactionHandler.bind(this));
}
/*
* We are going to need bitcoind because we will be setting event listeners (subscribers)
* on Blocks and such
*/
SatoshiCoins.dependencies = ['bitcoind', 'db', 'address'];
/*
* inherits the serivce base class so we get some stuff for free
*/
util.inherits(SatoshiCoins, Service);
/*
* start: REQUIRED!! Ours just calls the callback
*/
SatoshiCoins.prototype.start = function(callback) {
callback();
}
/*
* stop: REQUIRED!! Ours just calls the callback
*/
SatoshiCoins.prototype.stop = function(callback) {
callback();
}
/*
* transactionHandler: this is the delegate when a transaction is received by your node
*/
SatoshiCoins.prototype.transactionHandler = function(txinfo) {
var tx = bitcore.Transaction().fromBuffer(txInfo.buffer);
var messages = {};
var inputsLength = tx.inputs.length;
for (var i = 0; i < inputsLength; i++) {
this.transactionInputHandler(tx, i);
}
}
/*
* transactionInputHandler: helper for transactionHandler
*/
SatoshiCoins.prototype.transactionInputHandler = function(tx, i) {
var address = tx.inputs[i].script.toAddress();
if (typeof address !== 'undefined' &&
this.interestingAddresses.indexOf(address) != -1) {
this.soundAlarm();
}
}
/*
* soundAlarm: will launch a separate alarm program (not provided)
*/
SatoshiCoins.prototype.soundAlarm = function() {
if (this.alarmActivated) return;
this.alarmActivated = true;
var child = spawn('alarm', []);
}
SatoshiCoins.prototype.resetAlarm = function() {
child.kill();
this.alarmActivated = false;
}
module.exports = SatoshiCoins;

View File

@ -0,0 +1,4 @@
{
"dependencies": {
}
}