http://www.7klian.com

供给链用例:Merkle Tree之链下资产生意业务

我们将利用Merkle树来暗示我们的资产。Merkle树是一种很棒的加密东西,用于确保巨大数据布局的完整性。Merkle树(凡是但不必然)是二叉树,个中:
import Asset from ‘./asset.class’
box.node.print()
# create the src directory
    } else {

import sha256 from ‘crypto-js/sha256’
· 左子节点是利用资产范例构建的Merkle叶。
const prefix = ‘A7!~adx0a)^OpBVvt2e’
“Root”资产中包括的资产可以具有差异的范例。下面的药盒包括白日的药丸和夜晚的药丸。

  /**
    console.log(this.treeString())
    namedCurve: ‘sect239k1’,
    } else if (left instanceof Node && right instanceof Node) {
    newNodesArray.unshift(new Node(nodes[i], nodes[i + 1]))

import { isString } from ‘./utils’
    return hash(this.left.data + this.right.data)
    if (isString(left) && !right) {
    if (!this.right && !this.left) return true
   * @param {Object} type the assets’ characteristics (color, shape etc…)
  }
    initialAssets.forEach((asset) => {
merkleRoot.print()
// Transform them into leaves: ‘A’, ‘B’ and ‘C’
  // the continue cases
这是上述算法的实现,我们利用很是有用的函数。getMerkleRootNode。
      if (this.assets[asset.type]) this.assets[asset.type].push(asset)
 */
    if (this.isLeaf) return `n${indentString.repeat(layer)}┗${this.data}`
  }
· 节点的值是这些子项的值的串联的哈希。

    } else {
   * Generate the tree string.
}
    if (this.right instanceof Node && this.left instanceof Node) return false
    }
  leafNodeType = Node(A.type)
MerkleRoot(A, B, C) = MerkleRoot(hash(A + B), C) = hash(hash(A+B)+C)
      this.leafData = hash(left)
该函数添加正确地将新的资产添加到实例的一个内容。
  }
/**
签名将界说谁建设资产。当有人建设资产(即树的一部门)时,它会对其举办签名。
我们有一个树节点的函数暗示。我们此刻必需编写为我们构建Merkle树的函数。我想给它一个节点列表,函数应该返回Merkle根节点(从而生成初始节点和Merkle根之间的所有节点)。
  get data () {
   return leafNodeType
   */
}
     rootsOfAssets.push(merkleRoot(a.content))
“scripts”: {
结构函数仅用于测试参数。假如我们仅提供left(作为String!),那么我们将建设一个叶子:这就是为什么我将给定命据的哈希存储在leafData中的原因。假如left和right是Nodes工具,则我们将建设一个通例节点并分派left和right属性。留意我们利用从./utils导入的自界说isString函数:
export default class Node {
    })
    } else if (left instanceof Node && right instanceof Node) {
npm i –save-dev @babel/core @babel/node @babel/preset-env
  /**
      this.leafData = IsSignature ? left : hash(left).toString()
   * @param {Asset!} asset an asset to add.
  return sha256(prefix + data)
isLeaf:假如在其他环境下该节点为假叶子,则返回true。
getter isItem查抄内容资产是否为空。假如initialAssets参数为空数组,则constructor将其初始化为null。
  sign.end()
  get data () {
// random generated prefix
      this.left = left
资产暗示为Merkle树
    if (this.isItem) return new Node(this.type)
   * @param {Node} right the right children of the node.
    return `n${layer === 0 ? ‘.’ : indentString.repeat(layer) + ‘┗’}${this.data}${this.left.treeString(layer + 1)}${this.right.treeString(layer + 1)}`
    return `n${layer === 0 ? ‘.’ : indentString.repeat(layer) + ‘┗’}${this.data}${this.left.treeString(layer + 1)}${this.right.treeString(layer + 1)}`

链改项目中,个中供给链是获得各人最体贴。可是供给链项目有那几块信息,需要我们出格留意的:
2. left:左子节点(假如存在)。
      this.left = null

  }
  print () {
 * @param {Node[]} nodes array of nodes.
  /** getter for the node’s data */
  get isLeaf () {
 * @param {crypto.KeyLike!} publicKey the public key object.

我们所说的供给链实际上是一系列资产生意业务。由于资产可以是资产的构成部门,,因此我们需要一种要领来将它们暗示为链值,同时确保稳定性和完整性。
然后,我们可以利用npm run start启动我们的应用措施。此刻利用您最喜欢的IDE打开merkle-tree-supply链(我的是vs代码)。我们可以开始编码了!
touch src/index.js
首先要做的是实现我们的Merkle树。我们所有的设计都基于Merkle树节点。我们将节点界说为由三个属性描写的工具:
      this.leafData = hash(left)
const pill3 = new Asset({ name: ‘pill’, type: ‘doliprane 1000mg’ })
nodes是一个包括2个元素的数组:我们返回一个新节点,该节点是数组中两个节点的父节点。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。