34 lines
1.2 KiB
OCaml
34 lines
1.2 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* Copyright (c) 2014 - 2018. *)
|
|
(* Dynamic Ledger Solutions, Inc.< contact@tezos.com > *)
|
|
(* *)
|
|
(* All rights reserved.No warranty, explicit or implicit, provided. *)
|
|
(* *)
|
|
(**************************************************************************)
|
|
|
|
open Protocol
|
|
|
|
module Table = Hashtbl.Make(struct
|
|
type t = Nonce_hash.t
|
|
let hash h =
|
|
Int32.to_int (MBytes.get_int32 (Nonce_hash.to_bytes h) 0)
|
|
let equal = Nonce_hash.equal
|
|
end)
|
|
|
|
let known_nonces = Table.create 17
|
|
|
|
let generate () =
|
|
match
|
|
Alpha_context.Nonce.of_bytes @@
|
|
Rand.generate Alpha_context.Constants.nonce_length
|
|
with
|
|
| Ok nonce ->
|
|
let hash = Alpha_context.Nonce.hash nonce in
|
|
Table.add known_nonces hash nonce ;
|
|
(hash, nonce)
|
|
| Error _ -> assert false
|
|
|
|
let forget_all () = Table.clear known_nonces
|
|
let get hash = Table.find known_nonces hash
|