作者:Annchain  

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

Bloom Filter简介

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

算法描述

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

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

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

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

错误率分析

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

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

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

错误率为:

简化为:

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

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技术社群

布隆过滤器在区块链中的应用相关推荐

  1. 区块链中密码学与安全技术

    区块链的定义 区块链的定义,应当是:区块链是一种按照时间顺序将数据进行分布式存储的块链式数据结构,它利用共识机制进行数据验证,利用密码学进行数据保护和用户安全访问,利用智能合约来操作数据,从而成为不可 ...

  2. 密码学在区块链中的应用 【八】

    密码学在区块链中的应用 [8] 区块链相关密码学 数据的组织方式,区块链的块链结构.通过块的哈希链接起来的链. 世界状态:使用 merkle 哈希树组织,便于快速检索和网络传输.如账户树,交易树,账单 ...

  3. 区块链中的智能合约是什么?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. "智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执 ...

  4. 在公共区块链中通过加密保护数据

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 隐私限制 在处理或交换业务文件时,贸易伙伴可能需要某些隐私因素. (1)交易数据的隐私性: 交易数据仅供交易双方 ...

  5. java中block类6_Java 实现区块链中的区块,BLOCK的实现

    区块链由若干个区块组成,区块是区块链的基础单元 2.区块链中区块的基本属性 区块6个属性的说明-Index 区块的索引值,区块链中的唯一键 区块6个属性的说明-Timestamp 区块的时间戳,用于区 ...

  6. 区块链100讲:区块链中的随机数

    2019独角兽企业重金招聘Python工程师标准>>> 我们生活的环境充满了随机性.一直以来,运气,概率和命运这些概念都与随机性紧紧联系在一起.所有人类无法理解或无法预测的事物往往都 ...

  7. 分析隐藏在比特币区块链中的Pony CC服务器

    介绍 Redaman是一种通过网络钓鱼攻击活动进行传播的银行恶意软件,主要目标用户为俄语用户.该恶意软件最早出现在2015年,当时该恶意软件被称为RTM银行木马,新版本的Redaman出现在2017年 ...

  8. 区块链中的基本概念整理

    区块链中的基本概念整理 区块链本身是由多种技术集合而成,涉及了多方面的内容,而在其组合应用的过程中,同时也产生了很多新的概念.对于这些概念的整理和理解,有助于更加深刻的理解区块链的本质,也可以指导我们 ...

  9. rsa签名算法实现_国密算法在链化未来区块链中的运用

    密码学是区块链的基础,区块链中大量采用了密码学算法,包括对称加密,非对称加密,单向散列算法,数字签名等技术. 为了实现密码学技术的自主可控,中国也定义了自己的国密标准,2020年央行颁布的<金融 ...

最新文章

  1. shell基础:环境变量
  2. SpringBoot整合security的登录问题
  3. dojo gridx修改表头
  4. visio2013画图时两条直线交叉 如何让它不弯曲
  5. spring json
  6. salt java 日志 乱码_Saltstack执行cmd.run重启tomcat后出现日志乱码(15)
  7. MySQL优化filler值_MySQL 性能优化神器 Explain 使用分析
  8. python使用matplotlib的savefig保存时图片保存不完整的问题
  9. DispatcherHelper
  10. 看完这一篇,在leetcode上双指针法题目你随便做!
  11. 启用IIS6的GZIP功能,提高网站打开速度,减少带宽占用【转】
  12. SPSS统计分析过程包括描述性统计、均值比较、一般线性模型、相关分析、回归分析、对数线性模型、聚类分析、数据简化、生存分析、时间序列分析、多重响应等几大类...
  13. How long have you been studying English(第一节)
  14. 2017 沪牌中标后流程
  15. Access 一些内部函数(Access 帮助里) .
  16. mybatis入门学习(九) -DB环境切换、使用注解、事务提交、获取自增ID、多参数传参、鉴别器、内置参数、批量写入、Oracle字段无法插入 null 值
  17. 联想台式计算机出厂号在哪里,联想电脑怎么查看主机编号_联想电脑编号在哪里【图】...
  18. OpenSSL 常用命令
  19. read_exposure_data()
  20. 匈牙利算法实现(sklearn 实现与 scipy实现测试)

热门文章

  1. 网络舆情监控系统之军犬网络舆情监控系统
  2. 2018年宝鸡市高考复课报告会材料
  3. SV--线程(semaphore)
  4. 一级计算机综合训练第五卷,2014年计算机等级考试一级MSOFFICE综合训练(5).pdf
  5. buildroot修改QT源码支持屏幕旋转
  6. 【unity实践demo】-坦克炮管旋转发射炮弹
  7. Top 10 Unanswered Questions in Geeky Movies
  8. 数字化校园整体解决方案
  9. 彩虹代刷商品怎么编辑html,彩虹代刷网修改订单数和交易金额教程
  10. 【调剂】2020齐齐哈尔大学通信与信息系统,电子与通信工程 硕士调剂预招生...