区块链学习(5)比特币网络

比特币采用了P2P(peer-to-peer)网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,不存在任何“特殊”节点。P2P网络中不存在中心化的服务,计算机网络中的课程已经讲过了P2P,不过为了更好了解的P2P,先看下中心化的网络结构。

从图中可以看出中心化的结构节点直接的通讯通过一个中心化的服务器来传输。日常生活中这种中心化的结构还是比较常见的,像银行转账,银行就是这个中心话的节点。羡慕再看看P2P。

可以看出P2P的网络中每个节点之间可以相互通信,没有中心化的节点。一个结点可以是服务端,也可以是客户端。不过比特币网络没这么简单

比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工。每个比特币节点都是路由、区块链数据库、挖矿、钱包服务的功能集合。同时具有这四种功能的结点就是全节点。 一个全节点包含完整的区块链,因此可以独立的验证的所有交易。

通过不同功能的组合,比特币网络上运行着不同功能的节点。挖矿节点,独立矿工,spv节点等。

随着比特币的使用热潮,SPV节点逐渐变成比特币节点(尤其是比特币钱包)所采用的最常见的形式。spv节点不需要存储完整区块链,SPV节点只需下载区块头,而不用下载包含在每个区块中的交易信息。接下来看看spv的原理。简单来讲,就是比特币网络里的节点在打包一个区块的时候,会对区块里所有的交易进行验证,并且,一个交易还会得到6至7次的确认来确保交易最后的完成。正是如此,在使用简单支付验证时,只要判断出一个交易在主链上的某个区块里出现过,则可以证明该交易之前已被验证过。不过,SPV节点对特定数据的请求可能无意中透露了钱包里的地址信息。因此在比特币中的Bloom过滤器,用以解决SPV节点的隐私风险问题。

bloom算法类似一个hash set,1. 首先需要k个hash函数,每个函数可以把key散列成为1个整数
2. 初始化时,需要一个长度为n比特的数组,每个比特位初始化为0
3. 某个key加入集合时,用k个hash函数计算出k个散列值,并把数组中对应的比特位置为1
4. 判断某个key是否在集合时,用k个hash函数计算出k个散列值,并查询数组中对应的比特位,如果所有的比特位都是1,认为在集合中。但算法判断key在集合中时,有一定的概率key其实不在集合中,因为这些位上的1有可能是前几个key的。

上图就是关键字A进行Bloom算法的过程,这是一个16位,3个哈希函数的Bloom过滤器。Bloom过滤器数组里的每一个数的初始值为零。关键词被加到Bloom过滤器中之前,会依次通过每一个哈希函数运算一次。该输入经第一个哈希函数运算后得到了一个在1和16之间的数,它在该数组(编号依次为1至N)中所对应的位被置为1,从而把哈希函数的输出记录下来。接着再进行下一个哈希函数的运算,把另外一位置为1;以此类推。当全部3个哈希函数都运算过之后,一共有3个位的值从0变成了1,这个关键词也被“记录”在了Bloom过滤器里。

原文地址:https://www.cnblogs.com/mambakb/p/9640919.html

时间: 2024-07-30 22:34:53

区块链学习(5)比特币网络的相关文章

区块链学习之比特币

比特币(Bitcoin:比特金)最早是一种网络虚拟货币,可以购买现实生活当中的物品.它的特点是分散化.匿名.只能在数字世界使用,不属于任何国家和金融机构,并且不受地域的限制,可以在世界上的任何地方兑换它. 比特币产生原理: 从比特币的本质说起,比特币的本质其实就是一堆复杂算法所生成的特解.特解是指方程组所能得到无限个(其实比特币是有限个)解中的一组.而每一个特解都能解开方程并且是唯一的.以人民币来比喻的话,比特币就是人民币的序列号,你知道了某张钞票上的序列号,你就拥有了这张钞票. 而挖矿的过程就

区块链学习(一)

从事C++服务器开发六年多了,主要是做并发服务器和游戏相关开发,区块链技术新兴起,自己也是很感兴趣,我是零基础学区块链的,给自己设定了一个规划,先读一读区块链相关的基础和概念,以及基本算法,然后用成熟的引擎做一个demo,接下来不断深入学习. 什么是区块链? 一两句话很难解释清楚,至少我自己还不能概括的很全面.我自己的理解是区块链技术包含了很多功能,如点对点传输,分布式数据存储,利用加密和共识算法实现数据的统一.区块链是多个技术的合理应用和创新,我觉得应该在以后的学习中不断去理解. 什么是比特币

