是否有为复杂数据结构设计的哈希树?

时间:2018-01-20 16:11:35

标签: node.js data-structures cryptography merkle-tree

我有一个带私有数据的JSON对象。它具有以下(复杂!)结构:

       Root ( = hash of name + age + children)
     /  |  \
    /   |   \
 name  age  children  (= hash of all children in array)
           /      | \
          /       |  \
         /        |   \
      [0]        [1]  [n]
     / | \        
    /  |  \      
 name age favC 

我想创建一个哈希树,允许其他人验证我发送的数据片段 - 例如通过宣布公共区块链的根源。

例如,我希望能够分享我的年龄,让接收者能够计算哈希并检查它是否正确。后来,我可能想向不同的用户透露我的第一个孩子被命名为“Alice”,而她最喜欢的颜色是“粉红色”。

我的理解是 Merkle Trees 是二进制的 - 每个节点只有两个叶子。是否有一个固定的模式或方法可以将上面的复杂结构“扁平化”到一个merkle树中?

或者,是否存在另一种类型的哈希树结构,它为数据提供了这种复杂性?

例如:

<template>
  <div>Corn: <input v-model="corn" style="width: 50px;" /></div>
</template>
<script>
export default {
  data: function() {
    return {
      items: 'not updated',
      corn: items.cornquant
    }    },
  watch: { // whenever amount changes, function will run
    corn: function(newCorn, oldCorn) {
      this.corn = '2'
      this.getCorn()
    }      },
  mounted: function() {
    this.getVueItems();
  },
  methods: {
    getVueItems: function() {
      axios.get('/testing').then(response => {
        this.items = response.data;
         });  },
   getCorn: _.debounce(
      function() {
        this.corn = 'Thinking...'
        var vm = this
        axios.put('/corn/{amount}').then(response => {
          vm.corn = response.data;
        })   },
      // milliseconds we wait for user to stop typing.
      500
    )      },     }
</script>

似乎无论构建树,重要的是原始数据的结构以某种方式保留,并且可以由验证器仔细检查。

  • e.g。为了防止我提供孩子的年龄而不是我自己的年龄。
  • 对于二元merkle树:考虑到叶子索引可能代表完全不同的数据,这取决于他们拥有的孩子数量。

解决此问题的最佳方法是什么?我正在使用Node.JS和整洁的Merkle Tools package,但我不确定merkle树是否适合这项工作。如果我错过了任何重要的事情,或者你有任何澄清的问题,我会尽力改善这个问题。

非常感谢。

0 个答案:

没有答案