block_io 2.0.0 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/{.appveyor.yml → .appveyor.yml-disabled} +2 -2
  3. data/.gitignore +1 -0
  4. data/.travis.yml +1 -1
  5. data/LICENSE +1 -1
  6. data/README.md +18 -14
  7. data/block_io.gemspec +7 -7
  8. data/examples/basic.rb +29 -5
  9. data/examples/dtrust.rb +43 -24
  10. data/examples/sweeper.rb +21 -16
  11. data/lib/block_io/api_exception.rb +11 -0
  12. data/lib/block_io/chainparams/BTC.yml +8 -0
  13. data/lib/block_io/chainparams/BTCTEST.yml +8 -0
  14. data/lib/block_io/chainparams/DOGE.yml +8 -0
  15. data/lib/block_io/chainparams/DOGETEST.yml +8 -0
  16. data/lib/block_io/chainparams/LTC.yml +8 -0
  17. data/lib/block_io/chainparams/LTCTEST.yml +8 -0
  18. data/lib/block_io/client.rb +145 -80
  19. data/lib/block_io/extended_bitcoinrb.rb +132 -0
  20. data/lib/block_io/helper.rb +211 -53
  21. data/lib/block_io/key.rb +11 -124
  22. data/lib/block_io/version.rb +1 -1
  23. data/lib/block_io.rb +3 -2
  24. data/spec/client_misc_spec.rb +76 -0
  25. data/spec/client_spec.rb +23 -178
  26. data/spec/dtrust_spec.rb +167 -0
  27. data/spec/helper_spec.rb +117 -7
  28. data/spec/key_spec.rb +50 -19
  29. data/spec/larger_transaction_spec.rb +371 -0
  30. data/spec/sweep_spec.rb +115 -0
  31. data/spec/test-cases/.gitignore +2 -0
  32. data/spec/test-cases/LICENSE +21 -0
  33. data/spec/test-cases/README.md +2 -0
  34. data/spec/test-cases/json/create_and_sign_transaction_response.json +61 -0
  35. data/spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_251inputs.json +1261 -0
  36. data/spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_252inputs.json +1266 -0
  37. data/spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json +1271 -0
  38. data/spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json +3816 -0
  39. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2SH_3of5_195inputs.json +2931 -0
  40. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2SH_4of5_195inputs.json +5 -0
  41. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_251inputs.json +3771 -0
  42. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_252inputs.json +3786 -0
  43. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_253inputs.json +3801 -0
  44. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_251inputs.json +5 -0
  45. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_252inputs.json +5 -0
  46. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_253inputs.json +5 -0
  47. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_251inputs.json +3771 -0
  48. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_252inputs.json +3786 -0
  49. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_253inputs.json +3801 -0
  50. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_251inputs.json +5 -0
  51. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_252inputs.json +5 -0
  52. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_253inputs.json +5 -0
  53. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2sh_3_of_5_keys.json +21 -0
  54. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2sh_4_of_5_keys.json +5 -0
  55. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2wsh_over_p2sh_3_of_5_keys.json +21 -0
  56. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2wsh_over_p2sh_4_of_5_keys.json +5 -0
  57. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3_of_5_keys.json +36 -0
  58. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_251outputs.json +591 -0
  59. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_252outputs.json +576 -0
  60. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_253outputs.json +531 -0
  61. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4_of_5_keys.json +5 -0
  62. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_251outputs.json +5 -0
  63. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_252outputs.json +5 -0
  64. data/spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_253outputs.json +5 -0
  65. data/spec/test-cases/json/create_and_sign_transaction_response_sweep_p2pkh.json +5 -0
  66. data/spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh.json +5 -0
  67. data/spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh_over_p2sh.json +5 -0
  68. data/spec/test-cases/json/create_and_sign_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json +21 -0
  69. data/spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json +11 -0
  70. data/spec/test-cases/json/get_balance_response.json +8 -0
  71. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_3of5_195inputs.json +1397 -0
  72. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_4of5_195inputs.json +1397 -0
  73. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_251inputs.json +1795 -0
  74. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_252inputs.json +1802 -0
  75. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_253inputs.json +1809 -0
  76. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_251inputs.json +1789 -0
  77. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_252inputs.json +1802 -0
  78. data/spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_253inputs.json +1809 -0
  79. data/spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_251inputs.json +1795 -0
  80. data/spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_252inputs.json +1802 -0
  81. data/spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_253inputs.json +1809 -0
  82. data/spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_251inputs.json +1795 -0
  83. data/spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_252inputs.json +1802 -0
  84. data/spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_253inputs.json +1809 -0
  85. data/spec/test-cases/json/prepare_dtrust_transaction_response_p2sh.json +45 -0
  86. data/spec/test-cases/json/prepare_dtrust_transaction_response_p2wsh_over_p2sh.json +45 -0
  87. data/spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0.json +52 -0
  88. data/spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_251outputs.json +1805 -0
  89. data/spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_252outputs.json +1804 -0
  90. data/spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_253outputs.json +1789 -0
  91. data/spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_251outputs.json +1805 -0
  92. data/spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_252outputs.json +1804 -0
  93. data/spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_253outputs.json +1789 -0
  94. data/spec/test-cases/json/prepare_sweep_transaction_response_p2pkh.json +35 -0
  95. data/spec/test-cases/json/prepare_sweep_transaction_response_p2wpkh.json +35 -0
  96. data/spec/test-cases/json/prepare_sweep_transaction_response_p2wpkh_over_p2sh.json +35 -0
  97. data/spec/test-cases/json/prepare_transaction_response.json +164 -0
  98. data/spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_251inputs.json +1796 -0
  99. data/spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_252inputs.json +1803 -0
  100. data/spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json +1810 -0
  101. data/spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json +5367 -0
  102. data/spec/test-cases/json/prepare_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json +76 -0
  103. data/spec/test-cases/json/prepare_transaction_response_witness_v1_output.json +64 -0
  104. data/spec/test-cases/json/summarize_prepared_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json +6 -0
  105. metadata +203 -57
  106. data/examples/max_withdrawal.rb +0 -29
  107. data/lib/block_io/constants.rb +0 -10
  108. data/spec/data/sign_and_finalize_dtrust_withdrawal_request.json +0 -1
  109. data/spec/data/sign_and_finalize_sweep_request.json +0 -1
  110. data/spec/data/sign_and_finalize_withdrawal_request.json +0 -4
  111. data/spec/data/sweep_from_address_response.json +0 -1
  112. data/spec/data/withdraw_from_dtrust_address_response.json +0 -1
  113. data/spec/data/withdraw_response.json +0 -1227
  114. data/spec/rfc6979_spec.rb +0 -59
  115. data/spec/withdraw_spec.rb +0 -90
