Merkle Tree在高效验证数据的同时减少了链上计算和存储,因为非常适合基于区块链的白名单验证,空投,IDO等需要验证数据的业务。
Merkle Tree介绍默克尔树,在区块链出现前,曾广泛用于文件系统和P2P系统中。 在区块链中,默克尔树常用于高效验证数据,如,实现空投,白名单,IDO,混币器等。
默克尔树是一种hash树,底层叶子节点的hash变动会一层一层的传递直到树根root,所以roothash实际代表了底层所有数据的摘要,通过验证roothash来确定是否是它的叶子节点。那么只需要在链上记录树根就可以开始验证其叶子节点的归属,每当新增叶子节点,也只需更新roothash即可,而不必存储整棵树,并且roothash的计算也可放在链下进行。
Merkle Tree在高效验证数据的同时减少了链上计算和存储,因为非常适合基于区块链的白名单验证,空投,IDO等需要验证数据的业务。
创建Merkle Tree为配合solidity,选择使用keccak256算法;merkletree.getProof()
返回的是Array of objects;merkletree.getHexProof()
返回的Proof array as hex strings,更适合作为参数传入合约。
const { MerkleTree } = require('merkletreejs')
const keccak256 = require('kec