sparse-tools/include/merkle.h

40 lines
932 B
C

//
// Created by haraldwolff on 08.08.22.
//
#ifndef SPARSE_TOOLS_MERKLE_H
#define SPARSE_TOOLS_MERKLE_H
#include <stdint.h>
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);
int merkle_dump(merkle_t *merkle);
#endif //SPARSE_TOOLS_MERKLE_H