account: lookahead option.

This commit is contained in:
Christopher Jeffrey 2016-11-02 16:46:25 -07:00
parent 185586abb0
commit 7d3eb8f3fa
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -49,7 +49,6 @@ function Account(db, options) {
this.db = db;
this.network = db.network;
this.wallet = null;
this.lookahead = Account.MAX_LOOKAHEAD;
this.receive = null;
this.change = null;
@ -68,6 +67,7 @@ function Account(db, options) {
this.receiveDepth = 0;
this.changeDepth = 0;
this.nestedDepth = 0;
this.lookahead = 5;
this.accountKey = null;
this.keys = [];
@ -175,6 +175,13 @@ Account.prototype.fromOptions = function fromOptions(options) {
this.nestedDepth = options.nestedDepth;
}
if (options.lookahead != null) {
assert(utils.isNumber(options.lookahead));
assert(options.lookahead >= 0);
assert(options.lookahead <= Account.MAX_LOOKAHEAD);
this.lookahead = options.lookahead;
}
this.accountKey = options.accountKey;
if (this.n > 1)
@ -211,7 +218,7 @@ Account.fromOptions = function fromOptions(db, options) {
* @const {Number}
*/
Account.MAX_LOOKAHEAD = 10;
Account.MAX_LOOKAHEAD = 20;
/**
* Attempt to intialize the account (generating
@ -670,7 +677,7 @@ Account.prototype.syncDepth = co(function* syncDepth(receive, change, nested) {
if (receive > this.receiveDepth) {
depth = this.receiveDepth + this.lookahead;
assert(receive < depth);
assert(receive <= depth);
for (i = depth; i < receive + this.lookahead; i++) {
key = this.deriveReceive(i);
@ -687,7 +694,7 @@ Account.prototype.syncDepth = co(function* syncDepth(receive, change, nested) {
if (change > this.changeDepth) {
depth = this.changeDepth + this.lookahead;
assert(change < depth);
assert(change <= depth);
for (i = depth; i < change + this.lookahead; i++) {
key = this.deriveChange(i);
@ -703,7 +710,7 @@ Account.prototype.syncDepth = co(function* syncDepth(receive, change, nested) {
if (this.witness && nested > this.nestedDepth) {
depth = this.nestedDepth + this.lookahead;
assert(nested < depth);
assert(nested <= depth);
for (i = depth; i < nested + this.lookahead; i++) {
key = this.deriveNested(i);
@ -781,6 +788,7 @@ Account.prototype.inspect = function inspect() {
receiveDepth: this.receiveDepth,
changeDepth: this.changeDepth,
nestedDepth: this.nestedDepth,
lookahead: this.lookahead,
address: this.initialized
? this.receive.getAddress()
: null,
@ -815,6 +823,7 @@ Account.prototype.toJSON = function toJSON(minimal) {
receiveDepth: this.receiveDepth,
changeDepth: this.changeDepth,
nestedDepth: this.nestedDepth,
lookahead: this.lookahead,
receiveAddress: this.receive
? this.receive.getAddress('base58')
: null,
@ -850,6 +859,7 @@ Account.prototype.toRaw = function toRaw(writer) {
p.writeU32(this.receiveDepth);
p.writeU32(this.changeDepth);
p.writeU32(this.nestedDepth);
p.writeU8(this.lookahead);
p.writeBytes(this.accountKey.toRaw());
p.writeU8(this.keys.length);
@ -885,6 +895,7 @@ Account.prototype.fromRaw = function fromRaw(data) {
this.receiveDepth = p.readU32();
this.changeDepth = p.readU32();
this.nestedDepth = p.readU32();
this.lookahead = p.readU8();
this.accountKey = HD.fromRaw(p.readBytes(82));
assert(Account.typesByVal[this.type]);