- 浏览: 763174 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
Bloom filter:是一种节省空间,高效率的数据表示和查询结构.它可以利用位数组很简洁地表示一个集合,并能以很高的概率判断一个元素是否属于这个集合.因此,这种数据结构适合应用在能容忍低错误率的场合.
将一个元素映射到一个m长度的阵列上的一个点,当这个点是1时,那么这个元素在集合内,反之则不在集合内.这个方法的缺点就是当检测的元素很多的时候可能会有冲突,解决方法就是使用k个Hash函数对应k个点,如果所有点都是1的话,那么元素在集合内,如果有0的话,那么元素不在集合内
简单来说,就是将要检测的转化为字符串之后进行多次hash,每一次都检测在数据中的下标是0还是1,如果都是1则表示存在
主要用于解决某些元素是否为集合中元素的判断问题.通过一定的错误率换取空间的节省和查询的高效
SPV节点:Simplify Payment Verification,信任别的节点对区块和交易作校验,一般会在与邻节点的连接中设置过滤器,在比特币中叫做Bloom过滤器
Bloom过滤器:只接收包含钱包里的公钥地址的交易
1.当一个邻节点看到一个交易与SPV节点的过滤器设置的条件符合,它就会用merkleblock消息来给该SPV节点发送一个区块
2.该merkleblock消息包含区块头和一个连接该交易到Merkle树根的一个merkle路径.
3.SPV节点可以利用该merkle路径来把交易和包含交易的区块联系起来,并验证交易包含在区块中
4.SPV节点也用区块头来验证包含交易的区块和区块链中的其他区块能连上
5.这两个验证可以证明交易是记录在区块链上.总之,SPV节点只需要接收小于1KB的区块头和merkle路径数据,这个是全节点接收数据的千分之一(目前全节点接收区块的大小是1M)
将一个元素映射到一个m长度的阵列上的一个点,当这个点是1时,那么这个元素在集合内,反之则不在集合内.这个方法的缺点就是当检测的元素很多的时候可能会有冲突,解决方法就是使用k个Hash函数对应k个点,如果所有点都是1的话,那么元素在集合内,如果有0的话,那么元素不在集合内
简单来说,就是将要检测的转化为字符串之后进行多次hash,每一次都检测在数据中的下标是0还是1,如果都是1则表示存在
主要用于解决某些元素是否为集合中元素的判断问题.通过一定的错误率换取空间的节省和查询的高效
SPV节点:Simplify Payment Verification,信任别的节点对区块和交易作校验,一般会在与邻节点的连接中设置过滤器,在比特币中叫做Bloom过滤器
Bloom过滤器:只接收包含钱包里的公钥地址的交易
1.当一个邻节点看到一个交易与SPV节点的过滤器设置的条件符合,它就会用merkleblock消息来给该SPV节点发送一个区块
2.该merkleblock消息包含区块头和一个连接该交易到Merkle树根的一个merkle路径.
3.SPV节点可以利用该merkle路径来把交易和包含交易的区块联系起来,并验证交易包含在区块中
4.SPV节点也用区块头来验证包含交易的区块和区块链中的其他区块能连上
5.这两个验证可以证明交易是记录在区块链上.总之,SPV节点只需要接收小于1KB的区块头和merkle路径数据,这个是全节点接收数据的千分之一(目前全节点接收区块的大小是1M)
发表评论
-
chaintips
2019-07-02 09:07 3071.invalid 该分支包含至少一块无效区块。 2.head ... -
比特币RPC
2019-02-13 08:10 401代码详解:https://mistydew.github.io ... -
比特币命令行参数
2019-02-03 09:04 429-?:提示常用的命令行参数并退出 -version:打印版本然 ... -
比特币消息类型
2019-01-27 09:28 6271.VERSION:当主动连接上对方时,发送version消息 ... -
Schnorr数字签名
2019-01-21 08:08 731Schnorr:基于ElGamal签名与离散对数问题,1989 ... -
椭圆曲线密码
2019-01-19 08:51 351当前,认为比较安全有效的密码系统主要包括RSA体制,ElGam ... -
RIPEMD-160
2019-01-17 21:34 991RIPEMD(RACE Intergrity Primitiv ... -
SHA-3
2019-01-16 21:48 275SHA-3算法整体采用Sponge结构,分为吸收和榨取两个阶段 ... -
ECDSA
2019-01-15 22:22 345ECDSA:椭圆曲线数字签名算法 secp256k1:标准椭 ... -
SHA-224与SHA-384
2019-01-15 08:02 781SHA-224和SHA-284是SHA256与SHA512两种 ... -
SHA-256
2019-01-14 21:54 289SHA-2(SHA-224,SHA-256,SHA-384,S ... -
SHA-512
2019-01-14 21:53 487SHA-512:是SHA-2中安全性能较高的算法,主要由明文填 ... -
SHA1
2019-01-11 08:13 326SHA1:模仿MD5进行设计的,对任意长度的消息均是生成160 ... -
外带数据
2019-01-07 08:08 400外带数据:保存在区块链但不进行货币交易的信息,比如需要永久保存 ... -
watch-only 地址
2019-01-06 16:34 469watch-only 地址:监控某一个地址,只能看不能花,相当 ... -
签名模式
2019-01-05 09:24 732交易的签名方式可以通过SIGHASH符号来控制,该符号附加在签 ... -
Script(脚本)字段
2018-12-28 07:57 4551.常见关键字段 OP_0/OP_FA ... -
coinbase交易
2018-12-26 22:14 526coinbase交易:用于凭空产生比特币 1.只有一个输入,该 ... -
根据地址查询私钥
2018-12-26 09:44 691字符串转私钥 1.先将字符串decode base58,获取C ... -
难度值
2018-12-26 07:45 498难度值:它决定了节点需要经过多少次哈希运算才能产生一个合法的区 ...
相关推荐
### Bloom过滤器学习笔记 #### 一、Bloom过滤器简介与原理 **Bloom过滤器**是一种空间效率极高的概率型数据结构,用于检验一个元素是否在一个集合中。它最大的特点是快速且节省空间,但是有一定的误判率,并且不能...
**Bloom过滤器**是一种空间效率极高的概率型数据结构,用于测试一个元素是否在一个集合中。它由布伦南·霍克斯特罗特(Burton Howard Bloom)于1970年提出,主要用于解决大数据集的存储和查找问题。在C++中实现Bloom...
标题中的“行业分类-设备装置-基于带有存储结构的Bloom过滤器的关键词可搜索加密方法”揭示了这个主题属于IT行业中与数据安全和搜索效率优化相关的领域。它涉及到设备装置,这可能指的是硬件系统或者特定的存储设备...
在计算Bloom过滤器的false positive概率时,我们需要考虑几个关键参数:位数组的大小(m)、使用的哈希函数数量(k)以及要插入的元素数量(n)。假定每个哈希函数选择位数组中每个bit位的概率相同,我们可以推导出...
bloom-filter-scala, 用于 Scala的Bloom过滤器,最快的JVM Scala的 Bloom filter 概述Bloom过滤器是一种空间高效的数据结构,用于测试某个元素是否是集合的成员。 false 正匹配是可能的,但 false 负数不是。 ...
Java-BloomFilter, 在Java中,一个独立的Bloom过滤器 java-bloomfilterJava bloomfilter是一个独立于Java的Bloom过滤器实现。 它旨在在不需要额外库开销的情况下包含在现有项目中。 第一个版本是由 Ian的博客条目...
在Go语言环境下,为了满足高性能和线程安全的需求,`ring`库提供了一个优秀的Bloom过滤器实现。 首先,让我们深入理解Bloom Filter的工作原理。Bloom Filter由一块位数组和几个不同的哈希函数组成。当一个元素被...
虽然 Bloom 过滤器是众所周知的节省空间的数据结构,可以服务于“如果项目 x 在一个集合中?”之类的查询,但它们不支持删除。它们启用删除的差异(如计算 Bloom 过滤器)通常需要更多空间。 Cuckoo 过滤器提供了...
whatlanguage, 一种使用bloom过滤器实现速度的ruby 语言检测库 whatlanguage由 Peter Cooper文本语言检测。快速。快速。内存高效且全部为纯 ruby 。 针对上述速度和内存优势使用Bloom过滤器。 它适用于长度超过 10个...
在此项目中,我实现了Bloom Bloom过滤器,编码Bloom Bloom过滤器,Counting Bloom Filter计数。 这些用于Google Bigtable,Apache HBase,Apache Cassandra和PostgreSQL等系统中。 Google Bigtable,Apache HBase,...
【布隆过滤器详解及其在缓存击穿中的应用】 布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它通过使用多个哈希函数将元素映射到一个固定大小的位数组上,允许存在一定比例...
Guava的BloomFilter提供了创建、添加元素和查询元素的方法,并且支持动态调整过滤器的大小以控制误判率。以下是一个简单的使用示例: ```java import com.google.common.hash.BloomFilter; import ...
**锈花过滤器:Rust中的高效Bloom过滤器实现** 在计算机科学中,Bloom过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会误判,即报告一个不在集合中的元素为在集合中,但...
Bloom过滤器是一种高效的空间节省的数据结构,常用于判断一个元素是否可能存在于大规模集合中,而无需存储实际的元素。这种技术由Burton Howard Bloom在1970年提出,其设计目标是解决大规模数据集的查找问题,尤其是...
1. **Bloom过滤器**:Bloom过滤器是一种节省空间的数据结构,通过使用多个哈希函数将元素映射到位数组上,以此来判断元素是否存在。在数据库领域,Bloom过滤器常用于减少不必要的磁盘I/O,例如在索引查询中避免无效...
如果该项目实际上在集合中,则Bloom过滤器将永远不会失败(真正的阳性率为1.0); 但很容易出现误报。 艺术是正确选择k和m 。 在此实现中,使用的哈希函数是 ,这是一种非加密哈希函数。 此实现接受用于设置和...
CuckooFilter是一种相对较新的数据结构,设计用于解决在有限空间内存储大量唯一元素的问题,类似于经典的Bloom过滤器。它的出现主要是为了弥补Bloom过滤器的一些不足,尤其是在内存效率和删除操作上的优化。 首先,...
Scala的Bloom过滤器 总览 “ Bloom过滤器是一种节省空间的概率数据结构,用于测试元素是否为集合的成员。可能会出现假阳性匹配,但否定否定匹配。换句话说,查询返回“集合”或“绝对不在集合中。”可以将元素添加到...
**Bloom过滤器详解——基于Crystal的实现** Bloom过滤器是一种空间效率极高的概率型数据结构,由Burton Howard Bloom在1970年提出。它被设计用于判断一个元素是否可能存在于一个大规模集合中,但可能会产生误报...