ok denom group + exchange_sig

This commit is contained in:
swrup 2026-02-23 10:59:36 +01:00
parent 9bc30eb54b
commit 2b340e0095
2 changed files with 37 additions and 15 deletions

View file

@ -16,7 +16,7 @@ type t = {
master_sig: Signatures.DenominationKeyValidity.t;
}
let make_denom_group denominations =
let make_denom_group_sorted denominations =
let open Syntax in
let ht = Hashtbl.create 0xff in
List.iter
@ -72,19 +72,41 @@ let make_denom_group denominations =
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.
(* ! important for /keys .exchange_sig
each group must be ordered in _reverse_ chronological order
order of groups to compute hash, must be the same as the order
in /keys .denominations *)
let open Api in
let open DenomGroup in
let open RsaDenomGroup in
let open RsaDenom in
let cmp_denom b a = Timestamp.compare a.stamp_start b.stamp_start in
let cmp_group =
let cmp_amount a b =
let open Amount in
match Int64.unsigned_compare a.value b.value with
| 0 -> Int32.unsigned_compare a.fraction b.fraction
| n -> n
in
fun (Rsa a) (Rsa b) -> cmp_amount a.value b.value
in
let l =
Hashtbl.to_seq ht
|> List.of_seq
|> List.map
(fun
((value, fee_withdraw, fee_deposit, fee_refresh, fee_refund), denoms)
->
Rsa
{
denoms;
denoms= List.sort cmp_denom denoms;
value;
fee_withdraw;
fee_deposit;
fee_refresh;
fee_refund;
})
|> List.sort cmp_group
in
l