adequate_crypto_address 0.1.3 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 396151caf8361e74bf9686d4ec10c913c6ba5f3c16a695fdf1c2a33dc3886abb
4
- data.tar.gz: 51131dea9686bab8c4ea4996b53735c7db13b5d6c94869d39935b5517710b11b
3
+ metadata.gz: 157a8f6e3a9872cb7fb5f4dba759e27031c87753b2f7c44b2736f8a58a97e01f
4
+ data.tar.gz: 50220278e3436aee8f4aad3fcf931008f1b4bd99e6ff686ca10bc926c0b3a761
5
5
  SHA512:
6
- metadata.gz: d0bb08404d180ee04be259d804aa298009136b57bfe023c3296bc09c792dca7e292a50f87a481e472210dacde055c58aff88b8c4f69800eacd566dac25b5451b
7
- data.tar.gz: 4c18a2e6cdd22d5ac0e66eeb5bfcf2583f0114e945ea20a84aab8ab40d968f01848229e8e2d731d4f8b9b7499ba5af52a7c08d270eca6d64cd9700506050211f
6
+ metadata.gz: fb2dae9e2f9821e038103dab4508a512be41cf4df2ac5d395fd29243eeac20e0919de2c3d9a03fed52327a88ad3c39c8982d699adbe57bcd519dbb8e36b34879
7
+ data.tar.gz: 4b19f994077c005e1e097f3ad62530e2ef2c253cf21e98a4ddea56a53f8deaafcda6be1ab495e0cf1ea028e8eb3e9878d175c3bd92c01e69050be28ffc784c63
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018 vtm
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/Makefile ADDED
@@ -0,0 +1,6 @@
1
+
2
+ build:
3
+ gem build adequate_crypto_address.gemspec
4
+
5
+ push:
6
+ gem push adequate_crypto_address-0.1.6.gem
data/README.md CHANGED
@@ -1,13 +1,19 @@
1
- # AdequateCryptoAddress
1
+
2
+ AdequateCryptoAddress
3
+ ===============
4
+
5
+ [![Gem Version][gem-version-svg]][gem-version-link]
6
+ [![Build Status][build-status-svg]][build-status-link]
7
+ [![Code Climate][codeclimate-status-svg]][codeclimate-status-link]
8
+ [![Coverage Status][coverage-status-svg]][coverage-status-link]
9
+ [![Downloads][downloads-svg]][downloads-link]
10
+ [![Docs][docs-rubydoc-svg]][docs-rubydoc-link]
11
+ [![License][license-svg]][license-link]
12
+
2
13
  Simple wallet address validator and normalizer for cryptocurrencies addresses in Ruby.
3
14
 
