class Bech32::SegwitAddr

override so we can parse non-Bitcoin Bech32 addresses

Constants

VALID_HRPS

Private Instance Methods

parse_addr(addr) click to toggle source
# File lib/block_io/extended_bitcoinrb.rb, line 120
def parse_addr(addr)
  @hrp, data, spec = Bech32.decode(addr)
  raise 'Invalid address.' if hrp.nil? || data[0].nil? || !VALID_HRPS.key?(hrp) # HRP_MAINNET, HRP_TESTNET, HRP_REGTEST].include?(hrp)
  @ver = data[0]
  raise 'Invalid witness version' if @ver > 16
  @prog = Bech32.convert_bits(data[1..-1], 5, 8, false)
  raise 'Invalid witness program' if @prog.nil? || @prog.length < 2 || @prog.length > 40
  raise 'Invalid witness program with version 0' if @ver == 0 && (@prog.length != 20 && @prog.length != 32)
  raise 'Witness version and encoding spec do not match' if (@ver == 0 && spec != Bech32::Encoding::BECH32) || (@ver != 0 && spec != Bech32::Encoding::BECH32M)
end