深入浅出区块链
陈浩
元界CTO
立即订阅
16618 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 帮你从0到1深入学习区块链技术
免费
第一章 浅说区块链基础 (8讲)
第1讲 | 到底什么才是区块链?
第2讲 | 区块链到底是怎么运行的?
第3讲 | 浅说区块链共识机制
第4讲 | 区块链的应用类型
第5讲 | 如何理解数字货币?它与区块链又是什么样的关系?
第6讲 | 理解区块链之前,先上手体验一把数字货币
第7讲 | 区块链的常见误区
第8讲 | 最主流区块链项目有哪些?
第二章 深入区块链技术 (15讲)
第9讲 | 深入区块链技术(一):技术基础
第10讲 | 深入区块链技术(二):P2P网络
第11讲 | 深入区块链技术(三):共识算法与分布式一致性算法
第12讲 | 深入区块链技术(四):PoW共识
第13讲 | 深入区块链技术(五):PoS共识机制
第14讲 | 深入区块链技术(六):DPoS共识机制
第15讲 | 深入区块链技术(七):哈希与加密算法
第16讲 | 深入区块链技术(八): UTXO与普通账户模型
第17讲 | 去中心化与区块链交易性能
第18讲 | 智能合约与以太坊
第19讲 | 上手搭建一条自己的智能合约
第20讲 | 区块链项目详解:比特股BTS
第21讲 | 引人瞩目的区块链项目:EOS、IOTA、Cardano
第22讲 | 国内区块链项目技术一览
第23讲 | 联盟链和它的困境
第三章 数字货币与数字资产 (5讲)
第24讲 | 比特币专题(一)历史与货币
第25讲 | 比特币专题(二):扩容之争、IFO与链上治理
第26讲 | 数字货币和数字资产
第27讲 | 弄懂数字货币交易平台(一)
第28讲 | 弄懂数字货币交易平台(二)
第四章 区块链与当下互联网 (5讲)
第29讲 | 互联网身份与区块链数字身份
第30讲 | 区块链即服务BaaS
第31讲 | 数字货币钱包服务
第32讲 | 区块链与供应链(一)
第33讲 | 区块链与供应链(二)
第五章 如何从业区块链 (3讲)
第34讲 | 从业区块链需要了解什么?
第35讲 | 搭建你的迷你区块链(设计篇 )
第36讲 | 搭建你的迷你区块链(实践篇)
尾声 (2讲)
尾声篇 | 授人以鱼,不如授人以渔
新书首发 |《区块链第一课:深入浅出技术与应用》
深入浅出区块链
登录|注册

第10讲 | 深入区块链技术(二):P2P网络

陈浩 2018-04-16
在上一篇文章中,我大致讲解了一下区块链技术的几个核心要素。P2P 网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。今天我们就来看看区块链技术的第一个核心要素:P2P 网络。
如果我们简单来看 P2P 技术,它的应用领域已经非常广泛了,从流媒体到点对点通讯、从文件共享到协同处理,多种领域都有它的身影出现。
同样的,P2P 的网络协议也有很多,比较常见的有 BitTorrent、ED2K、Gnutella、Tor 等,也就是我们常说的 BT 工具和电驴。
比特币、以太坊等众多数字货币都实现了属于自己的 P2P 网络协议,但是这种模式并不同于以上讨论的 P2P 网络协议,所以我们今天讨论的重点主要是区块链技术的 P2P 技术,也就是比特币和以太坊的 P2P 网络。
由于区块链的 P2P 网络技术知识繁多,我们主要提炼其中的四个内容进行讲解:区块链的网络连接与拓扑结构、节点发现、局域网穿透与节点交互协议。
希望读完本篇可以让你对目前成熟的区块链 P2P 网络的拓扑结构以及运行原理有个大体的认知。

网络连接与拓扑结构

1. 网络连接

除去少数支持 UDP 协议的区块链项目外,绝大部分的区块链项目所使用的底层网络协议依然是 TCP/IP 协议。
所以从网络协议的角度来看,区块链其实是基于 TCP/IP 网络协议的,这与 HTTP 协议、SMTP 协议是处在同一层,也就是应用层。
在“区块链的常见误区”这篇文章中,我们提到了“区块链是否会颠覆互联网”这一说法,如果要是认真分析的话,它颠覆的层面其实最多只到 HTTP 协议,不能再多了。
以 HTTP 协议为代表的、与服务端的交互模式在区块链上被彻底打破了,变更为完全的点对点拓扑结构,这也是以太坊提出的 Web3.0 的由来。
比特币的 P2P 网络是一个非常复杂的结构,考虑到矿池内部的挖矿交互协议与轻节点。我们仅仅讨论全节点这种场景下的 P2P 网络发现与路由。
比特币的 P2P 网络基于 TCP 构建,主网默认通信端口为 8333。
以太坊的 P2P 网络则与比特币不太相同,以太坊 P2P 网络是一个完全加密的网络,提供 UDP 和 TCP 两种连接方式,主网默认 TCP 通信端口是 30303,推荐的 UDP 发现端口为 30301。

2. 拓扑结构

P2P 网络拓扑结构有很多种,有些是中心化拓扑,有些是半中心化拓扑,有些是全分布式拓扑结构。
比特币全节点组成的网络是一种全分布式的拓扑结构,节点与节点之间的传输过程更接近“泛洪算法”,即:交易从某个节点产生,接着广播到临近节点,临近节点一传十十传百,直至传播到全网。
(比特币全球节点图,图来自网络)
全节点与 SPV 简化支付验证客户端之间的交互模式,更接近半中心化的拓扑结构,也就是 SPV 节点可以随机选择一个全节点进行连接,这个全节点会成为 SPV 节点的代理,帮助 SPV 节点广播交易。

