关于区块链如何保持数据一致性的问题,这是我在区块链研究所的第四门课程。由于一致性问题涉及区块的结构以及不篡改区块链的重要特征,因此这一课对于每个人深入了解区块链技术都非常重要。对我来说,还必须组织以前课程的内容,并将它们与更详细的说明结合起来,以供每个人学习。 1.什么是哈希如果您了解一些编程知识,我相信您对这个概念非常熟悉。但是对于一些没有编程基础的人来说,他们对此并不陌生。他们不熟悉购买区块链书,但受不了。哈希函数在区块链中非常常用,以至于显示给用户的所有内容(例如地址,公共密钥,私钥等)都是通过哈希函数生成的,因此有必要在此重点介绍概念。即使您知道如何编程并听说过此概念,也希望您可以再次阅读并作为回顾。哈希,英文对应于哈希,一般来说是哈希函数,百度百科解释是:哈希,通常翻译为“哈希”,也有直接音译为“哈希”,即任何形式的输入长度(也称为预映射,前映像),通过哈希算法,转换为固定长度的输出,该输出是哈希值。此转换是一种压缩映射,也就是说,哈希值空间通常比输入空间小得多,并且不同的输入可能会哈希到相同的输出中,因此无法从哈希值中唯一确定输入值。简而言之,它是一种将任意长度的消息压缩为固定长度的消息摘要的功能。简而言之,它是将较长的字符串a转换为固定长度的字符串b,然后使用字符串b表示前一个a,例如比特币地址1DQe9F3agsDcr4qoTZ3Sush4e88Nv9tNxa,这是一个哈希值。哈希转换后,原始a无法通过b恢复。哈希算法在文件验证,数字签名和身份验证协议中具有良好的应用。在Java编程中,可以通过hashCode函数直接获取字符串的哈希值。哈希算法是一种非常有效的算法,因此非常常用。 2.判断一致性的简单方法您应该经常下载内容,可能已经下载了两次文件,甚至现在您不小心在某些网络钓鱼网站上下载了一些恶意程序,那么如何判断文件的一致性呢?鉴定过程有问题吗?您可能想到的方法是:1)比较文件大小,如果不一致,则表示它是一个不同的文件; 2)查看文件的内容,但并非所有程序都是文本可读的; 3)查看文件的某些标签信息是否一致等。但是,这些方法是非常基础的,对于某些高级作弊方法无法识别。因此,一些良心网站将提示您比较文件的MD5值。许多细心的朋友应该能够找到此提示,但他们很少遵循此提示。毕竟,我们大多数人习惯了“裸奔”吗?在网上。上面提到的MD5是广泛使用的哈希函数。现在,越来越多的网站将宣布该文件的MD5值。下载文件后,用户可以自己计算和比较文件。如果一致,则表示下载的文件尚未被篡改。由于工作需要,这两天我将下载一个mangodb。这是下载页面的屏幕截图。从屏幕截图中,每个人都应该有一个直观的了解:当然,MD5只是一种哈希算法。上面的屏幕截图还显示了其他受支持的屏幕截图。方法,但是这些方法用于使用哈希算法的特征来验证文件的一致性。 3.区块链如何保持数据一致性-默克树下图是比特币的区块结构图。每个区块链书籍都将介绍它非常重要,我希望每个研究俱乐部都将学习到Friends可以理解的知识:在上表的第三行中,“默克尔树的根值”就是“默克尔树的根值”。恰好是一个哈希值。如上所述,区块链技术使用此哈希值来确定该块的数据是否已被篡改。但是,事情可能没有想象的那么简单。因为一个块可能包含数百个甚至更多的事务,所以其内容非常大,并且对整个哈希进行哈希处理的效率非常低。因此,单词“默克尔树”(Merkle tree)是指“ Merkle tree”。出现在上图中。 ”,翻译为默克树,这是保持一致性的关键。默克树,f