@@ -9,14 +9,15 @@ exports.get_unspent_outpoints = (address, callback) ->
9
9
10
10
http .get {host : " blockexplorer.com" , port : 80 , path : " /address/#{ address} " }, (res ) ->
11
11
readData res, (data ) ->
12
- [received , sent_transactions ] = scrape_address_ledger data .toString ' utf-8'
12
+ html = data .toString ' utf-8'
13
+ [received , sent_transactions ] = scrape_address_ledger html, address
13
14
14
15
async .map sent_transactions, tx_input_outpoints, (err , results ) ->
15
16
16
17
# Set of received outpoints
17
18
set = {}
18
19
for row in received
19
- set[row .outpoint ] = row
20
+ set[" #{ row .hash } : #{ row . n } " ] = row
20
21
21
22
# Setminus the spent ones
22
23
for outpoints in results
@@ -46,7 +47,16 @@ tx_input_outpoints = (tx_hash, cb) ->
46
47
cb null , outpoints
47
48
48
49
49
- scrape_address_ledger = (html ) ->
50
+ satoshis_from_decimal = (text ) ->
51
+ if text .match / ^ [0-9 ] + $ /
52
+ parseInt (text, 10 ) * 1e8
53
+ else
54
+ [left , right ] = text .split ' .'
55
+ assert .ok (right .length <= 8 ), " right.length > 8"
56
+ rightSatoshis = parseInt (right, 10 ) * Math .pow (10 , 8 - right .length )
57
+ (left * 1e8 ) + rightSatoshis
58
+
59
+ scrape_address_ledger = (html , address ) ->
50
60
51
61
received = []
52
62
sent_transactions_set = {}
@@ -73,9 +83,9 @@ scrape_address_ledger = (html) ->
73
83
received .push {
74
84
hash : hash
75
85
n : n
76
- outpoint : " #{ hash } : #{ n } "
77
- block_number : block_number
78
- value_str : value_str
86
+ satoshis : satoshis_from_decimal (value_str)
87
+ amount : value_str
88
+ address : address
79
89
}
80
90
else
81
91
sent_transactions_set[hash] = true
0 commit comments