4
15
  Inspired by [ognus/wallet-address-validator](https://github.com/ognus/wallet-address-validator).
5
16
 
6
- [![Gem Version](https://badge.fury.io/rb/adequate_crypto_address.svg)](https://rubygems.org/gems/adequate_crypto_address)
7
- [![Build Status](https://travis-ci.org/vtm9/adequate_crypto_address.svg?branch=master)](https://travis-ci.org/vtm9/adequate_crypto_address)
8
- [![Code Climate](https://codeclimate.com/github/vtm9/adequate_crypto_address.svg)](https://codeclimate.com/github/vtm9/adequate_crypto_address)
9
- [![Coverage Status](https://coveralls.io/repos/vtm9/adequate_crypto_address/badge.svg?branch=master)](https://coveralls.io/r/vtm9/adequate_crypto_address?branch=master)
10
- [![License](https://img.shields.io/github/license/RubyMoney/money.svg)](https://opensource.org/licenses/MIT)
11
17
 
12
18
  ## Installation
13
19
 
@@ -25,7 +31,7 @@ gem install adequate_crypto_address
25
31
 
26
32
  ## Main API
27
33
 
28
- ##### .valid? (address [, currency = 'BTC'[, type = :prod]])
34
+ ##### .valid? (address, currency [, type = :prod])
29
35
 
30
36
  ###### Parameters
31
37
  * address - Wallet address to validate.
@@ -62,6 +68,7 @@ AdequateCryptoAddress.valid?('de709f2102306220921060314715629080e2fb77', :ethere
62
68
  ```
63
69
 
64
70
  ### Normalization
71
+ ###### *Not all currencies support this feature.
65
72
  ``` ruby
66
73
  require 'adequate_crypto_address'
67
74
 
@@ -78,7 +85,49 @@ addr.address #=> "bitcoincash:qrtj3rd8524cndt2eew3s6wljqggmne00sgh4kfypk"
78
85
  # ETH
79
86
  AdequateCryptoAddress.address('D1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb', 'eth').address #=> "0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb"
80
87
  ```
81
- *Not all currencies support this feature.
88
+
89
+
90
+ ### ActiveRecord validation example
91
+ ``` ruby
92
+ class Model < ActiveRecord::Base
93
+ attribute :address, :string
94
+ attribute :dest_tag, :string
95
+ attribute :currency, :string
96
+
97
+ validate :validate_address_type
98
+ validate :validate_destination_tag
99
+
100
+ def validate_address_type
101
+ errors.add(:address, 'invalid address') unless AdequateCryptoAddress.valid?(address, currency)
102
+ end
103
+
104
+ # for Ripple
105
+ def validate_destination_tag
106
+ errors.add(:dest_tag, 'invalid destination tag') if dest_tag.present? && !(dest_tag =~ /\A\d{1,10}\z/)
107
+ end
108
+ end
109
+
110
+ ```
111
+ ### Add your currnecy
112
+ ``` ruby
113
+ # frozen_string_literal: true
114
+ # for Rails /config/initializers/adequate_crypto_address.rb
115
+ module AdequateCryptoAddress
116
+ class Coin
117
+ attr_reader :address
118
+
119
+ def initialize(address_sring)
120
+ @address = address_sring
121
+ end
122
+
123
+ def valid?(_type)
124
+ address.present?
125
+ end
126
+ end
127
+ end
128
+
129
+ AdequateCryptoAddress.valid?('addr', :coin) #=> true
130
+ ```
82
131
 
83
132
  ## Development
84
133
 
@@ -97,3 +146,19 @@ Run `rake spec` to run the tests. You can also run `bin/console` for an interact
97
146
  ## Notes
98
147
 
99
148
  Bug reports and pull requests are welcome on GitHub at https://github.com/vtm9/adequate_crypto_address/issues
149
+
150
+ [gem-version-svg]: https://badge.fury.io/rb/adequate_crypto_address.svg
151
+ [gem-version-link]: https://rubygems.org/gems/adequate_crypto_address
152
+ [downloads-svg]: http://ruby-gem-downloads-badge.herokuapp.com/adequate_crypto_address
153
+ [downloads-link]: https://rubygems.org/gems/adequate_crypto_address
154
+ [build-status-svg]: https://travis-ci.org/vtm9/adequate_crypto_address.svg?branch=master
155
+ [build-status-link]:https://travis-ci.org/vtm9/adequate_crypto_address
156
+ [coverage-status-svg]: https://coveralls.io/repos/vtm9/adequate_crypto_address/badge.svg?branch=master
157
+ [coverage-status-link]: https://coveralls.io/r/vtm9/adequate_crypto_address?branch=master
158
+ [codeclimate-status-svg]: https://codeclimate.com/github/vtm9/adequate_crypto_address.svg
159
+ [codeclimate-status-link]: https://codeclimate.com/github/vtm9/adequate_crypto_address
160
+ [docs-rubydoc-svg]: https://img.shields.io/badge/docs-rubydoc-blue.svg
161
+ [docs-rubydoc-link]: http://www.rubydoc.info/gems/adequate_crypto_address/
162
+ [license-svg]: https://img.shields.io/badge/license-MIT-blue.svg
163
+ [license-link]: https://github.com/vtm9/adequate_crypto_address/blob/master/LICENSE.txt
164
+
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'adequate_crypto_address/version'
@@ -16,9 +18,8 @@ Gem::Specification.new do |spec|
16
18
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
19
  spec.require_paths = ['lib']
18
20
 
19
- spec.add_dependency 'base58', '~> 0.2.3'
20
- spec.add_dependency 'digest-sha3', '~> 1.1.0'
21
- spec.add_development_dependency 'bundler', '~> 1.16'
22
- spec.add_development_dependency 'rake', '~> 10.0'
23
- spec.add_development_dependency 'rspec', '~> 3.0'
21
+ spec.add_dependency 'base58', '~> 0.2'
22
+ spec.add_dependency 'keccak', '~> 1.3'
23
+ spec.add_development_dependency 'rake', '~> 13.0'
24
+ spec.add_development_dependency 'rspec', '~> 3.10'
24
25
  end
data/bin/console CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- $:.unshift( File.expand_path("../../lib", __FILE__) )
4
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
4
5
  require 'adequate_crypto_address'
5
6
 
6
7
  ACA = AdequateCryptoAddress
@@ -8,4 +9,3 @@ include AdequateCryptoAddress
8
9
 
9
10
  require 'pry'
10
11
  Pry.start
11
-
@@ -30,8 +30,8 @@ module AdequateCryptoAddress
30
30
  def address_type
31
31
  @decoded = begin
32
32
  decode_base58
33
- rescue StandardError
34
- nil
33
+ rescue StandardError
34
+ nil
35
35
  end
36
36
  if decoded && decoded.bytesize == self.class::EXPECTED_LENGTH && valid_address_checksum?
37
37
  self.class::ADDRESS_TYPES.each do |net_type, net_prefixes|
@@ -37,8 +37,8 @@ module AdequateCryptoAddress
37
37
 
38
38
  base58_decoded = begin
39
39
  decode_base58(address)
40
- rescue StandardError
41
- nil
40
+ rescue StandardError
41
+ nil
42
42
  end
43
43
  if base58_decoded && base58_decoded.bytesize == 50 && valid_base58_address_checksum?(base58_decoded)
44
44
  case base58_decoded[0...2]
@@ -46,6 +46,10 @@ module AdequateCryptoAddress
46
46
  return :hash160
47
47
  when '05'
48
48
  return :p2sh
49
+ when '6f'
50
+ return :hash160test
51
+ when 'c4'
52
+ return :p2shtest
49
53
  end
50
54
  end
51
55
 
@@ -76,7 +76,7 @@ module AdequateCryptoAddress
76
76
  end
77
77
 
78
78
  def keccak256(x)
79
- Digest::SHA3.new(256).digest(x)
79
+ Digest::Keccak.new(256).digest(x)
80
80
  end
81
81
  end
82
82
  Ethereum = Eth
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AdequateCryptoAddress
4
+ class Ltc < Altcoin
5
+ ADDRESS_TYPES = { prod: %w[30 05 32], test: %w[6f c4 3a] }.freeze
6
+ end
7
+ Litecoin = Ltc
8
+ end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AdequateCryptoAddress
2
4
  module Utils
3
5
  module Bch
4
- CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'.freeze
6
+ CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'
5
7
 
6
8
  module_function
7
9
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AdequateCryptoAddress
2
4
  # Ruby reference implementation: https://github.com/sipa/bech32/tree/master/ref/c
3
5
  module Utils
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AdequateCryptoAddress
2
- VERSION = '0.1.3'.freeze
4
+ VERSION = '0.1.6'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'adequate_crypto_address/utils/bech32'
2
4
  require 'adequate_crypto_address/utils/bch'
3
5
 
@@ -8,6 +10,7 @@ require 'adequate_crypto_address/btc'
8
10
  require 'adequate_crypto_address/xrp'
9
11
  require 'adequate_crypto_address/dash'
10
12
  require 'adequate_crypto_address/zec'
13
+ require 'adequate_crypto_address/ltc'
11
14
 
12
15
  module AdequateCryptoAddress
13
16
  class UnknownCurrency < StandardError; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe(AdequateCryptoAddress::Bch) do
2
4
  let(:legacy_p2sh) { '3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC' }
3
5
  let(:legacy_p2pkh) { '155fzsEBHy9Ri2bMQ8uuuR3tv1YzcDywd4' }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe(AdequateCryptoAddress) do
2
4
  describe '.valid?' do
3
5
  context 'Bitcoin' do
@@ -7,11 +9,19 @@ RSpec.describe(AdequateCryptoAddress) do
7
9
  expect(described_class).to be_valid('12QeMLzSrB8XH8FvEzPMVoRxVAzTr5XM2y', 'Bitcoin')
8
10
  expect(described_class).to be_valid('12QeMLzSrB8XH8FvEzPMVoRxVAzTr5XM2y', 'btc')
9
11
  expect(described_class).to be_valid('12QeMLzSrB8XH8FvEzPMVoRxVAzTr5XM2y', 'btc', :hash160)
12
+
13
+ # testnet
14
+ expect(described_class).to be_valid('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef', 'bitcoin', 'hash160test')
15
+ expect(described_class).to be_valid('mv4rnyY3Su5gjcDNzbMLKBQkBicCtHUtFB', :btc)
10
16
  end
11
17
 
12
18
  it 'validates p2sh addresses' do
13
19
  expect(described_class).to be_valid('3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt', 'BTC')
14
20
  expect(described_class).to be_valid('3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt', 'bitcoin', 'p2sh')
21
+
22
+ # testnet
23
+ expect(described_class).to be_valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'btc')
24
+ expect(described_class).to be_valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'bitcoin', 'p2shtest')
15
25
  end
16
26
 
17
27
  it 'validates segwit addresses' do
@@ -93,6 +103,7 @@ RSpec.describe(AdequateCryptoAddress) do
93
103
  end
94
104
 
95
105
  it 'validates wrong addresses' do
106
+ expect(described_class).not_to be_valid('wrong', :ETH)
96
107
  expect(described_class).not_to be_valid('0xD1110A0cf47c7B9Be7A2E6BA89F429762e7b9aDb', 'ETH')
97
108
  expect(described_class).not_to be_valid('a10354276d2fC74ee91e37D085d35748613f4748', :ethereum)
98
109
  end
@@ -109,6 +120,7 @@ RSpec.describe(AdequateCryptoAddress) do
109
120
  end
110
121
 
111
122
  it 'validates wrong addresses' do
123
+ expect(described_class).not_to be_valid('wrong', :xrp)
112
124
  expect(described_class).not_to be_valid('r3kmLJN5D28dHuH8vZNUZpMC43pEHpaoc1', :xrp)
113
125
  expect(described_class).not_to be_valid('r1kmLJN5D28dHuH8vZNUZpMC43pEHpaocV', 'ripple')
114
126
  end
@@ -123,6 +135,7 @@ RSpec.describe(AdequateCryptoAddress) do
123
135
  end
124
136
 
125
137
  it 'validates wrong addresses' do
138
+ expect(described_class).not_to be_valid('wrong', :dash)
126
139
  expect(described_class).not_to be_valid('yPv7h2i8v3dJ1fSH4L3x91JSJszjdbsJJA', :dash)
127
140
  expect(described_class).not_to be_valid('XqMkVUZnqe3w4xvgdZRtZoe7gMitDudGs4', 'dash', :test)
128
141
  expect(described_class).not_to be_valid('yPv7h2i8v3dJjfSH4L3x91JSJszjdbsJJA', :DASH, :prod)
@@ -137,6 +150,29 @@ RSpec.describe(AdequateCryptoAddress) do
137
150
  end
138
151
 
139
152
  it 'validates wrong addresses' do
153
+ expect(described_class).not_to be_valid('wrong', :zec)
154
+ expect(described_class).not_to be_valid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', :zcash)
155
+ expect(described_class).not_to be_valid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', :ZEC)
156
+ expect(described_class).not_to be_valid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', :zcash, :test)
157
+ end
158
+ end
159
+
160
+ context 'Litecoin' do
161
+ it 'validates addresses' do
162
+ expect(described_class).to be_valid('LVg2kJoFNg45Nbpy53h7Fe1wKyeXVRhMH9', :ltc)
163
+ expect(described_class).to be_valid('LVg2kJoFNg45Nbpy53h7Fe1wKyeXVRhMH9', 'ltc', :prod)
164
+ expect(described_class).to be_valid('LTpYZG19YmfvY2bBDYtCKpunVRw7nVgRHW', 'LTC')
165
+ expect(described_class).to be_valid('Lb6wDP2kHGyWC7vrZuZAgV7V4ECyDdH7a6', 'Litecoin')
166
+ expect(described_class).to be_valid('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef', 'Litecoin', :test)
167
+
168
+ expect(described_class).to be_valid('3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt', 'LTC')
169
+ expect(described_class).to be_valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'LTC', :test)
170
+ expect(described_class).to be_valid('QW2SvwjaJU8LD6GSmtm1PHnBG2xPuxwZFy', 'LTC', :test)
171
+ expect(described_class).to be_valid('QjpzxpbLp5pCGsCczMbfh1uhC3P89QZavY', 'LTC', :test)
172
+ end
173
+
174
+ it 'validates wrong addresses' do
175
+ expect(described_class).not_to be_valid('wrong', :zec)
140
176
  expect(described_class).not_to be_valid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', :zcash)
141
177
  expect(described_class).not_to be_valid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', :ZEC)
142
178
  expect(described_class).not_to be_valid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', :zcash, :test)
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'coveralls'
2
4
  Coveralls.wear!
3
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adequate_crypto_address
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - vtm
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-21 00:00:00.000000000 Z
11
+ date: 2022-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base58
@@ -16,70 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.3
19
+ version: '0.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.3
26
+ version: '0.2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: digest-sha3
28
+ name: keccak
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.0
33
+ version: '1.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.1.0
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.16'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.16'
40
+ version: '1.3'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '10.0'
47
+ version: '13.0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '10.0'
54
+ version: '13.0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rspec
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '3.0'
61
+ version: '3.10'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '3.0'
68
+ version: '3.10'
83
69
  description: A Ruby Library for dealing with validation cryptocurrency adresses.
84
70
  email:
85
71
  - vtmilyakov@yandex.ru
@@ -93,6 +79,8 @@ files:
93
79
  - ".rubocop.yml"
94
80
  - ".travis.yml"
95
81
  - Gemfile
82
+ - LICENSE.txt
83
+ - Makefile
96
84
  - README.md
97
85
  - Rakefile
98
86
  - adequate_crypto_address.gemspec
@@ -103,6 +91,7 @@ files:
103
91
  - lib/adequate_crypto_address/btc.rb
104
92
  - lib/adequate_crypto_address/dash.rb
105
93
  - lib/adequate_crypto_address/eth.rb
94
+ - lib/adequate_crypto_address/ltc.rb
106
95
  - lib/adequate_crypto_address/utils/bch.rb
107
96
  - lib/adequate_crypto_address/utils/bech32.rb
108
97
  - lib/adequate_crypto_address/version.rb
@@ -115,7 +104,7 @@ homepage: https://github.com/vtm9/adequate_crypto_address
115
104
  licenses:
116
105
  - MIT
117
106
  metadata: {}
118
- post_install_message:
107
+ post_install_message:
119
108
  rdoc_options: []
120
109
  require_paths:
121
110
  - lib
@@ -130,9 +119,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
119
  - !ruby/object:Gem::Version
131
120
  version: '0'
132
121
  requirements: []
133
- rubyforge_project:
134
- rubygems_version: 2.7.6
135
- signing_key:
122
+ rubygems_version: 3.2.22
123
+ signing_key:
136
124
  specification_version: 4
137
125
  summary: A Ruby Library for dealing with validation cryptocurrency adresses.
138
126
  test_files: []