bitcoinrb 0.3.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +6 -3
- data/README.md +17 -6
- data/bitcoinrb.gemspec +9 -8
- data/exe/bitcoinrbd +5 -0
- data/lib/bitcoin.rb +35 -19
- data/lib/bitcoin/bip85_entropy.rb +111 -0
- data/lib/bitcoin/block_filter.rb +14 -0
- data/lib/bitcoin/block_header.rb +2 -0
- data/lib/bitcoin/chain_params.rb +9 -8
- data/lib/bitcoin/chainparams/regtest.yml +1 -1
- data/lib/bitcoin/chainparams/signet.yml +39 -0
- data/lib/bitcoin/chainparams/testnet.yml +1 -1
- data/lib/bitcoin/constants.rb +45 -12
- data/lib/bitcoin/descriptor.rb +1 -1
- data/lib/bitcoin/errors.rb +19 -0
- data/lib/bitcoin/ext.rb +5 -0
- data/lib/bitcoin/ext/ecdsa.rb +31 -0
- data/lib/bitcoin/ext/json_parser.rb +46 -0
- data/lib/bitcoin/ext_key.rb +50 -19
- data/lib/bitcoin/key.rb +46 -29
- data/lib/bitcoin/key_path.rb +12 -5
- data/lib/bitcoin/message.rb +79 -0
- data/lib/bitcoin/message/addr_v2.rb +34 -0
- data/lib/bitcoin/message/base.rb +17 -0
- data/lib/bitcoin/message/cf_parser.rb +16 -0
- data/lib/bitcoin/message/cfcheckpt.rb +36 -0
- data/lib/bitcoin/message/cfheaders.rb +40 -0
- data/lib/bitcoin/message/cfilter.rb +35 -0
- data/lib/bitcoin/message/fee_filter.rb +1 -1
- data/lib/bitcoin/message/filter_load.rb +3 -3
- data/lib/bitcoin/message/get_cfcheckpt.rb +29 -0
- data/lib/bitcoin/message/get_cfheaders.rb +24 -0
- data/lib/bitcoin/message/get_cfilters.rb +25 -0
- data/lib/bitcoin/message/header_and_short_ids.rb +1 -1
- data/lib/bitcoin/message/inventory.rb +1 -1
- data/lib/bitcoin/message/merkle_block.rb +1 -1
- data/lib/bitcoin/message/network_addr.rb +141 -18
- data/lib/bitcoin/message/ping.rb +1 -1
- data/lib/bitcoin/message/pong.rb +1 -1
- data/lib/bitcoin/message/send_addr_v2.rb +13 -0
- data/lib/bitcoin/message/send_cmpct.rb +2 -2
- data/lib/bitcoin/message/version.rb +7 -0
- data/lib/bitcoin/mnemonic.rb +7 -7
- data/lib/bitcoin/network/peer.rb +9 -4
- data/lib/bitcoin/network/peer_discovery.rb +1 -1
- data/lib/bitcoin/node/cli.rb +14 -10
- data/lib/bitcoin/node/configuration.rb +3 -1
- data/lib/bitcoin/node/spv.rb +9 -1
- data/lib/bitcoin/opcodes.rb +14 -1
- data/lib/bitcoin/out_point.rb +7 -0
- data/lib/bitcoin/payment_code.rb +92 -0
- data/lib/bitcoin/psbt/hd_key_path.rb +1 -1
- data/lib/bitcoin/psbt/input.rb +8 -17
- data/lib/bitcoin/psbt/output.rb +1 -1
- data/lib/bitcoin/psbt/tx.rb +11 -16
- data/lib/bitcoin/rpc/bitcoin_core_client.rb +22 -12
- data/lib/bitcoin/rpc/request_handler.rb +3 -3
- data/lib/bitcoin/script/script.rb +68 -28
- data/lib/bitcoin/script/script_error.rb +27 -1
- data/lib/bitcoin/script/script_interpreter.rb +164 -67
- data/lib/bitcoin/script/tx_checker.rb +64 -14
- data/lib/bitcoin/secp256k1.rb +1 -0
- data/lib/bitcoin/secp256k1/native.rb +138 -25
- data/lib/bitcoin/secp256k1/rfc6979.rb +43 -0
- data/lib/bitcoin/secp256k1/ruby.rb +82 -54
- data/lib/bitcoin/sighash_generator.rb +156 -0
- data/lib/bitcoin/store.rb +2 -1
- data/lib/bitcoin/store/chain_entry.rb +1 -0
- data/lib/bitcoin/store/db/level_db.rb +2 -2
- data/lib/bitcoin/store/utxo_db.rb +226 -0
- data/lib/bitcoin/tx.rb +17 -88
- data/lib/bitcoin/tx_in.rb +4 -5
- data/lib/bitcoin/tx_out.rb +2 -3
- data/lib/bitcoin/util.rb +34 -6
- data/lib/bitcoin/version.rb +1 -1
- data/lib/bitcoin/wallet.rb +1 -0
- data/lib/bitcoin/wallet/account.rb +2 -1
- data/lib/bitcoin/wallet/base.rb +3 -3
- data/lib/bitcoin/wallet/db.rb +1 -1
- data/lib/bitcoin/wallet/master_key.rb +1 -0
- data/lib/bitcoin/wallet/utxo.rb +37 -0
- metadata +66 -32
data/lib/bitcoin/tx_out.rb
CHANGED
@@ -18,14 +18,13 @@ module Bitcoin
|
|
18
18
|
|
19
19
|
def self.parse_from_payload(payload)
|
20
20
|
buf = payload.is_a?(String) ? StringIO.new(payload) : payload
|
21
|
-
value = buf.read(8).
|
21
|
+
value = buf.read(8).unpack1('q')
|
22
22
|
script_size = Bitcoin.unpack_var_int_from_io(buf)
|
23
23
|
new(value: value, script_pubkey: Script.parse_from_payload(buf.read(script_size)))
|
24
24
|
end
|
25
25
|
|
26
26
|
def to_payload
|
27
|
-
|
28
|
-
[value].pack('Q') << Bitcoin.pack_var_int(s.length) << s
|
27
|
+
[value].pack('Q') << script_pubkey.to_payload(true)
|
29
28
|
end
|
30
29
|
|
31
30
|
def to_empty_payload
|
data/lib/bitcoin/util.rb
CHANGED
@@ -33,7 +33,7 @@ module Bitcoin
|
|
33
33
|
|
34
34
|
# @return an integer for a valid payload, otherwise nil
|
35
35
|
def unpack_var_int(payload)
|
36
|
-
case payload.
|
36
|
+
case payload.unpack1('C')
|
37
37
|
when 0xfd
|
38
38
|
payload.unpack('xva*')
|
39
39
|
when 0xfe
|
@@ -47,14 +47,14 @@ module Bitcoin
|
|
47
47
|
|
48
48
|
# @return an integer for a valid payload, otherwise nil
|
49
49
|
def unpack_var_int_from_io(buf)
|
50
|
-
uchar = buf.read(1)&.
|
50
|
+
uchar = buf.read(1)&.unpack1('C')
|
51
51
|
case uchar
|
52
52
|
when 0xfd
|
53
|
-
buf.read(2)&.
|
53
|
+
buf.read(2)&.unpack1('v')
|
54
54
|
when 0xfe
|
55
|
-
buf.read(4)&.
|
55
|
+
buf.read(4)&.unpack1('V')
|
56
56
|
when 0xff
|
57
|
-
buf.read(8)&.
|
57
|
+
buf.read(8)&.unpack1('Q')
|
58
58
|
else
|
59
59
|
uchar
|
60
60
|
end
|
@@ -79,7 +79,7 @@ module Bitcoin
|
|
79
79
|
|
80
80
|
# byte convert to the sequence of bits packed eight in a byte with the least significant bit first.
|
81
81
|
def byte_to_bit(byte)
|
82
|
-
byte.
|
82
|
+
byte.unpack1('b*')
|
83
83
|
end
|
84
84
|
|
85
85
|
# padding zero to the left of binary string until bytesize.
|
@@ -96,6 +96,15 @@ module Bitcoin
|
|
96
96
|
Digest::RMD160.hexdigest(Digest::SHA256.digest(hex.htb))
|
97
97
|
end
|
98
98
|
|
99
|
+
# Generate tagged hash value.
|
100
|
+
# @param [String] tag tag value.
|
101
|
+
# @param [String] msg the message to be hashed.
|
102
|
+
# @return [String] the hash value with binary format.
|
103
|
+
def tagged_hash(tag, msg)
|
104
|
+
tag_hash = Digest::SHA256.digest(tag)
|
105
|
+
Digest::SHA256.digest(tag_hash + tag_hash + msg)
|
106
|
+
end
|
107
|
+
|
99
108
|
# encode Base58 check address.
|
100
109
|
# @param [String] hex the address payload.
|
101
110
|
# @param [String] addr_version the address version for P2PKH and P2SH.
|
@@ -128,6 +137,25 @@ module Bitcoin
|
|
128
137
|
OpenSSL::HMAC.digest(DIGEST_NAME_SHA256, key, data)
|
129
138
|
end
|
130
139
|
|
140
|
+
# check whether +addr+ is valid address.
|
141
|
+
# @param [String] addr an address
|
142
|
+
# @return [Boolean] if valid address return true, otherwise false.
|
143
|
+
def valid_address?(addr)
|
144
|
+
begin
|
145
|
+
Bitcoin::Script.parse_from_addr(addr)
|
146
|
+
true
|
147
|
+
rescue Exception
|
148
|
+
false
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
131
152
|
end
|
132
153
|
|
154
|
+
module HexConverter
|
155
|
+
|
156
|
+
def to_hex
|
157
|
+
to_payload.bth
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
133
161
|
end
|
data/lib/bitcoin/version.rb
CHANGED
data/lib/bitcoin/wallet.rb
CHANGED
@@ -3,6 +3,7 @@ module Bitcoin
|
|
3
3
|
|
4
4
|
# the account in BIP-44
|
5
5
|
class Account
|
6
|
+
include Bitcoin::HexConverter
|
6
7
|
|
7
8
|
PURPOSE_TYPE = {legacy: 44, nested_witness: 49, native_segwit: 84}
|
8
9
|
|
@@ -42,7 +43,7 @@ module Bitcoin
|
|
42
43
|
|
43
44
|
def to_payload
|
44
45
|
payload = account_key.to_payload
|
45
|
-
payload << Bitcoin.pack_var_string(name.
|
46
|
+
payload << Bitcoin.pack_var_string(name.unpack1('H*').htb)
|
46
47
|
payload << [purpose, index, receive_depth, change_depth, lookahead].pack('I*')
|
47
48
|
payload
|
48
49
|
end
|
data/lib/bitcoin/wallet/base.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'leveldb'
|
1
|
+
require 'leveldb-native'
|
2
2
|
module Bitcoin
|
3
3
|
module Wallet
|
4
4
|
|
@@ -20,14 +20,14 @@ module Bitcoin
|
|
20
20
|
# @param [String] wallet_id new wallet id.
|
21
21
|
# @param [String] path_prefix wallet file path prefix.
|
22
22
|
# @return [Bitcoin::Wallet::Base] the wallet
|
23
|
-
def self.create(wallet_id = 1, path_prefix = default_path_prefix)
|
23
|
+
def self.create(wallet_id = 1, path_prefix = default_path_prefix, purpose = Account::PURPOSE_TYPE[:native_segwit])
|
24
24
|
raise ArgumentError, "wallet_id : #{wallet_id} already exist." if self.exist?(wallet_id, path_prefix)
|
25
25
|
w = self.new(wallet_id, path_prefix)
|
26
26
|
# generate seed
|
27
27
|
raise RuntimeError, 'the seed already exist.' if w.db.registered_master?
|
28
28
|
master = Bitcoin::Wallet::MasterKey.generate
|
29
29
|
w.db.register_master_key(master)
|
30
|
-
w.create_account('Default')
|
30
|
+
w.create_account(purpose, 'Default')
|
31
31
|
w
|
32
32
|
end
|
33
33
|
|
data/lib/bitcoin/wallet/db.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Bitcoin
|
2
|
+
module Wallet
|
3
|
+
class Utxo
|
4
|
+
attr_reader :tx_hash
|
5
|
+
attr_reader :index
|
6
|
+
attr_reader :block_height
|
7
|
+
attr_reader :value
|
8
|
+
attr_reader :script_pubkey
|
9
|
+
|
10
|
+
def initialize(tx_hash, index, value, script_pubkey, block_height = nil)
|
11
|
+
@tx_hash = tx_hash
|
12
|
+
@index = index
|
13
|
+
@block_height = block_height
|
14
|
+
@value = value
|
15
|
+
@script_pubkey = script_pubkey
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.parse_from_payload(payload)
|
19
|
+
return nil if payload.nil?
|
20
|
+
|
21
|
+
tx_hash, index, block_height, value, payload = payload.unpack('H64VVQa*')
|
22
|
+
|
23
|
+
buf = StringIO.new(payload)
|
24
|
+
script_size = Bitcoin.unpack_var_int_from_io(buf)
|
25
|
+
script_pubkey = Bitcoin::Script.parse_from_payload(buf.read(script_size));
|
26
|
+
new(tx_hash, index, value, script_pubkey, block_height == 0 ? nil : block_height )
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_payload
|
30
|
+
payload = [tx_hash, index, block_height.nil? ? 0 : block_height, value].pack('H64VVQ')
|
31
|
+
s = script_pubkey.to_payload
|
32
|
+
payload << Bitcoin.pack_var_int(s.length) << s
|
33
|
+
payload
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitcoinrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- azuchi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ecdsa
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0
|
61
|
+
version: 1.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.0
|
68
|
+
version: 1.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: daemon-spawn
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: iniparse
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: siphash
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -165,63 +165,63 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: protobuf
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- -
|
171
|
+
- - '='
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
173
|
+
version: 3.8.5
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- -
|
178
|
+
- - '='
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
180
|
+
version: 3.8.5
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: json_pure
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- -
|
185
|
+
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 3.
|
187
|
+
version: 2.3.1
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- -
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 3.
|
194
|
+
version: 2.3.1
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: bip-schnorr
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - ">="
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 0.3.2
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 0.3.2
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
210
|
+
name: base32
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- - "
|
213
|
+
- - ">="
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
215
|
+
version: 0.3.4
|
216
216
|
type: :runtime
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- - "
|
220
|
+
- - ">="
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
222
|
+
version: 0.3.4
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
|
-
name: leveldb-
|
224
|
+
name: leveldb-native
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
227
|
- - ">="
|
@@ -252,16 +252,16 @@ dependencies:
|
|
252
252
|
name: rake
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
254
254
|
requirements:
|
255
|
-
- - "
|
255
|
+
- - ">="
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
257
|
+
version: 12.3.3
|
258
258
|
type: :development
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
|
-
- - "
|
262
|
+
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
264
|
+
version: 12.3.3
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: rspec
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -290,7 +290,21 @@ dependencies:
|
|
290
290
|
- - ">="
|
291
291
|
- !ruby/object:Gem::Version
|
292
292
|
version: '0'
|
293
|
-
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: webmock
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: 3.11.1
|
300
|
+
type: :development
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - ">="
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: 3.11.1
|
307
|
+
description: The implementation of Bitcoin Protocol for Ruby.
|
294
308
|
email:
|
295
309
|
- azuchi@chaintope.com
|
296
310
|
executables:
|
@@ -317,6 +331,7 @@ files:
|
|
317
331
|
- exe/bitcoinrbd
|
318
332
|
- lib/bitcoin.rb
|
319
333
|
- lib/bitcoin/base58.rb
|
334
|
+
- lib/bitcoin/bip85_entropy.rb
|
320
335
|
- lib/bitcoin/bit_stream.rb
|
321
336
|
- lib/bitcoin/block.rb
|
322
337
|
- lib/bitcoin/block_filter.rb
|
@@ -325,9 +340,14 @@ files:
|
|
325
340
|
- lib/bitcoin/chain_params.rb
|
326
341
|
- lib/bitcoin/chainparams/mainnet.yml
|
327
342
|
- lib/bitcoin/chainparams/regtest.yml
|
343
|
+
- lib/bitcoin/chainparams/signet.yml
|
328
344
|
- lib/bitcoin/chainparams/testnet.yml
|
329
345
|
- lib/bitcoin/constants.rb
|
330
346
|
- lib/bitcoin/descriptor.rb
|
347
|
+
- lib/bitcoin/errors.rb
|
348
|
+
- lib/bitcoin/ext.rb
|
349
|
+
- lib/bitcoin/ext/ecdsa.rb
|
350
|
+
- lib/bitcoin/ext/json_parser.rb
|
331
351
|
- lib/bitcoin/ext_key.rb
|
332
352
|
- lib/bitcoin/gcs_filter.rb
|
333
353
|
- lib/bitcoin/key.rb
|
@@ -336,11 +356,16 @@ files:
|
|
336
356
|
- lib/bitcoin/merkle_tree.rb
|
337
357
|
- lib/bitcoin/message.rb
|
338
358
|
- lib/bitcoin/message/addr.rb
|
359
|
+
- lib/bitcoin/message/addr_v2.rb
|
339
360
|
- lib/bitcoin/message/base.rb
|
340
361
|
- lib/bitcoin/message/block.rb
|
341
362
|
- lib/bitcoin/message/block_transaction_request.rb
|
342
363
|
- lib/bitcoin/message/block_transactions.rb
|
343
364
|
- lib/bitcoin/message/block_txn.rb
|
365
|
+
- lib/bitcoin/message/cf_parser.rb
|
366
|
+
- lib/bitcoin/message/cfcheckpt.rb
|
367
|
+
- lib/bitcoin/message/cfheaders.rb
|
368
|
+
- lib/bitcoin/message/cfilter.rb
|
344
369
|
- lib/bitcoin/message/cmpct_block.rb
|
345
370
|
- lib/bitcoin/message/error.rb
|
346
371
|
- lib/bitcoin/message/fee_filter.rb
|
@@ -350,6 +375,9 @@ files:
|
|
350
375
|
- lib/bitcoin/message/get_addr.rb
|
351
376
|
- lib/bitcoin/message/get_block_txn.rb
|
352
377
|
- lib/bitcoin/message/get_blocks.rb
|
378
|
+
- lib/bitcoin/message/get_cfcheckpt.rb
|
379
|
+
- lib/bitcoin/message/get_cfheaders.rb
|
380
|
+
- lib/bitcoin/message/get_cfilters.rb
|
353
381
|
- lib/bitcoin/message/get_data.rb
|
354
382
|
- lib/bitcoin/message/get_headers.rb
|
355
383
|
- lib/bitcoin/message/header_and_short_ids.rb
|
@@ -366,6 +394,7 @@ files:
|
|
366
394
|
- lib/bitcoin/message/pong.rb
|
367
395
|
- lib/bitcoin/message/prefilled_tx.rb
|
368
396
|
- lib/bitcoin/message/reject.rb
|
397
|
+
- lib/bitcoin/message/send_addr_v2.rb
|
369
398
|
- lib/bitcoin/message/send_cmpct.rb
|
370
399
|
- lib/bitcoin/message/send_headers.rb
|
371
400
|
- lib/bitcoin/message/tx.rb
|
@@ -391,6 +420,7 @@ files:
|
|
391
420
|
- lib/bitcoin/node/spv.rb
|
392
421
|
- lib/bitcoin/opcodes.rb
|
393
422
|
- lib/bitcoin/out_point.rb
|
423
|
+
- lib/bitcoin/payment_code.rb
|
394
424
|
- lib/bitcoin/payments.rb
|
395
425
|
- lib/bitcoin/payments/output.pb.rb
|
396
426
|
- lib/bitcoin/payments/payment.pb.rb
|
@@ -416,7 +446,9 @@ files:
|
|
416
446
|
- lib/bitcoin/script_witness.rb
|
417
447
|
- lib/bitcoin/secp256k1.rb
|
418
448
|
- lib/bitcoin/secp256k1/native.rb
|
449
|
+
- lib/bitcoin/secp256k1/rfc6979.rb
|
419
450
|
- lib/bitcoin/secp256k1/ruby.rb
|
451
|
+
- lib/bitcoin/sighash_generator.rb
|
420
452
|
- lib/bitcoin/slip39.rb
|
421
453
|
- lib/bitcoin/slip39/share.rb
|
422
454
|
- lib/bitcoin/slip39/sss.rb
|
@@ -426,6 +458,7 @@ files:
|
|
426
458
|
- lib/bitcoin/store/db.rb
|
427
459
|
- lib/bitcoin/store/db/level_db.rb
|
428
460
|
- lib/bitcoin/store/spv_chain.rb
|
461
|
+
- lib/bitcoin/store/utxo_db.rb
|
429
462
|
- lib/bitcoin/tx.rb
|
430
463
|
- lib/bitcoin/tx_in.rb
|
431
464
|
- lib/bitcoin/tx_out.rb
|
@@ -437,6 +470,7 @@ files:
|
|
437
470
|
- lib/bitcoin/wallet/base.rb
|
438
471
|
- lib/bitcoin/wallet/db.rb
|
439
472
|
- lib/bitcoin/wallet/master_key.rb
|
473
|
+
- lib/bitcoin/wallet/utxo.rb
|
440
474
|
- lib/openassets.rb
|
441
475
|
- lib/openassets/marker_output.rb
|
442
476
|
- lib/openassets/payload.rb
|
@@ -460,8 +494,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
460
494
|
- !ruby/object:Gem::Version
|
461
495
|
version: '0'
|
462
496
|
requirements: []
|
463
|
-
rubygems_version: 3.
|
497
|
+
rubygems_version: 3.2.3
|
464
498
|
signing_key:
|
465
499
|
specification_version: 4
|
466
|
-
summary:
|
500
|
+
summary: The implementation of Bitcoin Protocol for Ruby.
|
467
501
|
test_files: []
|