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