@@ -0,0 +1,76 @@
1
+ {
2
+ "status": "success",
3
+ "data": {
4
+ "network": "LTCTEST",
5
+ "tx_type": "basic",
6
+ "inputs": [
7
+ {
8
+ "input_index": 0,
9
+ "previous_txid": "5d5d9a902f572449786ce65a586481dfa646f66f8500cadbed811eaf82370630",
10
+ "previous_output_index": 0,
11
+ "input_value": "0.00249485",
12
+ "spending_address": "Qjgm6PfqcCmQr31DKnnch7zwG7sFpVc7xb"
13
+ },
14
+ {
15
+ "input_index": 1,
16
+ "previous_txid": "adc348dcfed62799718e375d9097fa71d2a321c9137c4a52067a13181203ead4",
17
+ "previous_output_index": 0,
18
+ "input_value": "0.00090000",
19
+ "spending_address": "QN7WkTwGmTxEnK4EpzsspPofsKPXvjLKxC"
20
+ },
21
+ {
22
+ "input_index": 2,
23
+ "previous_txid": "9ffa4dceac8b09fb099fb0ebcc5d0bcb132c98b3e8a2b1381d8d9654f82a5cf0",
24
+ "previous_output_index": 1,
25
+ "input_value": "0.17464160",
26
+ "spending_address": "QN7WkTwGmTxEnK4EpzsspPofsKPXvjLKxC"
27
+ }
28
+ ],
29
+ "outputs": [
30
+ {
31
+ "output_index": 0,
32
+ "output_category": "user-specified",
33
+ "output_value": "0.01234500",
34
+ "receiving_address": "QN9ShoLwKTnW7ms7bfSrH7YgMPh2cjUkdi"
35
+ },
36
+ {
37
+ "output_index": 1,
38
+ "output_category": "blockio-fee",
39
+ "output_value": "0.00012345",
40
+ "receiving_address": "tltc1qyhn4wkpzt0e8qm7a9kk8v0cpxn775wlqfgl32s20n00p3q5q7uksc4xqfe"
41
+ },
42
+ {
43
+ "output_index": 2,
44
+ "output_category": "change",
45
+ "output_value": "0.16546580",
46
+ "receiving_address": "QN7WkTwGmTxEnK4EpzsspPofsKPXvjLKxC"
47
+ }
48
+ ],
49
+ "input_address_data": [
50
+ {
51
+ "required_signatures": 2,
52
+ "public_keys": [
53
+ "0325e036e22b3ee1593baba8052e92505a11446a1ba3e8bc3f9f74b17f2e6b6a3e",
54
+ "034309721935937713a2dd1c33c5c44a10a30674bebe0542aeb145ce4c9790e742"
55
+ ],
56
+ "address": "Qjgm6PfqcCmQr31DKnnch7zwG7sFpVc7xb",
57
+ "address_type": "P2WSH-over-P2SH"
58
+ },
59
+ {
60
+ "required_signatures": 2,
61
+ "public_keys": [
62
+ "03b934de0933b8b80051530d353f5fb22ec7e5d6233d8b6bf2ddcaf7119e2f4fe7",
63
+ "034309721935937713a2dd1c33c5c44a10a30674bebe0542aeb145ce4c9790e742"
64
+ ],
65
+ "address": "QN7WkTwGmTxEnK4EpzsspPofsKPXvjLKxC",
66
+ "address_type": "P2WSH-over-P2SH"
67
+ }
68
+ ],
69
+ "user_key": {
70
+ "public_key": "034309721935937713a2dd1c33c5c44a10a30674bebe0542aeb145ce4c9790e742",
71
+ "encrypted_passphrase": "UMT6oOUQf/hRNCdiSc3HAHRdn95G9iSxvU5pqTCveqaQxpVShoyCBfgDOfzbgrk3Cw4oNY0sBStoWqCc4ha4kFXBblt/6DzxV7YBD2lDkjGYdrYISrGG+kAHEbLxcVwHL/6Feep9ve3NgvCSEV0MTrm2HBNfX1ke/+XBoYhn7ZX9QioLnUJW5ZH1OkSdM849"
72
+ },
73
+ "estimated_tx_size": 511,
74
+ "expected_unsigned_txid": "4ee43869f50d226686a0ad0949e4adeb02f4d93bb7ea2efda62dfc36f2a1b0b7"
75
+ }
76
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "status": "success",
3
+ "data": {
4
+ "network": "BTCTEST",
5
+ "tx_type": "basic",
6
+ "inputs": [
7
+ {
8
+ "input_index": 0,
9
+ "previous_txid": "5fe41d63872f6d724f2a703597885d3a19df8f13cdaa7ea9b8f94f869bcc4e78",
10
+ "previous_output_index": 1,
11
+ "input_value": "0.00060915",
12
+ "spending_address": "2MsU2DsvP7okZ2sZGZUvH3rZZuQt4pf75Am"
13
+ }
14
+ ],
15
+ "outputs": [
16
+ {
17
+ "output_index": 0,
18
+ "output_category": "user-specified",
19
+ "output_value": "0.00020000",
20
+ "receiving_address": "tb1pqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesf3hn0c"
21
+ },
22
+ {
23
+ "output_index": 1,
24
+ "output_category": "user-specified",
25
+ "output_value": "0.00020000",
26
+ "receiving_address": "tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy"
27
+ },
28
+ {
29
+ "output_index": 2,
30
+ "output_category": "change",
31
+ "output_value": "0.00019615",
32
+ "receiving_address": "2MsU2DsvP7okZ2sZGZUvH3rZZuQt4pf75Am"
33
+ }
34
+ ],
35
+ "input_address_data": [
36
+ {
37
+ "required_signatures": 2,
38
+ "public_keys": [
39
+ "021916c1ea9215990263e2862bcecc85397d199a4411c863983176ee3d44e27f7f",
40
+ "02d2cbf77287c1443759abdd35f239e7da2f52c992258653bc8dd577ae63c78628"
41
+ ],
42
+ "address": "2MsU2DsvP7okZ2sZGZUvH3rZZuQt4pf75Am",
43
+ "address_type": "P2WSH-over-P2SH"
44
+ }
45
+ ],
46
+ "user_key": {
47
+ "public_key": "02d2cbf77287c1443759abdd35f239e7da2f52c992258653bc8dd577ae63c78628",
48
+ "encrypted_passphrase": "jlPuw8CJGTWTb+O4I/IKGWGDdF9G8/MX5meX+IfuLfbb7rRABoSUGYSU2BXxxRqR95K64u8gH46h3zr/NKsj8OFv5gj4JwClM7RN03fvb+3CyXgwy4eYSSpFE6vVsdyoxJ8rshUbpf8tvCerUKC0LhE9d61q7mWYoVAik61WRwc=",
49
+ "algorithm": {
50
+ "pbkdf2_salt": "7ccf40ce398f0fb475fe91043f7dce57",
51
+ "pbkdf2_iterations": 102400,
52
+ "pbkdf2_hash_function": "SHA256",
53
+ "pbkdf2_phase1_key_length": 16,
54
+ "pbkdf2_phase2_key_length": 32,
55
+ "aes_iv": "7c69a5e81e53ba05213b35bb",
56
+ "aes_cipher": "AES-256-GCM",
57
+ "aes_auth_tag": "d19b5e48e068f3b1179a4724b3862650",
58
+ "aes_auth_data": ""
59
+ }
60
+ },
61
+ "estimated_tx_size": 260,
62
+ "expected_unsigned_txid": "e1925681c6986df2617d41c90b2bbc32cd01f7df0323ca52417b4a8677b2a160"
63
+ }
64
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "network": "LTCTEST",
3
+ "network_fee": "0.00010220",
4
+ "blockio_fee": "0.00012345",
5
+ "total_amount_to_send": "0.01234500"
6
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: block_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atif Nazir
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-02 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -36,20 +36,20 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '12.3'
39
+ version: '13.0'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 12.3.3
42
+ version: '13.0'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '12.3'
49
+ version: '13.0'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 12.3.3
52
+ version: '13.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -76,7 +76,7 @@ dependencies:
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: '3.8'
79
+ version: '3.12'
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '4.0'
@@ -86,90 +86,90 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.8'
89
+ version: '3.12'
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
92
  version: '4.0'
93
93
  - !ruby/object:Gem::Dependency
94
- name: ecdsa
94
+ name: bitcoinrb
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: 1.2.0
100
- - - ">="
99
+ version: 0.8.0
100
+ - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 1.2.0
102
+ version: 0.8.0
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 1.2.0
110
- - - ">="
109
+ version: 0.8.0
110
+ - - '='
111
111
  - !ruby/object:Gem::Version
112
- version: 1.2.0
112
+ version: 0.8.0
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: http
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: 4.4.1
120
117
  - - ">="
121
118
  - !ruby/object:Gem::Version
122
119
  version: 4.4.1
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '6.0'
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: 4.4.1
130
127
  - - ">="
131
128
  - !ruby/object:Gem::Version
132
129
  version: 4.4.1
130
+ - - "<"
131
+ - !ruby/object:Gem::Version
132
+ version: '6.0'
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: oj
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: 3.10.6
140
- - - ">="
139
+ version: '3.0'
140
+ - - "<"
141
141
  - !ruby/object:Gem::Version
142
- version: '3.10'
142
+ version: '4.0'
143
143
  type: :runtime
144
144
  prerelease: false
145
145
  version_requirements: !ruby/object:Gem::Requirement
146
146
  requirements:
147
147
  - - "~>"
148
148
  - !ruby/object:Gem::Version
149
- version: 3.10.6
150
- - - ">="
149
+ version: '3.0'
150
+ - - "<"
151
151
  - !ruby/object:Gem::Version
152
- version: '3.10'
152
+ version: '4.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: connection_pool
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: 2.2.3
160
157
  - - ">="
161
158
  - !ruby/object:Gem::Version
162
159
  version: '2.2'
160
+ - - "<"
161
+ - !ruby/object:Gem::Version
162
+ version: '3.0'
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: 2.2.3
170
167
  - - ">="
171
168
  - !ruby/object:Gem::Version
172
169
  version: '2.2'
170
+ - - "<"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.0'
173
173
  description: This Ruby Gem is the official reference client for the Block.io payments
174
174
  API. To use this, you will need the Dogecoin, Bitcoin, or Litecoin API key(s) from
175
175
  Block.io. Go ahead, sign up :)
