Laden Sie ein HD-Wallet (Hierarchical Deterministic).

Ich versuche, einen Weg zu finden, Ethereum-Adressen basierend auf einem anfänglichen Seed programmatisch zu generieren und dann alle Gelder zu extrahieren, die in diesen Adressen landen.

Folgendes habe ich versucht:

  • Generierte eine 24-Wörter-Mnemonik und Seed-VerwendungBitcoin::Trezor::Mnemonic.generate
  • An digix-gethHD Vault übergeben, um eine Adresse zu generieren: 0xf2D5286B51a8a3326CBC007477435EeC47722228
  • Schicke 3 Äther mit dem Rinkeby-Wasserhahn hinein
  • Laden Sie die Brieftasche auf MyEtherWallet.com mit dem Seed- und Ableitungspfad m/0'/0'/0'/0 (derselbe, den digix-eth standardmäßig verwendet), aber das Guthaben wird als 0 angezeigt benutze einfach den Geldbaum darunter)
  • Ich habe auch versucht, den Ableitungspfad m/44'/60'/0'/0zu verwenden, um Trezor und Einstellung abzugleichen chain_id = 4, kein Glück. Die Wallet-Adressen, die MyEtherWallet anbietet, stimmen nicht mit denen überein, die die Ruby-Bibliothek generiert.

An diesem Punkt bin ich mir nicht sicher, ob die Ruby-Bibliothek fehlerhaft ist, MyEtherWallet fehlerhaft ist oder ob ich einfach etwas falsch mache.

Was kann ich jetzt versuchen, um die 3 Ether zu extrahieren?

Bearbeiten: Die Adressen, die dieses separate Tool generiert, stimmen mit denen überein, die MyEtherWallet generiert. Es ist also wahrscheinlich ein Fehler der Ruby-Bibliothek.

Antworten (1)

Ich habe es geschafft, das zum Laufen zu bringen. digix-ethMit dieser Gabel des ethEdelsteins stimmt definitiv etwas nicht . Ich vermute, es ist die Polsterung, die er der Mnemonik hinzufügt . Wie auch immer, hier ist, wie Sie HD-Adressen mit einem Seed generieren können:

require 'bitcoin'
require 'eth'

NODE_INDEX = 0    # An index corresponds to a unique Ethereum address.
MNEMONIC = '...'  # Generate this using `Bitcoin::Trezor::Mnemonic.generate`.

master = MoneyTree::Master.new(seed_hex: Bitcoin::Trezor::Mnemonic.to_seed(MNEMONIC))
node = master.node_for_path("m/44'/60'/0'/0/#{NODE_INDEX}")
key = Eth::Key.new(priv: node.private_key.to_hex)

puts key.to_address