Class: Ciri::Types::Address

Inherits:
Object
  • Object
show all
Includes:
Errors
Defined in:
lib/ciri/types/address.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(address) ⇒ Address

Returns a new instance of Address.



45
46
47
# File 'lib/ciri/types/address.rb', line 45

def initialize(address)
  @address = address.to_s
end

Class Method Details

.rlp_decode(data) ⇒ Object



36
37
38
39
40
# File 'lib/ciri/types/address.rb', line 36

def rlp_decode(data)
  address = self.new(RLP.decode(data))
  address.validate
  address
end

.rlp_encode(address) ⇒ Object



32
33
34
# File 'lib/ciri/types/address.rb', line 32

def rlp_encode(address)
  RLP.encode(address.to_s)
end

Instance Method Details

#==(other) ⇒ Object



49
50
51
# File 'lib/ciri/types/address.rb', line 49

def ==(other)
  self.class == other.class && to_s == other.to_s
end

#empty?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/ciri/types/address.rb', line 63

def empty?
  @address.empty?
end

#to_hexObject



59
60
61
# File 'lib/ciri/types/address.rb', line 59

def to_hex
  Utils.to_hex to_s
end

#to_sObject Also known as: to_str



53
54
55
# File 'lib/ciri/types/address.rb', line 53

def to_s
  @address
end

#validateObject

Raises:



67
68
69
70
71
# File 'lib/ciri/types/address.rb', line 67

def validate
  # empty address is valid
  return if empty?
  raise InvalidError.new("address must be 20 size, got #{@address.size}") unless @address.size == 20
end