区块链学习(2)--以太坊中基本概念

1.以太币单位换算.以太坊的单位,沿袭了科学界的传统,用做过杰出贡献的数学.密码学专家的名字命名.以太坊的最小单位是 Wei. Kwei(Babbage)= 10 的 3 次方 Wei Mwei(Lovelace)= 10 的 6 次方 Wei Gwei(Shannon)= 10 的 9 次方 Wei MicroEther(Szabo)= 10 的 12 次方 Wei MilliEther(Finney)= 10 的 15 次方 Wei Ether = 10 的 18 次方 Wei 2.以太坊账

区块链三大方向:比特币,其他公有链和区块链联盟,以及私有链。

该行业可以分成了三大方向,分别是比特币,其他公有链和区块链联盟,以及私有链. 依照上述三个类别,我将对技术如何在 2017 年影响区块链行业做出一些预测,具体如下: 比特币:价格还会继续攀升 大约三年半之前,当 David Johnston 和我联合创立 BitAngels 公司的时候,那时的比特币行业是非常新奇的行业,很多传统投资人并不太了解.而我则经历了人生中最刺激的一场"过山车"事件--比特币在 2013 年的价格为 13 美元,之后火箭般蹿升到 233 美元,接着又断崖式跌倒

剑英的区块链学习手记(一)

开篇布拉拉 因为参与了小蚁的c#智能合约编译器的开发,让我第一次近距离接触到区块链技术. 以前我对区块链技术的了解,只知道有一种叫做比特币的玩意儿,以前有同事在几百块一个比特币的时候屯了一批,后来价格炒高了,一下子成了人生赢家. 完全外行的了解,但是这个例子让我有了一个原始的理解,这玩意儿和钱有关系. 后来有幸获得小蚁核心开发者张铮文的面授,讲了些啥没记住,就记住了他掏出钱包的帅气身姿. 这给我留下了更深的印象,区块链技术,谈的就是钱. 铮文对区块链的定义是状态机,去中心化的分布式的状态机. 虽

区块链学习记录

[深度]终于把区块链的技术与应用讲清楚了(57张PPT) bitcoin 比特币源码学习笔记(一) VC编译调试比特币源码 以太坊官网 以太坊Github 以太坊go-ethereum项目源码本地环境搭建

区块链学习一

一.区块链的本质 区块链是什么?一句话,它是一种特殊的分布式数据库. 首先,区块链的主要作用是储存信息.任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库. 其次,任何人都可以架设服务器,加入区块链网络,成为一个节点.区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库.你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致. 二.区块链的最大特点 分布式数据库并非新发明,市场上早有此类产品.但是,区块链有一个革命性特点. 区块链没有

区块链学习路线

2018年春节最火热的概念应该就是区块链了,从百度的莱茨狗和网易星球刷屏朋友圈,到3点钟区块链无眠群的大火, 大佬们纷纷进军区块链,不了解区块链好像错过了什么,这里把自己学习区块链过程中的一些资料进行索引,可以循序渐进的了解区块链技术及其应用. 一.目标 比特币发展历史,挖矿以及相关应用 区块链底层技术,如共识算法, 侧链技术, 密码学知识等,理解PKI基本知识和原理 研究以太坊技术,了解ERC20,能够自行开发DAPP 熟悉Hyperledger Fabric 1.0架构,了解其业务流程和设计

区块链学习(7) 共识

在之前的文章中已经说过了比特币是一种去中心化的分布式账本,因此各节点之间是相互不信任的.那么比特币网络中的所有参与者如何达成对任意一个所有权的共识呢?这篇文章就会介绍如何解决这个问题. 比特币的共识由所有节点的4个独立过程相互作用而产生: 1.每个节点(挖矿节点)依据标准对每个交易进行独立验证 2.挖矿节点通过完成工作量证明,将交易记录独立打包进新区块 3.每个节点独立的对新区块进行校验并组装进区块链 4.每个节点对区块链进行独立选择,在工作量证明机制下选择累计工作量最大的区块链 同时,挖矿也会