@@ -179,7 +179,7 @@ executables: []
179
179
  extensions: []
180
180
  extra_rdoc_files: []
181
181
  files:
182
- - ".appveyor.yml"
182
+ - ".appveyor.yml-disabled"
183
183
  - ".gitignore"
184
184
  - ".rspec"
185
185
  - ".travis.yml"
@@ -190,32 +190,108 @@ files:
190
190
  - block_io.gemspec
191
191
  - examples/basic.rb
192
192
  - examples/dtrust.rb
193
- - examples/max_withdrawal.rb
194
193
  - examples/proxy.rb
195
194
  - examples/sweeper.rb
196
195
  - lib/block_io.rb
196
+ - lib/block_io/api_exception.rb
197
+ - lib/block_io/chainparams/BTC.yml
198
+ - lib/block_io/chainparams/BTCTEST.yml
199
+ - lib/block_io/chainparams/DOGE.yml
200
+ - lib/block_io/chainparams/DOGETEST.yml
201
+ - lib/block_io/chainparams/LTC.yml
202
+ - lib/block_io/chainparams/LTCTEST.yml
197
203
  - lib/block_io/client.rb
198
- - lib/block_io/constants.rb
204
+ - lib/block_io/extended_bitcoinrb.rb
199
205
  - lib/block_io/helper.rb