节点发现

节点发现是任何区块链节点接入区块链 P2P 网络的第一步。这与你孤身一人去陌生地方旅游一样,如果没有地图和导航,那你只能拽附近的人问路,“拽附近的人问路”的这个动作就可以理解成节点发现。
节点发现可分为初始节点发现,和启动后节点发现。初始节点发现就是说你的全节点是刚下载的,第一次运行,什么节点数据都没有。启动后发现表示正在运行的钱包已经能跟随网络动态维护可用节点。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入浅出区块链》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(19)

  • 许星昊
    第二种方式就是,代码中硬编码( hard-code )了一些地址,这些地址我们称之为种子节点(seed-node),当所有的种子节点全部失效时,全节点会尝试连接这些种子节点。



    这句话是有点迷糊、种子节点全部失效时,全节点尝试连接这些种子节点

    作者回复: 不好意思,应该是基于DNS的种子节点全部失效时,会尝试连接Hard code的种子节点。

    2018-08-02
    7
  • 阿痕
    爬虫完全没问题,可以设计一个递归算法,从一个peer节点出发,找到它相连的N个节点,再从这N个节点出发,以此类推。理论上应该可以找到所以的节点。
    2018-04-21
    3
  • 区块链先锋
    节点和区块有什么区别

    作者回复: 节点是启动的MySQL服务,区块是里面的表

    2018-05-30
    2
  • guanhua
    陈老师,请问区块同步方式1中,先同步区块头过程中就可以进行合法性验证了吗?之后再同步区块体就直接复制吗?
    每个区块头里面不都包含对上一个整个区块的哈希吗?

    作者回复: 每个头都包含上个区块的整块哈希的。

    2018-05-12
    2
  • Aaron
    根据节点的发现机制,完全可以爬取所有节点的信息

    作者回复: Sipa有一套简单的代码,叫bitcoin-seeder。可以参考

    2018-04-16
    2
  • 艾草
    比特币使用的是Gossip算法,以太坊使用的是Kademlia算法
    还有 为什么老师说tcp/ip是应用层,在osi模型里,tcp是传输层,ip是网络层。

    作者回复: 区块链其实是基于TCP/IP网络协议之上的,这与HTTP协议、SMTP协议是处在同一层,也就是应用层。

    这里说的是区块链,不是TCP/IP哦,是说区块链的P2P网络协议在应用层。

    2019-07-12
    1
  • 一身菜味
    看起来像是gossip协议

    作者回复: 是的呢

    2018-06-29
    1
  • Clancey
    陈老师,您好,NDN+区块链是否能从ip层改变整个网络架构?
    2018-06-26
    1
  • 小老鼠
    区块链信息都存在本地的,爬虫有什么意义呢?
    2019-12-09
  • 呼啦斯卡
    tcp/ip不是应用层协议

    作者回复: 是的,与HTTP,SMTP协议在同一层,应用层。

    2018-09-03
  • wahaha
    没有公网IP的两个节点不能用TCP直接互通吧?用UDP可以打洞来直接互通,不知有哪种区块链支持UDP打洞?

    作者回复: 有的呀,uunp协议

    2018-07-01
  • Ud
    请问1、一个节点要与多少个节点保持长连接?2、如果一个节点发起广播,如何保证不被其他节点循环广播同一个消息

    作者回复: 你好,这个是算法可配置的,一般是8个或更多。

    2018-05-23
  • 慢摇哥哥
    陈老师,两个问题请教:bitnodes.earn.com显示比特币网络上才1万出头的节点,会不会太少有安全问题;另外,有很多节点的NETWORK显示Hangzhou Alibaba Advertise Co.,Ltd,这是因为这些矿工运行在阿里云的原因?

    作者回复: 一万个节点是全节点,属于核心节点,类似电信的骨干网络。算上轻节点,不开放的节点,可能在百万以上。
    是的,很多开发和测试节点会在云上搭建,生产环境也首选在云上的。

    2018-05-20
  • guanhua
    陈老师,请问,同步区块的第一种方法,先同步区块头时就进行合法性验证吗?之后再同步区块体就直接复制吗?

    作者回复: 先同步头可以简单验证交易的存在和有效,完整同步依然要检验交易的有效性。

    2018-05-12
  • 王由华
    借前面读者的问题,"在挖出前,交易记录保存在普通节点还是核心服务器上?" 以及您的回答"保存在矿池的服务器中"。 我想问:1)交易记录只能保存在矿池服务器中吗?2)普通节点与矿池服务器的区别是什么?3)能详细描述下交易记录被发布到服务器的流程吗?

    作者回复: 1-只要是全节点,都有的。
    2-实际上全节点都一样,对等的,你也可以选择挖矿,只是中奖概率几乎为零。
    3-就是全网广播交易,等待被打包的过程,如果被旷工打包,则会从内存中移除。

    2018-05-01
  • ytl
    区块链公链都可以做爬虫,获得经济数据。

    作者回复: 爬虫只能过去节点信息哦,账本本来就是公开的,直接解析分析即可。

    2018-04-22
  • 刘诗峣oscar
    您好,请问 矿工解出一个区块后获得记录近期交易的权利和收益,那么在挖出前,交易记录保存在普通节点还是核心服务器上?矿工成功打包交易信息的首次广播人是谁?

    作者回复: 保存在矿池的服务器上,叫做memory pool。首次广播就是挖出块的矿工自己

    2018-04-21
  • 马蹄莲子
    应该可以做一个爬虫吧😄
    2018-04-16
  • oTo123
    挺好的
    2018-04-16
收起评论
19
返回
顶部