hdkey 1.0.1 → 1.1.0
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/README.md +30 -3
- data/hdkey.gemspec +2 -1
- data/lib/hdkey/ext_key.rb +17 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 096eeeb9c924e47cc903afec1df0f86662aaf5e6
|
4
|
+
data.tar.gz: d623b35bb40668c1fb61413d49482175dfbc57b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a91388f03f5544df4762072ea7037e9362855907b340b5100b93c5848f6e4601b989a785793c1510a9da729fb4b9595b1b14d3c32ac2d8368ed20c6c7c3de657
|
7
|
+
data.tar.gz: a0be3762ff9dfc478119ea3408a7864aebc9dd4c2612da5897f95a6e6c2e38d76826ccac26b10ac4915a7ded805f5de33c88f324cc7467d901dc42ce79bc8e0d
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Hierarchical Deterministic key derivation for Ruby
|
2
|
-
[](https://travis-ci.org/azuchi/hdkey) [](https://badge.fury.io/rb/hdkey) [](LICENSE)
|
2
|
+
[](https://travis-ci.org/azuchi/hdkey) [](https://badge.fury.io/rb/hdkey) [](LICENSE) <img src="http://segwit.co/static/public/images/logo.png" width="100">
|
3
3
|
|
4
4
|
The implementation of Bitcoin hierarchical deterministic key for Ruby.
|
5
5
|
|
@@ -58,17 +58,44 @@ key.fingerprint
|
|
58
58
|
key.chain_code
|
59
59
|
=> '47fdacbd0f1097043b78c63c20c34ef4ed9a111d980047ad16282c7ae6236141'
|
60
60
|
|
61
|
-
key.
|
61
|
+
key.priv
|
62
62
|
=> 'edb2e14f9ee77d26dd93b4ecede8d16ed408ce149b6cd80b0715a2d911a0afea'
|
63
63
|
|
64
|
+
# P2PKH address
|
65
|
+
key.addr
|
66
|
+
=> '19Q2WoS5hSS6T8GjhK8KZLMgmWaq4neXrh'
|
67
|
+
|
68
|
+
# Segwit address(P2WPKH)
|
69
|
+
key.segwit_addr
|
70
|
+
=> 'bc1qtsdavj8dyw49l4gt554jg47pr60gpf48ww2ens'
|
71
|
+
|
64
72
|
key.to_base58
|
65
73
|
=> 'xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7'
|
66
74
|
|
67
75
|
key.ext_pubkey.to_base58
|
68
76
|
=> 'xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw'
|
69
77
|
|
78
|
+
# P2PKH address
|
79
|
+
key.ext_pubkey.addr
|
80
|
+
=> '19Q2WoS5hSS6T8GjhK8KZLMgmWaq4neXrh'
|
81
|
+
|
82
|
+
# Segwit address(P2WPKH)
|
83
|
+
key.ext_pubkey.segwit_addr
|
84
|
+
=> 'bc1qtsdavj8dyw49l4gt554jg47pr60gpf48ww2ens'
|
85
|
+
|
70
86
|
# derive child(m/0H/1)
|
71
87
|
child_key = key.derive(1)
|
88
|
+
|
89
|
+
# For testnet
|
90
|
+
Bitcoin.network = :testnet3
|
91
|
+
|
92
|
+
# testnet P2PKH address
|
93
|
+
key.addr
|
94
|
+
=> 'mouyorX4WTsMEEkMQt6hPFa1dWBXws2Yos'
|
95
|
+
|
96
|
+
# testnet Segwit address(P2WPKH)
|
97
|
+
key.segwit_addr
|
98
|
+
=> 'tb1qtsdavj8dyw49l4gt554jg47pr60gpf48yg32gr'
|
72
99
|
```
|
73
100
|
|
74
101
|
### import key
|
@@ -78,7 +105,7 @@ child_key = key.derive(1)
|
|
78
105
|
ext_privkey = Bitcoin::ExtKey.from_base58('xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs')
|
79
106
|
|
80
107
|
# import pubkey
|
81
|
-
ext_pubkey =
|
108
|
+
ext_pubkey = Bitcoin::ExtPubkey.from_base58('xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ')
|
82
109
|
```
|
83
110
|
|
84
111
|
## License
|
data/hdkey.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "hdkey"
|
7
|
-
spec.version = "1.0
|
7
|
+
spec.version = "1.1.0"
|
8
8
|
spec.authors = ["Shigeyuki Azuchi"]
|
9
9
|
spec.email = ["azuchi@haw.co.jp"]
|
10
10
|
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_runtime_dependency "bitcoin-ruby", "~> 0.0.10"
|
22
22
|
spec.add_runtime_dependency "ffi"
|
23
|
+
spec.add_runtime_dependency "bech32"
|
23
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
25
|
spec.add_development_dependency "rspec", "~> 3.0"
|
25
26
|
end
|
data/lib/hdkey/ext_key.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'bech32'
|
2
|
+
|
1
3
|
module Bitcoin
|
2
4
|
|
3
5
|
def self.hmac_sha512(key, data)
|
@@ -68,6 +70,11 @@ module Bitcoin
|
|
68
70
|
priv_key.addr
|
69
71
|
end
|
70
72
|
|
73
|
+
# get segwit p2wpkh address
|
74
|
+
def segwit_addr
|
75
|
+
ext_pubkey.segwit_addr
|
76
|
+
end
|
77
|
+
|
71
78
|
# get key identifier
|
72
79
|
def identifier
|
73
80
|
Bitcoin.hash160(priv_key.pub)
|
@@ -139,6 +146,16 @@ module Bitcoin
|
|
139
146
|
Bitcoin.hash160_to_address(Bitcoin.hash160(pub))
|
140
147
|
end
|
141
148
|
|
149
|
+
# get segwit p2wpkh address
|
150
|
+
def segwit_addr
|
151
|
+
hash160 = Bitcoin.hash160(pub)
|
152
|
+
p2wpkh = [ ["00", "14", hash160].join ].pack("H*").bth
|
153
|
+
segwit_addr = Bech32::SegwitAddr.new
|
154
|
+
segwit_addr.hrp = Bitcoin.network[:address_version] == '00' ? 'bc' : 'tb'
|
155
|
+
segwit_addr.script_pubkey = p2wpkh
|
156
|
+
segwit_addr.addr
|
157
|
+
end
|
158
|
+
|
142
159
|
# get key identifier
|
143
160
|
def identifier
|
144
161
|
Bitcoin.hash160(pub)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hdkey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shigeyuki Azuchi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bitcoin-ruby
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bech32
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|