cns 0.1.1 → 0.1.2
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/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
|