wallet_validator 0.2.0 → 0.3.3
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 +4 -4
- data/Gemfile +0 -1
- data/Gemfile.lock +1 -7
- data/README.md +9 -1
- data/lib/wallet_validator/bch.rb +11 -7
- data/lib/wallet_validator/config.rb +25 -0
- data/lib/wallet_validator/version.rb +1 -1
- data/lib/wallet_validator.rb +14 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3ac603fed93cd9dce85b3ffe8ea60e10489721c4f55d16296f6ae0c35b6c13b
|
4
|
+
data.tar.gz: 8852e861273715a6d05362427c2258e23ae5dddb34b849d3afa58cb3b94b0e23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f63d1547da43cf4c0593e4eca8ac87d5ce38445f3b3cea1c2574d3c816e8440d55c32a7b4cacbaacadb6183f2dcb2e6cefc56da208834207600bf132aed23c6
|
7
|
+
data.tar.gz: a8e8eade81642220cda1d0a76a8df52cf48d812e3cbcacb470362a420b87b2c90f0ff003372b5b4a71646effc617253167fda255a9d5a2885fe1ae31e63160ea
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,18 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
wallet_validator (0.
|
4
|
+
wallet_validator (0.3.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
coderay (1.1.3)
|
10
9
|
diff-lcs (1.4.4)
|
11
10
|
digest-sha3 (1.1.0)
|
12
|
-
method_source (1.0.0)
|
13
|
-
pry (0.14.1)
|
14
|
-
coderay (~> 1.1)
|
15
|
-
method_source (~> 1.0)
|
16
11
|
rake (12.3.3)
|
17
12
|
rspec (3.10.0)
|
18
13
|
rspec-core (~> 3.10.0)
|
@@ -33,7 +28,6 @@ PLATFORMS
|
|
33
28
|
|
34
29
|
DEPENDENCIES
|
35
30
|
digest-sha3
|
36
|
-
pry
|
37
31
|
rake (~> 12.0)
|
38
32
|
rspec (~> 3.0)
|
39
33
|
wallet_validator!
|
data/README.md
CHANGED
@@ -20,7 +20,15 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
可以透過直接啟動設定預設值
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
WalletValidator.configure do |config|
|
27
|
+
config.chain = "testnet"
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
或是第三個參數為 `is_testnet`,預設為 false,也就是預設為主鏈錢包格式檢查
|
24
32
|
|
25
33
|
mainnet
|
26
34
|
|
data/lib/wallet_validator/bch.rb
CHANGED
@@ -12,16 +12,20 @@ module WalletValidator
|
|
12
12
|
def valid?
|
13
13
|
match = address.match(/^(.+):(.+)$/)
|
14
14
|
|
15
|
-
|
15
|
+
if match
|
16
|
+
return false unless match[1] == is_testnet ? "bchtest" : "bitcoincash"
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
prefix = is_testnet ? [2, 3, 8, 20, 5, 19, 20, 0] : [2, 9, 20, 3, 15, 9, 14, 3, 1, 19, 8, 0]
|
19
|
+
raw_payload = match[2].split("").map { |m| Crypto::Bech32::CHARSET.index(m) }
|
20
|
+
return false if bch_polymod(prefix + raw_payload) != 0 # raise "Address checksum invalid: #{cashaddress}"
|
20
21
|
|
21
|
-
|
22
|
-
|
22
|
+
payload = bch_convert_bits(raw_payload[0..-9], 5, 8, false)
|
23
|
+
return false if payload.empty? # raise "Converted payload was empty"
|
23
24
|
|
24
|
-
|
25
|
+
return true
|
26
|
+
else
|
27
|
+
Btc.new(@address, @is_testnet).valid?
|
28
|
+
end
|
25
29
|
end
|
26
30
|
|
27
31
|
private
|
@@ -0,0 +1,25 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module WalletValidator
|
4
|
+
class Config
|
5
|
+
class << self
|
6
|
+
# @param [Config] new_instance
|
7
|
+
attr_writer :instance
|
8
|
+
|
9
|
+
# @return [Config]
|
10
|
+
def instance
|
11
|
+
@instance ||= new
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_accessor :chain
|
16
|
+
|
17
|
+
def initialize(user_config = {})
|
18
|
+
self.chain = user_config[:chain]
|
19
|
+
end
|
20
|
+
|
21
|
+
def valid?
|
22
|
+
!self.chain.nil?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/wallet_validator.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require "
|
1
|
+
require "wallet_validator/config"
|
2
|
+
|
2
3
|
require "wallet_validator/crypto/bech32"
|
3
4
|
require "wallet_validator/crypto/base32"
|
4
5
|
require "wallet_validator/crypto/base58"
|
@@ -19,11 +20,14 @@ require "wallet_validator/sol"
|
|
19
20
|
require "wallet_validator/xem"
|
20
21
|
require "wallet_validator/sda"
|
21
22
|
|
23
|
+
|
22
24
|
module WalletValidator
|
23
25
|
class UnknownCurrency < StandardError; end
|
24
26
|
module_function
|
25
27
|
|
26
|
-
def valid?(currency, address, is_testnet =
|
28
|
+
def valid?(currency, address, is_testnet = nil)
|
29
|
+
is_testnet ||= WalletValidator::Config.instance.chain == "testnet"
|
30
|
+
|
27
31
|
address(currency, address, is_testnet).valid?
|
28
32
|
end
|
29
33
|
|
@@ -32,4 +36,12 @@ module WalletValidator
|
|
32
36
|
rescue NameError
|
33
37
|
raise UnknownCurrency, "Wrong currency #{currency}"
|
34
38
|
end
|
39
|
+
|
40
|
+
def configure
|
41
|
+
yield config = WalletValidator::Config.instance
|
42
|
+
end
|
43
|
+
|
44
|
+
def configured?
|
45
|
+
WalletValidator::Config.instance.valid?
|
46
|
+
end
|
35
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wallet_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Write a longer description or delete this line.
|
14
14
|
email:
|
@@ -35,6 +35,7 @@ files:
|
|
35
35
|
- lib/wallet_validator/bchsv.rb
|
36
36
|
- lib/wallet_validator/bnb.rb
|
37
37
|
- lib/wallet_validator/btc.rb
|
38
|
+
- lib/wallet_validator/config.rb
|
38
39
|
- lib/wallet_validator/crypto/base32.rb
|
39
40
|
- lib/wallet_validator/crypto/base58.rb
|
40
41
|
- lib/wallet_validator/crypto/bech32.rb
|