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/etherscan2.rb
CHANGED
@@ -2,8 +2,19 @@
|
|
2
2
|
|
3
3
|
# @author Hernani Rodrigues Vaz
|
4
4
|
module Cns
|
5
|
-
# classe para processar
|
5
|
+
# classe para processar transacoes do etherscan
|
6
6
|
class Etherscan
|
7
|
+
# @return [String] texto carteiras & transacoes & ajuste dias
|
8
|
+
def mostra_resumo
|
9
|
+
return unless dados.count.positive?
|
10
|
+
|
11
|
+
puts("\nid address etherscan nm tk bigquery nm tk")
|
12
|
+
dados.each { |e| puts(formata_carteira(e)) }
|
13
|
+
mostra_transacao_norml
|
14
|
+
mostra_transacao_token
|
15
|
+
mostra_configuracao_ajuste_dias
|
16
|
+
end
|
17
|
+
|
7
18
|
# @param [Hash] hjn dados juntos bigquery & etherscan
|
8
19
|
# @return [String] texto formatado duma carteira
|
9
20
|
def formata_carteira(hjn)
|
@@ -19,12 +30,12 @@ module Cns
|
|
19
30
|
def formata_valores(hjn)
|
20
31
|
format(
|
21
32
|
'%<v1>11.6f %<n1>2i %<n3>2i %<v2>12.6f %<n2>2i %<n4>2i %<ok>-3s',
|
22
|
-
v1: hjn[:
|
23
|
-
n1: hjn[:
|
24
|
-
n3: hjn[:
|
25
|
-
v2: hjn[:
|
26
|
-
n2: hjn[:
|
27
|
-
n4: hjn[:
|
33
|
+
v1: hjn[:es],
|
34
|
+
n1: hjn[:et].count,
|
35
|
+
n3: hjn[:ek].count,
|
36
|
+
v2: hjn[:bs],
|
37
|
+
n2: hjn[:bt].count,
|
38
|
+
n4: hjn[:bk].count,
|
28
39
|
ok: ok?(hjn) ? 'OK' : 'NOK'
|
29
40
|
)
|
30
41
|
end
|
@@ -42,12 +53,13 @@ module Cns
|
|
42
53
|
# @return [String] endereco formatado
|
43
54
|
def formata_endereco(add, max)
|
44
55
|
i = Integer((max - 2) / 2)
|
45
|
-
e = (max <= 20 ?
|
56
|
+
e = (max <= 20 ? bqd[:wb].select { |s| s[:ax] == add }.first : nil) || { id: add }
|
46
57
|
max < 7 ? 'erro' : "#{e[:id][0, i - 3]}..#{add[-i - 3..]}"
|
47
58
|
end
|
48
59
|
|
49
|
-
# @
|
50
|
-
# @
|
60
|
+
# @example (see Apibc#norml_es)
|
61
|
+
# @param [Hash] htx transacao normal etherscan
|
62
|
+
# @return [String] texto formatado transacao normal etherscan
|
51
63
|
def formata_transacao_norml(htx)
|
52
64
|
format(
|
53
65
|
'%<bn>9i %<fr>-20.20s %<to>-20.20s %<dt>10.10s %<vl>17.6f',
|
@@ -59,8 +71,9 @@ module Cns
|
|
59
71
|
)
|
60
72
|
end
|
61
73
|
|
62
|
-
# @
|
63
|
-
# @
|
74
|
+
# @example (see Apibc#token_es)
|
75
|
+
# @param [Hash] hkx transacao token etherscan
|
76
|
+
# @return [String] texto formatado transacao token etherscan
|
64
77
|
def formata_transacao_token(hkx)
|
65
78
|
format(
|
66
79
|
'%<bn>9i %<fr>-20.20s %<to>-20.20s %<dt>10.10s %<vl>11.3f %<sy>-5.5s',
|
@@ -73,17 +86,6 @@ module Cns
|
|
73
86
|
)
|
74
87
|
end
|
75
88
|
|
76
|
-
# @return [String] texto carteiras & transacoes & ajuste dias
|
77
|
-
def mostra_resumo
|
78
|
-
return unless dados.count.positive?
|
79
|
-
|
80
|
-
puts("\nid address bigquery nm tk etherscan nm tk")
|
81
|
-
dados.each { |e| puts(formata_carteira(e)) }
|
82
|
-
mostra_transacao_norml
|
83
|
-
mostra_transacao_token
|
84
|
-
mostra_configuracao_ajuste_dias
|
85
|
-
end
|
86
|
-
|
87
89
|
# @return [String] texto transacoes normais
|
88
90
|
def mostra_transacao_norml
|
89
91
|
return unless ops[:v] && novtx.count.positive?
|
data/lib/cns/greymass1.rb
CHANGED
@@ -6,10 +6,10 @@ require('bigdecimal/util')
|
|
6
6
|
module Cns
|
7
7
|
# (see Greymass)
|
8
8
|
class Greymass
|
9
|
-
# @return [
|
9
|
+
# @return [Apibc] API blockchains
|
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,56 +20,57 @@ module Cns
|
|
20
20
|
# @option pop [Boolean] :t (false) mostra transacoes todas ou somente novas?
|
21
21
|
# @return [Greymass] API greymass - processar transacoes
|
22
22
|
def initialize(dad, pop)
|
23
|
-
@api =
|
24
|
-
@
|
23
|
+
@api = Apibc.new
|
24
|
+
@bqd = dad
|
25
25
|
@ops = pop
|
26
26
|
end
|
27
27
|
|
28
|
+
# @return [Array<Hash>] lista transacoes novas
|
29
|
+
def novax
|
30
|
+
@novax ||= bcd.map { |e| e[:tx].select { |s| idt.include?(s[:itx]) } }.flatten
|
31
|
+
end
|
32
|
+
|
28
33
|
# @return [Array<String>] lista dos meus enderecos
|
29
34
|
def lax
|
30
|
-
@lax ||=
|
35
|
+
@lax ||= bqd[:wb].map { |h| h[:ax] }
|
31
36
|
end
|
32
37
|
|
33
38
|
# @return [Array<Hash>] todos os dados greymass - saldos & transacoes
|
34
|
-
def
|
35
|
-
@
|
39
|
+
def bcd
|
40
|
+
@bcd ||= bqd[:wb].map { |e| base_bc(e) }
|
36
41
|
end
|
37
42
|
|
38
43
|
# @return [Array<Hash>] todos os dados juntos bigquery & greymass
|
39
44
|
def dados
|
40
|
-
@dados ||=
|
45
|
+
@dados ||= bqd[:wb].map { |b| bq_bc(b, bcd.select { |s| b[:ax] == s[:ax] }.first) }
|
41
46
|
end
|
42
47
|
|
43
48
|
# @return [Array<Integer>] lista indices transacoes novas
|
44
|
-
def
|
45
|
-
@
|
46
|
-
end
|
47
|
-
|
48
|
-
# @return [Array<Hash>] lista transacoes novas
|
49
|
-
def novax
|
50
|
-
@novax ||= dbc.map { |e| e[:tx].select { |s| bnt.include?(s[:itx]) } }.flatten
|
49
|
+
def idt
|
50
|
+
@idt ||= (bcd.map { |e| e[:tx].map { |n| n[:itx] } }.flatten - (ops[:t] ? [] : bqd[:nt].map { |t| t[:itx] }))
|
51
51
|
end
|
52
52
|
|
53
|
-
# @
|
53
|
+
# @example (see Apibc#account_gm)
|
54
|
+
# @param [Hash] wbq wallet bigquery
|
54
55
|
# @return [Hash] dados greymass - address, saldo & transacoes
|
55
|
-
def base_bc(
|
56
|
-
a =
|
56
|
+
def base_bc(wbq)
|
57
|
+
a = wbq[:ax]
|
57
58
|
{
|
58
59
|
ax: a,
|
59
60
|
sl: greymass_sl(a).inject(:+),
|
60
|
-
tx: filtrar_tx(a, api.
|
61
|
+
tx: filtrar_tx(a, api.ledger_gm(a))
|
61
62
|
}
|
62
63
|
end
|
63
64
|
|
64
|
-
# @param
|
65
|
-
# @param [Hash] hbc dados greymass
|
65
|
+
# @param wbq (see base_bc)
|
66
|
+
# @param [Hash] hbc dados greymass - address, saldo & transacoes
|
66
67
|
# @return [Hash] dados juntos bigquery & greymass
|
67
|
-
def bq_bc(
|
68
|
+
def bq_bc(wbq, hbc)
|
68
69
|
{
|
69
|
-
id:
|
70
|
-
ax:
|
71
|
-
bs:
|
72
|
-
bt:
|
70
|
+
id: wbq[:id],
|
71
|
+
ax: wbq[:ax],
|
72
|
+
bs: wbq[:sl],
|
73
|
+
bt: bqd[:nt].select { |t| t[:iax] == wbq[:ax] },
|
73
74
|
es: hbc[:sl],
|
74
75
|
et: hbc[:tx]
|
75
76
|
}
|
@@ -78,7 +79,7 @@ module Cns
|
|
78
79
|
# @param (see filtrar_tx)
|
79
80
|
# @return [Array<BigDecimal>] lista recursos - liquido, net, spu
|
80
81
|
def greymass_sl(add)
|
81
|
-
v = api.
|
82
|
+
v = api.account_gm(add)
|
82
83
|
[
|
83
84
|
v[:core_liquid_balance].to_d,
|
84
85
|
v[:total_resources][:net_weight].to_d,
|
@@ -86,9 +87,9 @@ module Cns
|
|
86
87
|
]
|
87
88
|
end
|
88
89
|
|
89
|
-
# @param
|
90
|
-
# @param [Array<Hash>] ary lista
|
91
|
-
# @return [Array<Hash>] lista transacoes
|
90
|
+
# @param add (see Apibc#account_gm)
|
91
|
+
# @param [Array<Hash>] ary lista transacoes
|
92
|
+
# @return [Array<Hash>] lista transacoes filtrada
|
92
93
|
def filtrar_tx(add, ary)
|
93
94
|
# elimina transferencia from: (lax) to: (add) - esta transferencia aparece em from: (add) to: (lax)
|
94
95
|
# adiciona chave indice itx & adiciona identificador da carteira iax
|
data/lib/cns/greymass2.rb
CHANGED
@@ -2,18 +2,28 @@
|
|
2
2
|
|
3
3
|
# @author Hernani Rodrigues Vaz
|
4
4
|
module Cns
|
5
|
-
# classe para processar
|
5
|
+
# classe para processar transacoes do greymass
|
6
6
|
class Greymass
|
7
|
+
# @return [String] texto carteiras & transacoes & ajuste dias
|
8
|
+
def mostra_resumo
|
9
|
+
return unless dados.count.positive?
|
10
|
+
|
11
|
+
puts("\naddress greymass ntx bigquery ntx")
|
12
|
+
dados.each { |e| puts(formata_carteira(e)) }
|
13
|
+
mostra_transacoes_novas
|
14
|
+
mostra_configuracao_ajuste_dias
|
15
|
+
end
|
16
|
+
|
7
17
|
# @param [Hash] hjn dados juntos bigquery & greymass
|
8
18
|
# @return [String] texto formatado duma carteira
|
9
19
|
def formata_carteira(hjn)
|
10
20
|
format(
|
11
21
|
'%<s1>-12.12s %<v1>14.4f %<n1>4i %<v2>14.4f %<n2>4i %<ok>-3s',
|
12
22
|
s1: hjn[:ax],
|
13
|
-
v1: hjn[:
|
14
|
-
n1: hjn[:
|
15
|
-
v2: hjn[:
|
16
|
-
n2: hjn[:
|
23
|
+
v1: hjn[:es],
|
24
|
+
n1: hjn[:et].count,
|
25
|
+
v2: hjn[:bs],
|
26
|
+
n2: hjn[:bt].count,
|
17
27
|
ok: ok?(hjn) ? 'OK' : 'NOK'
|
18
28
|
)
|
19
29
|
end
|
@@ -24,47 +34,38 @@ module Cns
|
|
24
34
|
hjn[:bs] == hjn[:es] && hjn[:bt].count == hjn[:et].count
|
25
35
|
end
|
26
36
|
|
27
|
-
# @
|
28
|
-
# @
|
29
|
-
|
37
|
+
# @example (see Apibc#ledger_gm)
|
38
|
+
# @param [Hash] hlx ledger greymass
|
39
|
+
# @return [String] texto formatado ledger greymass
|
40
|
+
def formata_ledger(hlx)
|
30
41
|
format(
|
31
42
|
'%<bn>12i %<fr>-12.12s %<to>-12.12s %<ac>-10.10s %<dt>10.10s %<vl>12.4f %<sy>-6.6s',
|
32
|
-
bn:
|
33
|
-
fr: act_data(
|
34
|
-
to: act_data(
|
35
|
-
ac: act(
|
36
|
-
dt: Date.parse(
|
37
|
-
vl: act_data_quantity(
|
38
|
-
sy: act_data_quantity(
|
43
|
+
bn: hlx[:itx],
|
44
|
+
fr: act_data(hlx)[:from],
|
45
|
+
to: act_data(hlx)[:to],
|
46
|
+
ac: act(hlx)[:name],
|
47
|
+
dt: Date.parse(hlx[:block_time]),
|
48
|
+
vl: act_data_quantity(hlx).to_d,
|
49
|
+
sy: act_data_quantity(hlx)[/[[:upper:]]+/]
|
39
50
|
)
|
40
51
|
end
|
41
52
|
|
42
|
-
# @param (see
|
53
|
+
# @param (see formata_ledger)
|
43
54
|
# @return [Hash] dados da acao
|
44
|
-
def act(
|
45
|
-
|
55
|
+
def act(hlx)
|
56
|
+
hlx[:action_trace][:act]
|
46
57
|
end
|
47
58
|
|
48
|
-
# @param (see
|
59
|
+
# @param (see formata_ledger)
|
49
60
|
# @return [Hash] dados da acao
|
50
|
-
def act_data(
|
51
|
-
act(
|
61
|
+
def act_data(hlx)
|
62
|
+
act(hlx)[:data]
|
52
63
|
end
|
53
64
|
|
54
|
-
# @param (see
|
65
|
+
# @param (see formata_ledger)
|
55
66
|
# @return [String] dados da quantidade
|
56
|
-
def act_data_quantity(
|
57
|
-
act_data(
|
58
|
-
end
|
59
|
-
|
60
|
-
# @return [String] texto carteiras & transacoes & ajuste dias
|
61
|
-
def mostra_resumo
|
62
|
-
return unless dados.count.positive?
|
63
|
-
|
64
|
-
puts("\naddress bigquery ntx greymass ntx")
|
65
|
-
dados.each { |e| puts(formata_carteira(e)) }
|
66
|
-
mostra_transacoes_novas
|
67
|
-
mostra_configuracao_ajuste_dias
|
67
|
+
def act_data_quantity(hlx)
|
68
|
+
act_data(hlx)[:quantity].to_s
|
68
69
|
end
|
69
70
|
|
70
71
|
# @return [String] texto transacoes
|
@@ -72,7 +73,7 @@ module Cns
|
|
72
73
|
return unless ops[:v] && novax.count.positive?
|
73
74
|
|
74
75
|
puts("\nsequence num from to accao data valor moeda")
|
75
|
-
sorax.each { |e| puts(
|
76
|
+
sorax.each { |e| puts(formata_ledger(e)) }
|
76
77
|
end
|
77
78
|
|
78
79
|
# @return [String] texto configuracao ajuste dias das transacoes
|
data/lib/cns/kraken.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 kraken
|
8
8
|
class Kraken
|
9
9
|
# @return [Apius] API kraken
|
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,59 +20,71 @@ module Cns
|
|
20
20
|
# @option pop [Boolean] :t (false) mostra transacoes todas ou somente novas?
|
21
21
|
# @return [Kraken] API kraken - 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
|
|
28
|
+
# @return [Hash] trades kraken novos
|
29
|
+
def trades
|
30
|
+
@trades ||= exd[:kt].select { |k, _| kyt.include?(k) }
|
31
|
+
end
|
32
|
+
|
33
|
+
# @return [Hash] ledger kraken novos
|
34
|
+
def ledger
|
35
|
+
@ledger ||= exd[:kl].select { |k, _| kyl.include?(k) }
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [String] texto saldos & transacoes & ajuste dias
|
39
|
+
def mostra_resumo
|
40
|
+
puts("\nKRAKEN\ntipo kraken 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
|
+
|
29
51
|
# @return [Hash] dados exchange kraken - saldos & transacoes trades e ledger
|
30
52
|
def exd
|
31
53
|
@exd ||= {
|
32
|
-
sl: api.
|
33
|
-
kt: api.
|
34
|
-
kl: api.
|
54
|
+
sl: api.account_us,
|
55
|
+
kt: api.trades_us,
|
56
|
+
kl: api.ledger_us
|
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[:kt].keys - (ops[:t] ? [] :
|
62
|
+
@kyt ||= exd[:kt].keys - (ops[:t] ? [] : bqd[:nt].map { |e| e[:txid].to_sym })
|
41
63
|
end
|
42
64
|
|
43
|
-
# @return [Array<String>] lista txid
|
65
|
+
# @return [Array<String>] lista txid dos ledger novos
|
44
66
|
def kyl
|
45
|
-
@kyl ||= exd[:kl].keys - (ops[:t] ? [] :
|
46
|
-
end
|
47
|
-
|
48
|
-
# @return [Hash] transacoes trades
|
49
|
-
def trades
|
50
|
-
@trades ||= exd[:kt].select { |k, _| kyt.include?(k) }
|
67
|
+
@kyl ||= exd[:kl].keys - (ops[:t] ? [] : bqd[:nl].map { |e| e[:txid].to_sym })
|
51
68
|
end
|
52
69
|
|
53
|
-
# @
|
54
|
-
def ledger
|
55
|
-
@ledger ||= exd[:kl].select { |k, _| kyl.include?(k) }
|
56
|
-
end
|
57
|
-
|
58
|
-
# @example (see Apius#account)
|
70
|
+
# @example (see Apice#account_us)
|
59
71
|
# @param [String] moe codigo kraken da moeda
|
60
72
|
# @param [BigDecimal] sal saldo kraken da moeda
|
61
|
-
# @return [String] texto formatado saldos
|
73
|
+
# @return [String] texto formatado saldos
|
62
74
|
def formata_saldos(moe, sal)
|
63
|
-
t =
|
75
|
+
t = bqd[:sl][moe.downcase.to_sym].to_d
|
64
76
|
format(
|
65
77
|
'%<mo>-5.5s %<kr>21.9f %<bq>21.9f %<ok>3.3s',
|
66
78
|
mo: moe.upcase,
|
67
|
-
kr: sal,
|
79
|
+
kr: sal.to_d,
|
68
80
|
bq: t,
|
69
|
-
ok: t == sal ? 'OK' : 'NOK'
|
81
|
+
ok: t == sal.to_d ? 'OK' : 'NOK'
|
70
82
|
)
|
71
83
|
end
|
72
84
|
|
73
|
-
# @example (see
|
85
|
+
# @example (see Apice#trades_us)
|
74
86
|
# @param (see Bigquery#ust_val1)
|
75
|
-
# @return [String] texto formatado
|
87
|
+
# @return [String] texto formatado trade
|
76
88
|
def formata_trades(idx, htx)
|
77
89
|
format(
|
78
90
|
'%<ky>-6.6s %<dt>19.19s %<ty>-10.10s %<mo>-8.8s %<pr>8.2f %<vl>15.7f %<co>8.2f',
|
@@ -86,9 +98,9 @@ module Cns
|
|
86
98
|
)
|
87
99
|
end
|
88
100
|
|
89
|
-
# @example (see
|
101
|
+
# @example (see Apice#ledger_us)
|
90
102
|
# @param (see Bigquery#usl_val)
|
91
|
-
# @return [String] texto formatado
|
103
|
+
# @return [String] texto formatado ledger
|
92
104
|
def formata_ledger(idx, hlx)
|
93
105
|
format(
|
94
106
|
'%<ky>-6.6s %<dt>19.19s %<ty>-10.10s %<mo>-4.4s %<pr>18.7f %<vl>18.7f',
|
@@ -101,16 +113,15 @@ module Cns
|
|
101
113
|
)
|
102
114
|
end
|
103
115
|
|
104
|
-
# @return [String] texto
|
105
|
-
def
|
106
|
-
|
107
|
-
|
116
|
+
# @return [String] texto totais numero de transacoes
|
117
|
+
def mostra_totais
|
118
|
+
a = exd[:kt].count
|
119
|
+
b = bqd[:nt].count
|
120
|
+
c = exd[:kl].count
|
121
|
+
d = bqd[:nl].count
|
108
122
|
|
109
|
-
|
110
|
-
|
111
|
-
return unless trades.count.positive?
|
112
|
-
|
113
|
-
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |e| "#{e}:0" }.join(' ')}")
|
123
|
+
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a: a, b: b, o: a == b ? 'OK' : 'NOK')}")
|
124
|
+
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: c, d: d, o: c == d ? 'OK' : 'NOK')}")
|
114
125
|
end
|
115
126
|
|
116
127
|
# @return [String] texto transacoes trades
|