分析比特币网络:一种去中心化、点对点的网络架构

比特币采用了基于互联网的点对点(P2P:peer-to-peer)分布式网络架构。
比特币网络可以认为是按照比特币P2P协议运行的一系列节点的集合。
本文来分析下比特币网络,了解它跟传统中心化网络的区别,以及比特币网络是如何发现相邻节点的。

中心化网络

为了更好的理解P2P网络,我们先来看看传统的中心化模型:

这是一种典型的星型(“中心化”)结构,我们常见B/S及C/S网络架构就是这种模型,C1 、C2 、C3等之间没法直接的连接,C节点如果要连接必须要通过中心化S节点做为桥梁。
中心化节点充当服务者、中介作用,比如我们没有办法把资金直接从一个人转移给另一个人,必须通过银行这个中介。

P2P网络

P2P网络是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点,每个网络节点以扁平(flat)的拓扑结构相互连通。

对比中心化网络,在P2P网络中不存在任何服务端(server)、中央化的服务。
P2P网络的节点之间交互连接、协同,每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务,每个节点即是服务端又是客户端。
P2P网络模型除应用于比特币网络,使用广泛的BT下载就是基于P2P网络。

P2P网络不仅仅去除了中心化带来的风险(中心化可能作恶),还可以提高传输的效率。(中心化网络当能也有优点)

如何发现节点

既然每个网络节点都是平等的(是指在网络层面上节点是平等的,但各节点在功能上可以有不同的分工, 如钱包节点、挖矿节点等),不存在任何“特殊”中心节点,那么当新的网络节点启动后,它是如何跟其他的节点建立连接,从而加入到比特币网络呢?

在中心化网络中,新加入的节点只要连接“特殊”的中心节点就可以加入网络。

为了能够加入到比特币网络,比特币客户端会做一下几件事情:

  1. 节点会记住它最近成功连接的网络节点,当重新启动后它可以迅速与先前的对等节点网络重新建立连接。
  2. 节点会在失去已有连接时尝试发现新节点。
  3. 当建立一个或多个连接后,节点将一条包含自身IP地址消息发送给其相邻节点。相邻节点再将此消息依次转发给它们各自的相邻节点,从而保证节点信息被多个节点所接收、保证连接更稳定。
  4. 新接入的节点可以向它的相邻节点发送获取地址getaddr消息,要求它们返回其已知对等节点的IP地址列表。节点可以找到需连接到的对等节点。
  5. 在节点启动时,可以给节点指定一个正活跃节点IP, 如果没有,客户端也维持一个列表,列出了那些长期稳定运行的节点。这样的节点也被称为种子节点(其实和BT下载的种子文件道理是一样的),就可以通过种子节点来快速发现网络中的其他节点。

节点通信简述

比特币节点通常采用TCP协议、使用8333端口与相邻节点建立连接, 建立连接时也会有认证“握手”的通信过程,用来确定协议版本,软件版本,节点IP,区块高度等。

当节点连接到相邻节点后,接着就开始跟相邻节点同步区块链数据(轻量级钱包应用其实不会同步所有区块数据),节点们会交换一个getblocks消息,它包含本地区块链最顶端的哈希值。如果某个节点识别出它接收到的哈希值并不属于顶端区块,而是属于一个非顶端区块的旧区块,就说其自身的本地区块链比其他节点的区块链更长,并告诉其他节点需要补充区块,其他节点发送getdata消息来请求区块,验证后更新到本地区块链中。

深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客

时间: 2024-11-07 03:15:08

分析比特币网络:一种去中心化、点对点的网络架构的相关文章

谈谈几种去中心化币币交易所的优缺点

微信公众号:GAIAWorld  回顾加密货币的发展历程,凭借"安全可靠,难于追踪,去中心化"的优点受到全世界的追捧.全球加密货币总市值超过3000亿美金,成为新经济的标志.  然而,全球大部分交易所都是中心化的,他们既不安全也不匿名,而且被少数实体控制.过去的十年,不断有加密货币交易所被攻破,加密货币被盗等事件发生.旧的中心化加密货币交易所倒下了,新的中心化加密货币交易所又站了起来.  中心化交易所的现状和不足时刻提醒人们,加密货币的未来还有很长的路要走,至少现在的它并不像想象中那么

谈互联网开放平台:“去中心化”大势所趋 zz

文/磐石之心 几天前与好友聊到众筹咖啡馆的事情,他向我讲述了一个非常具有特色的众筹咖啡馆案例.而这个案例也引发我对当前互联网开放.去中心和集权的一些思考,今天就简单写出来与大家分享. 一个无赚钱目的的众筹咖啡馆案例 众筹咖啡馆其实听起来并无新意,无非是有一个发起人,找一群人入股,然后通过咖啡馆进行营利,然后众筹者参与分成.而众筹项目的发起人是咖啡馆的最大股东,对咖啡馆具有所有权和经营权. 但是我今天要讲的众筹咖啡馆案例与普通的众筹案例完全不同.这个特色众筹咖啡馆项目是在北大毕业的人群中发起,这群

