Ethereum-Wallet-Dapp
如何使用助記詞恢復我的乙太坊錢包
我使用 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);
但是通過這種方式我需要
password
&mnemonic
,我如何導入或恢復我的錢包mnemonic
,password
因為一些錢包應用程序就像元遮罩或 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://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();