Ethereum-Wallet-Dapp

如何使用助記詞恢復我的乙太坊錢包

  • August 16, 2021

我使用 web3j 創建我的乙太坊錢包。程式碼就像 down

import org.web3j.crypto.Bip39Wallet;
import org.web3j.crypto.Credentials;
import org.web3j.crypto.ECKeyPair;
import org.web3j.crypto.WalletUtils;

wallet = WalletUtils.generateBip39Wallet(password, new File(keystorePath));
// keystore's file name
String keystoreFileName = wallet.getFilename();
// my mnemonic
String mnemonic = wallet.getMnemonic();

我可以使用此程式碼獲取我的地址

Credentials credentials = WalletUtils.loadBip39Credentials(password, mnemonic);
String address = credentials.getAddress();

我可以通過以下方式導入我的錢包:

Credentials credentials = WalletUtils.loadBip39Credentials(password, mnemonic);

但是通過這種方式我需要passwordmnemonic,我如何導入或恢復我的錢包mnemonicpassword因為一些錢包應用程序就像元遮罩或 imtoken 一樣,它們不需要我創建錢包的舊錢包並且可以重置 錢包。password password

換句話說,恢復或導入錢包只需要mnemonic,我是如何通過web3j做到的

在此處輸入圖像描述

ereryone 可以通過 web3j 告訴我怎麼做嗎。非常感謝。

對於 Bip44 錢包,Web3j 將使用派生路徑m/44/60'/0'/0。更常用的路徑是m/44/60'/0'/0/0(帶有額外的/0)。

以下程式碼將在給定有效助記符的情況下得出正確的地址。

String mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
String password = "";
byte[] seed = MnemonicUtils.generateSeed(mnemonic, password);
Bip32ECKeyPair masterKeypair = Bip32ECKeyPair.generateKeyPair(seed);
final int[] path = {44 | HARDENED_BIT, 60 | HARDENED_BIT, 0 | HARDENED_BIT, 0, 0};
Bip32ECKeyPair childKeypair = Bip32ECKeyPair.deriveKeyPair(masterKeypair, path);
Credentials credential = Credentials.create(childKeypair);

System.out.println(credential.getAddress());

我認為這只是 Metamask 的密碼,它不用於錢包加密。您可以使用 bip39 包恢復錢包:

https://iancoleman.io/bip39/

https://www.npmjs.com/package/bip39

let seed = await bip39.mnemonicToSeed(mnemonicPhrase, password); //password can null
let HDwallet = await etherHDkey.fromMasterSeed(seed);
let wallet = HDwallet.derivePath(hdPath + "/" + index).getWallet();

引用自:https://ethereum.stackexchange.com/questions/57231