使用助记词来恢复 ETH USDT ERC20 钱包的地址 go

package main

import (
	"fmt"
	"log"

	"github.com/ethereum/go-ethereum/crypto"
	"github.com/tyler-smith/go-bip32"
	"github.com/tyler-smith/go-bip39"
)

func RecoverWalletFromMnemonic(mnemonic string) (string, error) {
	// 验证助记词是否有效
	if !bip39.IsMnemonicValid(mnemonic) {
		return "", fmt.Errorf("invalid mnemonic")
	}

	// 通过助记词生成种子
	seed := bip39.NewSeed(mnemonic, "")

	// 使用种子生成主密钥(BIP32)
	masterKey, err := bip32.NewMasterKey(seed)
	if err != nil {
		return "", fmt.Errorf("failed to generate master key: %v", err)
	}

	// 使用 BIP44 派生路径 m/44'/60'/0'/0/0
	// 这是以太坊的标准路径
	purposeKey, err := masterKey.NewChildKey(bip32.FirstHardenedChild + 44)
	if err != nil {
		return "", fmt.Errorf("failed to derive purpose key: %v", err)
	}
	coinTypeKey, err := purposeKey.NewChildKey(bip32.FirstHardenedChild + 60)
	if err != nil {
		return "", fmt.Errorf("failed to derive coin type key: %v", err)
	}
	accountKey, err := coinTypeKey.NewChildKey(bip32.FirstHardenedChild + 0)
	if err != nil {
		return "", fmt.Errorf("failed to derive account key: %v", err)
	}
	changeKey, err := accountKey.NewChildKey(0)
	if err != nil {
		return "", fmt.Errorf("failed to derive change key: %v", err)
	}
	addressKey, err := changeKey.NewChildKey(0)
	if err != nil {
		return "", fmt.Errorf("failed to derive address key: %v", err)
	}

	// 获取私钥并转换为 ECDSA
	privateKey, err := crypto.ToECDSA(addressKey.Key)
	if err != nil {
		return "", fmt.Errorf("failed to convert to ECDSA: %v", err)
	}

	// 使用私钥生成 ETH 地址
	address := crypto.PubkeyToAddress(privateKey.PublicKey).Hex()
	return address, nil
}


// 使用助记词来恢复钱包的地址
func USDT_ETH_ERC20_RecoverWalletFromMnemonic() {
	// 示例助记词
	mnemonic := "midnight hammer brother evoke child zebra obscure upon curve pride jelly lamp"

	// 恢复钱包地址
	address, err := RecoverWalletFromMnemonic(mnemonic)
	if err != nil {
		log.Fatalf("Failed to recover wallet: %v", err)
	}

	fmt.Println("使用助记词来恢复 USDT_ETH_ERC20 钱包的地址 Recovered ETH Wallet Address:", address)
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值