class Eth::Vault

Attributes

hd_path_string[RW]
master[RW]
mnemonic[RW]

Public Class Methods

new(opts = {secret_seed_phrase: nil}, hd_path_string = "m/0'/0'/0'") click to toggle source
# File lib/eth/vault.rb, line 17
def initialize(opts = {secret_seed_phrase: nil}, hd_path_string = "m/0'/0'/0'")
  if opts[:secret_seed_phrase]
    secret_seed_phrase = self.class.pad_mnemonic(opts[:secret_seed_phrase])
    seed_hex = Bitcoin::Trezor::Mnemonic.to_seed(secret_seed_phrase)
  else
    secret_seed_phrase = self.class.pad_mnemonic(Bitcoin::Trezor::Mnemonic.to_mnemonic(RbNaCl::Random.random_bytes(32)))
    seed_hex = Bitcoin::Trezor::Mnemonic.to_seed(secret_seed_phrase)
  end
  @mnemonic = self.class.unpad_mnemonic(secret_seed_phrase)
  @hd_path_string = hd_path_string
  @master = MoneyTree::Master.new(seed_hex: seed_hex)
end
pad_mnemonic(mnemonic) click to toggle source
# File lib/eth/vault.rb, line 8
def pad_mnemonic(mnemonic)
  mnemonic.rjust(180, ' ')
end
unpad_mnemonic(mnemonic) click to toggle source
# File lib/eth/vault.rb, line 12
def unpad_mnemonic(mnemonic)
  mnemonic.strip!
end

Public Instance Methods

get_key(index = 0) click to toggle source
# File lib/eth/vault.rb, line 39
def get_key(index = 0)
  node = get_node(index)
  return Eth::Key.from_node(node)
end
get_node(index = 0) click to toggle source
# File lib/eth/vault.rb, line 30
def get_node(index = 0)
  if index == 0
    hd_path = @hd_path_string
  else
    hd_path = "#{@hd_path_string}/#{index}'"
  end
  return @master.node_for_path(hd_path)
end