Moved wallet loading out of bitcoinjs-lib.
This commit is contained in:
parent
9fee035c58
commit
90c30f248e
2 changed files with 51 additions and 48 deletions
|
@ -38,6 +38,10 @@ Bitcoin.ECKey = (function () {
|
||||||
return addr;
|
return addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ECKey.prototype.setPub = function (pub) {
|
||||||
|
this.pub = pub;
|
||||||
|
};
|
||||||
|
|
||||||
ECKey.prototype.toString = function (format) {
|
ECKey.prototype.toString = function (format) {
|
||||||
if (format === "base64") {
|
if (format === "base64") {
|
||||||
return Crypto.util.bytesToBase64(this.priv.toByteArrayUnsigned());
|
return Crypto.util.bytesToBase64(this.priv.toByteArrayUnsigned());
|
||||||
|
|
|
@ -1,12 +1,4 @@
|
||||||
Bitcoin.Wallet = (function () {
|
Bitcoin.Wallet = (function () {
|
||||||
function supportsLocalStorage() {
|
|
||||||
try {
|
|
||||||
return 'localStorage' in window && window['localStorage'] !== null;
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var Script = Bitcoin.Script,
|
var Script = Bitcoin.Script,
|
||||||
TransactionIn = Bitcoin.TransactionIn,
|
TransactionIn = Bitcoin.TransactionIn,
|
||||||
TransactionOut = Bitcoin.TransactionOut;
|
TransactionOut = Bitcoin.TransactionOut;
|
||||||
|
@ -23,35 +15,69 @@ Bitcoin.Wallet = (function () {
|
||||||
// Other fields
|
// Other fields
|
||||||
this.addressPointer = 0;
|
this.addressPointer = 0;
|
||||||
|
|
||||||
this.addKey = function (key) {
|
this.addKey = function (key, pub) {
|
||||||
if (!(key instanceof Bitcoin.ECKey)) {
|
if (!(key instanceof Bitcoin.ECKey)) {
|
||||||
key = new Bitcoin.ECKey(key);
|
key = new Bitcoin.ECKey(key);
|
||||||
}
|
}
|
||||||
keys.push(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.addressHashes.push(key.getBitcoinAddress().getHashBase64());
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addKeys = function (keys) {
|
this.addKeys = function (keys, pubs) {
|
||||||
for (var i = 0; i < keys.length; i++) {
|
if ("string" === typeof keys) {
|
||||||
this.addKey(keys[i]);
|
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 = [];
|
var serializedWallet = [];
|
||||||
|
|
||||||
for (var i = 0; i < keys.length; i++) {
|
for (var i = 0; i < keys.length; i++) {
|
||||||
serializedWallet.push(keys[i].toString('base64'));
|
serializedWallet.push(keys[i].toString('base64'));
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(serializedWallet);
|
return serializedWallet;
|
||||||
localStorage["wallet"] = 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 () {
|
this.clear = function () {
|
||||||
keys = [];
|
keys = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.getLength = function () {
|
||||||
|
return keys.length;
|
||||||
|
};
|
||||||
|
|
||||||
this.getAllAddresses = function () {
|
this.getAllAddresses = function () {
|
||||||
var addresses = [];
|
var addresses = [];
|
||||||
for (var i = 0; i < keys.length; i++) {
|
for (var i = 0; i < keys.length; i++) {
|
||||||
|
@ -104,38 +130,6 @@ Bitcoin.Wallet = (function () {
|
||||||
this.addKey(new Bitcoin.ECKey());
|
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) {
|
Wallet.prototype.process = function (tx) {
|
||||||
if (this.txIndex[tx.hash]) return;
|
if (this.txIndex[tx.hash]) return;
|
||||||
|
|
||||||
|
@ -227,6 +221,11 @@ Bitcoin.Wallet = (function () {
|
||||||
return sendTx;
|
return sendTx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.clearTransactions = function () {
|
||||||
|
this.txIndex = {};
|
||||||
|
this.unspentOuts = [];
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check to see if a pubKeyHash belongs to this wallet.
|
* Check to see if a pubKeyHash belongs to this wallet.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue