cns 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/lib/cns.rb +11 -15
- data/lib/cns/apibc.rb +280 -0
- data/lib/cns/apice1.rb +227 -0
- data/lib/cns/apice2.rb +280 -0
- data/lib/cns/bigquery1.rb +23 -21
- data/lib/cns/bigquery2.rb +8 -6
- data/lib/cns/bigquery3.rb +33 -21
- data/lib/cns/bigquery4.rb +44 -42
- data/lib/cns/bitcoinde.rb +57 -46
- data/lib/cns/etherscan1.rb +40 -39
- data/lib/cns/etherscan2.rb +25 -23
- data/lib/cns/greymass1.rb +31 -30
- data/lib/cns/greymass2.rb +36 -35
- data/lib/cns/kraken.rb +51 -40
- data/lib/cns/paymium.rb +39 -32
- data/lib/cns/therock.rb +35 -27
- data/lib/cns/version.rb +1 -1
- metadata +5 -8
- data/lib/cns/apide.rb +0 -240
- data/lib/cns/apies.rb +0 -161
- data/lib/cns/apifr.rb +0 -139
- data/lib/cns/apigm.rb +0 -181
- data/lib/cns/apimt.rb +0 -138
- data/lib/cns/apius.rb +0 -167
data/lib/cns/bigquery4.rb
CHANGED
@@ -2,44 +2,65 @@
|
|
2
2
|
|
3
3
|
# @author Hernani Rodrigues Vaz
|
4
4
|
module Cns
|
5
|
-
#
|
5
|
+
# classe para processar bigquery
|
6
6
|
class Bigquery
|
7
|
+
private
|
8
|
+
|
7
9
|
# @return [String] comando insert SQL formatado det (trades)
|
8
10
|
def det_ins
|
9
|
-
"insert #{BD}.det(tp,btc,eur,
|
11
|
+
"insert #{BD}.det(txid,time,tp,user,btc,eur,dtc,dias) VALUES#{apide.trades.map { |h| det_val1(h) }.join(',')}"
|
10
12
|
end
|
11
13
|
|
12
|
-
# @example (see
|
13
|
-
# @param [Hash] htx
|
14
|
+
# @example (see Apice#trades_de)
|
15
|
+
# @param [Hash] htx trade bitcoinde
|
14
16
|
# @return [String] valores formatados det (trades parte1)
|
15
17
|
def det_val1(htx)
|
16
|
-
"('#{htx[:
|
17
|
-
'cast(' \
|
18
|
-
"#{htx[:type] == 'buy' ? htx[:amount_currency_to_trade_after_fee] : "-#{htx[:amount_currency_to_trade]}"}" \
|
19
|
-
' as numeric),' \
|
20
|
-
"cast(#{htx[:volume_currency_to_pay_after_fee]} as numeric)," \
|
18
|
+
"('#{htx[:trade_id]}'," \
|
21
19
|
"DATETIME(TIMESTAMP('#{htx[:successfully_finished_at]}'))," \
|
20
|
+
"'#{htx[:type]}'," \
|
22
21
|
"'#{htx[:trading_partner_information][:username]}'," \
|
23
22
|
"#{det_val2(htx)}"
|
24
23
|
end
|
25
24
|
|
26
|
-
# @param (see
|
25
|
+
# @param (see det_val1)
|
27
26
|
# @return [String] valores formatados det (trades parte2)
|
28
27
|
def det_val2(htx)
|
29
|
-
|
30
|
-
|
28
|
+
'cast(' \
|
29
|
+
"#{htx[:type] == 'buy' ? htx[:amount_currency_to_trade_after_fee] : "-#{htx[:amount_currency_to_trade]}"}" \
|
30
|
+
' as numeric),' \
|
31
|
+
"cast(#{htx[:volume_currency_to_pay_after_fee]} as numeric)," \
|
32
|
+
"DATETIME(TIMESTAMP('#{htx[:trade_marked_as_paid_at]}'))," \
|
31
33
|
"#{Integer(ops[:h][htx[:trade_id]] || 0)})"
|
32
34
|
end
|
33
35
|
|
36
|
+
# @return [String] comando insert SQL formatado del (ledger)
|
37
|
+
def del_ins
|
38
|
+
"insert #{BD}.del(txid,time,tp,add,moe,qt,fee) VALUES#{apide.ledger.map { |h| del_val(h) }.join(',')}"
|
39
|
+
end
|
40
|
+
|
41
|
+
# @example (see Apice#deposits_de)
|
42
|
+
# @example (see Apice#withdrawals_de)
|
43
|
+
# @param [Hash] hlx ledger (deposits + withdrawals) bitcoinde
|
44
|
+
# @return [String] valores formatados del (ledger)
|
45
|
+
def del_val(hlx)
|
46
|
+
"(#{hlx[:txid]}," \
|
47
|
+
"DATETIME(TIMESTAMP('#{hlx[:time].iso8601}'))," \
|
48
|
+
"'#{hlx[:tp]}'," \
|
49
|
+
"'#{hlx[:add]}'," \
|
50
|
+
"'#{hlx[:moe]}'," \
|
51
|
+
"cast(#{hlx[:tp] =='withdrawal' ? '-' : ''}#{hlx[:qt]} as numeric)," \
|
52
|
+
"cast(#{hlx[:fee]} as numeric))"
|
53
|
+
end
|
54
|
+
|
34
55
|
# @return [String] comando insert SQL formatado ust (trades)
|
35
56
|
def ust_ins
|
36
57
|
"insert #{BD}.ust(txid,ordertxid,pair,time,type,ordertype,price,cost,fee,vol,margin,misc,ledgers,dias) " \
|
37
58
|
"VALUES#{apius.trades.map { |k, v| ust_val1(k, v) }.join(',')}"
|
38
59
|
end
|
39
60
|
|
40
|
-
# @example (see
|
61
|
+
# @example (see Apice#trades_us)
|
41
62
|
# @param [String] idx identificador transacao
|
42
|
-
# @param [Hash] htx
|
63
|
+
# @param [Hash] htx trade kraken
|
43
64
|
# @return [String] valores formatados ust (trades parte1)
|
44
65
|
def ust_val1(idx, htx)
|
45
66
|
"('#{idx}'," \
|
@@ -54,7 +75,7 @@ module Cns
|
|
54
75
|
"#{ust_val2(idx, htx)}"
|
55
76
|
end
|
56
77
|
|
57
|
-
# @param (see
|
78
|
+
# @param (see ust_val1)
|
58
79
|
# @return [String] valores formatados ust (trades parte2)
|
59
80
|
def ust_val2(idx, htx)
|
60
81
|
"cast(#{htx[:vol]} as numeric)," \
|
@@ -64,34 +85,15 @@ module Cns
|
|
64
85
|
"#{Integer(ops[:h][idx] || 0)})"
|
65
86
|
end
|
66
87
|
|
67
|
-
# @return [String] comando insert SQL formatado del (ledger)
|
68
|
-
def del_ins
|
69
|
-
"insert #{BD}.del(time,tp,qtxt,id,qt,fee,lgid) VALUES#{apide.ledger.map { |h| del_val(h) }.join(',')}"
|
70
|
-
end
|
71
|
-
|
72
|
-
# @example (see Apide#deposit_hash)
|
73
|
-
# @example (see Apide#withdrawal_hash)
|
74
|
-
# @param [Hash] hlx transacao uniformizada deposits + withdrawals apide
|
75
|
-
# @return [String] valores formatados del (ledger)
|
76
|
-
def del_val(hlx)
|
77
|
-
"(DATETIME(TIMESTAMP('#{hlx[:time].iso8601}'))," \
|
78
|
-
"'#{hlx[:tp]}'," \
|
79
|
-
"'#{hlx[:qtxt]}'," \
|
80
|
-
"'#{hlx[:id]}'," \
|
81
|
-
"cast(#{hlx[:tp] == 'out' ? '-' : ''}#{hlx[:qt]} as numeric)," \
|
82
|
-
"cast(#{hlx[:fee]} as numeric)," \
|
83
|
-
"#{hlx[:lgid]})"
|
84
|
-
end
|
85
|
-
|
86
88
|
# @return [String] comando insert SQL formatado usl (ledger)
|
87
89
|
def usl_ins
|
88
90
|
"insert #{BD}.usl(txid,refid,time,type,aclass,asset,amount,fee) " \
|
89
91
|
"VALUES#{apius.ledger.map { |k, v| usl_val(k, v) }.join(',')}"
|
90
92
|
end
|
91
93
|
|
92
|
-
# @example (see
|
93
|
-
# @param idx (see
|
94
|
-
# @param [Hash] hlx
|
94
|
+
# @example (see Apice#ledger_us)
|
95
|
+
# @param idx (see ust_val1)
|
96
|
+
# @param [Hash] hlx ledger kraken
|
95
97
|
# @return [String] valores formatados usl (ledger)
|
96
98
|
def usl_val(idx, hlx)
|
97
99
|
"('#{idx}'," \
|
@@ -109,8 +111,8 @@ module Cns
|
|
109
111
|
"insert #{BD}.fr(uuid,tipo,valor,moe,time,dias) VALUES#{apifr.ledger.map { |h| frl_val(h) }.join(',')}"
|
110
112
|
end
|
111
113
|
|
112
|
-
# @example (see
|
113
|
-
# @param [Hash] hlx
|
114
|
+
# @example (see Apice#ledger_fr)
|
115
|
+
# @param [Hash] hlx ledger paymium
|
114
116
|
# @return [String] valores formatados frl (ledger)
|
115
117
|
def frl_val(hlx)
|
116
118
|
"('#{hlx[:uuid]}'," \
|
@@ -127,8 +129,8 @@ module Cns
|
|
127
129
|
"VALUES#{apimt.ledger.map { |h| mtl_val1(h) }.join(',')}"
|
128
130
|
end
|
129
131
|
|
130
|
-
# @example (see
|
131
|
-
# @param [Hash] hlx
|
132
|
+
# @example (see Apice#ledger_mt)
|
133
|
+
# @param [Hash] hlx ledger therock
|
132
134
|
# @return [String] valores formatados mtl (ledger parte1)
|
133
135
|
def mtl_val1(hlx)
|
134
136
|
"(#{hlx[:id]}," \
|
@@ -140,7 +142,7 @@ module Cns
|
|
140
142
|
"#{mtl_val2(hlx)}"
|
141
143
|
end
|
142
144
|
|
143
|
-
# @param
|
145
|
+
# @param (see mtl_val1)
|
144
146
|
# @return [String] valores formatados mtl (ledger parte2)
|
145
147
|
def mtl_val2(hlx)
|
146
148
|
"#{hlx[:note].to_s.empty? ? 'null' : "'#{hlx[:note]}'"}," \
|
data/lib/cns/bitcoinde.rb
CHANGED
@@ -4,12 +4,12 @@ require('bigdecimal/util')
|
|
4
4
|
|
5
5
|
# @author Hernani Rodrigues Vaz
|
6
6
|
module Cns
|
7
|
-
# classe para processar
|
7
|
+
# classe para processar transacoes trades/ledger do bitcoinde
|
8
8
|
class Bitcoinde
|
9
9
|
# @return [Apius] API bitcoinde
|
10
10
|
attr_reader :api
|
11
11
|
# @return [Array<Hash>] todos os dados bigquery
|
12
|
-
attr_reader :
|
12
|
+
attr_reader :bqd
|
13
13
|
# @return [Thor::CoreExt::HashWithIndifferentAccess] opcoes trabalho
|
14
14
|
attr_reader :ops
|
15
15
|
|
@@ -20,47 +20,59 @@ module Cns
|
|
20
20
|
# @option pop [Boolean] :t (false) mostra transacoes todas ou somente novas?
|
21
21
|
# @return [Bitcoinde] API bitcoinde - obter saldos & transacoes trades e ledger
|
22
22
|
def initialize(dad, pop)
|
23
|
-
|
24
|
-
@
|
25
|
-
@dbq = dad
|
23
|
+
@api = Apice.new
|
24
|
+
@bqd = dad
|
26
25
|
@ops = pop
|
27
26
|
end
|
28
27
|
|
29
|
-
# @return [Hash]
|
28
|
+
# @return [Array<Hash>] lista trades bitcoinde novos
|
29
|
+
def trades
|
30
|
+
@trades ||= exd[:tt].select { |h| kyt.include?(h[:trade_id]) }
|
31
|
+
end
|
32
|
+
|
33
|
+
# @return [Array<Hash>] lista ledger (deposits + withdrawals) bitcoinde novos
|
34
|
+
def ledger
|
35
|
+
@ledger ||= exd[:tl].select { |h| kyl.include?(h[:txid]) }
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [String] texto saldos & transacoes & ajuste dias
|
39
|
+
def mostra_resumo
|
40
|
+
puts("\nBITCOINDE\ntipo bitcoinde bigquery")
|
41
|
+
exd[:sl].each { |k, v| puts(formata_saldos(k, v)) }
|
42
|
+
mostra_totais
|
43
|
+
|
44
|
+
mostra_trades
|
45
|
+
mostra_ledger
|
46
|
+
return if trades.empty?
|
47
|
+
|
48
|
+
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |e| "#{e}:0" }.join(' ')}")
|
49
|
+
end
|
50
|
+
|
51
|
+
# @return [Hash] dados exchange bitcoinde - saldos & trades & deposits & withdrawals
|
30
52
|
def exd
|
31
53
|
@exd ||= {
|
32
|
-
sl: api.
|
33
|
-
tt: api.
|
34
|
-
tl: api.
|
54
|
+
sl: api.account_de,
|
55
|
+
tt: api.trades_de,
|
56
|
+
tl: api.deposits_de + api.withdrawals_de
|
35
57
|
}
|
36
58
|
end
|
37
59
|
|
38
|
-
# @return [Array<String>] lista txid
|
60
|
+
# @return [Array<String>] lista txid dos trades novos
|
39
61
|
def kyt
|
40
|
-
@kyt ||= exd[:tt].map { |h| h[:trade_id] }.flatten - (ops[:t] ? [] :
|
62
|
+
@kyt ||= exd[:tt].map { |h| h[:trade_id] }.flatten - (ops[:t] ? [] : bqd[:nt].map { |e| e[:txid] })
|
41
63
|
end
|
42
64
|
|
43
|
-
# @return [Array<Integer>] lista txid
|
65
|
+
# @return [Array<Integer>] lista txid dos ledger novos
|
44
66
|
def kyl
|
45
|
-
@kyl ||= exd[:tl].map { |h| h[:
|
46
|
-
end
|
47
|
-
|
48
|
-
# @return [Hash] transacoes trades
|
49
|
-
def trades
|
50
|
-
@trades ||= exd[:tt].select { |h| kyt.include?(h[:trade_id]) }
|
51
|
-
end
|
52
|
-
|
53
|
-
# @return [Hash] transacoes ledger
|
54
|
-
def ledger
|
55
|
-
@ledger ||= exd[:tl].select { |h| kyl.include?(h[:lgid]) }
|
67
|
+
@kyl ||= exd[:tl].map { |h| h[:txid] }.flatten - (ops[:t] ? [] : bqd[:nl].map { |e| e[:txid] })
|
56
68
|
end
|
57
69
|
|
58
|
-
# @example (see
|
70
|
+
# @example (see Apice#account_de)
|
59
71
|
# @param [String] moe codigo bitcoinde da moeda
|
60
72
|
# @param [Hash] hsx saldo bitcoinde da moeda
|
61
|
-
# @return [String] texto formatado saldos
|
73
|
+
# @return [String] texto formatado saldos
|
62
74
|
def formata_saldos(moe, hsx)
|
63
|
-
b =
|
75
|
+
b = bqd[:sl][moe.downcase.to_sym].to_d
|
64
76
|
e = hsx[:total_amount].to_d
|
65
77
|
format(
|
66
78
|
'%<mo>-5.5s %<ex>21.9f %<bq>21.9f %<ok>3.3s',
|
@@ -71,9 +83,9 @@ module Cns
|
|
71
83
|
)
|
72
84
|
end
|
73
85
|
|
74
|
-
# @example (see
|
86
|
+
# @example (see Apice#trades_de)
|
75
87
|
# @param (see Bigquery#det_val1)
|
76
|
-
# @return [String] texto formatado
|
88
|
+
# @return [String] texto formatado trade
|
77
89
|
def formata_trades(htx)
|
78
90
|
format(
|
79
91
|
'%<ky>-6.6s %<dt>19.19s %<dp>10.10s %<ty>-5.5s %<mo>-8.8s %<vl>18.8f %<co>8.2f',
|
@@ -87,48 +99,47 @@ module Cns
|
|
87
99
|
)
|
88
100
|
end
|
89
101
|
|
90
|
-
# @example (see
|
91
|
-
# @example (see
|
102
|
+
# @example (see Apice#deposits_unif_de)
|
103
|
+
# @example (see Apice#withdrawals_unif_de)
|
92
104
|
# @param (see Bigquery#del_val)
|
93
|
-
# @return [String] texto formatado
|
105
|
+
# @return [String] texto formatado ledger
|
94
106
|
def formata_ledger(hlx)
|
95
107
|
format(
|
96
108
|
'%<ky>6i %<dt>19.19s %<ty>-10.10s %<mo>-3.3s %<pr>19.8f %<vl>18.8f',
|
97
|
-
ky: hlx[:
|
109
|
+
ky: hlx[:txid],
|
98
110
|
dt: hlx[:time],
|
99
111
|
ty: hlx[:tp],
|
100
|
-
mo: hlx[:
|
112
|
+
mo: hlx[:moe].upcase,
|
101
113
|
pr: hlx[:qt].to_d,
|
102
114
|
vl: hlx[:fee].to_d
|
103
115
|
)
|
104
116
|
end
|
105
117
|
|
106
|
-
# @return [String] texto
|
107
|
-
def
|
108
|
-
|
109
|
-
|
118
|
+
# @return [String] texto numero de transacoes
|
119
|
+
def mostra_totais
|
120
|
+
a = exd[:tt].count
|
121
|
+
b = bqd[:nt].count
|
122
|
+
c = exd[:tl].count
|
123
|
+
d = bqd[:nl].count
|
110
124
|
|
111
|
-
|
112
|
-
|
113
|
-
return unless trades.count.positive?
|
114
|
-
|
115
|
-
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |e| "#{e}:0" }.join(' ')}")
|
125
|
+
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a: a, b: b, o: a == b ? 'OK' : 'NOK')}")
|
126
|
+
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: c, d: d, o: c == d ? 'OK' : 'NOK')}")
|
116
127
|
end
|
117
128
|
|
118
129
|
# @return [String] texto transacoes trades
|
119
130
|
def mostra_trades
|
120
|
-
return unless ops[:v] && trades.
|
131
|
+
return unless ops[:v] && !trades.empty?
|
121
132
|
|
122
|
-
puts("\ntrades data hora dt criacao tipo par
|
133
|
+
puts("\ntrades data hora dt criacao tipo par qtd eur")
|
123
134
|
trades.sort { |a, b| Time.parse(b[:successfully_finished_at]) <=> Time.parse(a[:successfully_finished_at]) }
|
124
135
|
.each { |h| puts(formata_trades(h)) }
|
125
136
|
end
|
126
137
|
|
127
138
|
# @return [String] texto transacoes ledger
|
128
139
|
def mostra_ledger
|
129
|
-
return unless ops[:v] && ledger.
|
140
|
+
return unless ops[:v] && !ledger.empty?
|
130
141
|
|
131
|
-
puts("\nledger data hora tipo moe
|
142
|
+
puts("\nledger data hora tipo moe quantidade custo")
|
132
143
|
ledger.sort { |a, b| b[:time] <=> a[:time] }.each { |h| puts(formata_ledger(h)) }
|
133
144
|
end
|
134
145
|
end
|
data/lib/cns/etherscan1.rb
CHANGED
@@ -9,10 +9,10 @@ module Cns
|
|
9
9
|
|
10
10
|
# (see Etherscan)
|
11
11
|
class Etherscan
|
12
|
-
# @return [
|
12
|
+
# @return [Apibc] API blockchains
|
13
13
|
attr_reader :api
|
14
14
|
# @return [Array<Hash>] todos os dados bigquery
|
15
|
-
attr_reader :
|
15
|
+
attr_reader :bqd
|
16
16
|
# @return [Thor::CoreExt::HashWithIndifferentAccess] opcoes trabalho
|
17
17
|
attr_reader :ops
|
18
18
|
|
@@ -22,77 +22,78 @@ module Cns
|
|
22
22
|
# @option pop [Boolean] :v (false) mostra dados transacoes normais & tokens?
|
23
23
|
# @return [Etherscan] API etherscan - processar transacoes normais e tokens
|
24
24
|
def initialize(dad, pop)
|
25
|
-
@api =
|
26
|
-
@
|
25
|
+
@api = Apibc.new
|
26
|
+
@bqd = dad
|
27
27
|
@ops = pop
|
28
28
|
end
|
29
29
|
|
30
|
+
# @return [Array<Hash>] lista transacoes normais novas
|
31
|
+
def novtx
|
32
|
+
@novtx ||= bcd.map { |e| e[:tx].select { |n| idt.include?(n[:itx]) } }.flatten
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [Array<Hash>] lista transacoes token novas
|
36
|
+
def novkx
|
37
|
+
@novkx ||= bcd.map { |e| e[:kx].select { |n| idk.include?(n[:itx]) } }.flatten
|
38
|
+
end
|
39
|
+
|
30
40
|
# @return [Array<String>] lista dos meus enderecos
|
31
41
|
def lax
|
32
|
-
@lax ||=
|
42
|
+
@lax ||= bqd[:wb].map { |h| h[:ax] }
|
33
43
|
end
|
34
44
|
|
35
45
|
# @return [Array<Hash>] todos os dados etherscan - saldos & transacoes
|
36
|
-
def
|
37
|
-
@
|
46
|
+
def bcd
|
47
|
+
@bcd ||= api.account_es(lax).map { |e| base_bc(e) }
|
38
48
|
end
|
39
49
|
|
40
50
|
# @return [Array<Hash>] todos os dados juntos bigquery & etherscan
|
41
51
|
def dados
|
42
|
-
@dados ||=
|
52
|
+
@dados ||= bqd[:wb].map { |b| bq_bc(b, bcd.select { |s| b[:ax] == s[:ax] }.first) }
|
43
53
|
end
|
44
54
|
|
45
55
|
# @return [Array<Integer>] lista indices transacoes normais novas
|
46
|
-
def
|
47
|
-
@
|
56
|
+
def idt
|
57
|
+
@idt ||= (bcd.map { |e| e[:tx].map { |n| n[:itx] } }.flatten - (ops[:t] ? [] : bqd[:nt].map { |t| t[:itx] }))
|
48
58
|
end
|
49
59
|
|
50
60
|
# @return [Array<Integer>] lista indices transacoes token novas
|
51
|
-
def
|
52
|
-
@
|
53
|
-
end
|
54
|
-
|
55
|
-
# @return [Array<Hash>] lista transacoes normais novas
|
56
|
-
def novtx
|
57
|
-
@novtx ||= dbc.map { |e| e[:tx].select { |n| bnt.include?(n[:itx]) } }.flatten
|
58
|
-
end
|
59
|
-
|
60
|
-
# @return [Array<Hash>] lista transacoes token novas
|
61
|
-
def novkx
|
62
|
-
@novkx ||= dbc.map { |e| e[:kx].select { |n| bnk.include?(n[:itx]) } }.flatten
|
61
|
+
def idk
|
62
|
+
@idk ||= (bcd.map { |e| e[:kx].map { |n| n[:itx] } }.flatten - (ops[:t] ? [] : bqd[:nk].map { |t| t[:itx] }))
|
63
63
|
end
|
64
64
|
|
65
|
-
# @
|
65
|
+
# @example (see Apibc#account_es)
|
66
|
+
# @param [Hash] abc account etherscan
|
66
67
|
# @return [Hash] dados etherscan - address, saldo & transacoes
|
67
|
-
def base_bc(
|
68
|
-
a =
|
68
|
+
def base_bc(abc)
|
69
|
+
a = abc[:account]
|
69
70
|
{
|
70
71
|
ax: a,
|
71
|
-
sl: (
|
72
|
-
tx: filtrar_tx(a, api.
|
73
|
-
kx: filtrar_tx(a, api.
|
72
|
+
sl: (abc[:balance].to_d / 10**18).round(10),
|
73
|
+
tx: filtrar_tx(a, api.norml_es(a)),
|
74
|
+
kx: filtrar_tx(a, api.token_es(a))
|
74
75
|
}
|
75
76
|
end
|
76
77
|
|
77
|
-
# @param [Hash]
|
78
|
-
# @param hbc
|
78
|
+
# @param [Hash] wbq wallet bigquery
|
79
|
+
# @param [Hash] hbc dados etherscan - address, saldo & transacoes
|
79
80
|
# @return [Hash] dados juntos bigquery & etherscan
|
80
|
-
def bq_bc(
|
81
|
+
def bq_bc(wbq, hbc)
|
81
82
|
{
|
82
|
-
id:
|
83
|
-
ax:
|
84
|
-
bs:
|
85
|
-
bt:
|
86
|
-
bk:
|
83
|
+
id: wbq[:id],
|
84
|
+
ax: wbq[:ax],
|
85
|
+
bs: wbq[:sl],
|
86
|
+
bt: bqd[:nt].select { |t| t[:iax] == wbq[:ax] },
|
87
|
+
bk: bqd[:nk].select { |t| t[:iax] == wbq[:ax] },
|
87
88
|
es: hbc[:sl],
|
88
89
|
et: hbc[:tx],
|
89
90
|
ek: hbc[:kx]
|
90
91
|
}
|
91
92
|
end
|
92
93
|
|
93
|
-
# @param
|
94
|
-
# @param [Array<Hash>] ary lista
|
95
|
-
# @return [Array<Hash>]
|
94
|
+
# @param add (see Apibc#norml_es)
|
95
|
+
# @param [Array<Hash>] ary lista transacoes/token events
|
96
|
+
# @return [Array<Hash>] lista transacoes/token events filtrada
|
96
97
|
def filtrar_tx(add, ary)
|
97
98
|
# elimina transferencia from: (lax) to: (add) - esta transferencia aparece em from: (add) to: (lax)
|
98
99
|
# elimina chaves irrelevantes (DL) & adiciona chave indice itx & adiciona identificador da carteira iax
|