您将使用什么数据结构来建模区块链?

时间:2018-01-27 05:35:32

标签: scala data-structures blockchain

我正在研究Scala中的功能性迷你区块链实现。我已经给了很多想法,但仍然无法理解最合适的数据结构来模拟区块链。具体来说: -

1。)它不能是一个简单的链表/堆栈,因为有叉,这意味着两个不同的块可以引用相同的块。它应该是顶部块的列表,即最顶层的列表(高度)块?然后,我可以通过从最顶层的任何一个块开始遍历来遍历区块链 2.)如何将块指向前一个块?我知道每个块都有前一个块的哈希值。但是,对于我来说,从块块到块区数据结构中引用的块是如何足够的呢?

非常感谢我能得到的任何帮助。 ,

2 个答案:

答案 0 :(得分:1)

如果您只是想制作功能性玩具区块链,那么链接列表就是合适的(非玩具实现我希望看看内存之外的持久性选项)。

为了解决你的第一个问题,当链分叉时,你现在有两个不同的链,只有前几个块。事实上,你可以在一个(不可变的)链表point to the same node中有两个节点而不用担心。

对于第二个,将块的散列定义为最后一个块散列的函数。假设您调用链tail中的其余块,您可以说块的散列为val hash = computeHash(transactions, proofOfWork, tail.hash)

如果你愿意,我可以提供一个更深入的例子,但不想从你的练习中获得乐趣。

答案 1 :(得分:0)

你一定要考虑Scorex,这是用Scala编写的,并考虑了Blockchain的大量实际问题

https://underscore.io/blog/posts/2017/12/14/scorex.html