// // Created by haraldwolff on 08.08.22. // #ifndef SPARSE_TOOLS_MERKLE_H #define SPARSE_TOOLS_MERKLE_H #include typedef enum { MF_ALLOC, } merkle_flags_t; typedef struct { int n; // level-to-level ratio int depth; // number of levels int length; // number of elements over the whole tree int width; // number of elements at base level } merkle_parameters_t; typedef struct { merkle_flags_t flags; merkle_parameters_t parameters; int *indeces; uint64_t *hashes; } merkle_t; int merkle_create(merkle_t **merkle, int n, int minwidth); int merkle_init(merkle_t *merkle, int n, int minwidth); int merkle_free(merkle_t *merkle); int merkle_get(merkle_t *merkle, int l, int n, uint64_t *hash); int merkle_set(merkle_t *merkle, int l, int n, uint64_t hash); int merkle_get_row(merkle_t *merkle, int level, uint64_t **offset, int *size); #endif //SPARSE_TOOLS_MERKLE_H