200
206
  - lib/block_io/key.rb
201
207
  - lib/block_io/version.rb
208
+ - spec/client_misc_spec.rb
202
209
  - spec/client_spec.rb
203
- - spec/data/sign_and_finalize_dtrust_withdrawal_request.json
204
- - spec/data/sign_and_finalize_sweep_request.json
205
- - spec/data/sign_and_finalize_withdrawal_request.json
206
- - spec/data/sweep_from_address_response.json
207
- - spec/data/withdraw_from_dtrust_address_response.json
208
- - spec/data/withdraw_response.json
210
+ - spec/dtrust_spec.rb
209
211
  - spec/helper_spec.rb
210
212
  - spec/key_spec.rb
211
- - spec/rfc6979_spec.rb
213
+ - spec/larger_transaction_spec.rb
212
214
  - spec/spec_helper.rb
213
- - spec/withdraw_spec.rb
215
+ - spec/sweep_spec.rb
216
+ - spec/test-cases/.gitignore
217
+ - spec/test-cases/LICENSE
218
+ - spec/test-cases/README.md
219
+ - spec/test-cases/json/create_and_sign_transaction_response.json
220
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_251inputs.json
221
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_252inputs.json
222
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
223
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
224
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2SH_3of5_195inputs.json
225
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2SH_4of5_195inputs.json
226
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_251inputs.json
227
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_252inputs.json
228
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_253inputs.json
229
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_251inputs.json
230
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_252inputs.json
231
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_253inputs.json
232
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_251inputs.json
233
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_252inputs.json
234
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_253inputs.json
235
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_251inputs.json
236
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_252inputs.json
237
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_253inputs.json
238
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2sh_3_of_5_keys.json
239
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2sh_4_of_5_keys.json
240
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2wsh_over_p2sh_3_of_5_keys.json
241
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2wsh_over_p2sh_4_of_5_keys.json
242
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3_of_5_keys.json
243
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_251outputs.json
244
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_252outputs.json
245
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_253outputs.json
246
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4_of_5_keys.json
247
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_251outputs.json
248
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_252outputs.json
249
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_253outputs.json
250
+ - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2pkh.json
251
+ - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh.json
252
+ - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh_over_p2sh.json
253
+ - spec/test-cases/json/create_and_sign_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
254
+ - spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json
255
+ - spec/test-cases/json/get_balance_response.json
256
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_3of5_195inputs.json
257
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_4of5_195inputs.json
258
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_251inputs.json
259
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_252inputs.json
260
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_253inputs.json
261
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_251inputs.json
262
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_252inputs.json
263
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_253inputs.json
264
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_251inputs.json
265
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_252inputs.json
266
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_253inputs.json
267
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_251inputs.json
268
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_252inputs.json
269
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_253inputs.json
270
+ - spec/test-cases/json/prepare_dtrust_transaction_response_p2sh.json
271
+ - spec/test-cases/json/prepare_dtrust_transaction_response_p2wsh_over_p2sh.json
272
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0.json
273
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_251outputs.json
274
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_252outputs.json
275
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_253outputs.json
276
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_251outputs.json
277
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_252outputs.json
278
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_253outputs.json
279
+ - spec/test-cases/json/prepare_sweep_transaction_response_p2pkh.json
280
+ - spec/test-cases/json/prepare_sweep_transaction_response_p2wpkh.json
281
+ - spec/test-cases/json/prepare_sweep_transaction_response_p2wpkh_over_p2sh.json
282
+ - spec/test-cases/json/prepare_transaction_response.json
283
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_251inputs.json
284
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_252inputs.json
285
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
286
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
287
+ - spec/test-cases/json/prepare_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
288
+ - spec/test-cases/json/prepare_transaction_response_witness_v1_output.json
289
+ - spec/test-cases/json/summarize_prepared_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
214
290
  homepage: https://block.io/api/simple/ruby