以太坊开发完整去中心化应用 —— 区块链投票系统

第一节 课程概述 本课程面向初学者,内容涵盖以太坊开发相关的基本概念,并将手把手地教大家如何构建一个 基于以太坊的完整去中心化应用 -- 区块链投票系统. ethereum logo 通过本课程的学习,你将掌握: 以太坊区块链的基本知识 开发和部署以太坊合约所需的软件环境 使用高级语言(solidity)编写以太坊合约 使用NodeJS编译.部署合约并与之交互 使用Truffle框架开发分布式应用 使用控制台或网页与合约进行交互 前序知识要求 为了顺利完成本课程,最好对以下技术已经有一些基本了解

极客钱包-区块链技术与去中心化网络前瞻

在区块链的世界里,我们天天嚷嚷着去中心化.那到底什么是去中心化,它的核心又是啥?他又是如何改变生产关系的?今天,极客钱包就带大家一起来探讨区块链的去中心化及它的核心! 区块链是公开透明.不可篡改的账本,这是它最基本的含义.由于记账人不是中心化的主体,是通过一定的共识机制,比如PoW挖矿竞争记账,没有人可以控制账本.没人可以篡改账本.看似简单的去中心化账本,隐藏了巨大的能量. 据统计,今年各省市两会期间,越来越多的地×××府在报告中提到要发展区块链技术.区块链技术或许会成为今年全国两会期间另一个值

区块链对人工智能的变革:去中心化将带来数据新范式

区块链对人工智能的变革:去中心化将带来数据新范式 2017-01-03 14:59:27  来源:网络大数据  CIO时代抢沙发 摘要:本文基于我个人在人工智能和区块链研究方面的经验,描述了区块链技术可以如何辅助人工智能.二者结合一处即发!区块链技术--尤其是行星尺度的--可以帮助实现人工智能和数据团体长期以来的一些梦想,并打开一些机会.关键词: 区块链 人工智能 近年,从围棋到人类水平的语音识别,人工智能(AI)研究者终于在他们几十年一直努力探索的领域取得了突破.取得突破进展的关键一点是研究者

去中心化概念模型与架构设计

去中心化概念模型与架构设计 今天打算写写关于 IM 去中心化涉及的架构模型变化和设计思路,去中心化的概念就是说用户的访问不是集中在一个数据中心,这里的去中心是针对数据中心而言的. 站在这个角度而言,实际上并非所有的业务都能做去中心化设计,对于一致性要求越高的业务去中心化越难做.比如电商领域的库存就是一个对一致性要求很高的业务,不能超卖也不能少卖,这在单中心容易实现,但多中心纯从技术层面感觉无解,可能需要从业务和技术层面一起去做个折衷. 反过来看 IM 的业务场景是非常适合做去中心化设计的,因为其

BLOCKCHAIN 区块链的去中心化P2P服务的JAVA代码的实现

为什么要用去中心化? 借贷关系证明举例 中心化借贷关系证明带来的问题: 机器挂了,公司倒闭了,被黑客黑了,借贷关系就不存在了 借贷关系涉及到个人隐私,中心化的机构会拿去做大数据分析.例如各大电子商务公司,会根据购物习惯,分析个人喜好,继而指导利益可图的商业行为,但这本身是侵犯隐私的. 去中心化可以解决上述的问题: 去中心化的一个节点挂了,对数据丢失影响很小,节点越多,黑客越难攻击. 使用复杂的密码学,保证隐私 区块链中的P2P概念 P2P(Peer to Peer)对等计算机或对等网络,一种计算

中心化和去中心化

我们先看一个斗地主的故事:商务男,老爷爷和小男孩在一起斗地主, 地主赢了得10块钱, 农民赢了每人得5块钱.为了避免赖账, 他们约定每人拿出来100块钱, 存在圣诞老人那里, 圣诞老人负责记账. 圣诞老人是他们都信任的中心,每次打完牌都把比赛结果告诉圣诞老人,圣诞老人负责记账.例如商务男作为地主赢得了第一局比赛, 这时候,我们问题来了: 问题 圣诞老人年迈已高, 要是突然挂了怎么办? 村里有黑客出现, 把存在圣诞老人那钱偷走了怎么办? 圣诞老人坐地起价, 要求每次记账都收手续费怎么办? 圣诞老人

一个轻客户端,多语言支持,去中心化,自动负载,可扩展的实时数据写服务的实现方案讨论

背景 背景是设计一个实时数据接入的模块,负责接收客户端的实时数据写入(如日志流,点击流),数据支持直接下沉到HBase上(后续提供HBase上的查询),或先持久化到Kafka里,方便后续进行一些计算和处理,再下沉到文件系统或做别的输出. 在设计中,对于客户端和服务端有这么些目标. 客户端需要支持多语言(Java,C++),做得尽量轻量级,只要连上服务端的ip:port,以RPC的形式调用简单的write就可以把数据写出去.客户端不承担任何逻辑的处理,服务端的负载均衡对客户端是透明的. 服务端想要