Существует ли дерево хешей, разработанное для сложных структур данных?

У меня есть объект 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 - правильный инструмент для работы. Если я пропустил что-то важное или у вас есть уточняющие вопросы, я сделаю все возможное, чтобы улучшить вопрос.

Большое спасибо.

0 ответов

Другие вопросы по тегам