class RubyCoin::Address

Attributes

compressed[RW]
curve[RW]
private_key[RW]
public_key[RW]
secret[RW]

Public Class Methods

new(seed, *args) click to toggle source
# File lib/ruby_coin/address.rb, line 7
def initialize(seed, *args)
  options     = extract_options!(args)

  case options[:format]
  when :uncompressed
    @compressed = false
  else
    @compressed = true
  end

  self.curve  = ::OpenSSL::PKey::EC.new(seed, *args)

  curve.generate_key
  curve.private_key? ? init_private_key : nil_private_key
  curve.public_key?  ? init_public_key  : nil_public_key
end

Public Instance Methods

compressed?() click to toggle source
# File lib/ruby_coin/address.rb, line 30
def compressed?
  !!@compressed
end
to_s() click to toggle source
# File lib/ruby_coin/address.rb, line 26
def to_s
  address
end

Protected Instance Methods

checksum(hex) click to toggle source
# File lib/ruby_coin/address.rb, line 51
def checksum(hex)
  Digest::SHA256.hexdigest(
    Digest::SHA256.digest(
      [hex].pack('H*')
  ))[0...8]
end
hash160(hex) click to toggle source
# File lib/ruby_coin/address.rb, line 47
def hash160(hex)
  Digest::RMD160.hexdigest(Digest::SHA256.digest([hex].pack('H*')))
end
number_to_base(number, alpha) click to toggle source
# File lib/ruby_coin/address.rb, line 58
def number_to_base(number, alpha)
  string, base = '', alpha.size
  while(number >= base)
    mod       = number % base
    string    = alpha[mod,1] + string
    number    = (number - mod)/base
  end
  alpha[number,1] + string
end

Private Instance Methods

init_private_key() click to toggle source
# File lib/ruby_coin/address.rb, line 69
def init_private_key
  @private_key = curve.private_key.to_hex
end
init_public_key() click to toggle source
# File lib/ruby_coin/address.rb, line 73
def init_public_key
  @public_key = curve.public_key.to_hex
end
nil_private_key() click to toggle source
# File lib/ruby_coin/address.rb, line 77
def nil_private_key
  @private_key = nil
  nil_public_key
end
nil_public_key() click to toggle source
# File lib/ruby_coin/address.rb, line 82
def nil_public_key
  @address    = nil
  @public_key = nil
end