215
291
  licenses:
216
292
  - MIT
217
293
  metadata: {}
218
- post_install_message:
294
+ post_install_message:
219
295
  rdoc_options: []
220
296
  require_paths:
221
297
  - lib
@@ -223,28 +299,98 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
299
  requirements:
224
300
  - - ">="
225
301
  - !ruby/object:Gem::Version
226
- version: 2.3.0
302
+ version: 2.4.0
227
303
  required_rubygems_version: !ruby/object:Gem::Requirement
228
304
  requirements:
229
305
  - - ">="
230
306
  - !ruby/object:Gem::Version
231
307
  version: '0'
232
308
  requirements: []
233
- rubygems_version: 3.1.2
234
- signing_key:
309
+ rubygems_version: 3.2.22
310
+ signing_key:
235
311
  specification_version: 4
236
312
  summary: An easy to use Dogecoin, Bitcoin, Litecoin wallet API by Block.io. Sign up
237
313
  required at Block.io.
238
314
  test_files:
315
+ - spec/client_misc_spec.rb
239
316
  - spec/client_spec.rb
240
- - spec/data/sign_and_finalize_dtrust_withdrawal_request.json
241
- - spec/data/sign_and_finalize_sweep_request.json
242
- - spec/data/sign_and_finalize_withdrawal_request.json
243
- - spec/data/sweep_from_address_response.json
244
- - spec/data/withdraw_from_dtrust_address_response.json
245
- - spec/data/withdraw_response.json
317
+ - spec/dtrust_spec.rb
246
318
  - spec/helper_spec.rb
