module Cryptocurrency::Address
Constants
- BECH_PREFIXES
- PREFIXES
Public Class Methods
for(public_key, currency, kind = :p2pkh)
click to toggle source
# File lib/cryptocurrency/address.rb, line 5 def self.for(public_key, currency, kind = :p2pkh) case kind when :p2pkh data = version(currency, kind) + hash(public_key, :bitcoin) Base58.encode58_check(data) when :segwit script = "\x00\x14" + hash(public_key, :bitcoin) data = version(currency, :p2sh) + Utils.hash160(script) Base58.encode58_check(data) when :segwit_native Bech32.encode(BECH_PREFIXES[currency], "\x00" + hash(public_key, :bitcoin)) end end
hash(public_key, kind = :bitcoin)
click to toggle source
# File lib/cryptocurrency/address.rb, line 19 def self.hash(public_key, kind = :bitcoin) case kind when :bitcoin Utils.hash160(public_key.to_s) when :ethereum Utils.kekkak(public_key.uncompressed)[-20..] end end
version(currency, type)
click to toggle source
# File lib/cryptocurrency/address.rb, line 62 def self.version(currency, type) PREFIXES[currency][type] end