Class: WalletValidator::Sda

Inherits:
Object
  • Object
show all
Defined in:
lib/wallet_validator/sda.rb

Constant Summary collapse

EXPECTED_LENGTH =
50
NET_PREFIX =
"00".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(address, is_testnet) ⇒ Sda

Returns a new instance of Sda.



9
10
11
12
# File 'lib/wallet_validator/sda.rb', line 9

def initialize(address, is_testnet)
  @address = address
  @is_testnet = is_testnet
end

Instance Attribute Details

#addressObject (readonly)

Returns the value of attribute address.



7
8
9
# File 'lib/wallet_validator/sda.rb', line 7

def address
  @address
end

Instance Method Details

#valid?Boolean

Returns:

  • (Boolean)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/wallet_validator/sda.rb', line 14

def valid?
  temp2 = []
  temp = Crypto::Base58.base58_to_binary(address, "SDA")
  temp.each_byte do |b|
    temp2 << b.to_s(16).rjust(2, "0")
  end
  decoded = temp2.join

  if decoded && decoded.bytesize == EXPECTED_LENGTH && valid_address_checksum?(decoded)
    # 可能為 testnet 則 PREFIX 不一樣
    return true if decoded.start_with?(NET_PREFIX)
  end
  false
end