class Etherlite::Utils::ValidateAddress
Constants
- MATCHER
Public Instance Methods
perform()
click to toggle source
# File lib/etherlite/commands/utils/validate_address.rb, line 5 def perform return false unless MATCHER === @address return false if /[A-F]/ === @address && !valid_checksum? true end
Private Instance Methods
valid_checksum?()
click to toggle source
# File lib/etherlite/commands/utils/validate_address.rb, line 13 def valid_checksum? trimmed_address = @address.gsub(/^0x/, '') address_hash = Etherlite::Utils.sha3 trimmed_address.downcase trimmed_address.chars.each_with_index do |c, i| hash_byte = address_hash[i].to_i(16) return false if (hash_byte > 7 && c.upcase != c) || (hash_byte <= 7 && c.downcase != c) end true end