onchain 2.0.3 → 2.0.4
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/lib/onchain/providers/chaincom_api.rb +2 -1
- data/lib/onchain/sweeper.rb +11 -22
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca958c4252ca9f068ac5df9f81af86e77de79626
|
4
|
+
data.tar.gz: 737de01dc291cabf7482cb9e8cf615ca1d7680ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07b53ce9964d06414eb86f019e7450ea61cc848b6ceb9b8beb0d2c0ff758946260638db15163c8630f191a45d72b25000ba3c3c3730b83c24fe4efb5d88f495b
|
7
|
+
data.tar.gz: 6f20cec8401bad068e0f088e4ca70994004bee2d658ca97cf0cbbd1248811391a738aaa2fcba11150b2bc20bac10e787605d09f50fc4e048a3d010a47220055c
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'chain'
|
2
|
+
require 'time'
|
2
3
|
|
3
4
|
class OnChain::BlockChain
|
4
5
|
class << self
|
@@ -21,7 +22,7 @@ class OnChain::BlockChain
|
|
21
22
|
hist = []
|
22
23
|
txs.each do |tx|
|
23
24
|
row = {}
|
24
|
-
row[:time] =
|
25
|
+
row[:time] = Time.parse(tx["block_time"]).to_i
|
25
26
|
row[:addr] = {}
|
26
27
|
row[:outs] = {}
|
27
28
|
|
data/lib/onchain/sweeper.rb
CHANGED
@@ -5,14 +5,14 @@ class OnChain::Sweeper
|
|
5
5
|
|
6
6
|
# Turn a bunch of master keys into a redemption scriopt
|
7
7
|
# i.e. derive the path.
|
8
|
-
def multi_sig_address_from_mpks(mpks, path)
|
8
|
+
def multi_sig_address_from_mpks(minimum_sigs, mpks, path)
|
9
9
|
|
10
|
-
rs = generate_redemption_script_from_mpks(mpks, path)
|
10
|
+
rs = generate_redemption_script_from_mpks(minimum_sigs, mpks, path)
|
11
11
|
|
12
12
|
return generate_address_of_redemption_script(rs)
|
13
13
|
end
|
14
14
|
|
15
|
-
def generate_redemption_script_from_mpks(mpks, path)
|
15
|
+
def generate_redemption_script_from_mpks(minimum_sigs, mpks, path)
|
16
16
|
|
17
17
|
addresses = []
|
18
18
|
mpks.each do |mpk|
|
@@ -21,23 +21,12 @@ class OnChain::Sweeper
|
|
21
21
|
addresses << m.public_key.to_hex
|
22
22
|
end
|
23
23
|
|
24
|
-
return generate_redemption_script(addresses)
|
24
|
+
return generate_redemption_script(minimum_sigs, addresses)
|
25
25
|
end
|
26
26
|
|
27
|
-
def generate_redemption_script(addresses)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
addresses.each do |address|
|
32
|
-
rs = rs + (address.length / 2).to_s(16)
|
33
|
-
rs = rs + address
|
34
|
-
end
|
35
|
-
|
36
|
-
rs = rs + (80 + addresses.length).to_s(16)
|
37
|
-
|
38
|
-
rs = rs + 'ae'
|
39
|
-
|
40
|
-
return rs
|
27
|
+
def generate_redemption_script(minimum_sigs, addresses)
|
28
|
+
address, redeem_script = Bitcoin.pubkeys_to_p2sh_multisig_address(minimum_sigs, *addresses)
|
29
|
+
return redeem_script.hth
|
41
30
|
end
|
42
31
|
|
43
32
|
def generate_address_of_redemption_script(redemption_script)
|
@@ -52,7 +41,7 @@ class OnChain::Sweeper
|
|
52
41
|
|
53
42
|
# With a bunch of HD wallet paths, build a transaction
|
54
43
|
# That pays all the coins to a certain address
|
55
|
-
def sweep(mpks, path, limit, last_block_checked)
|
44
|
+
def sweep(minimum_sigs, mpks, path, limit, last_block_checked)
|
56
45
|
|
57
46
|
block_height_now = get_block_height
|
58
47
|
|
@@ -60,7 +49,7 @@ class OnChain::Sweeper
|
|
60
49
|
# Get all the addresses we are interested in.
|
61
50
|
for i in 0..limit do
|
62
51
|
r = path.sub('#{index}', i.to_s)
|
63
|
-
a = multi_sig_address_from_mpks(mpks, r)
|
52
|
+
a = multi_sig_address_from_mpks(minimum_sigs, mpks, r)
|
64
53
|
# store address as lookup for path.
|
65
54
|
to_sweep[a] = r
|
66
55
|
end
|
@@ -98,7 +87,7 @@ class OnChain::Sweeper
|
|
98
87
|
return incoming_coins, block_height_now
|
99
88
|
end
|
100
89
|
|
101
|
-
def create_payment_tx_from_sweep(incoming, destination_address, mpks)
|
90
|
+
def create_payment_tx_from_sweep(minimum_sigs, incoming, destination_address, mpks)
|
102
91
|
|
103
92
|
tx = Bitcoin::Protocol::Tx.new
|
104
93
|
total_amount = 0
|
@@ -107,7 +96,7 @@ class OnChain::Sweeper
|
|
107
96
|
|
108
97
|
txin = Bitcoin::Protocol::TxIn.new
|
109
98
|
|
110
|
-
rs = generate_redemption_script_from_mpks(mpks, output[1])
|
99
|
+
rs = generate_redemption_script_from_mpks(minimum_sigs, mpks, output[1])
|
111
100
|
|
112
101
|
txin.prev_out = OnChain.hex_to_bin(output[3]).reverse
|
113
102
|
txin.prev_out_index = output[4]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onchain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Purton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|