Tokens

儘管交易在區塊鏈中,但 Metamask(和其他錢包)不顯示余額中的代幣

  • May 11, 2021

我已經用我的助記詞生成了數千個地址,並將一些 USDT 代幣存入其中一個 ( m/44'/60'/0'/267) 並確保我能夠使用這些代幣。但是在我將這個助記詞導入 Metamask 和 Trust 錢包後,我發現餘額中沒有任何代幣。在此處輸入圖像描述

讓我們談談發生了什麼,然後談談針對 OP 特定情況的潛在解決方案。當從一個種子生成多個賬戶時,會有一個主密鑰對(公鑰和私鑰,就像正常密鑰對一樣),然後其他賬戶的私鑰和公鑰都是從該密鑰對生成的。生成的帳戶沒有與主密鑰對相同的私鑰。因此,當使用主私鑰導入 MetaMask 或類似的帳戶時,僅導入主帳戶。為了導入持有 USDT 的特定地址,您需要來自該特定密鑰對的私鑰。

現在尋找一個潛在的解決方案:首先,一個警告。我在這裡有點不合群,但會嘗試提及一條可能完全可行的路徑,並且可能有工作的機會,並且可能不太可能工作。

OP 在評論中提到帳戶是使用py_crypto_hd_wallet. 查看他們的 README(此處),我們可以提供一些 Python 解決方案。我強烈建議驗證我的解決方案——我現在剛剛熟悉了這個庫。

假設您可以使用此處詳述的助記詞、種子或私鑰重新創建錢包,我們應該能夠設置一個腳本來嘗試查找您持有 USDT 的賬戶的私鑰,以便您將其導入元面具。我們將hd_wallet在程式碼中呼叫錢包(在 README 之後)。

# this skips the imports and generating the wallet, as detailed above

hd_wallet.Generate(addr_num=10000)
addresses = hd_wallet.GetData(HdWalletDataTypes.ADDRESSES)
USDT_address = "PUT_THE_ADDRESS_WITH_THE_USDT_HERE_STARTING_WITH_0x"

for address in addresses:
   if address == USDT_address:
       print(address.GetKey(HdWalletKeyTypes.EX_PRIV))
       break

我不知道的一件事是,如果給定相同的主密鑰,是否始終以相同的順序生成相同的密鑰對。因此,您會看到我已將生成事件設置為生成 10K 個地址。如果密鑰對生成中有熵(意味著當同一個主伺服器通過生成器時會生成不同的帳戶),那麼我不知道這個工作的機率是多少。如果這裡有人比我更了解密鑰生成的東西,如果這是浪費時間,請發表評論。

假設這不是浪費時間,即使您第一次沒有找到密鑰,您也總是可以一次生成更多帳戶。這可能是資源密集型的,並且可能會執行很長時間。

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