Example #1
0
        wallet.getBalance(function(err, confirmed, unconfirmed) {
            if (err) {
                console.log(err);
                channel.send(err.message);
            } else if (confirmed >= value) {
                // EVERYTHING
                if (value == confirmed) {
                    value -= blocktrail.toSatoshi(0.0002); // some random fee because we don't have a swipe function yet
                }

                var pay = {};
                pay[address] = value;
                wallet.pay(pay, function(err, txHash) {
                    if (err) {
                        console.log(err);
                        channel.send(err.message);
                        return;
                    }

                    var url = self.tipbot.explorerBaseUrl + "/tx/" + txHash;
                    channel.send("Withdrawl of " + blocktrail.toBTC(value) + " BTC to " + address + " transaction; " + url);
                });
            } else if (confirmed + unconfirmed >= value) {
                channel.send("Sorry " + self.handle + " you have to wait for your previous transactions to be confirmed before you can do this ...");
            } else {
                channel.send("Sorry " + self.handle + " you do not have enough balance to do this ...");
            }
        });
Example #2
0
TipBot.prototype.normalizeValue = function(value, unit) {
    if (unit.match(/satoshis?/i)) {
        value = parseInt(value);
    } else if (unit.match(/BTC/i)) {
        value = blocktrail.toSatoshi(value);
    } else {
        value = null; // @TODO: should give a proper error
    }

    return value;
};
Example #3
0
var _ = require('lodash');
var debug = require('debug')('tipbot:tipbot');
var async = require('async');
var request = require('request');
var blocktrail = require('blocktrail-sdk');
var User = require('./user');
var Trigger = require('./trigger');
var bitcoin = require('bitcoinjs-lib');

// MIN_TIP equal to BASE_FEE
var MIN_TIP = blocktrail.toSatoshi(0.0001);

var TipBot = function(slack, BLOCKTRAIL_APIKEY, BLOCKTRAIL_APISECRET, SECRET, TESTNET, OPTIONS) {
    var self = this;

    self.slack = slack;
    self.client = blocktrail({
        apiKey: BLOCKTRAIL_APIKEY,
        apiSecret: BLOCKTRAIL_APISECRET,
        network: "BTC",
        testnet: TESTNET
    });
    self.explorerBaseUrl = "https://www.blocktrail.com/" + (TESTNET ? "tBTC" : "BTC");

    self.TESTNET = TESTNET;
    self.SECRET = SECRET;

    self.OPTIONS = _.defaults(OPTIONS, {
        ALL_BALANCES: false,
        DEMAND: false
    });