布隆过滤器在区块链中的应用

作者:Annchain  

(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。)

 

Bloom Filter简介

 

布隆过滤器(bloom filter)是空间效率很高的一种概率数据结构,1970年由bloom提出,用于判断一个元素是否在一个集合中。Bloom filter 判断一个元素不存在集合中,则肯定不存在,如果判断一个元素存在于集合中,有一定的概率判断错误。元素可以加到集合中,但是删除困难,有一定的判断误差,因此适合容忍低错误率的场景。

 

算法描述

 

布隆过滤器的核心思想是使用多个哈希函数将元素映射到一个位数组中的某一位。

布隆过滤器用m个比特的数组保存数据,初始状态下该数组的所有位都为0, 有k个不同的哈希函数,每个哈希函数将集合中的每个元素映射到{1,...,m}的范围之中。

 

布隆过滤器在区块链中的应用_第1张图片

 

往布隆过滤器添加一个元素x时,用k个哈希函数得到k个哈希值,将位数组中对应的值置为1。如果某一位多次被置为1,则只有第一次起作用。

 

布隆过滤器在区块链中的应用_第2张图片

 

判断一个元素是否在集合:判断一个元素y是否在集合中,用k个哈希函数映射得到k个哈希值,如果在数组中与k个哈希值对应的所有位都为1则认为该元素在集合中,否则认为该不在集合中,由于添加元素时某一位可能被重复置1,所以判断出一个元素在集合中时,无法保证该元素一定存在于集合中,如果判断出一个元素不在集合中,则一定不存在。

 

错误率分析

 

设m为bloom filter数组大小,特定一位没有被特定的哈希函数置为1的概率为:

某一位没有被k个哈希函数中的任意一个置为1的概率为:

如果我们插入了n个元素,特定的一位为0的概率为:

4.png

错误率为:

5.png

简化为:

6.png

m和n一定时,使错误率最小的k值为:

7.png

 

Bloom filter的应用

 

Bloom filter 用于大量数据中判断某个人元素是否在集合中, 空间效率很高。Google的big table, Apache Hbase 等系统使用了bloom filter, 数据一般通过key value的形式存储在磁盘中,当查找时先查找元素是否在bloom filter中,如果存在则从磁盘读取对应的数据,如果不存在直接返回,减少了不存在的行或列在磁盘上的查询,提高了查询性能。在url过滤,垃圾邮件过滤多个场景中有广泛的应用。

 

Bloom filter 在比特币网络中的应用

 

在比特币网络中,轻客户端查找自己账户地址相关的UTXO时,由于轻客户端没有完整的区块数据,无法直接查找,需要向全节点发送相关请求,全节点返回结果。如果轻客户端向全节点直接发送自己的地址获取UTXO,则其他全节点都知道该轻客户端绑定的账户地址,泄露了隐私。轻客户端通过以Bloom filter 的形式告诉全节点自己的地址信息,全节点返回结果可能相关的UTXO,通过bloom filter过滤不属于改地址的UTXO,既保护了隐私,又节省了带宽。

 

Bloom filter以太坊中的应用

 

在以太坊中,发送一个交易来调用智能合约时,调用的返回值只有交易的哈希,当一个交易被打包,智能合约通过事件产生日志发送到区块链上以便用户界面处理。以太坊中的事件有三个功能:返回智能合约执行过程的值到用户界面;触发前端用户界面事件,异步通信;便宜的存储。

 

以太坊中用特殊的可索引的数据结构来存储日志,这种数据结构为bloom filter, 合约创建之后无法访问日志数据 ,以太坊的每个区块头包含当前前区块中所有的收据的日志的布隆过滤器,可以从链外高效访问日志数据,高效安全下载和搜搜日志,减少了私盘随机访问量,用户可以通过调用对交易或者区块进行过滤,然后持续的获取结果。

 

随着区块链底层技术的发展,数据越来越多,bloom filter在区块链中会有更多的应用。

 

 

Annchain(众安链)是由众安科技和众安-复旦区块链与信息安全联合实验室自主研发,国内首个基于DAG架构并支持智能合约的高性能通用区块链平台。作为工信部指导的中国区块链技术和产业发展论坛两大开源项目之一,Annchain立足于中国,致力于助力中国抢占区块链全球话语权。

Annchain专注于易用、高效、安全和隐私等关键特性,兼具模块化和高度可定制的特点。目前已在数十家生态伙伴的商业场景中落地,场景涵盖农业溯源、珠宝溯源、资产通证化、公益、医疗数据共享、广告分发平台等。开发者可基于Annchain高效构建适合自身的区块链应用,期待更多伙伴加入我们一起探索新应用。

 

众安科技

众安信息技术服务有限公司(简称“众安科技”)成立于2016年11月2日,是由蚂蚁金服、腾讯、中国平安发起设立的众安保险旗下的全资科技子公司,专注于区块链、人工智能、密码学、物联网等前沿技术研究。众安科技汇聚行业内的顶尖科研人才,其中区块链团队规模近200人,多数来自于各顶尖区块链团队。

 

众安-复旦区块链与信息安全联合实验室

众安-复旦区块链与信息安全联合实验室是国内首个高校与企业联合组建的专一区块链实验室,专注于区块链相关技术的底层理论研究。同时,实验室联合复旦大学、上海众人信息技术有限公司成立了上海区块链工程研究中心。中心伴随构建长效的产学研用合作机制的同时,支撑开展增强的密码学能力,高性能区块链(如Annchain)等,为行业提供示范。

 

 

更多关于annchain:

www.annchain.io

Github: github.com/annchain

Twitter: https://twitter.com/Annchain007

Facebook: https://www.facebook.com/Annchain-295110641341258

TelegramGroup: t.me/Annchain

TelegramChannel: t.me/AnnchainChannel

 

                                                                            扫码备注昵称+研发方向

                                                                             加入annchain技术社群

 

                                                        

你可能感兴趣的:(行业研究,技术博客)