onchain 1.1.5 → 1.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/onchain/block_chain.rb +4 -0
- data/lib/onchain/providers/blockchaininfo_api.rb +40 -1
- data/lib/onchain/providers/chaincom_api.rb +34 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 948b1e4abbe5aabae3446ba2a6d745137a71bcca
|
4
|
+
data.tar.gz: 0e0f49dc56ab14991452a0c744957dec3918dc0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3e7d866e2aea86434f58f81d6f788b72e14cd73493294e2d9de91ed664fa429bc41009486d2a2a86987ad58cd9a1a7be867a0bf316fa79c1d1c4e07c92ffb5b
|
7
|
+
data.tar.gz: 11ac6e4fbde0aff84b1628b09e5b471941c006475bdc9f11c53cb7825887ffef11dfad5218332eb14c2a799a7554a29c285285cc1475776b09d76cb38ac4672d
|
data/lib/onchain/block_chain.rb
CHANGED
@@ -1,11 +1,50 @@
|
|
1
1
|
class OnChain::BlockChain
|
2
2
|
class << self
|
3
3
|
|
4
|
+
|
5
|
+
def blockinfo_address_history(address)
|
6
|
+
|
7
|
+
base_url = "http://blockchain.info/address/#{address}?format=json"
|
8
|
+
json = fetch_response(base_url, true)
|
9
|
+
|
10
|
+
hist = []
|
11
|
+
if json.key?('txs')
|
12
|
+
txs = json['txs']
|
13
|
+
txs.each do |tx|
|
14
|
+
row = {}
|
15
|
+
row[:time] = tx["time"]
|
16
|
+
row[:addr] = {}
|
17
|
+
row[:outs] = {}
|
18
|
+
inputs = tx['inputs']
|
19
|
+
val = 0
|
20
|
+
recv = "Y"
|
21
|
+
inputs.each do |input|
|
22
|
+
row[:addr][input["prev_out"]["addr"]] = input["prev_out"]["addr"]
|
23
|
+
if input["prev_out"]["addr"] == address
|
24
|
+
recv = "N"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
tx["out"].each do |out|
|
28
|
+
row[:outs][out["addr"]] = out["addr"]
|
29
|
+
if recv == "Y" and out["addr"] == address
|
30
|
+
val = val + out["value"].to_f / 100000000.0
|
31
|
+
elsif recv == "N" and out["addr"] != address
|
32
|
+
val = val + out["value"].to_f / 100000000.0
|
33
|
+
end
|
34
|
+
end
|
35
|
+
row[:total] = val
|
36
|
+
row[:recv] = recv
|
37
|
+
hist << row
|
38
|
+
end
|
39
|
+
return hist
|
40
|
+
else
|
41
|
+
'Error'
|
42
|
+
end
|
43
|
+
end
|
4
44
|
|
5
45
|
def blockinfo_get_all_balances(addresses)
|
6
46
|
base = "https://blockchain.info/multiaddr?&simple=true&active="
|
7
47
|
|
8
|
-
|
9
48
|
addr = get_uncached_addresses(addresses)
|
10
49
|
|
11
50
|
if addr.length == 0
|
@@ -2,6 +2,40 @@ require 'chain'
|
|
2
2
|
|
3
3
|
class OnChain::BlockChain
|
4
4
|
class << self
|
5
|
+
|
6
|
+
def chaincom_address_history(address)
|
7
|
+
|
8
|
+
txs = Chain.get_address_transactions(address)
|
9
|
+
|
10
|
+
hist = []
|
11
|
+
txs.each do |tx|
|
12
|
+
row = {}
|
13
|
+
row[:time] = tx["block_time"]
|
14
|
+
row[:addr] = {}
|
15
|
+
row[:outs] = {}
|
16
|
+
inputs = tx['inputs']
|
17
|
+
val = 0
|
18
|
+
recv = "Y"
|
19
|
+
inputs.each do |input|
|
20
|
+
row[:addr][input["addresses"][0]] = input["addresses"][0]
|
21
|
+
if input["addresses"][0] == address
|
22
|
+
recv = "N"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
tx["outputs"].each do |out|
|
26
|
+
row[:outs][out["addresses"][0] ] = out["addresses"][0]
|
27
|
+
if recv == "Y" and out["addresses"][0] == address
|
28
|
+
val = val + out["value"].to_f / 100000000.0
|
29
|
+
elsif recv == "N" and out["addresses"][0] != address
|
30
|
+
val = val + out["value"].to_f / 100000000.0
|
31
|
+
end
|
32
|
+
end
|
33
|
+
row[:total] = val
|
34
|
+
row[:recv] = recv
|
35
|
+
hist << row
|
36
|
+
end
|
37
|
+
return hist
|
38
|
+
end
|
5
39
|
|
6
40
|
def chaincom_send_tx(tx_hex)
|
7
41
|
|