Class: DbchainClient::Mnemonics

Inherits:
Object
  • Object
show all
Defined in:
lib/dbchain_client/mnemonics.rb

Class Method Summary collapse

Class Method Details

.generate_mnemonic(strength_bits = 128) ⇒ Object



6
7
8
# File 'lib/dbchain_client/mnemonics.rb', line 6

def generate_mnemonic(strength_bits = 128)
  Bitcoin::Trezor::Mnemonic.generate(strength_bits)
end

.generate_private_keyObject



21
22
23
24
25
# File 'lib/dbchain_client/mnemonics.rb', line 21

def generate_private_key
  mnemonic = generate_mnemonic
  master_key = mnemonic_to_master_key(mnemonic)
  master_key_to_cosmos_key_pair(master_key)[0]
end

.master_key_to_cosmos_key_pair(master_key) ⇒ Object



15
16
17
18
19
# File 'lib/dbchain_client/mnemonics.rb', line 15

def master_key_to_cosmos_key_pair(master_key)
  # m/44'/118'/0'/0/0"
  key = master_key.derive(2**31 + 44).derive(2**31 + 118).derive(2**31).derive(0 ).derive(0)
  [key.priv, key.pub]
end

.mnemonic_to_master_key(mnemonic) ⇒ Object



10
11
12
13
# File 'lib/dbchain_client/mnemonics.rb', line 10

def mnemonic_to_master_key(mnemonic)
  seed = Bitcoin::Trezor::Mnemonic.to_seed(mnemonic)
  Bitcoin::ExtKey.generate_master(seed.htb)
end

.public_key_to_address(pub_key) ⇒ Object



27
28
29
30
31
# File 'lib/dbchain_client/mnemonics.rb', line 27

def public_key_to_address(pub_key)
  hash160 = Bitcoin.hash160(pub_key)
  words = Bitcoin::Bech32.convert_bits(hash160.htb.unpack("C*"), from_bits: 8, to_bits: 5, pad: true)
  Bitcoin::Bech32.encode("cosmos", words)
end