`

eth hd钱包

 
阅读更多
熵(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())
	}
}
分享到:
评论

相关推荐

    react-native-hdwallet:一个用于本机的hdwallet

    1. **BIP32兼容性**:遵循BIP32(Bitcoin Improvement Proposal 32)标准,它定义了如何创建和遍历HD钱包的密钥树。这意味着你可以生成、备份和恢复助记词,以及创建多个独立的地址,所有这些都基于一个种子。 2. *...

    ETHUtil.zip

    2. **EthHDWallet.java**:这个类可能涉及到了助记词和HD钱包(Hierarchical Deterministic Wallet)。助记词是一种易于记忆的词组,它能安全地代表私钥。HD钱包遵循BIP39标准,允许从一个主种子衍生出无限数量的子...

    钱包

    钱包交易证明钱包代码import子进程import json import os from constants import * from bit import bit from web3导入PrivateKeyTestnet from eth_account导入Web3导入帐户w3 = Web3(Web3.HTTPProvider(“ ”))...

    python-mnemonic:用于生成确定性密钥的助记码,BIP39

    4. **种子到钱包**:从种子可以进一步生成HD(Hierarchical Deterministic)钱包的路径,这遵循BIP32标准。这意味着从一个种子可以生成无限数量的地址,每个都有其独立的公钥和私钥。 5. **支持多语言**:BIP39定义...

    ethereum-development-with-go.pdf

    2. 账户管理:包括账户的创建、余额查询、新钱包的生成、密钥存储、HD钱包的使用以及地址检查。 3. 交易处理:涉及如何查询交易、区块、转账ETH以及转移ERC-20标准的代币。 4. 智能合约开发: - 编译与部署:智能...

Global site tag (gtag.js) - Google Analytics