布隆过滤器(Bloom Filter)、SPV和比特币
布隆过滤器(Bloom Filter)是1970年由布隆提出的,它实际上是由一个很长的二进制向量和一系列随意映射函数组成。
它是一种基于概率的数据结构,主要用来判断某个元素是否在集合内,它具有运行速度快(时间效率),占用内存小的优点(空间效率),但是有一定的误识别率和删除困难的问题。它能够告诉你某个元素一定不在集合内或可能在集合内。
技术博客,专注于后台开发技术、机器学习、区块链技术、移动安全等。
布隆过滤器(Bloom Filter)是1970年由布隆提出的,它实际上是由一个很长的二进制向量和一系列随意映射函数组成。
它是一种基于概率的数据结构,主要用来判断某个元素是否在集合内,它具有运行速度快(时间效率),占用内存小的优点(空间效率),但是有一定的误识别率和删除困难的问题。它能够告诉你某个元素一定不在集合内或可能在集合内。
如果说,服务器只有一个节点,那么,要保证一致性,没有任何问题,因为所有读写都在一个节点上发生。那如果server端有2个、3个甚至更多节点,要怎么达成一致性呢?下面就来介绍其中一种分布式共识算法—raft算法
共识机制是区块链的灵魂,它解决了区块链去中心化网络中两个关键的问题:谁来记账(创建区块)以及如何维护全网数据的一致性。它的目标就是让网络中的各个节点形成一致的区块链结构,也就是说需要满足以下属性:
一致性:所有诚实节点保存的区块链的前缀部分完全相同
有效性:由某个诚实节点发布的信息终将被其他所有节点记录在自己的区块链中
如今很多P2P网络的实现都采用DHT的方式实现查找,其中Kademlia(简称Kad)算法由于其简单性、灵活性、安全性成为主流的实现方式。下面我们就来详细分析这个应用于比特币和以太坊P2P网络中的Kad算法。
包括比特币、以太坊等在内的去中心化的区块链平台,其底层网络都是采用的P2P技术实现,每个节点都是对等的。而本文,则先通过介绍P2P技术的特点和发展历史,让大家对P2P这个技术的来龙去脉有一个初步的认识和了解。然后在下一篇文章中,我会详细介绍第三代P2P技术(DHT)—Kademlia算法的实现原理。
这篇文章主要介绍比特币中Merkle树的数据结构、原理特点及其应用。同时,我们也会介绍比特币轻钱包的实现基础–简单支付验证(Simple Payment Verification, 即SPV),并详细介绍它的原理机制以及跟Merkle树的关系。
在《区块链的密码学基础》中,我们在数字签名和验证部分提出一个疑问:如果一个黑客,将发送者的私钥和接收者手上拥有的发送者的公钥都替换成黑客自己的私钥和公钥。接收者要怎么才知道这个公钥究竟是不是发送者本人呢?接下来通过讲解数字证书的原理来回答这个问题。
本文介绍区块链中使用到的密码学基础技术,包括:哈希算法、非对称加密技术、数字签名等。