bitcoinrb 0.5.0 → 0.9.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +37 -0
  3. data/.rspec_parallel +2 -0
  4. data/.ruby-version +1 -1
  5. data/README.md +11 -1
  6. data/bitcoinrb.gemspec +7 -6
  7. data/lib/bitcoin/block_filter.rb +14 -0
  8. data/lib/bitcoin/chain_params.rb +9 -0
  9. data/lib/bitcoin/chainparams/signet.yml +39 -0
  10. data/lib/bitcoin/constants.rb +45 -4
  11. data/lib/bitcoin/descriptor.rb +1 -1
  12. data/lib/bitcoin/errors.rb +19 -0
  13. data/lib/bitcoin/ext/array_ext.rb +22 -0
  14. data/lib/bitcoin/ext/ecdsa.rb +36 -0
  15. data/lib/bitcoin/ext.rb +1 -0
  16. data/lib/bitcoin/ext_key.rb +36 -20
  17. data/lib/bitcoin/key.rb +85 -28
  18. data/lib/bitcoin/message/addr_v2.rb +34 -0
  19. data/lib/bitcoin/message/base.rb +16 -0
  20. data/lib/bitcoin/message/cfcheckpt.rb +2 -2
  21. data/lib/bitcoin/message/cfheaders.rb +1 -1
  22. data/lib/bitcoin/message/cfilter.rb +1 -1
  23. data/lib/bitcoin/message/fee_filter.rb +1 -1
  24. data/lib/bitcoin/message/filter_load.rb +3 -3
  25. data/lib/bitcoin/message/header_and_short_ids.rb +1 -1
  26. data/lib/bitcoin/message/inventory.rb +1 -1
  27. data/lib/bitcoin/message/merkle_block.rb +1 -1
  28. data/lib/bitcoin/message/network_addr.rb +141 -18
  29. data/lib/bitcoin/message/ping.rb +1 -1
  30. data/lib/bitcoin/message/pong.rb +1 -1
  31. data/lib/bitcoin/message/send_addr_v2.rb +13 -0
  32. data/lib/bitcoin/message/send_cmpct.rb +2 -2
  33. data/lib/bitcoin/message/tx.rb +1 -1
  34. data/lib/bitcoin/message.rb +72 -0
  35. data/lib/bitcoin/message_sign.rb +47 -0
  36. data/lib/bitcoin/mnemonic.rb +2 -2
  37. data/lib/bitcoin/network/peer_discovery.rb +1 -3
  38. data/lib/bitcoin/node/configuration.rb +3 -1
  39. data/lib/bitcoin/node/spv.rb +8 -0
  40. data/lib/bitcoin/opcodes.rb +14 -1
  41. data/lib/bitcoin/payment_code.rb +2 -2
  42. data/lib/bitcoin/payments/payment.pb.rb +1 -1
  43. data/lib/bitcoin/psbt/hd_key_path.rb +1 -1
  44. data/lib/bitcoin/psbt/input.rb +4 -4
  45. data/lib/bitcoin/psbt/output.rb +1 -1
  46. data/lib/bitcoin/psbt/tx.rb +14 -5
  47. data/lib/bitcoin/psbt.rb +8 -0
  48. data/lib/bitcoin/rpc/bitcoin_core_client.rb +1 -1
  49. data/lib/bitcoin/rpc/request_handler.rb +3 -3
  50. data/lib/bitcoin/script/script.rb +80 -30
  51. data/lib/bitcoin/script/script_error.rb +27 -1
  52. data/lib/bitcoin/script/script_interpreter.rb +164 -62
  53. data/lib/bitcoin/script/tx_checker.rb +62 -14
  54. data/lib/bitcoin/secp256k1/native.rb +184 -17
  55. data/lib/bitcoin/secp256k1/ruby.rb +108 -21
  56. data/lib/bitcoin/sighash_generator.rb +157 -0
  57. data/lib/bitcoin/taproot/leaf_node.rb +23 -0
  58. data/lib/bitcoin/taproot/simple_builder.rb +155 -0
  59. data/lib/bitcoin/taproot.rb +45 -0
  60. data/lib/bitcoin/tx.rb +30 -96
  61. data/lib/bitcoin/tx_in.rb +1 -1
  62. data/lib/bitcoin/tx_out.rb +2 -3
  63. data/lib/bitcoin/util.rb +15 -6
  64. data/lib/bitcoin/version.rb +1 -1
  65. data/lib/bitcoin/wallet/account.rb +1 -1
  66. data/lib/bitcoin.rb +32 -24
  67. metadata +58 -18
  68. data/.travis.yml +0 -12
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.5.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-19 00:00:00.000000000 Z
11
+ date: 2021-11-12 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.3
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.3
68
+ version: 1.1.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: daemon-spawn
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -179,33 +179,47 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: 3.8.5
181
181
  - !ruby/object:Gem::Dependency
182
- name: scrypt
182
+ name: json_pure
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - ">="
186
186
  - !ruby/object:Gem::Version
187
- version: '0'
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: '0'
194
+ version: 2.3.1
195
195
  - !ruby/object:Gem::Dependency
196
- name: json_pure
196
+ name: bip-schnorr
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - ">="
200
200
  - !ruby/object:Gem::Version
201
- version: 2.3.1
201
+ version: 0.4.0
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: 2.3.1
208
+ version: 0.4.0
209
+ - !ruby/object:Gem::Dependency
210
+ name: base32
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: 0.3.4
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: 0.3.4
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: leveldb-native
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -280,17 +294,31 @@ dependencies:
280
294
  name: webmock
