From 356cbee03b1508fd0da770a5a6d72fb3124c5388 Mon Sep 17 00:00:00 2001 From: rileystephens28 Date: Wed, 26 Jun 2024 15:19:43 -0500 Subject: [PATCH] Add methods for getting xPub of root node and getting private key for an address --- src/wallet/hdwallet.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/wallet/hdwallet.ts b/src/wallet/hdwallet.ts index 248cdff4..bf1ad2e7 100644 --- a/src/wallet/hdwallet.ts +++ b/src/wallet/hdwallet.ts @@ -85,6 +85,15 @@ export abstract class AbstractHDWallet { return (this.constructor as typeof AbstractHDWallet)._coinType!; } + /** + * Returns the extended public key of the root node of the HD wallet. + * + * @returns {string} The extended public key. + */ + get xPub(): string { + return this._root.extendedKey; + } + /** * Derives the next valid address node for a specified account, starting index, and zone. The method ensures the * derived address belongs to the correct shard and ledger, as defined by the Quai blockchain specifications. @@ -223,6 +232,18 @@ export abstract class AbstractHDWallet { return addressInfo; } + /** + * Returns the private key for a given address. This method should be used with caution as it exposes the private + * key to the user. + * + * @param {string} address - The address associated with the desired private key. + * @returns {string} The private key. + */ + public getPrivateKey(address: string): string { + const hdNode = this._getHDNodeForAddress(address); + return hdNode.privateKey; + } + /** * Gets the addresses for a given account. *