eth hd钱包 博客分类: 以太坊
程序员文章站
2024-03-18 20:42:22
...
熵(128位)→助记词(12个)→种子(512位)→私钥→公钥→地址
import ( "fmt" "math/big" "strings" "testing" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" ) //go test -run TestAddrs func TestAddrs(t *testing.T) { mnemonic, err := MnemonicFun() if err != nil { t.Error(err) } fmt.Println("mnemonic:",*mnemonic) //"there network sister salad scout catch embrace clinic hold jewel kingdom atom" wallet, err := NewFromMnemonic(*mnemonic) if err != nil { t.Error(err) } for i:=0;i<3;i++{ path, err := ParseDerivationPath(fmt.Sprintf("m/44'/60'/0'/0/%d",i)) if err != nil { t.Error(err) } account, err := wallet.Derive(path, true) if err != nil { t.Error(err) } fmt.Println("address:",account.Address.String(),",count:",len(wallet.accounts)) privateKeyHex, err := wallet.PrivateKeyHex(account) if err != nil { t.Error(err) } fmt.Println("privatekey:",privateKeyHex) } for i:=0;i<3;i++{ seed, err := NewSeedFromMnemonic(*mnemonic) if err != nil { t.Error(err) } wallet, err = NewFromSeed(seed) if err != nil { t.Error(err) } path := MustParseDerivationPath(fmt.Sprintf("m/44'/60'/0'/0/%d",i)) account, err := wallet.Derive(path, false) if err != nil { t.Error(err) } wallet.PrivateKey(account) fmt.Println("addr:",account.Address.String()) } }