cns 0.3.3 → 0.3.4
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 +1 -1
- data/lib/cns/apibc.rb +34 -0
- data/lib/cns/bigquery1.rb +6 -5
- data/lib/cns/bigquery2.rb +1 -0
- data/lib/cns/bigquery3.rb +18 -0
- data/lib/cns/etherscan1.rb +19 -0
- data/lib/cns/etherscan2.rb +30 -6
- data/lib/cns/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 628583895b421b1b5d84af2753d24d28d4c0f2d1e4ed4f363160ef07b1d0e23d
|
4
|
+
data.tar.gz: 7e14420b81120d01f9abe1171fc248949ff8ffbeff2c698901dc0d60d7d68ad5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d0f31b4f43dcef2abcfddce96174ee06de7650fa5413390e126bd532056df1349f3e438f13759651b35cf666e78e688a6378f92f3dff782a0a14f51ff1c575c
|
7
|
+
data.tar.gz: 89e7998c421ad34256815ca720f02814875a2d58958c97604c24b3313388e9d6c324ba67473784299a47c9fb90b76af8806bad80563bd985fd3d56a588110029
|
data/Gemfile.lock
CHANGED
data/lib/cns/apibc.rb
CHANGED
@@ -206,6 +206,40 @@ module Cns
|
|
206
206
|
aes
|
207
207
|
end
|
208
208
|
|
209
|
+
# @example withw_es
|
210
|
+
# {
|
211
|
+
# "status":"1",
|
212
|
+
# "message":"OK",
|
213
|
+
# "result":[
|
214
|
+
# {
|
215
|
+
# "withdrawalIndex":"14",
|
216
|
+
# "validatorIndex":"119023",
|
217
|
+
# "address":"0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
|
218
|
+
# "amount":"3244098967",
|
219
|
+
# "blockNumber":"17034877",
|
220
|
+
# "timestamp":"1681338599"
|
221
|
+
# }
|
222
|
+
# ]
|
223
|
+
# }
|
224
|
+
# @param (see norml_es)
|
225
|
+
# @return [Array<Hash>] lista blocos etherscan
|
226
|
+
def withw_es(add, pag = 0, aes = [])
|
227
|
+
res = JSON.parse(
|
228
|
+
conn_es.get(
|
229
|
+
'/api',
|
230
|
+
action: 'txsBeaconWithdrawal',
|
231
|
+
address: add,
|
232
|
+
offset: 10_000,
|
233
|
+
page: pag += 1
|
234
|
+
).body,
|
235
|
+
symbolize_names: true
|
236
|
+
)[:result]
|
237
|
+
aes += res
|
238
|
+
res.count < 10_000 ? aes : withw_es(add, pag, aes)
|
239
|
+
rescue StandardError
|
240
|
+
aes
|
241
|
+
end
|
242
|
+
|
209
243
|
# @example token_es
|
210
244
|
# {
|
211
245
|
# status: '1',
|
data/lib/cns/bigquery1.rb
CHANGED
@@ -34,21 +34,21 @@ module Cns
|
|
34
34
|
def mostra_tudo
|
35
35
|
apius.mostra_resumo
|
36
36
|
apide.mostra_resumo
|
37
|
-
apifr.mostra_resumo
|
38
|
-
apimt.mostra_resumo
|
37
|
+
#apifr.mostra_resumo
|
38
|
+
#apimt.mostra_resumo
|
39
39
|
apies.mostra_resumo
|
40
40
|
apigm.mostra_resumo
|
41
|
-
#
|
41
|
+
#apibc.mostra_resumo
|
42
42
|
end
|
43
43
|
|
44
44
|
# insere (caso existam) dados novos kraken/bitcoinde/paymium/therock/etherscan/greymass/beaconchain no bigquery
|
45
45
|
def processa_tudo
|
46
46
|
processa_us
|
47
47
|
processa_de
|
48
|
-
processa_frmt
|
48
|
+
#processa_frmt
|
49
49
|
processa_eth
|
50
50
|
processa_eos
|
51
|
-
#
|
51
|
+
#processa_bc
|
52
52
|
end
|
53
53
|
|
54
54
|
# insere transacoes blockchain novas nas tabelas etht (norml), ethi (internas), ethp (block), ethk (token)
|
@@ -56,6 +56,7 @@ module Cns
|
|
56
56
|
puts(format("%<n>4i TRANSACOES ETH NORMAIS\tINSERIDAS etht", n: apies.novtx.empty? ? 0 : dml(etht_ins)))
|
57
57
|
puts(format("%<n>4i TRANSACOES ETH INTERNAS\tINSERIDAS ethi", n: apies.novix.empty? ? 0 : dml(ethi_ins)))
|
58
58
|
puts(format("%<n>4i TRANSACOES ETH BLOCK\tINSERIDAS ethp", n: apies.novpx.empty? ? 0 : dml(ethp_ins)))
|
59
|
+
puts(format("%<n>4i TRANSACOES ETH WITHDRAWALS\tINSERIDAS ethw", n: apies.novwx.empty? ? 0 : dml(ethw_ins)))
|
59
60
|
puts(format("%<n>4i TOKENS\tETH\t\tINSERIDAS ethk", n: apies.novkx.empty? ? 0 : dml(ethk_ins)))
|
60
61
|
end
|
61
62
|
|
data/lib/cns/bigquery2.rb
CHANGED
data/lib/cns/bigquery3.rb
CHANGED
@@ -29,6 +29,12 @@ module Cns
|
|
29
29
|
") VALUES#{apies.novpx.map { |obj| ethp_1val(obj) }.join(',')}"
|
30
30
|
end
|
31
31
|
|
32
|
+
# @return [String] comando insert SQL formatado ethw (withdrawals)
|
33
|
+
def ethw_ins
|
34
|
+
"insert #{BD}.ethw(withdrawalindex,validatorindex,address,amount,blocknumber,timestamp" \
|
35
|
+
") VALUES#{apies.novwx.map { |obj| ethw_1val(obj) }.join(',')}"
|
36
|
+
end
|
37
|
+
|
32
38
|
# @return [String] comando insert SQL formatado ethk (token)
|
33
39
|
def ethk_ins
|
34
40
|
"insert #{BD}.ethk(blocknumber,timestamp,txhash,nonce,blockhash,transactionindex,axfrom,axto,iax," \
|
@@ -132,6 +138,18 @@ module Cns
|
|
132
138
|
"'#{htx[:iax]}')"
|
133
139
|
end
|
134
140
|
|
141
|
+
# @example (see Apibc#block_es)
|
142
|
+
# @param [Hash] htx transacao withdrawals etherscan
|
143
|
+
# @return [String] valores formatados ethi (withdrawals parte1)
|
144
|
+
def ethw_1val(htx)
|
145
|
+
"(#{Integer(htx[:withdrawalIndex])}," \
|
146
|
+
"#{Integer(htx[:validatorIndex])}," \
|
147
|
+
"'#{htx[:address]}'," \
|
148
|
+
"cast('#{htx[:amount]}' as numeric)," \
|
149
|
+
"#{Integer(htx[:blockNumber])}," \
|
150
|
+
"#{Integer(htx[:timestamp])})"
|
151
|
+
end
|
152
|
+
|
135
153
|
# @example (see Apibc#token_es)
|
136
154
|
# @param [Hash] hkx token event etherscan
|
137
155
|
# @return [String] valores formatados ethk (token parte1)
|
data/lib/cns/etherscan1.rb
CHANGED
@@ -42,6 +42,11 @@ module Cns
|
|
42
42
|
@novpx ||= bcd.map { |obc| obc[:px].select { |obj| idp.include?(obj[:itx]) } }.flatten
|
43
43
|
end
|
44
44
|
|
45
|
+
# @return [Array<Hash>] lista transacoes withdrawals novas
|
46
|
+
def novwx
|
47
|
+
@novwx ||= bcd.map { |obc| obc[:wx].select { |obj| idw.include?(obj[:itx]) } }.flatten
|
48
|
+
end
|
49
|
+
|
45
50
|
# @return [Array<Hash>] lista transacoes token novas
|
46
51
|
def novkx
|
47
52
|
@novkx ||= bcd.map { |obc| obc[:kx].select { |obj| idk.include?(obj[:itx]) } }.flatten
|
@@ -80,6 +85,12 @@ module Cns
|
|
80
85
|
(ops[:t] ? [] : bqd[:np].map { |obq| obq[:itx] })
|
81
86
|
end
|
82
87
|
|
88
|
+
# @return [Array<Integer>] lista indices transacoes withdrawals novas
|
89
|
+
def idw
|
90
|
+
@idw ||= bcd.map { |obc| obc[:wx].map { |obj| obj[:itx] } }.flatten -
|
91
|
+
(ops[:t] ? [] : bqd[:nw].map { |obq| obq[:itx] })
|
92
|
+
end
|
93
|
+
|
83
94
|
# @return [Array<Integer>] lista indices transacoes token novas
|
84
95
|
def idk
|
85
96
|
@idk ||= bcd.map { |obc| obc[:kx].map { |obj| obj[:itx] } }.flatten -
|
@@ -97,6 +108,7 @@ module Cns
|
|
97
108
|
tx: filtrar_tx(acc, api.norml_es(acc)),
|
98
109
|
ix: filtrar_tx(acc, api.inter_es(acc)),
|
99
110
|
px: filtrar_px(acc, api.block_es(acc)),
|
111
|
+
wx: filtrar_px(acc, api.withw_es(acc)),
|
100
112
|
kx: filtrar_tx(acc, api.token_es(acc))
|
101
113
|
}
|
102
114
|
end
|
@@ -112,11 +124,13 @@ module Cns
|
|
112
124
|
bt: bqd[:nt].select { |ont| ont[:iax] == xbq },
|
113
125
|
bi: bqd[:ni].select { |oni| oni[:iax] == xbq },
|
114
126
|
bp: bqd[:np].select { |onp| onp[:iax] == xbq },
|
127
|
+
bw: bqd[:nw].select { |onw| onw[:iax] == xbq },
|
115
128
|
bk: bqd[:nk].select { |onk| onk[:iax] == xbq },
|
116
129
|
es: hbc[:sl],
|
117
130
|
et: hbc[:tx],
|
118
131
|
ei: hbc[:ix],
|
119
132
|
ep: hbc[:px],
|
133
|
+
ew: hbc[:wx],
|
120
134
|
ek: hbc[:kx]
|
121
135
|
}
|
122
136
|
end
|
@@ -154,6 +168,11 @@ module Cns
|
|
154
168
|
novpx.sort { |ant, prx| ant[:itx] <=> prx[:itx] }
|
155
169
|
end
|
156
170
|
|
171
|
+
# @return [Array<Hash>] lista ordenada transacoes withdrawals novas
|
172
|
+
def sorwx
|
173
|
+
novwx.sort { |ant, prx| ant[:itx] <=> prx[:itx] }
|
174
|
+
end
|
175
|
+
|
157
176
|
# @return [Array<Hash>] lista ordenada transacoes token novas
|
158
177
|
def sorkx
|
159
178
|
novkx.sort { |ant, prx| ant[:itx] <=> prx[:itx] }
|
data/lib/cns/etherscan2.rb
CHANGED
@@ -8,12 +8,13 @@ module Cns
|
|
8
8
|
def mostra_resumo
|
9
9
|
return unless dados.count.positive?
|
10
10
|
|
11
|
-
puts("\nid address
|
11
|
+
puts("\nid address etherscan tn ti tb tk tw bigquery tn ti tb tk tw")
|
12
12
|
dados.each { |obj| puts(formata_carteira(obj)) }
|
13
13
|
mostra_transacao_norml
|
14
14
|
mostra_transacao_inter
|
15
15
|
mostra_transacao_block
|
16
16
|
mostra_transacao_token
|
17
|
+
mostra_transacao_withw
|
17
18
|
mostra_configuracao_ajuste_dias
|
18
19
|
end
|
19
20
|
|
@@ -21,9 +22,9 @@ module Cns
|
|
21
22
|
# @return [String] texto formatado duma carteira
|
22
23
|
def formata_carteira(hjn)
|
23
24
|
format(
|
24
|
-
'%<s1>-6.6s %<s2>-
|
25
|
+
'%<s1>-6.6s %<s2>-16.16s ',
|
25
26
|
s1: hjn[:id],
|
26
|
-
s2: formata_enderec1(hjn[:ax],
|
27
|
+
s2: formata_enderec1(hjn[:ax], 16)
|
27
28
|
) + formata_valores(hjn)
|
28
29
|
end
|
29
30
|
|
@@ -31,17 +32,19 @@ module Cns
|
|
31
32
|
# @return [String] texto formatado valores duma carteira
|
32
33
|
def formata_valores(hjn)
|
33
34
|
format(
|
34
|
-
'%<v1>12.6f %<n1>
|
35
|
+
'%<v1>12.6f %<n1>3i %<n2>2i %<n3>2i %<n4>2i %<w1>3i %<v2>12.6f %<n5>3i %<n6>2i %<n7>2i %<n8>2i %<w2>3i %<ok>-3s',
|
35
36
|
v1: hjn[:es],
|
36
37
|
n1: hjn[:et].count,
|
37
38
|
n2: hjn[:ei].count,
|
38
39
|
n3: hjn[:ep].count,
|
39
40
|
n4: hjn[:ek].count,
|
41
|
+
w1: hjn[:ew].count,
|
40
42
|
v2: hjn[:bs],
|
41
43
|
n5: hjn[:bt].count,
|
42
44
|
n6: hjn[:bi].count,
|
43
45
|
n7: hjn[:bp].count,
|
44
46
|
n8: hjn[:bk].count,
|
47
|
+
w2: hjn[:bw].count,
|
45
48
|
ok: ok?(hjn) ? 'OK' : 'NOK'
|
46
49
|
)
|
47
50
|
end
|
@@ -49,7 +52,7 @@ module Cns
|
|
49
52
|
# @param (see formata_carteira)
|
50
53
|
# @return [Boolean] carteira tem transacoes novas(sim=NOK, nao=OK)?
|
51
54
|
def ok?(hjn)
|
52
|
-
hjn[:bs].round(6) == hjn[:es].round(6) && hjn[:bt].count == hjn[:et].count && hjn[:bi].count == hjn[:ei].count && hjn[:bp].count == hjn[:ep].count && hjn[:bk].count == hjn[:ek].count
|
55
|
+
hjn[:bs].round(6) == hjn[:es].round(6) && hjn[:bt].count == hjn[:et].count && hjn[:bi].count == hjn[:ei].count && hjn[:bp].count == hjn[:ep].count && hjn[:bk].count == hjn[:ek].count && hjn[:bw].count == hjn[:ew].count
|
53
56
|
end
|
54
57
|
|
55
58
|
# @example ether address inicio..fim
|
@@ -61,7 +64,7 @@ module Cns
|
|
61
64
|
return 'erro' if max < 7
|
62
65
|
|
63
66
|
max -= 2
|
64
|
-
ini = Integer(max / 2)
|
67
|
+
ini = Integer(max / 2) + 3
|
65
68
|
inf = max % 2
|
66
69
|
"#{add[0, ini - 3]}..#{add[-inf - ini - 3..]}"
|
67
70
|
end
|
@@ -124,6 +127,19 @@ module Cns
|
|
124
127
|
)
|
125
128
|
end
|
126
129
|
|
130
|
+
# @example (see Apibc#block_es)
|
131
|
+
# @param [Hash] htx transacao withdrawals etherscan
|
132
|
+
# @return [String] texto formatado transacao withdrawals etherscan
|
133
|
+
def formata_transacao_withw(htx)
|
134
|
+
format(
|
135
|
+
'%<vi>9i %<bn>9i %<dt>10.10s %<vl>10.6f',
|
136
|
+
vi: htx[:validatorIndex],
|
137
|
+
bn: htx[:blockNumber],
|
138
|
+
dt: Time.at(Integer(htx[:timestamp])),
|
139
|
+
vl: (htx[:amount].to_d / 10**9).round(10)
|
140
|
+
)
|
141
|
+
end
|
142
|
+
|
127
143
|
# @return [String] texto transacoes normais
|
128
144
|
def mostra_transacao_norml
|
129
145
|
return unless ops[:v] && novtx.count.positive?
|
@@ -156,6 +172,14 @@ module Cns
|
|
156
172
|
sorkx.each { |obj| puts(formata_transacao_token(obj)) }
|
157
173
|
end
|
158
174
|
|
175
|
+
# @return [String] texto transacoes withdrawals
|
176
|
+
def mostra_transacao_withw
|
177
|
+
return unless ops[:v] && novwx.count.positive?
|
178
|
+
|
179
|
+
puts("\nvalidator block data valor")
|
180
|
+
sorwx.each { |obj| puts(formata_transacao_withw(obj)) }
|
181
|
+
end
|
182
|
+
|
159
183
|
# @return [String] texto configuracao ajuste dias das transacoes (normais & token)
|
160
184
|
def mostra_configuracao_ajuste_dias
|
161
185
|
return unless (novtx.count + novkx.count).positive?
|
data/lib/cns/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hernâni Rodrigues Vaz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|