return account\r
}\r
\r
- /**\r
- * Cache frontier block in device memory.\r
- *\r
- * @param {number} index - Account number\r
- * @param {any} block - Block data to cache\r
- * @returns Status of command\r
- */\r
- async cacheBlock (index: number = 0, block: SendBlock | ReceiveBlock | ChangeBlock): Promise<LedgerResponse> {\r
- if (typeof index !== 'number' || index < 0 || index >= HARDENED_OFFSET) {\r
- throw new TypeError('Invalid account index')\r
- }\r
- if (!(block instanceof SendBlock) && !(block instanceof ReceiveBlock) && !(block instanceof ChangeBlock)) {\r
- throw new TypeError('Invalid block format')\r
- }\r
- if (!block.signature) {\r
- throw new ReferenceError('Cannot cache unsigned block')\r
- }\r
-\r
- const purpose = dec.toBytes(BIP44_PURPOSE + HARDENED_OFFSET, 4)\r
- const coin = dec.toBytes(BIP44_COIN_NANO + HARDENED_OFFSET, 4)\r
- const account = dec.toBytes(index + HARDENED_OFFSET, 4)\r
- const previous = hex.toBytes(block.previous)\r
- const link = hex.toBytes(block.link)\r
- const representative = hex.toBytes(block.representative.publicKey)\r
- const balance = hex.toBytes(BigInt(block.balance).toString(16), 16)\r
- const signature = hex.toBytes(block.signature)\r
- const data = new Uint8Array([LEDGER_ADPU_CODES.bip32DerivationLevel, ...purpose, ...coin, ...account, ...previous, ...link, ...representative, ...balance, ...signature])\r
-\r
- const transport = await this.DynamicTransport.create(this.openTimeout, this.listenTimeout)\r
- const response = await transport.send(LEDGER_ADPU_CODES.class, LEDGER_ADPU_CODES.cacheBlock, LEDGER_ADPU_CODES.paramUnused, LEDGER_ADPU_CODES.paramUnused, data as Buffer)\r
- .then(res => bytes.toDec(res))\r
- .catch(err => err.statusCode) as number\r
- await transport.close()\r
-\r
- return { status: LEDGER_STATUS_CODES[response] }\r
- }\r
-\r
/**\r
* Sign a block with the Ledger device.\r
*\r
}\r
input = res.contents\r
}\r
- return this.cacheBlock(index, input)\r
+ return this.#cacheBlock(index, input)\r
}\r
\r
/**\r
}\r
}\r
\r
+ /**\r
+ * Cache frontier block in device memory.\r
+ *\r
+ * @param {number} index - Account number\r
+ * @param {any} block - Block data to cache\r
+ * @returns Status of command\r
+ */\r
+ async #cacheBlock (index: number = 0, block: SendBlock | ReceiveBlock | ChangeBlock): Promise<LedgerResponse> {\r
+ if (typeof index !== 'number' || index < 0 || index >= HARDENED_OFFSET) {\r
+ throw new TypeError('Invalid account index')\r
+ }\r
+ if (!(block instanceof SendBlock) && !(block instanceof ReceiveBlock) && !(block instanceof ChangeBlock)) {\r
+ throw new TypeError('Invalid block format')\r
+ }\r
+ if (!block.signature) {\r
+ throw new ReferenceError('Cannot cache unsigned block')\r
+ }\r
+\r
+ const purpose = dec.toBytes(BIP44_PURPOSE + HARDENED_OFFSET, 4)\r
+ const coin = dec.toBytes(BIP44_COIN_NANO + HARDENED_OFFSET, 4)\r
+ const account = dec.toBytes(index + HARDENED_OFFSET, 4)\r
+ const previous = hex.toBytes(block.previous)\r
+ const link = hex.toBytes(block.link)\r
+ const representative = hex.toBytes(block.representative.publicKey)\r
+ const balance = hex.toBytes(BigInt(block.balance).toString(16), 16)\r
+ const signature = hex.toBytes(block.signature)\r
+ const data = new Uint8Array([LEDGER_ADPU_CODES.bip32DerivationLevel, ...purpose, ...coin, ...account, ...previous, ...link, ...representative, ...balance, ...signature])\r
+\r
+ const transport = await this.DynamicTransport.create(this.openTimeout, this.listenTimeout)\r
+ const response = await transport.send(LEDGER_ADPU_CODES.class, LEDGER_ADPU_CODES.cacheBlock, LEDGER_ADPU_CODES.paramUnused, LEDGER_ADPU_CODES.paramUnused, data as Buffer)\r
+ .then(res => bytes.toDec(res))\r
+ .catch(err => err.statusCode) as number\r
+ await transport.close()\r
+\r
+ return { status: LEDGER_STATUS_CODES[response] }\r
+ }\r
+\r
/**\r
* Gets the public key for an account from the Ledger device.\r
*\r