Skip to content

Instantly share code, notes, and snippets.

@mymtw
Last active November 30, 2020 02:03
Show Gist options
  • Save mymtw/7d676b0123a462354cb6d8626daa3ceb to your computer and use it in GitHub Desktop.
Save mymtw/7d676b0123a462354cb6d8626daa3ceb to your computer and use it in GitHub Desktop.
import (
"errors"
"fmt"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcutil"
"github.com/btcsuite/btcutil/hdkeychain"
"github.com/btcsuite/btcd/btcec"
"github.com/tyler-smith/go-bip39"
)
func (h HDWallet) NewMaster(seed []byte, net *chaincfg.Params) (*btcutil.WIF, error) {
master, err := hdkeychain.NewMaster(seed, net)
if err != nil {
return nil, err
}
//purpose, err := master.Child(84 + hdkeychain.HardenedKeyStart)
//if err != nil {
// return nil, err
//}
//
//coinType, err := purpose.Child(0 + hdkeychain.HardenedKeyStart)
//if err != nil {
// return nil, err
//}
account0, err := master.Child(0 + hdkeychain.HardenedKeyStart)
if err != nil {
return nil, err
}
chainExternal, err := account0.Child(0 + hdkeychain.HardenedKeyStart)
if err != nil {
return nil, err
}
address0Key, err := chainExternal.Child(0 + hdkeychain.HardenedKeyStart)
if err != nil {
return nil, err
}
prv, err := address0Key.ECPrivKey()
if err != nil {
return nil, err
}
wif, err := btcutil.NewWIF(prv, net, true)
if err != nil {
return nil, err
}
fmt.Println("wif: ", wif)
pubKey1, err := address0Key.ECPubKey()
if err != nil {
return nil, err
}
keyHash1 := btcutil.Hash160(pubKey1.SerializeCompressed())
addressWitnessPubKeyHash, err := btcutil.NewAddressWitnessPubKeyHash(keyHash1, net)
if err != nil {
return nil, err
}
segwitBech321 := addressWitnessPubKeyHash.EncodeAddress()
fmt.Println(segwitBech321)
return wif, err
}
@mymtw
Copy link
Author

mymtw commented Nov 30, 2020

bitcoin-core generate wif, then import + support segwit bech32 addresses:

$ ./bitcoin-cli -regtest generatetoaddress 1 bcrt1q8cs3rc2hsjp7cgtu28q8xy77kvkh00tud09dfk

$ ./bitcoin-cli -regtest sethdseed true cQV2pMSbkQuEfJ7yKsPPPuo37w7YPLU4PPKoGhCxCTEVHhu9vadC

$ ./bitcoin-cli -regtest generatetoaddress 101 bcrt1q8cs3rc2hsjp7cgtu28q8xy77kvkh00tud09dfk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment