+ make_denom_group
This commit is contained in:
parent
72b0c3012a
commit
9bc30eb54b
3 changed files with 109 additions and 78 deletions
|
|
@ -15,3 +15,76 @@ type t = {
|
|||
h_pub: denom_hash;
|
||||
master_sig: Signatures.DenominationKeyValidity.t;
|
||||
}
|
||||
|
||||
let make_denom_group denominations =
|
||||
let open Syntax in
|
||||
let ht = Hashtbl.create 0xff in
|
||||
List.iter
|
||||
(fun coin ->
|
||||
let open Config.Coin in
|
||||
assert (coin.cipher = `RSA);
|
||||
let k =
|
||||
( coin.value,
|
||||
coin.fee_withdraw,
|
||||
coin.fee_deposit,
|
||||
coin.fee_refresh,
|
||||
coin.fee_refund )
|
||||
in
|
||||
let v = [] in
|
||||
Hashtbl.replace ht k v)
|
||||
Config.Coin.all_coins;
|
||||
let+ () =
|
||||
list_iter
|
||||
(fun {
|
||||
pub;
|
||||
value;
|
||||
stamp_start;
|
||||
stamp_expire_withdraw;
|
||||
stamp_expire_deposit;
|
||||
stamp_expire_legal;
|
||||
fee_withdraw;
|
||||
fee_deposit;
|
||||
fee_refresh;
|
||||
fee_refund;
|
||||
age_mask= _;
|
||||
h_pub= _;
|
||||
master_sig;
|
||||
} ->
|
||||
let k = (value, fee_withdraw, fee_deposit, fee_refresh, fee_refund) in
|
||||
let v =
|
||||
Api.RsaDenom.
|
||||
{
|
||||
rsa_pub= pub;
|
||||
master_sig;
|
||||
stamp_start;
|
||||
stamp_expire_withdraw;
|
||||
stamp_expire_deposit;
|
||||
stamp_expire_legal;
|
||||
lost= None;
|
||||
}
|
||||
in
|
||||
let+ l =
|
||||
match Hashtbl.find_opt ht k with
|
||||
| None ->
|
||||
Error "denomination does not match any coin in configuration"
|
||||
| Some l -> Ok l
|
||||
in
|
||||
Hashtbl.replace ht k (v :: l))
|
||||
denominations
|
||||
in
|
||||
Hashtbl.to_seq ht
|
||||
|> List.of_seq
|
||||
|> List.map
|
||||
(fun
|
||||
((value, fee_withdraw, fee_deposit, fee_refresh, fee_refund), denoms)
|
||||
->
|
||||
Api.DenomGroup.Rsa
|
||||
Api.RsaDenomGroup.
|
||||
{
|
||||
denoms;
|
||||
value;
|
||||
fee_withdraw;
|
||||
fee_deposit;
|
||||
fee_refresh;
|
||||
fee_refund;
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue