Существует ли дерево хешей, разработанное для сложных структур данных?
У меня есть объект JSON с личными данными. Он имеет следующую (сложную!) Структуру:
{
name: "JB",
age: 35,
children:
[ {
name: "Alice",
age: "5",
favColor: "pink"
},
{
name: "Bob",
age: "8",
favColor: "blue"
},
{
name: "Charlie",
age: "9",
favColor: "green"
},
]
}
Я хочу создать хеш-дерево, которое позволяет другим проверять фрагменты данных, которые я им отправляю - например, путем объявления корня в общедоступной цепочке блоков.
Например, я хотел бы иметь возможность сообщать ТОЛЬКО мой возраст, и чтобы получатель мог вычислять хэш и проверять его правильность. Позже я могу захотеть сообщить другому пользователю, что моего первого ребенка зовут "Алиса", а ее любимый цвет - "розовый".
Насколько я понимаю, деревья Меркле бинарные - у каждого узла есть только два листа. Существует ли фиксированная схема или метод для последовательного "уплощения" сложных структур, подобных приведенной выше, в дерево меркле?
В качестве альтернативы, есть ли другой тип структуры хэш-дерева, который обеспечивает такой вид сложности для данных?
Например:
Root ( = hash of name + age + children)
/ | \
/ | \
name age children (= hash of all children in array)
/ | \
/ | \
/ | \
[0] [1] [n]
/ | \
/ | \
name age favC
Кажется, что как бы ни было построено дерево, важно, чтобы структура исходных данных как-то сохранялась и могла быть проверена валидатором.
- например, чтобы я не указывал возраст ребенка, а не мой собственный.
- В случае бинарного дерева Меркле: учитывать тот факт, что листовой индекс может представлять совершенно разные данные в зависимости от количества детей, которые у них есть.
Как лучше всего подойти к этой проблеме? Я использую Node.JS, и аккуратный пакет инструментов Merkle, но я не уверен, что дерево Merkle - правильный инструмент для работы. Если я пропустил что-то важное или у вас есть уточняющие вопросы, я сделаю все возможное, чтобы улучшить вопрос.
Большое спасибо.