Skip to content

Commit

Permalink
add status function for all modules
Browse files Browse the repository at this point in the history
  • Loading branch information
Rahul Garg committed Jun 26, 2018
1 parent a15745a commit f241645
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 4 deletions.
13 changes: 13 additions & 0 deletions src/hbbft.erl
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
serialize/1,
serialize/2,
deserialize/2,
status/1,
is_serialized/1]).

-record(hbbft_data, {
Expand Down Expand Up @@ -58,6 +59,18 @@
-type rbc_wrapped_output() :: hbbft_utils:unicast({{acs, non_neg_integer()}, {{rbc, non_neg_integer()}, hbbft_rbc:val_msg()}}) | hbbft_utils:multicast({{acs, non_neg_integer()}, {{rbc, non_neg_integer()}, hbbft_rbc:echo_msg() | hbbft_rbc:ready_msg()}}).
-type bba_wrapped_output() :: hbbft_utils:multicast({{acs, non_neg_integer()}, hbbft_acs:bba_msg()}).


status(HBBFT) ->
#{batch_size => HBBFT#hbbft_data.batch_size,
buf => length(HBBFT#hbbft_data.buf),
round => HBBFT#hbbft_data.round,
acs_init => HBBFT#hbbft_data.acs_init,
acs => hbbft_acs:status(HBBFT#hbbft_data.acs),
sent_txns => HBBFT#hbbft_data.sent_txns,
sent_sig => HBBFT#hbbft_data.sent_sig,
acs_results => length(HBBFT#hbbft_data.acs_results)
}.

-spec init(tpke_privkey:privkey(), pos_integer(), non_neg_integer(), non_neg_integer(), pos_integer()) -> hbbft_data().
init(SK, N, F, J, BatchSize) ->
#hbbft_data{secret_key=SK, n=N, f=F, j=J, batch_size=BatchSize, acs=hbbft_acs:init(SK, N, F, J)}.
Expand Down
6 changes: 5 additions & 1 deletion src/hbbft_acs.erl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-module(hbbft_acs).

-export([init/4, input/2, handle_msg/3, serialize/1, deserialize/2]).
-export([init/4, input/2, handle_msg/3, serialize/1, deserialize/2, status/1]).

-record(rbc_state, {
rbc_data :: hbbft_rbc:rbc_data(),
Expand Down Expand Up @@ -56,6 +56,10 @@

-export_type([acs_data/0, msgs/0, bba_msg/0, acs_serialized_data/0, bba_state/0, rbc_state/0, bba_serialized_state/0, rbc_serialized_state/0]).

status(ACSData) ->
#{rbc => maps:map(fun(_K, #rbc_state{rbc_data=RBCData, result=R}) -> #{rbc => hbbft_rbc:status(RBCData), result => R} end, ACSData#acs_data.rbc),
bba => maps:map(fun(_K, #bba_state{bba_data=BBAData, result=R, input=I}) -> #{bba => hbbft_bba:status(BBAData), result => R, input => I} end, ACSData#acs_data.bba)}.

-spec init(tpke_privkey:privkey(), pos_integer(), non_neg_integer(), non_neg_integer()) -> acs_data().
init(SK, N, F, J) ->
%% instantiate all the RBCs
Expand Down
12 changes: 11 additions & 1 deletion src/hbbft_bba.erl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-module(hbbft_bba).

-export([init/3, input/2, handle_msg/3, serialize/1, deserialize/2]).
-export([init/3, input/2, handle_msg/3, serialize/1, deserialize/2, status/1]).

-record(bba_data, {
state = init :: init | waiting | done,
Expand Down Expand Up @@ -49,6 +49,16 @@

-export_type([bba_data/0, bba_serialized_data/0, bval_msg/0, aux_msg/0, coin_msg/0, msgs/0, conf_msg/0]).

status(BBAData) ->
#{state => BBAData#bba_data.state,
round => BBAData#bba_data.round,
coin => hbbft_cc:status(BBAData#bba_data.coin),
aux_sent => BBAData#bba_data.aux_sent,
conf_sent => BBAData#bba_data.conf_sent,
coin_sent => BBAData#bba_data.coin_sent,
output => BBAData#bba_data.output
}.

-spec init(tpke_privkey:privkey(), pos_integer(), non_neg_integer()) -> bba_data().
init(SK, N, F) ->
#bba_data{secret_key=SK, n=N, f=F}.
Expand Down
10 changes: 9 additions & 1 deletion src/hbbft_cc.erl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-module(hbbft_cc).

-export([init/4, get_coin/1, handle_msg/3, serialize/1, deserialize/2]).
-export([init/4, get_coin/1, handle_msg/3, serialize/1, deserialize/2, status/1]).

-record(cc_data, {
state = waiting :: waiting | done,
Expand All @@ -27,6 +27,14 @@

-export_type([cc_data/0, cc_serialized_data/0, share_msg/0]).


status(undefined) ->
undefined;
status(CCData) ->
#{state => CCData#cc_data.state,
shares => CCData#cc_data.shares
}.

%% Figure12. Bullet1
%% Trusted Setup Phase: A trusted dealer runs pk, {ski } ←
%% ThresholdSetup to generate a common public key, as well as
Expand Down
11 changes: 10 additions & 1 deletion src/hbbft_rbc.erl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-module(hbbft_rbc).

-export([init/4, input/2, handle_msg/3]).
-export([init/4, input/2, handle_msg/3, status/1]).

-record(rbc_data, {
state = init :: init | waiting | done,
Expand Down Expand Up @@ -35,6 +35,15 @@
-export_type([rbc_data/0, val_msg/0, echo_msg/0, ready_msg/0, msgs/0]).

%% API.

status(RBCData) ->
#{state => RBCData#rbc_data.state,
num_echoes => length(maps:values(RBCData#rbc_data.num_echoes)),
num_readies => length(maps:values(RBCData#rbc_data.num_readies)),
ready_sent => RBCData#rbc_data.ready_sent,
leader => RBCData#rbc_data.leader
}.

-spec init(pos_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer()) -> rbc_data().
init(N, F, Pid, Leader) ->
#rbc_data{n=N, f=F, pid=Pid, leader=Leader}.
Expand Down
5 changes: 5 additions & 0 deletions test/hbbft_worker.erl
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ handle_info(Msg, State) ->

dispatch({NewHBBFT, {send, ToSend}}, State) ->
do_send(ToSend, State),
io:format("HBBFT Status: ~p~n", [hbbft:status(NewHBBFT)]),
State#state{hbbft=maybe_serialize_HBBFT(NewHBBFT, State#state.to_serialize)};
dispatch({NewHBBFT, {result, {transactions, Txns}}}, State) ->
NewBlock = case State#state.blocks of
Expand All @@ -140,15 +141,19 @@ dispatch({NewHBBFT, {result, {transactions, Txns}}}, State) ->
#block{prev_hash=hash_block(PrevBlock), transactions=Txns, signature= <<>>}
end,
%% tell the badger to finish the round
io:format("HBBFT Status: ~p~n", [hbbft:status(NewHBBFT)]),
dispatch(hbbft:finalize_round(maybe_deserialize_hbbft(NewHBBFT, State#state.sk), Txns, term_to_binary(NewBlock)), State#state{tempblock=NewBlock});
dispatch({NewHBBFT, {result, {signature, Sig}}}, State = #state{tempblock=NewBlock0}) ->
NewBlock = NewBlock0#block{signature=Sig},
[ gen_server:cast({global, name(Dest)}, {block, NewBlock}) || Dest <- lists:seq(0, State#state.n - 1)],
io:format("HBBFT Status: ~p~n", [hbbft:status(NewHBBFT)]),
dispatch(hbbft:next_round(maybe_deserialize_hbbft(NewHBBFT, State#state.sk)), State#state{blocks=[NewBlock|State#state.blocks], tempblock=undefined});
dispatch({NewHBBFT, ok}, State) ->
io:format("HBBFT Status: ~p~n", [hbbft:status(NewHBBFT)]),
State#state{hbbft=maybe_serialize_HBBFT(NewHBBFT, State#state.to_serialize)};
dispatch({NewHBBFT, Other}, State) ->
io:format("UNHANDLED ~p~n", [Other]),
io:format("HBBFT Status: ~p~n", [hbbft:status(NewHBBFT)]),
State#state{hbbft=maybe_serialize_HBBFT(NewHBBFT, State#state.to_serialize)};
dispatch(Other, State) ->
io:format("UNHANDLED2 ~p~n", [Other]),
Expand Down

0 comments on commit f241645

Please sign in to comment.