lib/cns/etherscan1.rb in cns-0.1.1 vs lib/cns/etherscan1.rb in cns-0.1.2
- old
+ new
@@ -7,93 +7,94 @@
# chaves a eliminar da API - resultado deve ser ignirado pois muda a cada pedido API feito
DL = %i[cumulativeGasUsed confirmations].freeze
# (see Etherscan)
class Etherscan
- # @return [Apies] API etherscan
+ # @return [Apibc] API blockchains
attr_reader :api
# @return [Array<Hash>] todos os dados bigquery
- attr_reader :dbq
+ attr_reader :bqd
# @return [Thor::CoreExt::HashWithIndifferentAccess] opcoes trabalho
attr_reader :ops
# @param [Hash] dad todos os dados bigquery
# @param [Thor::CoreExt::HashWithIndifferentAccess] pop opcoes trabalho
# @option pop [Hash] :h ({}) configuracao dias ajuste reposicionamento temporal
# @option pop [Boolean] :v (false) mostra dados transacoes normais & tokens?
# @return [Etherscan] API etherscan - processar transacoes normais e tokens
def initialize(dad, pop)
- @api = Apies.new
- @dbq = dad
+ @api = Apibc.new
+ @bqd = dad
@ops = pop
end
+ # @return [Array<Hash>] lista transacoes normais novas
+ def novtx
+ @novtx ||= bcd.map { |e| e[:tx].select { |n| idt.include?(n[:itx]) } }.flatten
+ end
+
+ # @return [Array<Hash>] lista transacoes token novas
+ def novkx
+ @novkx ||= bcd.map { |e| e[:kx].select { |n| idk.include?(n[:itx]) } }.flatten
+ end
+
# @return [Array<String>] lista dos meus enderecos
def lax
- @lax ||= dbq[:wb].map { |h| h[:ax] }
+ @lax ||= bqd[:wb].map { |h| h[:ax] }
end
# @return [Array<Hash>] todos os dados etherscan - saldos & transacoes
- def dbc
- @dbc ||= api.account(lax).map { |e| base_bc(e) }
+ def bcd
+ @bcd ||= api.account_es(lax).map { |e| base_bc(e) }
end
# @return [Array<Hash>] todos os dados juntos bigquery & etherscan
def dados
- @dados ||= dbq[:wb].map { |b| bq_bc(b, dbc.select { |s| b[:ax] == s[:ax] }.first) }
+ @dados ||= bqd[:wb].map { |b| bq_bc(b, bcd.select { |s| b[:ax] == s[:ax] }.first) }
end
# @return [Array<Integer>] lista indices transacoes normais novas
- def bnt
- @bnt ||= (dbc.map { |e| e[:tx].map { |n| n[:itx] } }.flatten - (ops[:t] ? [] : dbq[:nt].map { |t| t[:itx] }))
+ def idt
+ @idt ||= (bcd.map { |e| e[:tx].map { |n| n[:itx] } }.flatten - (ops[:t] ? [] : bqd[:nt].map { |t| t[:itx] }))
end
# @return [Array<Integer>] lista indices transacoes token novas
- def bnk
- @bnk ||= (dbc.map { |e| e[:kx].map { |n| n[:itx] } }.flatten - (ops[:t] ? [] : dbq[:nk].map { |t| t[:itx] }))
+ def idk
+ @idk ||= (bcd.map { |e| e[:kx].map { |n| n[:itx] } }.flatten - (ops[:t] ? [] : bqd[:nk].map { |t| t[:itx] }))
end
- # @return [Array<Hash>] lista transacoes normais novas
- def novtx
- @novtx ||= dbc.map { |e| e[:tx].select { |n| bnt.include?(n[:itx]) } }.flatten
- end
-
- # @return [Array<Hash>] lista transacoes token novas
- def novkx
- @novkx ||= dbc.map { |e| e[:kx].select { |n| bnk.include?(n[:itx]) } }.flatten
- end
-
- # @param [Hash] hbc dados etherscan
+ # @example (see Apibc#account_es)
+ # @param [Hash] abc account etherscan
# @return [Hash] dados etherscan - address, saldo & transacoes
- def base_bc(hbc)
- a = hbc[:account]
+ def base_bc(abc)
+ a = abc[:account]
{
ax: a,
- sl: (hbc[:balance].to_d / 10**18).round(10),
- tx: filtrar_tx(a, api.norml_tx(a)),
- kx: filtrar_tx(a, api.token_tx(a))
+ sl: (abc[:balance].to_d / 10**18).round(10),
+ tx: filtrar_tx(a, api.norml_es(a)),
+ kx: filtrar_tx(a, api.token_es(a))
}
end
- # @param [Hash] hbq dados bigquery
- # @param hbc (see base_bc)
+ # @param [Hash] wbq wallet bigquery
+ # @param [Hash] hbc dados etherscan - address, saldo & transacoes
# @return [Hash] dados juntos bigquery & etherscan
- def bq_bc(hbq, hbc)
+ def bq_bc(wbq, hbc)
{
- id: hbq[:id],
- ax: hbq[:ax],
- bs: hbq[:sl],
- bt: dbq[:nt].select { |t| t[:iax] == hbq[:ax] },
- bk: dbq[:nk].select { |t| t[:iax] == hbq[:ax] },
+ id: wbq[:id],
+ ax: wbq[:ax],
+ bs: wbq[:sl],
+ bt: bqd[:nt].select { |t| t[:iax] == wbq[:ax] },
+ bk: bqd[:nk].select { |t| t[:iax] == wbq[:ax] },
es: hbc[:sl],
et: hbc[:tx],
ek: hbc[:kx]
}
end
- # @param [String] add endereco carteira ETH
- # @param [Array<Hash>] ary lista das transacoes
- # @return [Array<Hash>] devolve lista de transacoes/token transfer events filtrada
+ # @param add (see Apibc#norml_es)
+ # @param [Array<Hash>] ary lista transacoes/token events
+ # @return [Array<Hash>] lista transacoes/token events filtrada
def filtrar_tx(add, ary)
# elimina transferencia from: (lax) to: (add) - esta transferencia aparece em from: (add) to: (lax)
# elimina chaves irrelevantes (DL) & adiciona chave indice itx & adiciona identificador da carteira iax
ary.delete_if { |h| h[:to] == add && lax.include?(h[:from]) }
.map { |h| h.delete_if { |k, _| DL.include?(k) }.merge(itx: Integer(h[:blockNumber]), iax: add) }