wip
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
% @doc hz helper functions
|
||||
-module(fd_hz).
|
||||
|
||||
-export_type([
|
||||
]).
|
||||
|
||||
-export([
|
||||
txs_current/0,
|
||||
txs_since_height/1,
|
||||
txs_minus/1,
|
||||
txs_from_to/2,
|
||||
current_height/0,
|
||||
txs_of_height/1,
|
||||
mhs_of_height/1,
|
||||
txs_of_mh/1,
|
||||
test/0
|
||||
]).
|
||||
|
||||
|
||||
-spec test() -> no_return().
|
||||
|
||||
test() ->
|
||||
io:format("~tp~n", [hz:gen_current()]),
|
||||
io:format("~tp~n", [hz:kb_current()]),
|
||||
ok.
|
||||
|
||||
|
||||
|
||||
txs_current() ->
|
||||
H = current_height(),
|
||||
txs_of_height(H).
|
||||
|
||||
|
||||
txs_since_height(H) ->
|
||||
txs_from_to(H, current_height()).
|
||||
|
||||
|
||||
txs_minus(N) ->
|
||||
H = current_height(),
|
||||
L = H - N,
|
||||
txs_from_to(L, H).
|
||||
|
||||
|
||||
txs_from_to(Min, Max) when Min =< Max ->
|
||||
lists:append([txs_of_height(H) || H <- lists:seq(Min, Max)]);
|
||||
txs_from_to(Min, Max) when Min > Max ->
|
||||
[].
|
||||
|
||||
|
||||
current_height() ->
|
||||
{ok, H} = hz:kb_current_height(),
|
||||
H.
|
||||
|
||||
|
||||
txs_of_height(Height) ->
|
||||
lists:append([txs_of_mh(MH) || MH <- mhs_of_height(Height)]).
|
||||
|
||||
|
||||
-spec mhs_of_height(Height :: pos_integer()) -> term().
|
||||
mhs_of_height(Height) ->
|
||||
{ok, #{"micro_blocks" := MHs}} = hz:gen_by_height(Height),
|
||||
MHs.
|
||||
|
||||
|
||||
txs_of_mh(MH) ->
|
||||
{ok, TXs} = hz:mb_txs(MH),
|
||||
filter_spends(TXs).
|
||||
|
||||
|
||||
filter_spends(TXs) ->
|
||||
lists:filtermap(fun filter_spend/1, TXs).
|
||||
|
||||
filter_spend(#{"tx" := TX = #{"type" := "SpendTx"}}) -> {true, spend_info(TX)};
|
||||
filter_spend(_) -> false.
|
||||
|
||||
|
||||
spend_info(#{"type" := "SpendTx",
|
||||
"recipient_id" := Recipient,
|
||||
"amount" := Amount,
|
||||
"payload" := Payload}) ->
|
||||
{sp, Recipient, Amount, Payload}.
|
||||
Reference in New Issue
Block a user