281
295
  requirement: !ruby/object:Gem::Requirement
282
296
  requirements:
283
- - - "~>"
297
+ - - ">="
284
298
  - !ruby/object:Gem::Version
285
- version: '3.0'
299
+ version: 3.11.1
286
300
  type: :development
287
301
  prerelease: false
288
302
  version_requirements: !ruby/object:Gem::Requirement
289
303
  requirements:
290
- - - "~>"
304
+ - - ">="
291
305
  - !ruby/object:Gem::Version
292
- version: '3.0'
293
- description: "[WIP]The implementation of Bitcoin Protocol for Ruby."
306
+ version: 3.11.1
307
+ - !ruby/object:Gem::Dependency
308
+ name: parallel
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: 1.20.1
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: 1.20.1
321
+ description: The implementation of Bitcoin Protocol for Ruby.
294
322
  email:
295
323
  - azuchi@chaintope.com
296
324
  executables:
@@ -299,11 +327,12 @@ executables:
299
327
  extensions: []
300
328
  extra_rdoc_files: []
301
329
  files:
330
+ - ".github/workflows/ruby.yml"
302
331
  - ".gitignore"
303
332
  - ".rspec"
333
+ - ".rspec_parallel"
304
334
  - ".ruby-gemset"
305
335
  - ".ruby-version"
306
- - ".travis.yml"
307
336
  - CODE_OF_CONDUCT.md
308
337
  - Gemfile
309
338
  - LICENSE.txt
@@ -326,10 +355,14 @@ files:
326
355
  - lib/bitcoin/chain_params.rb
327
356
  - lib/bitcoin/chainparams/mainnet.yml
328
357
  - lib/bitcoin/chainparams/regtest.yml
358
+ - lib/bitcoin/chainparams/signet.yml
329
359
  - lib/bitcoin/chainparams/testnet.yml
330
360
  - lib/bitcoin/constants.rb
331
361
  - lib/bitcoin/descriptor.rb
362
+ - lib/bitcoin/errors.rb
332
363
  - lib/bitcoin/ext.rb
364
+ - lib/bitcoin/ext/array_ext.rb
365
+ - lib/bitcoin/ext/ecdsa.rb
333
366
  - lib/bitcoin/ext/json_parser.rb
334
367
  - lib/bitcoin/ext_key.rb
335
368
  - lib/bitcoin/gcs_filter.rb
@@ -339,6 +372,7 @@ files:
339
372
  - lib/bitcoin/merkle_tree.rb
340
373
  - lib/bitcoin/message.rb
341
374
  - lib/bitcoin/message/addr.rb
375
+ - lib/bitcoin/message/addr_v2.rb
342
376
  - lib/bitcoin/message/base.rb
343
377
  - lib/bitcoin/message/block.rb
344
378
  - lib/bitcoin/message/block_transaction_request.rb
@@ -376,11 +410,13 @@ files:
376
410
  - lib/bitcoin/message/pong.rb
377
411
  - lib/bitcoin/message/prefilled_tx.rb
378
412
  - lib/bitcoin/message/reject.rb
413
+ - lib/bitcoin/message/send_addr_v2.rb
379
414
  - lib/bitcoin/message/send_cmpct.rb
380
415
  - lib/bitcoin/message/send_headers.rb
381
416
  - lib/bitcoin/message/tx.rb
382
417
  - lib/bitcoin/message/ver_ack.rb
383
418
  - lib/bitcoin/message/version.rb
419
+ - lib/bitcoin/message_sign.rb
384
420
  - lib/bitcoin/mnemonic.rb
385
421
  - lib/bitcoin/mnemonic/wordlist/chinese_simplified.txt
386
422
  - lib/bitcoin/mnemonic/wordlist/chinese_traditional.txt
@@ -429,6 +465,7 @@ files:
429
465
  - lib/bitcoin/secp256k1/native.rb
430
466
  - lib/bitcoin/secp256k1/rfc6979.rb
431
467
  - lib/bitcoin/secp256k1/ruby.rb
468
+ - lib/bitcoin/sighash_generator.rb
432
469
  - lib/bitcoin/slip39.rb
433
470
  - lib/bitcoin/slip39/share.rb
434
471
  - lib/bitcoin/slip39/sss.rb
@@ -439,6 +476,9 @@ files:
439
476
  - lib/bitcoin/store/db/level_db.rb
440
477
  - lib/bitcoin/store/spv_chain.rb
441
478
  - lib/bitcoin/store/utxo_db.rb
479
+ - lib/bitcoin/taproot.rb
480
+ - lib/bitcoin/taproot/leaf_node.rb
481
+ - lib/bitcoin/taproot/simple_builder.rb
442
482
  - lib/bitcoin/tx.rb
443
483
  - lib/bitcoin/tx_in.rb
444
484
  - lib/bitcoin/tx_out.rb
@@ -474,8 +514,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
474
514
  - !ruby/object:Gem::Version
475
515
  version: '0'
476
516
  requirements: []
477
- rubygems_version: 3.0.3
517
+ rubygems_version: 3.2.22
478
518
  signing_key:
479
519
  specification_version: 4
480
- summary: "[WIP]The implementation of Bitcoin Protocol for Ruby."
520
+ summary: The implementation of Bitcoin Protocol for Ruby.
481
521
  test_files: []
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4.6
4
- - 2.5.5
5
- - 2.6.3
6
- - 2.7.0
7
- addons:
8
- apt:
9
- packages:
10
- - libleveldb-dev
11
- script:
12
- - bundle exec parallel_test spec/ -n 6 --type rspec