adequate_crypto_address 0.1.3 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []