block_io 3.0.2 → 3.0.5
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/.travis.yml +3 -2
- data/README.md +3 -0
- data/block_io.gemspec +2 -2
- data/lib/block_io/chainparams/BTC.yml +1 -1
- data/lib/block_io/chainparams/BTCTEST.yml +1 -1
- data/lib/block_io/chainparams/LTC.yml +2 -2
- data/lib/block_io/chainparams/LTCTEST.yml +1 -1
- data/lib/block_io/extended_bitcoinrb.rb +9 -4
- data/lib/block_io/version.rb +1 -1
- data/spec/larger_transaction_spec.rb +21 -1
- data/spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json +11 -0
- data/spec/test-cases/json/prepare_transaction_response_witness_v1_output.json +64 -0
- metadata +14 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eb185ac520ba882b4acc7a0b9456c9005724279c3b48870ebd2c14ae0f4327e9
|
|
4
|
+
data.tar.gz: fa7327a6ed20968ed94395dde29a4c693bdcbf0cd800df7a038b98236aca53c9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 943a8bd870a90b3e317a10880d5798cd586c9dbed7d9fdf83f2833a64bf134acf44d3a80be71b6c695de92f50a02584923792efe57f8a2fea76169eb6d638d72
|
|
7
|
+
data.tar.gz: 6f4e19484ab274871068321022d3d4ea56e8be476930b4efd37761c575f9e7c377ffe36e071a294f061cbdb95e1f14f7d31ae4c8e9986ed92d02ce68bc40940c
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -17,6 +17,9 @@ Or install it yourself as:
|
|
|
17
17
|
$ gem install block_io
|
|
18
18
|
|
|
19
19
|
## Changelog
|
|
20
|
+
*05/30/22*: Version 3.0.5 fixes Litecoin P2SH address version (properly now).
|
|
21
|
+
*12/26/21*: Version 3.0.4 drops support for EOL Ruby 2.4, 2.5. Supports Ruby 3.1.
|
|
22
|
+
*09/28/21*: Version 3.0.3 supports witness_v1 outputs (Bech32m).
|
|
20
23
|
*07/21/21*: Version 3.0.2 fixes Litecoin P2SH address version.
|
|
21
24
|
*06/09/21*: Version 3.0.1 implements use of dynamic decryption algorithms.
|
|
22
25
|
*04/14/21*: BREAKING CHANGES. Version 3.0.0. Remove support for Ruby < 2.4.0, and Windows. Behavior and interfaces have changed. By upgrading you'll need to revise your code and tests.
|
data/block_io.gemspec
CHANGED
|
@@ -15,14 +15,14 @@ Gem::Specification.new do |spec|
|
|
|
15
15
|
spec.files = `git ls-files -z`.split("\x0")
|
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
18
|
-
spec.required_ruby_version = '>= 2.
|
|
18
|
+
spec.required_ruby_version = '>= 2.6.0'
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
21
|
spec.add_development_dependency "bundler", ">= 1.16", "< 3.0"
|
|
22
22
|
spec.add_development_dependency "rake", "~> 13.0", ">= 13.0"
|
|
23
23
|
spec.add_development_dependency "rspec", "~> 3.6", ">= 3.6"
|
|
24
24
|
spec.add_development_dependency "webmock", "~> 3.12", "< 4.0"
|
|
25
|
-
spec.add_runtime_dependency "bitcoinrb", "~>
|
|
25
|
+
spec.add_runtime_dependency "bitcoinrb", "~> 1.0", "< 1.2.0"
|
|
26
26
|
spec.add_runtime_dependency "http", ">= 4.4.1", "< 6.0"
|
|
27
27
|
spec.add_runtime_dependency "oj", "~> 3.0", "< 4.0"
|
|
28
28
|
spec.add_runtime_dependency "connection_pool", ">= 2.2", "< 3.0"
|
|
@@ -21,7 +21,7 @@ module Bitcoin
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def self.init(name)
|
|
24
|
-
i = YAML.
|
|
24
|
+
i = YAML.safe_load(File.open("#{__dir__}/chainparams/#{name}.yml"), :permitted_classes => [Bitcoin::ChainParams])
|
|
25
25
|
i.dust_relay_fee ||= Bitcoin::DUST_RELAY_TX_FEE
|
|
26
26
|
i
|
|
27
27
|
end
|
|
@@ -46,12 +46,17 @@ module Bitcoin
|
|
|
46
46
|
r = point_field.mod(r_point.x)
|
|
47
47
|
return nil if r.zero?
|
|
48
48
|
|
|
49
|
+
rec = r_point.y & 1
|
|
50
|
+
|
|
49
51
|
e = ECDSA.normalize_digest(data, GROUP.bit_length)
|
|
50
52
|
s = point_field.mod(point_field.inverse(nonce) * (e + r * private_key))
|
|
51
53
|
|
|
52
54
|
# covert to low-s
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
if s > (GROUP.order / 2)
|
|
56
|
+
s = GROUP.order - s
|
|
57
|
+
rec = r_point.y & 1
|
|
58
|
+
end
|
|
59
|
+
|
|
55
60
|
return nil if s.zero?
|
|
56
61
|
|
|
57
62
|
signature = ECDSA::Signature.new(r, s).to_der
|
|
@@ -60,7 +65,7 @@ module Bitcoin
|
|
|
60
65
|
# public_key = Bitcoin::Key.new(priv_key: privkey.bth, :key_type => Bitcoin::Key::TYPES[:compressed]).pubkey # get rid of the key_type warning
|
|
61
66
|
# raise 'Creation of signature failed.' unless Bitcoin::Secp256k1::Ruby.verify_sig(data, signature, public_key)
|
|
62
67
|
|
|
63
|
-
signature
|
|
68
|
+
[signature, rec]
|
|
64
69
|
end
|
|
65
70
|
|
|
66
71
|
end
|
data/lib/block_io/version.rb
CHANGED
|
@@ -347,5 +347,25 @@ describe "Client.create_and_sign_transaction" do
|
|
|
347
347
|
|
|
348
348
|
end
|
|
349
349
|
|
|
350
|
-
|
|
350
|
+
context "witness_v1_output" do
|
|
351
|
+
|
|
352
|
+
before(:each) do
|
|
353
|
+
|
|
354
|
+
@blockio = BlockIo::Client.new(:api_key => @api_key, :pin => @insecure_pin_valid)
|
|
355
|
+
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
it "succeeds_on_witness_v1_output" do
|
|
359
|
+
|
|
360
|
+
request = Oj.safe_load(File.open("spec/test-cases/json/prepare_transaction_response_witness_v1_output.json").read)
|
|
361
|
+
expected_response = Oj.safe_load(File.open("spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json").read)
|
|
362
|
+
|
|
363
|
+
actual_response = @blockio.create_and_sign_transaction(request)
|
|
364
|
+
|
|
365
|
+
expect(actual_response).to eq(expected_response)
|
|
366
|
+
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
end
|
|
351
370
|
|
|
371
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tx_type": "basic",
|
|
3
|
+
"tx_hex": "0100000001784ecc9b864ff9b8a97eaacd138fdf193a5d889735702a4f726d2f87631de45f0100000000ffffffff03204e000000000000225120000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433204e000000000000220020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e864339f4c00000000000017a914026b9608a26f40f74644cc60622d1067c3696ac98700000000",
|
|
4
|
+
"signatures": [
|
|
5
|
+
{
|
|
6
|
+
"input_index": 0,
|
|
7
|
+
"public_key": "02d2cbf77287c1443759abdd35f239e7da2f52c992258653bc8dd577ae63c78628",
|
|
8
|
+
"signature": "304402206d093e2a14e80e01f3c8eefc76d651d01c3dedbd1f0dabf78ace5b352ca660b602202aac312b5b7f0b8c79ad22e75d2523ee39d9c62a35be4db102b5c8f3f296f662"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -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
|
+
}
|
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: 3.0.
|
|
4
|
+
version: 3.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Atif Nazir
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-05-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -96,20 +96,20 @@ dependencies:
|
|
|
96
96
|
requirements:
|
|
97
97
|
- - "~>"
|
|
98
98
|
- !ruby/object:Gem::Version
|
|
99
|
-
version:
|
|
100
|
-
- -
|
|
99
|
+
version: '1.0'
|
|
100
|
+
- - "<"
|
|
101
101
|
- !ruby/object:Gem::Version
|
|
102
|
-
version:
|
|
102
|
+
version: 1.2.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:
|
|
110
|
-
- -
|
|
109
|
+
version: '1.0'
|
|
110
|
+
- - "<"
|
|
111
111
|
- !ruby/object:Gem::Version
|
|
112
|
-
version:
|
|
112
|
+
version: 1.2.0
|
|
113
113
|
- !ruby/object:Gem::Dependency
|
|
114
114
|
name: http
|
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -251,6 +251,7 @@ files:
|
|
|
251
251
|
- spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh.json
|
|
252
252
|
- spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh_over_p2sh.json
|
|
253
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
|
|
254
255
|
- spec/test-cases/json/get_balance_response.json
|
|
255
256
|
- spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_3of5_195inputs.json
|
|
256
257
|
- spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_4of5_195inputs.json
|
|
@@ -284,6 +285,7 @@ files:
|
|
|
284
285
|
- spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
|
|
285
286
|
- spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
|
|
286
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
|
|
287
289
|
- spec/test-cases/json/summarize_prepared_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
|
|
288
290
|
homepage: https://block.io/api/simple/ruby
|
|
289
291
|
licenses:
|
|
@@ -297,14 +299,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
297
299
|
requirements:
|
|
298
300
|
- - ">="
|
|
299
301
|
- !ruby/object:Gem::Version
|
|
300
|
-
version: 2.
|
|
302
|
+
version: 2.6.0
|
|
301
303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
302
304
|
requirements:
|
|
303
305
|
- - ">="
|
|
304
306
|
- !ruby/object:Gem::Version
|
|
305
307
|
version: '0'
|
|
306
308
|
requirements: []
|
|
307
|
-
rubygems_version: 3.
|
|
309
|
+
rubygems_version: 3.3.7
|
|
308
310
|
signing_key:
|
|
309
311
|
specification_version: 4
|
|
310
312
|
summary: An easy to use Dogecoin, Bitcoin, Litecoin wallet API by Block.io. Sign up
|
|
@@ -356,6 +358,7 @@ test_files:
|
|
|
356
358
|
- spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh.json
|
|
357
359
|
- spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh_over_p2sh.json
|
|
358
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
|
|
359
362
|
- spec/test-cases/json/get_balance_response.json
|
|
360
363
|
- spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_3of5_195inputs.json
|
|
361
364
|
- spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_4of5_195inputs.json
|
|
@@ -389,4 +392,5 @@ test_files:
|
|
|
389
392
|
- spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
|
|
390
393
|
- spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
|
|
391
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
|
|
392
396
|
- spec/test-cases/json/summarize_prepared_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
|