5

I need a library in golang to implement HD Wallet.

2 Answers 2

5

You can use the package github.com/miguelmota/go-ethereum-hdwallet to implement an HD wallet (which implements the accounts.Wallet interface from go-ethereum).

Here's a basic example to get started:

import (
    "fmt"
    "log"

    "github.com/miguelmota/go-ethereum-hdwallet"
    "github.com/tyler-smith/go-bip39"
)

func main() {
    entropy, err := bip39.NewEntropy(128)
    if err != nil {
        log.Fatal(err)
    }

    mnemonic, _ := bip39.NewMnemonic(entropy)
    seed := bip39.NewSeed(mnemonic, "")

    wallet, err := hdwallet.NewFromSeed(seed)
    if err != nil {
        log.Fatal(err)
    }

    path := hdwallet.MustParseDerivationPath("m/44'/60'/0'/0/0")
    account, err := wallet.Derive(path, false)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(account.Address.Hex()) // 0xC49926C4124cEe1cbA0Ea94Ea31a6c12318df947

    path = hdwallet.MustParseDerivationPath("m/44'/60'/0'/0/1")
    account, err = wallet.Derive(path, false)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(account.Address.Hex()) // 0x8230645aC28A4EdD1b0B53E7Cd8019744E9dD559
}

Disclosure: I am author of library.

4
  • btw, using mnemonic to generate random numbers for private keys is a good way to lose your money. Check this: medium.com/@touchdownFW/…
    – Nulik
    Jul 8, 2018 at 2:04
  • @Nulik not sure what you mean. Common wallet's such as MetaMask and Ledger Nano's use mnemonics as the seed.. Jul 8, 2018 at 3:18
  • It doesn't matter what others do, may people cross the street on red light or drive being drunk. In encryption any decrease in randomness is dangerous and should be avoided. The article describes how many Bitcoin accounts (created with mnemonics) were hacked.
    – Nulik
    Jul 8, 2018 at 16:55
  • 1
    @Nulik "It doesn't matter what others do" - I hope that was sarcasm. The article mentions brain wallets which is a phrase completely created by the user and because of that brain wallets are a bad idea. However a BIP39 mnemonic is not a brain wallet and is generated with 128-256 bits of entropy. Jul 8, 2018 at 21:10
0

You can use the standard GETH accounts package https://godoc.org/github.com/ethereum/go-ethereum/accounts

1
  • yep! that's what I did.
    – Nulik
    Jul 8, 2018 at 2:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.