From 90ac6c5ccd2bcd9423b306c980d43bce94079df1 Mon Sep 17 00:00:00 2001 From: Cheng Wang Date: Sun, 6 Oct 2024 11:49:57 +0200 Subject: [PATCH] Add utility function to generate mnemonic --- packages/web3-wallet/src/hd-wallet.test.ts | 7 +++++++ packages/web3-wallet/src/hd-wallet.ts | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/packages/web3-wallet/src/hd-wallet.test.ts b/packages/web3-wallet/src/hd-wallet.test.ts index 7fffd210e..50875f655 100644 --- a/packages/web3-wallet/src/hd-wallet.test.ts +++ b/packages/web3-wallet/src/hd-wallet.test.ts @@ -30,6 +30,7 @@ import { deriveSchnorrPrivateKeyForGroup, deriveSecp256K1PrivateKey, deriveSecp256K1PrivateKeyForGroup, + generateMnemonic, HDWallet } from './hd-wallet' @@ -41,6 +42,12 @@ describe('HD wallet', () => { const testMnemonic = 'vault alarm sad mass witness property virus style good flower rice alpha viable evidence run glare pretty scout evil judge enroll refuse another lava' + it('should gerate mnemonic', () => { + expect(generateMnemonic().split(' ').length).toBe(24) + expect(generateMnemonic(12).split(' ').length).toBe(12) + expect(generateMnemonic(24).split(' ').length).toBe(24) + }) + it('should derive private key based on index for secp256k1', () => { expect(deriveSecp256K1PrivateKey(testMnemonic, 0)).toEqual( 'a642942e67258589cd2b1822c631506632db5a12aabcf413604e785300d762a5' diff --git a/packages/web3-wallet/src/hd-wallet.ts b/packages/web3-wallet/src/hd-wallet.ts index 1b5f18850..c7f5e8318 100644 --- a/packages/web3-wallet/src/hd-wallet.ts +++ b/packages/web3-wallet/src/hd-wallet.ts @@ -26,6 +26,10 @@ import * as bip39 from 'bip39' import { bip32 } from './noble-wrapper' import { PrivateKeyWallet } from './privatekey-wallet' +export function generateMnemonic(wordLength?: 12 | 24): string { + return bip39.generateMnemonic(wordLength === 12 ? 128 : 256) +} + export function deriveHDWalletPrivateKey( mnemonic: string, keyType: KeyType,