Moved wallet loading out of bitcoinjs-lib.

This commit is contained in:
Stefan Thomas 2011-08-18 05:00:35 +01:00
parent 9fee035c58
commit 90c30f248e
2 changed files with 51 additions and 48 deletions

View file

@ -38,6 +38,10 @@ Bitcoin.ECKey = (function () {
return addr;
};
ECKey.prototype.setPub = function (pub) {
this.pub = pub;
};
ECKey.prototype.toString = function (format) {
if (format === "base64") {
return Crypto.util.bytesToBase64(this.priv.toByteArrayUnsigned());

View file

@ -1,12 +1,4 @@
Bitcoin.Wallet = (function () {
function supportsLocalStorage() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
};
var Script = Bitcoin.Script,
TransactionIn = Bitcoin.TransactionIn,
TransactionOut = Bitcoin.TransactionOut;
@ -23,35 +15,69 @@ Bitcoin.Wallet = (function () {
// Other fields
this.addressPointer = 0;
this.addKey = function (key) {
this.addKey = function (key, pub) {
if (!(key instanceof Bitcoin.ECKey)) {
key = new Bitcoin.ECKey(key);
}
keys.push(key);
if (pub) {
if ("string" === typeof pub) {
pub = Crypto.util.base64ToBytes(pub);
}
key.pub = pub;
}
this.addressHashes.push(key.getBitcoinAddress().getHashBase64());
};
this.addKeys = function (keys) {
for (var i = 0; i < keys.length; i++) {
this.addKey(keys[i]);
}
this.addKeys = function (keys, pubs) {
if ("string" === typeof keys) {
keys = keys.split(',');
}
if ("string" === typeof pubs) {
pubs = pubs.split(',');
}
console.log(pubs);
if (Array.isArray(pubs) && keys.length == pubs.length) {
for (var i = 0; i < keys.length; i++) {
this.addKey(keys[i], pubs[i]);
}
} else {
for (var i = 0; i < keys.length; i++) {
this.addKey(keys[i]);
}
}
};
this.save = function () {
this.getKeys = function () {
var serializedWallet = [];
for (var i = 0; i < keys.length; i++) {
serializedWallet.push(keys[i].toString('base64'));
}
console.log(serializedWallet);
localStorage["wallet"] = serializedWallet;
return serializedWallet;
};
this.getPubKeys = function () {
var pubs = [];
for (var i = 0; i < keys.length; i++) {
pubs.push(Crypto.util.bytesToBase64(keys[i].getPub()));
}
return pubs;
};
this.clear = function () {
keys = [];
};
this.getLength = function () {
return keys.length;
};
this.getAllAddresses = function () {
var addresses = [];
for (var i = 0; i < keys.length; i++) {
@ -104,38 +130,6 @@ Bitcoin.Wallet = (function () {
this.addKey(new Bitcoin.ECKey());
};
/**
* Detect and load a wallet from localStorage.
*/
Wallet.prototype.loadLocal = function () {
var wallet = localStorage["wallet"];
if (wallet) {
try {
this.addKeys(wallet.split(','));
return true;
} catch (e) {
return false;
}
} else {
return false;
}
};
Wallet.prototype.initNew = function (callback) {
var self = this;
var total = 5;
function generateNum (n) {
self.generateAddress();
if (n > 0) {
setTimeout(function () {generateNum(n-1);}, 1);
} else {
callback(total-n, total);
}
};
generateNum(total, callback);
};
Wallet.prototype.process = function (tx) {
if (this.txIndex[tx.hash]) return;
@ -227,6 +221,11 @@ Bitcoin.Wallet = (function () {
return sendTx;
};
Wallet.prototype.clearTransactions = function () {
this.txIndex = {};
this.unspentOuts = [];
};
/**
* Check to see if a pubKeyHash belongs to this wallet.
*/