Дерево должно быть сериализовано, прежде чем вы сохраните его в базе данных.Библиотека, которую вы используете, не имеет такой опции, но вы можете легко сделать это самостоятельно.
В следующем коде предполагается, что вы используете этот модуль https://www.npmjs.com/package/merkle-tools
Функция сериализации:
const serializeTree = (tree) => {
const len = tree.getLeafCount();
const serialized = [];
for (let i = 0; i < len; i++) {
// If you want to save binary data remove .toString('hex');
serialized.push(tree.getLeaf(i).toString('hex'));
}
return serialized;
}
Вы получаете массив, который можно легко сохранить в базе данных.
При восстановлении дерева из базы данных вы можете сделать следующее:
const makeTree = (serialized) => {
const len = serialized.length;
const tree = new MerkleTools();
for (let i = 0; i < len; i++) {
tree.addLeaf(serialized[i]);
}
tree.makeTree();
return tree;
}
Возвращаемое значение изФункция makeTree является деревом merkleTools, поэтому вы можете использовать такие методы, как .addLeaf()
.