247
319
  - spec/key_spec.rb
248
- - spec/rfc6979_spec.rb
320
+ - spec/larger_transaction_spec.rb
249
321
  - spec/spec_helper.rb
250
- - spec/withdraw_spec.rb
322
+ - spec/sweep_spec.rb
323
+ - spec/test-cases/.gitignore
324
+ - spec/test-cases/LICENSE
325
+ - spec/test-cases/README.md
326
+ - spec/test-cases/json/create_and_sign_transaction_response.json
327
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_251inputs.json
328
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_252inputs.json
329
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
330
+ - spec/test-cases/json/create_and_sign_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
331
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2SH_3of5_195inputs.json
332
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2SH_4of5_195inputs.json
333
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_251inputs.json
334
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_252inputs.json
335
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_3of5_253inputs.json
336
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_251inputs.json
337
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_252inputs.json
338
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_P2WSH-over-P2SH_4of5_253inputs.json
339
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_251inputs.json
340
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_252inputs.json
341
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_3of5_253inputs.json
342
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_251inputs.json
343
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_252inputs.json
344
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_WITNESS_V0_4of5_253inputs.json
345
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2sh_3_of_5_keys.json
346
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2sh_4_of_5_keys.json
347
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2wsh_over_p2sh_3_of_5_keys.json
348
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_p2wsh_over_p2sh_4_of_5_keys.json
349
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3_of_5_keys.json
350
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_251outputs.json
351
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_252outputs.json
352
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_3of5_253outputs.json
353
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4_of_5_keys.json
354
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_251outputs.json
355
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_252outputs.json
356
+ - spec/test-cases/json/create_and_sign_transaction_response_dtrust_witness_v0_4of5_253outputs.json
357
+ - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2pkh.json
358
+ - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh.json
359
+ - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh_over_p2sh.json
360
+ - spec/test-cases/json/create_and_sign_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
361
+ - spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json
362
+ - spec/test-cases/json/get_balance_response.json
363
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_3of5_195inputs.json
364
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_4of5_195inputs.json
365
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_251inputs.json
366
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_252inputs.json
367
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_3of5_253inputs.json
368
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_251inputs.json
369
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_252inputs.json
370
+ - spec/test-cases/json/prepare_dtrust_transaction_response_P2WSH-over-P2SH_4of5_253inputs.json
371
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_251inputs.json
372
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_252inputs.json
373
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_3of5_253inputs.json
374
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_251inputs.json
375
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_252inputs.json
376
+ - spec/test-cases/json/prepare_dtrust_transaction_response_WITNESS_V0_4of5_253inputs.json
377
+ - spec/test-cases/json/prepare_dtrust_transaction_response_p2sh.json
378
+ - spec/test-cases/json/prepare_dtrust_transaction_response_p2wsh_over_p2sh.json
379
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0.json
380
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_251outputs.json
381
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_252outputs.json
382
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_3of5_253outputs.json
383
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_251outputs.json
384
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_252outputs.json
385
+ - spec/test-cases/json/prepare_dtrust_transaction_response_witness_v0_4of5_253outputs.json
386
+ - spec/test-cases/json/prepare_sweep_transaction_response_p2pkh.json
387
+ - spec/test-cases/json/prepare_sweep_transaction_response_p2wpkh.json
388
+ - spec/test-cases/json/prepare_sweep_transaction_response_p2wpkh_over_p2sh.json
389
+ - spec/test-cases/json/prepare_transaction_response.json
390
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_251inputs.json
391
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_252inputs.json
392
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
393
+ - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
394
+ - spec/test-cases/json/prepare_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
395
+ - spec/test-cases/json/prepare_transaction_response_witness_v1_output.json
396
+ - spec/test-cases/json/summarize_prepared_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
@@ -1,29 +0,0 @@
1
- # withdraws maximum balance to a given destination in a single transaction
2
- # you will need to repeat this if a single transaction does not suffice for withdrawing the entire balance
3
- # for error handling, please check response['data']['status'] != 'success'
4
-
5
- require 'block_io'
6
-
7
- blockio = BlockIo::Client.new(:api_key => ENV['API_KEY'], :pin => ENV['PIN'], :version => 2)
8
- puts blockio.get_balance
9
- puts blockio.network
10
-
11
- TO_ADDRESS = ENV['TO_ADDRESS']
12
-
13
- raise "must specify a TO_ADDRESS" unless TO_ADDRESS.to_s.size > 0
14
-
15
- total_balance = blockio.get_balance['data']['available_balance']
16
-
17
- puts " -- total balance: #{total_balance} #{blockio.network}"
18
-
19
- while true do
20
- response = blockio.withdraw(:to_address => TO_ADDRESS, :amount => total_balance)
21
- maximum_withdrawable_balance = response['data']['max_withdrawal_available']
22
- break if BigDecimal(maximum_withdrawable_balance).zero?
23
- puts blockio.withdraw(:to_address => TO_ADDRESS, :amount => maximum_withdrawable_balance)
24
- end
25
-
26
- final_balance = blockio.get_balance['data']['available_balance']
27
-
28
- puts " -- final balance: #{final_balance} #{blockio.network}"
29
-
@@ -1,10 +0,0 @@
1
- module BlockIo
2
-
3
- WITHDRAW_METHODS = ["withdraw", "withdraw_from_address", "withdraw_from_addresses", "withdraw_from_label", "withdraw_from_labels",
4
- "withdraw_from_dtrust_address", "withdraw_from_dtrust_addresses", "withdraw_from_dtrust_label", "withdraw_from_dtrust_labels"].inject({}){|h,v| h[v] = true; h}.freeze
5
-
6
- SWEEP_METHODS = ["sweep_from_address"].inject({}){|h,v| h[v] = true; h}.freeze
7
-
8
- FINALIZE_SIGNATURE_METHODS = ["sign_and_finalize_withdrawal", "sign_and_finalize_sweep"].inject({}){|h,v| h[v] = true; h}.freeze
9
-
10
- end