onchain 3.03 → 3.04
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08143eaa0088555db570b1753e35296579d39d9f
|
4
|
+
data.tar.gz: 93ae2b84fa4ab2d904e0f68b212ecacef8ddeab7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d6b4389413c6cfeffe25004dd6a42de12d0aede7065dd519814fcbc7899f84274b88143f9bf5c6c4bb2ba3a30a6a9cf5c0e7bc561fa58b64eb58cb9d53384f8
|
7
|
+
data.tar.gz: b9de2baff98ffbef86cb849a47a592a0959327ccfb2c7629ae0bca8873611dc2316c09333d909e892d3e16fbe22a5641ad73efa41b43f2a16661e15aaf4e52cb
|
data/lib/onchain/block_chain.rb
CHANGED
@@ -62,17 +62,6 @@ class OnChain::BlockChain
|
|
62
62
|
end
|
63
63
|
|
64
64
|
end
|
65
|
-
|
66
|
-
def get_history_for_addresses(addresses, network = :bitcoin)
|
67
|
-
history = []
|
68
|
-
addresses.each do |address|
|
69
|
-
res = address_history(address, network)
|
70
|
-
res.each do |r|
|
71
|
-
history << r
|
72
|
-
end
|
73
|
-
end
|
74
|
-
return history
|
75
|
-
end
|
76
65
|
|
77
66
|
# Given a list of addresses, return those
|
78
67
|
# that don't have balances in the cahce.
|
@@ -5,14 +5,45 @@ class OnChain::BlockChain
|
|
5
5
|
|
6
6
|
# Get last 20 transactions
|
7
7
|
def bitcoind_address_history(address, network = :bitcoin)
|
8
|
-
|
9
|
-
|
8
|
+
|
9
|
+
if cache_read(network.to_s + ' history ' + address) == nil
|
10
|
+
result = execute_remote_command('searchrawtransactions ' + address + ' 1 0 20 0', network)
|
11
|
+
cache_write(network.to_s + ' history ' + address, result, BALANCE_CACHE_FOR)
|
12
|
+
end
|
13
|
+
|
14
|
+
result = cache_read(network.to_s + ' history ' + address)
|
10
15
|
|
11
16
|
json = JSON.parse result
|
12
17
|
|
13
18
|
return parse_bitcoind_address_tx(address, json, network)
|
14
19
|
|
15
20
|
end
|
21
|
+
|
22
|
+
def bitcoind_get_history_for_addresses(addresses, network = :bitcoin)
|
23
|
+
|
24
|
+
commands = []
|
25
|
+
if cache_read(network.to_s + ' history ' + addresses[0]) == nil
|
26
|
+
addresses.each do |address|
|
27
|
+
commands << 'searchrawtransactions ' + address + ' 1 0 20 0'
|
28
|
+
end
|
29
|
+
histories = OnChain::BlockChain.execute_remote_command(commands, :zclassic)
|
30
|
+
|
31
|
+
index = 0
|
32
|
+
histories.each_line do |history|
|
33
|
+
cache_write(network.to_s + ' history ' + addresses[index], history, BALANCE_CACHE_FOR)
|
34
|
+
index = index + 1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
history = []
|
39
|
+
addresses.each do |address|
|
40
|
+
res = bitcoind_address_history(address, network)
|
41
|
+
res.each do |r|
|
42
|
+
history << r
|
43
|
+
end
|
44
|
+
end
|
45
|
+
return history
|
46
|
+
end
|
16
47
|
|
17
48
|
def parse_bitcoind_address_tx(address, json, network)
|
18
49
|
|
@@ -55,12 +86,10 @@ class OnChain::BlockChain
|
|
55
86
|
|
56
87
|
def bitcoind_send_tx(tx_hex, network = :bitcoin)
|
57
88
|
|
58
|
-
|
59
|
-
|
60
|
-
#res = JSON.parse(remote)
|
89
|
+
execute_remote_command('sendrawtransaction ' + tx_hex, network)
|
61
90
|
|
62
|
-
mess = '
|
63
|
-
stat = '
|
91
|
+
mess = 'Sent'
|
92
|
+
stat = 'Sent'
|
64
93
|
tx_hash = 'Unknown'
|
65
94
|
|
66
95
|
ret = "{\"status\":\"#{stat}\",\"data\":\"#{tx_hash}\",\"code\":200,\"message\":\"#{mess}\"}"
|
@@ -69,21 +98,14 @@ class OnChain::BlockChain
|
|
69
98
|
|
70
99
|
def bitcoind_get_balance(address, network = :bitcoin)
|
71
100
|
|
72
|
-
if cache_read(address) == nil
|
101
|
+
if cache_read(network.to_s + ' ' + address) == nil
|
73
102
|
|
74
|
-
|
103
|
+
bal = execute_remote_command('getallbalance ' + address + ' 0', network)
|
75
104
|
|
76
|
-
|
77
|
-
|
78
|
-
bal = 0
|
79
|
-
outs.each do |out|
|
80
|
-
bal += out[3].to_i
|
81
|
-
end
|
82
|
-
|
83
|
-
cache_write(address, bal, BALANCE_CACHE_FOR)
|
105
|
+
cache_write(network.to_s + ' ' + address, bal.to_f, BALANCE_CACHE_FOR)
|
84
106
|
end
|
85
107
|
|
86
|
-
bal = cache_read(address)
|
108
|
+
bal = cache_read(network.to_s + ' ' + address)
|
87
109
|
if bal.class == Fixnum
|
88
110
|
bal = bal.to_f
|
89
111
|
end
|
@@ -93,6 +115,22 @@ class OnChain::BlockChain
|
|
93
115
|
|
94
116
|
def bitcoind_get_all_balances(addresses, network = :bitcoin)
|
95
117
|
|
118
|
+
|
119
|
+
# if first address is missing get them all.
|
120
|
+
commands = []
|
121
|
+
if cache_read(network.to_s + ' ' + addresses[0]) == nil
|
122
|
+
addresses.each do |address|
|
123
|
+
commands << 'getallbalance ' + address + ' 0'
|
124
|
+
end
|
125
|
+
balances = OnChain::BlockChain.execute_remote_command(commands, :zclassic)
|
126
|
+
|
127
|
+
index = 0
|
128
|
+
balances.each_line do |line|
|
129
|
+
cache_write(network.to_s + ' ' + addresses[index], line.to_f, BALANCE_CACHE_FOR)
|
130
|
+
index = index + 1
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
96
134
|
addresses.each do |address|
|
97
135
|
bitcoind_get_balance(address, network)
|
98
136
|
end
|
@@ -100,7 +138,7 @@ class OnChain::BlockChain
|
|
100
138
|
|
101
139
|
def bitcoind_get_unspent_outs(address, network = :bitcoin)
|
102
140
|
|
103
|
-
result = execute_remote_command('listallunspent ' + address + ' 1', network)
|
141
|
+
result = execute_remote_command('listallunspent ' + address + ' 1 0', network)
|
104
142
|
|
105
143
|
json = JSON.parse result
|
106
144
|
|
@@ -124,24 +162,34 @@ class OnChain::BlockChain
|
|
124
162
|
|
125
163
|
# Run the command via ssh. For this to work you need
|
126
164
|
# to create the follwing ENV vars.
|
127
|
-
def execute_remote_command(
|
165
|
+
def execute_remote_command(commands, network)
|
128
166
|
|
129
167
|
host = ENV[network.to_s.upcase + '_HOST']
|
130
168
|
username = ENV[network.to_s.upcase + '_USER']
|
131
169
|
password = ENV[network.to_s.upcase + '_PASSWORD']
|
132
|
-
|
170
|
+
prefix = ENV[network.to_s.upcase + '_CLI_CMD']
|
133
171
|
|
134
172
|
stdout = ""
|
135
|
-
stderr = ""
|
136
173
|
begin
|
137
174
|
Net::SSH.start(host, username,
|
138
175
|
:password => password,
|
139
176
|
:auth_methods => [ 'password' ],
|
140
177
|
:number_of_password_prompts => 0) do |ssh|
|
178
|
+
|
179
|
+
if ! commands.is_a?(Array)
|
180
|
+
commands = [commands]
|
181
|
+
end
|
182
|
+
|
183
|
+
commands.each do |command|
|
184
|
+
|
185
|
+
cmdout = ""
|
186
|
+
|
187
|
+
ssh.exec! prefix + ' '+ command do |channel, stream, data|
|
188
|
+
cmdout << data if stream == :stdout
|
189
|
+
end
|
141
190
|
|
142
|
-
|
143
|
-
stdout <<
|
144
|
-
stderr << data if stream == :stderr
|
191
|
+
stdout << cmdout.tr("\n","")
|
192
|
+
stdout << "\n"
|
145
193
|
end
|
146
194
|
end
|
147
195
|
rescue Timeout::Error
|
@@ -8,6 +8,17 @@ class OnChain::BlockChain
|
|
8
8
|
|
9
9
|
blockinfo_parse_address_tx(address, json)
|
10
10
|
end
|
11
|
+
|
12
|
+
def blockinfo_get_history_for_addresses(addresses, network = :bitcoin)
|
13
|
+
history = []
|
14
|
+
addresses.each do |address|
|
15
|
+
res = blockinfo_address_history(address, network)
|
16
|
+
res.each do |r|
|
17
|
+
history << r
|
18
|
+
end
|
19
|
+
end
|
20
|
+
return history
|
21
|
+
end
|
11
22
|
|
12
23
|
def blockinfo_parse_address_tx(address, json)
|
13
24
|
|
@@ -14,6 +14,17 @@ class OnChain::BlockChain
|
|
14
14
|
|
15
15
|
return parse_address_tx(address, json, network)
|
16
16
|
end
|
17
|
+
|
18
|
+
def blockr_get_history_for_addresses(addresses, network = :bitcoin)
|
19
|
+
history = []
|
20
|
+
addresses.each do |address|
|
21
|
+
res = blockr_address_history(address, network)
|
22
|
+
res.each do |r|
|
23
|
+
history << r
|
24
|
+
end
|
25
|
+
end
|
26
|
+
return history
|
27
|
+
end
|
17
28
|
|
18
29
|
def parse_address_tx(address, json, network)
|
19
30
|
|
@@ -18,6 +18,17 @@ class OnChain::BlockChain
|
|
18
18
|
return parse_insight_address_tx(address, json, network)
|
19
19
|
|
20
20
|
end
|
21
|
+
|
22
|
+
def insight_get_history_for_addresses(addresses, network = :bitcoin)
|
23
|
+
history = []
|
24
|
+
addresses.each do |address|
|
25
|
+
res = insight_address_history(address, network)
|
26
|
+
res.each do |r|
|
27
|
+
history << r
|
28
|
+
end
|
29
|
+
end
|
30
|
+
return history
|
31
|
+
end
|
21
32
|
|
22
33
|
def parse_insight_address_tx(address, json, network)
|
23
34
|
|
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: '3.
|
4
|
+
version: '3.04'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Number 6
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|