UNPKG

bip32-utils-smart

Version:

A set of utilities for working with BIP32 for SmartCash.

73 lines (53 loc) 1.58 kB
function Chain (parent, k) { k = k || 0 this.__parent = parent this.addresses = [] this.k = k this.map = {} } Chain.prototype.__initialize = function () { var address = this.__parent.derive(this.k).getAddress() this.map[address] = this.k this.addresses.push(address) } Chain.prototype.clone = function () { var chain = new Chain(this.__parent, this.k) for (var k in this.addresses) chain.addresses[k] = this.addresses[k] for (k in this.map) chain.map[k] = this.map[k] return chain } Chain.prototype.derive = function (address, parent) { var k = this.map[address] if (k === undefined) return parent = parent || this.__parent return parent.derive(k) } Chain.prototype.find = function (address) { return this.map[address] } Chain.prototype.get = function () { if (this.addresses.length === 0) this.__initialize() return this.addresses[this.addresses.length - 1] } Chain.prototype.getAll = function () { if (this.addresses.length === 0) this.__initialize() return this.addresses } Chain.prototype.getParent = function () { return this.__parent } Chain.prototype.next = function () { if (this.addresses.length === 0) this.__initialize() var address = this.__parent.derive(this.k + 1).getAddress() this.k += 1 this.map[address] = this.k this.addresses.push(address) return address } Chain.prototype.pop = function () { var address = this.addresses.pop() delete this.map[address] this.k -= 1 return address } module.exports = Chain