Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 26 additions & 5 deletions example/checkbalance.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,34 @@

var BitGoJS = require('../src/index.js');

if (process.argv.length < 5) {
console.log("usage:\n\t" + process.argv[0] + " " + process.argv[1] + " <user> <pass> <otp> <address>");
process.exit(-1);
}

var user = process.argv[2];
var password = process.argv[3];
var otp = process.argv[4];

var addressToCheck = 'mwfZSo1rwkxvU5axMEYQJkgEb1qgw8geQ9';
if (process.argv.length > 2) {
addressToCheck = process.argv[2];
if (process.argv.length > 5) {
addressToCheck = process.argv[5];
}

var bitgo = new BitGoJS.BitGo();
bitgo.wallets().get({type: 'bitcoin', address: addressToCheck}, function(err, wallet) {
if (err) { console.log(err); process.exit(-1); }
console.log("Balance is: " + (wallet.balance() / 1e8).toFixed(4));

// First, Authenticate
bitgo.authenticate(user, password, otp, function(err, result) {
if (err) {
console.dir(err);
throw new Error("Could not auth!");
}
console.log("Logged in!" );

// Now get the Balance
bitgo.wallets().get({type: 'bitcoin', address: addressToCheck}, function(err, wallet) {
if (err) { console.log(err); process.exit(-1); }
console.log("Balance is: " + (wallet.balance() / 1e8).toFixed(4));
});
});

67 changes: 53 additions & 14 deletions example/createwallet.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,55 @@ var createWallet = function() {
var userKey = bitgo.keychains().create();
var backupKey = bitgo.keychains().create();

// First create the user key
var options = {
label: 'key1',
xpub: userKey.xpub,
encryptedXprv: bitgo.encrypt(password, userKey.xprv)
};
bitgo.keychains().add(options, function(err, keychain) {
if (err) { throw err; }
if (err) {
console.dir(err);
throw new Error("Could not create the user keychain");
}
console.log("User keychain xPub: " + userKey.xpub);

// Now create the backup key
var options = {
label: 'key2',
xpub: backupKey.xpub
};
bitgo.keychains().add(options, function(err, keychain) {
if (err) { throw err; }
var options = {
label: 'new wallet',
m: 2,
n: 3,
keychains: [userKey.xpub, backupKey.xpub]
};
bitgo.wallets().add(options, function(err, wallet) {
if (err) { throw err; }
console.log("Wallet Created!");
console.dir(wallet);
if (err) {
console.dir(err);
throw new Error("Could not create the backup keychain");
}
console.log("Backup keychain xPub: " + backupKey.xpub);

// Now tell BitGo to create their server side key
bitgo.keychains().createBitGo({}, function(err, keychain) {
if (err) {
throw new Error("Could not create 3rd keychain on BitGo");
}
console.log("BitGo service keychain xPub: " + keychain.xpub);

var options = {
label: 'new wallet',
m: 2,
n: 3,
keychains: [
{ xpub: userKey.xpub },
{ xpub: backupKey.xpub },
{ xpub: keychain.xpub} ]
};
bitgo.wallets().add(options, function (err, wallet) {
if (err) {
console.dir(err);
throw new Error("Could not add wallet on BitGo");
}
console.log("Wallet Created!");
console.dir(wallet);
});
});
});
});
Expand All @@ -53,10 +79,23 @@ var createWallet = function() {
}
}

// Authenticate first
bitgo.authenticate(user, password, otp, function(err, result) {
if (err) {
console.dir(err);
throw new Error("Could not authenticate!");
}
console.log("Creating wallet: " );
createWallet();

console.log("Unlock account: " );
bitgo.unlock(otp, function(err) {
if (err) {
console.dir(err);
throw new Error("Could not unlock!");
}

console.log("Creating wallet: " );
// Actually create wallet here
createWallet();
})

});
62 changes: 42 additions & 20 deletions example/listtransactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,55 @@

var BitGoJS = require('../src/index.js');


if (process.argv.length < 5) {
console.log("usage:\n\t" + process.argv[0] + " " + process.argv[1] + " <user> <pass> <otp> <address>");
process.exit(-1);
}

var user = process.argv[2];
var password = process.argv[3];
var otp = process.argv[4];

var addressToCheck = 'mwfZSo1rwkxvU5axMEYQJkgEb1qgw8geQ9';
if (process.argv.length > 2) {
addressToCheck = process.argv[2];
if (process.argv.length > 5) {
addressToCheck = process.argv[5];
}

var bitgo = new BitGoJS.BitGo();
bitgo.wallets().get({type: 'bitcoin', address: addressToCheck}, function(err, wallet) {
if (err) { console.log(err); process.exit(-1); }
console.log("Balance is: " + (wallet.balance() / 1e8).toFixed(4));

wallet.transactions({}, function(err, result) {
// First, Authenticate
bitgo.authenticate(user, password, otp, function(err, result) {
if (err) {
console.dir(err);
throw new Error("Could not auth!");
}
console.log("Logged in!" );

// Now get the wallet
bitgo.wallets().get({type: 'bitcoin', address: addressToCheck}, function(err, wallet) {
if (err) { console.log(err); process.exit(-1); }
for (var index = 0; index < result.transactions.length; ++index) {
var tx = result.transactions[index];
var output = tx.date;

var value = 0;
for (var entriesIndex = 0; entriesIndex < tx.entries.length; ++entriesIndex) {
if (tx.entries[entriesIndex].account === wallet.address()) {
value += tx.entries[entriesIndex].value;
console.log("Balance is: " + (wallet.balance() / 1e8).toFixed(4));

// Now get the transactions
wallet.transactions({}, function(err, result) {
if (err) { console.log(err); process.exit(-1); }
for (var index = 0; index < result.transactions.length; ++index) {
var tx = result.transactions[index];
var output = tx.date;

var value = 0;
for (var entriesIndex = 0; entriesIndex < tx.entries.length; ++entriesIndex) {
if (tx.entries[entriesIndex].account === wallet.address()) {
value += tx.entries[entriesIndex].value;
}
}
}

var verb = (value > 0) ? 'received' : 'sent';
var verb = (value > 0) ? 'received' : 'sent';

output += ' ' + verb + ' ' + (value / 1e8).toFixed(8) + 'BTC';
console.log(output);
}
output += ' ' + verb + ' ' + (value / 1e8).toFixed(8) + 'BTC';
console.log(output);
}
});
});
});
});
29 changes: 22 additions & 7 deletions example/market.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,29 @@
var BitGoJS = require('../src/index.js');

var bitgo = new BitGoJS.BitGo();
bitgo.market(function(err, market) {
var market = null;
var yesterday = null;

// Get latest market data
bitgo.market(function(err, res) {
if (err) {
throw err;
}
var changeSinceYesterday = (market.last - market.yesterday.last).toFixed(2);
var direction = changeSinceYesterday > 0 ? "up" : "down";
changeSinceYesterday = Math.abs(changeSinceYesterday);
console.log(
"Market Price: $" + market.last +
market = res;

// Get yesterday's data
bitgo.yesterday(function(err, res) {
if (err) {
throw err;
}
yesterday = res;

// Now print out some market information
var changeSinceYesterday = (market.latest.currencies.USD.last - yesterday.currencies.USD.last).toFixed(2);
var direction = changeSinceYesterday > 0 ? "up" : "down";
changeSinceYesterday = Math.abs(changeSinceYesterday);
console.log(
"Market Price (USD): $" + market.latest.currencies.USD.last +
" (" + direction + " $" + changeSinceYesterday + " from yesterday)");
});
});
});
19 changes: 19 additions & 0 deletions src/bitgo.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,25 @@ BitGo.prototype.market = function(callback) {
});
};

//
// market data yesterday
// Get market data from yesterday
//
BitGo.prototype.yesterday = function(callback) {
if (typeof(callback) != 'function') {
throw new Error('invalid argument');
}

this.get(this.url('/market/yesterday'))
.end(function(err, res) {
if (err) {
return callback(err);
}
callback(null, res.body);
});
};


//
// authenticate
// Login to the bitgo system.
Expand Down