Merkle trees have become a widely successful cryptographic data structure. Enabling a vast variety of applications from checking for inconsistencies in databases like Dynamo to essential tools like Git to large scale distributed systems like Bitcoin and other blockchains. There have also been various versions of Merkle trees like Jellyfish Merkle Trees and Sparse Merkle Trees designed for different applications. However, one key drawback of all these Merkle trees is that with a large data set the cost of computing the tree increases significantly, moreover insert operations on a single leaf require re-building the entire tree. For certain use cases building the tree this way is acceptable, however in environments where compute time needs to be as low as possible and where data is processed in parallel, we are presented with a need for asynchronous computation. This paper proposes a solution where given a batch of data that has to be processed concurrently, a Merkle Tree can be constructed from the batch asynchronously without needing to recalculate the tree for every insert.
翻译:默克尔树已成为一种广泛成功的密码学数据结构。它支持从检测Dynamo等数据库中的不一致性,到Git等基础工具,再到比特币及其他区块链等大规模分布式系统的多种应用。此外,针对不同应用场景,还衍生出多种版本的默克尔树,如水母默克尔树和稀疏默克尔树。然而,所有这些默克尔树的一个关键缺陷是:当数据集规模较大时,树的计算成本显著增加,并且对单个叶节点的插入操作需要重建整棵树。对于某些用例,这种构建树的方式是可接受的,但在需要尽可能降低计算时间且数据被并行处理的环境中,我们面临对异步计算的需求。本文提出一种解决方案:对于需要并发处理的一批数据,无需为每次插入重新计算整棵树,即可异步地从该批次数据构建默克尔树。