区块链Bloom也就是大家所说的Bloom过滤器在公链协议里面的应用, 它是属于一种概率性的数据结构, 这一种结构是使用一组哈希函数, 把这些元素映射到位数组里面去, 这样做的目的,就是为了实现关于“是否存在”这一问题的判定过程的高效率化, 比特币的轻节点以及以太坊的状态查询工作, 都是依靠它对减少同步开销的支持来实现相关操作的。
区块链bloom是什么
这个叫做Bloom过滤器的东西是Burkley Bloom在1970年提出来的, 它的核心玩法就是利用k个独立的哈希函数, 把一个元素的值映射到一个总共有m位的数组里的k个不同位置, 当我们在区块链的世界里运行的时候, 那些轻型的节点需要把这种包含Bloom数据的请求发送给完整性的节点, 这样的话它就可以直接去拉取和自己这个地址相关的交易信息, 不用管别的, 所以它能让网络带宽的需求量一下子降低好几个数量级。
这个结构并不是一个精确的结构, 它是会出现大概百分之一到百分之二左右这样一个误判概率的。它有可能在明明实际是空空如也的一个状态下, 它却报告说那里存在东西。
协议是通过去调节位数组的长度以及确定哈希函数的数量来对这个概率进行控制的, 这样做的目的就是在存储资源的占用大小和判断精度的高低之间去取得一个平衡。

区块链bloom过滤器怎么用
比特币的那个getblocks消息, 这个玩意儿是允许加上Bloom过滤器的, 这样的话, 节点就不需要去同步那些完整的数据了, 而只是去同步那些能匹配交易的块头而已。
以太坊在进行状态trie查询的时候呢, 也是引入了那个叫作Bloom的优化方式, 它这样做是为了避免每次都需要去完整地下载整个存储树, 这就使得同步所需消耗的流量被大幅度压缩了下来。
调整参数的时候,最重要的点在于位数组的长度m和哈希次数k这两个数值的比例。如果k取的值等于2的对数的自然对数乘以位数组长度m除以总数据项数n得到的乘积, 那么误判的概率就达到最低点了<。在负责实际运行的环境里, 通常会建议把那个错误判断的概率控制住, 使其降低到不超过百分之零点一的范围之内。如果不这么做的话, 那些只负责轻量级处理的节点就会不断地去发起请求, 要求下载那些本来不需要下载的冗余信息。这样下去的结果就是耗费了大量的资源, 最后却得不到什么有价值的收益, 这样的损失是非常不合算的。<。
你要理解Bloom的关于概率的那些事情, 这是设计区块链的高效同步协议的时候, 绕都绕不开的一个步骤。
转载请注明出处:imtoken,如有疑问,请联系()。
本文地址:https://m.zmdyd.cn/imazbqb/10777.html
