Class: Cns::Greymass
- Inherits:
-
Object
- Object
- Cns::Greymass
- Defined in:
- lib/cns/greymass.rb
Overview
classe para processar transacoes do greymass
Instance Attribute Summary collapse
-
#api ⇒ Apibc
readonly
API blockchains.
-
#bqd ⇒ Array<Hash>
readonly
Todos os dados bigquery.
-
#ops ⇒ Thor::CoreExt::HashWithIndifferentAccess
readonly
Opcoes trabalho.
Instance Method Summary collapse
-
#base_bc(wbq) ⇒ Hash
Dados greymass - address, saldo & transacoes.
-
#bcd ⇒ Array<Hash>
Todos os dados greymass - saldos & transacoes.
-
#bq_bc(wbq, hbc) ⇒ Hash
Dados juntos bigquery & greymass.
-
#dados ⇒ Array<Hash>
Todos os dados juntos bigquery & greymass.
-
#filtrar_tx(add, ary) ⇒ Array<Hash>
Lista transacoes filtrada.
-
#formata_carteira(hjn) ⇒ String
Texto formatado duma carteira.
-
#formata_ledger(hlx) ⇒ String
Texto formatado ledger greymass.
-
#greymass_sl(add) ⇒ Array<BigDecimal>
Lista recursos - liquido, net, spu.
-
#idt ⇒ Array<Integer>
Lista indices transacoes novas.
-
#initialize(dad, pop) ⇒ Greymass
constructor
API greymass - processar transacoes.
-
#lax ⇒ Array<String>
Lista dos meus enderecos.
-
#mostra_configuracao_ajuste_dias ⇒ String
Texto configuracao ajuste dias das transacoes.
-
#mostra_resumo ⇒ String
Texto carteiras & transacoes & ajuste dias.
-
#mostra_transacoes_novas ⇒ String
Texto transacoes.
-
#novax ⇒ Array<Hash>
Lista transacoes novas.
-
#ok?(hjn) ⇒ Boolean
Carteira tem transacoes novas(sim=NOK, nao=OK)?.
-
#sorax ⇒ Array<Hash>
Lista ordenada transacoes novas.
Constructor Details
Instance Attribute Details
#api ⇒ Apibc (readonly)
Returns API blockchains.
10 11 12 |
# File 'lib/cns/greymass.rb', line 10 def api @api end |
#bqd ⇒ Array<Hash> (readonly)
Returns todos os dados bigquery.
12 13 14 |
# File 'lib/cns/greymass.rb', line 12 def bqd @bqd end |
#ops ⇒ Thor::CoreExt::HashWithIndifferentAccess (readonly)
Returns opcoes trabalho.
14 15 16 |
# File 'lib/cns/greymass.rb', line 14 def ops @ops end |
Instance Method Details
#base_bc(wbq) ⇒ Hash
Returns dados greymass - address, saldo & transacoes.
57 58 59 60 61 62 63 64 |
# File 'lib/cns/greymass.rb', line 57 def base_bc(wbq) xbq = wbq[:ax] { ax: xbq, sl: greymass_sl(xbq).inject(:+), tx: filtrar_tx(xbq, api.ledger_gm(xbq)) } end |
#bcd ⇒ Array<Hash>
Returns todos os dados greymass - saldos & transacoes.
39 40 41 |
# File 'lib/cns/greymass.rb', line 39 def bcd @bcd ||= bqd[:wb].map { |obj| base_bc(obj) } end |
#bq_bc(wbq, hbc) ⇒ Hash
Returns dados juntos bigquery & greymass.
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/cns/greymass.rb', line 69 def bq_bc(wbq, hbc) xbq = wbq[:ax] { id: wbq[:id], ax: xbq, bs: wbq[:sl], bt: bqd[:nt].select { |obj| obj[:iax] == xbq }, es: hbc[:sl], et: hbc[:tx] } end |
#dados ⇒ Array<Hash>
Returns todos os dados juntos bigquery & greymass.
44 45 46 |
# File 'lib/cns/greymass.rb', line 44 def dados @dados ||= bqd[:wb].map { |obq| bq_bc(obq, bcd.select { |obj| obq[:ax] == obj[:ax] }.first) } end |
#filtrar_tx(add, ary) ⇒ Array<Hash>
Returns lista transacoes filtrada.
96 97 98 99 100 101 102 103 |
# File 'lib/cns/greymass.rb', line 96 def filtrar_tx(add, ary) # elimina transferencia from: (lax) to: (add) - esta transferencia aparece em from: (add) to: (lax) # adiciona chave indice itx & adiciona identificador da carteira iax (ary.delete_if do |odl| adt = odl[:action_trace][:act][:data] adt[:to] == add && lax.include?(adt[:from]) end).map { |omp| omp.merge(itx: omp[:global_action_seq], iax: add) } end |
#formata_carteira(hjn) ⇒ String
Returns texto formatado duma carteira.
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/cns/greymass.rb', line 122 def formata_carteira(hjn) format( '%<s1>-12.12s %<v1>14.4f %<n1>4i %<v2>14.4f %<n2>4i %<ok>-3s', s1: hjn[:ax], v1: hjn[:es], n1: hjn[:et].count, v2: hjn[:bs], n2: hjn[:bt].count, ok: ok?(hjn) ? 'OK' : 'NOK' ) end |
#formata_ledger(hlx) ⇒ String
Returns texto formatado ledger greymass.
143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/cns/greymass.rb', line 143 def formata_ledger(hlx) format( '%<bn>12i %<fr>-12.12s %<to>-12.12s %<ac>-10.10s %<dt>10.10s %<vl>12.4f %<sy>-6.6s', ac: (act = hlx[:action_trace][:act])[:name], fr: (adt = act[:data])[:from], vl: (aqt = adt[:quantity].to_s).to_d, bn: hlx[:itx], to: adt[:to], dt: Date.parse(hlx[:block_time]), sy: aqt[/[[:upper:]]+/] ) end |
#greymass_sl(add) ⇒ Array<BigDecimal>
Returns lista recursos - liquido, net, spu.
83 84 85 86 87 88 89 90 91 |
# File 'lib/cns/greymass.rb', line 83 def greymass_sl(add) hac = api.account_gm(add) htr = hac[:total_resources] [ hac[:core_liquid_balance].to_d, htr[:net_weight].to_d, htr[:cpu_weight].to_d ] end |
#idt ⇒ Array<Integer>
Returns lista indices transacoes novas.
49 50 51 52 |
# File 'lib/cns/greymass.rb', line 49 def idt @idt ||= bcd.map { |obc| obc[:tx].map { |obj| obj[:itx] } }.flatten - (ops[:t] ? [] : bqd[:nt].map { |obq| obq[:itx] }) end |
#lax ⇒ Array<String>
Returns lista dos meus enderecos.
34 35 36 |
# File 'lib/cns/greymass.rb', line 34 def lax @lax ||= bqd[:wb].map { |obj| obj[:ax] } end |
#mostra_configuracao_ajuste_dias ⇒ String
Returns texto configuracao ajuste dias das transacoes.
165 166 167 168 169 |
# File 'lib/cns/greymass.rb', line 165 def mostra_configuracao_ajuste_dias return unless novax.count.positive? puts("\nstring ajuste dias\n-h=#{sorax.map { |obj| "#{obj[:itx]}:0" }.join(' ')}") end |
#mostra_resumo ⇒ String
Returns texto carteiras & transacoes & ajuste dias.
111 112 113 114 115 116 117 118 |
# File 'lib/cns/greymass.rb', line 111 def mostra_resumo return unless dados.count.positive? puts("\naddress greymass ntx bigquery ntx") dados.each { |obj| puts(formata_carteira(obj)) } mostra_transacoes_novas mostra_configuracao_ajuste_dias end |
#mostra_transacoes_novas ⇒ String
Returns texto transacoes.
157 158 159 160 161 162 |
# File 'lib/cns/greymass.rb', line 157 def mostra_transacoes_novas return unless ops[:v] && novax.count.positive? puts("\nsequence num from to accao data valor moeda") sorax.each { |obj| puts(formata_ledger(obj)) } end |
#novax ⇒ Array<Hash>
Returns lista transacoes novas.
29 30 31 |
# File 'lib/cns/greymass.rb', line 29 def novax @novax ||= bcd.map { |obc| obc[:tx].select { |obj| idt.include?(obj[:itx]) } }.flatten end |
#ok?(hjn) ⇒ Boolean
Returns carteira tem transacoes novas(sim=NOK, nao=OK)?.
136 137 138 |
# File 'lib/cns/greymass.rb', line 136 def ok?(hjn) hjn[:bs] == hjn[:es] && hjn[:bt].count == hjn[:et].count end |
#sorax ⇒ Array<Hash>
Returns lista ordenada transacoes novas.
106 107 108 |
# File 'lib/cns/greymass.rb', line 106 def sorax novax.sort { |ant, prx| prx[:itx] <=> ant[:itx] } end |