如何解决在区块链中找到最新区块的最有效实现
所以我在做一个区块链项目,我遇到了需要获取最新区块的问题。 现在,无论谁都不知道区块链如何工作,基本上都是这样构建的:
第0块:
Previous hash: 0
Hash: 104973
第1块:
Previous hash: 104973
Hash: 859236
第2块:
Previous hash: 859236
Hash: 523564
因此它创建了一个由哈希链接的链。 现在,每个块都有一个代表该块的文件,全部位于1个文件夹中,因此文件夹名称为“ Blocks”,其中包含3个文件(“ BLOCK104973.bl”,“ BLOCK859236.bl”,“ BLOCK523564.bl”)。
现在我需要获取最新的代码块,最有效的方法是什么? 我的想法:
遍历文件夹中的所有块(文件),并列出其哈希,然后在每个哈希上再次循环,看看哪个哈希没有对应的块(一个块的先前哈希等于)。当前的哈希值)。
但是它似乎效率很低,并且想知道是否有人有更好的主意(或者人们通常在区块链中使用某种方式)? 请注意,按文件更改日期获取阻止信息对我来说还不够可靠。
解决方法
从创世块开始遍历区块链是一项罕见的任务。通常,区块链节点具有来自网络或生成它的最新块。因此,沿着先前的区块哈希链接沿相反的方向进行操作要容易得多。然后可以反向链接单个链表。
大多数(如果不是全部)区块链实现都利用某些数据库来加快对数据的访问。比特币核心使用LevelDB。索引之一以块为键,其值为块索引记录,其中包含块标题,块高度(块编号)和其他一些信息。 LevelDB文件保存在 .bitcoin / blocks / index 目录中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。