Use Golang to develop Bitcoin wallet essentials. Write the use first, and the following will fully complement the
Package Mainimport ("FMT" "Github.com/bcext/cashutil/hdkeychain" "Github.com/bcext/gcash/chaincfg") func main () { Seed, err: = Hdkeychain. Generateseed (Hdkeychain. Recommendedseedlen) If err! = Nil {panic (err)} key, err: = Hdkeychain. Newmaster (seed, &chaincfg. TESTNET3PARAMS) If err! = Nil {panic (err)} KEYSTR: = key. String ()//output: Tprv8zgxmbicqkspdfh9kwqsxs4mhxxkq1fhaxvthstrztrzn4mf42ysdts1aktciqwy6frfqy8pnbrrmj1cbcqxz7iaiwixim8w24k3kabeyty Fmt. Println (KEYSTR) Generatedkey, err: = Hdkeychain. Newkeyfromstring (KEYSTR) if err! = Nil {panic (err)} child0, err: = Generatedkey.child (Hdkeychain. Hardenedkeystart + 0) If err! = Nil {panic (err)} child0address, err: = child0. Address (&chaincfg. TESTNET3PARAMS) If err! = Nil {panic (err)} FMT. Println ("Child0 address:", child0address.encodeaddress (True)) Child00extend, err: = child0. Child (0) If err! = Nil {panic (err) } child00extendaddress, Err: = Child00extend.address (&chaincfg. TESTNET3PARAMS) If err! = Nil {panic (err)} FMT. Println ("Child0 's extended Address:", child00extendaddress.encodeaddress (True)) child01internal, err: = child0. Child (1) if err! = Nil {panic (ERR)}//can use the primary network encoded address child01internaladdress, err: = Child01internal.addr ESS (&chaincfg. MAINNETPARAMS) If err! = Nil {panic (err)} FMT. Println ("Child0 's internal address:", child01internaladdress.encodeaddress (True)) fmt. Println ("child00extended is Privkey?", Child00extend.isprivate ()) fmt. Println ("Child01internal is Privkey?", Child01internal.isprivate ()) Extenedkey, err: = Child01internal.neuter () if E RR! = nil {panic (err)} FMT. Println ("Extendedkey string:", Extenedkey.string ())}