区块链入门系列 | 比特币网络的运行方式

栏目: 服务器 · 发布时间: 5年前

内容简介:Bitcoin 的本质是一个网络,本篇就来瞄准比特币网络特征来聊。聊聊 P2P 网络到底有什么特点,节点之间如何在网络上配合来共同处理交易和打包区块,也来聊聊网络都做了哪些看上去不那么 P2P 的增强。比特币网络最大的特征是点对点,点对点的基本含义是各个节点之间的地位平等,没有客户端和服务器之分。咱们先聊聊 P2P 到底是什么意思。P2P 的全称是 peer-to-peer ,参与到这个网络中的计算机之间是平等的关系,网络上的节点没有谁是有特权的。网络的整体功能不是通过什么地位特殊的中央服务器的调度来完成,

Bitcoin 的本质是一个网络,本篇就来瞄准比特币网络特征来聊。聊聊 P2P 网络到底有什么特点,节点之间如何在网络上配合来共同处理交易和打包区块,也来聊聊网络都做了哪些看上去不那么 P2P 的增强。

P2P 网络

比特币网络最大的特征是点对点,点对点的基本含义是各个节点之间的地位平等,没有客户端和服务器之分。

咱们先聊聊 P2P 到底是什么意思。P2P 的全称是 peer-to-peer ,参与到这个网络中的计算机之间是平等的关系,网络上的节点没有谁是有特权的。网络的整体功能不是通过什么地位特殊的中央服务器的调度来完成,而是分担到各个节点之上。

P2P 网络天生就开放。互联网本身就是一个无歧视的 P2P 网络,所以 IP 网络上的节点都是平等的,虽然今天的互联网从上层来看已经非常的层级化了,但是底层依然是 P2P 的。除了比特币之外,最著名的 P2P 网络的实际例子就是 BitTorrent 文件分享网络了。比特币的目标是取消中心化的控制,所以 P2P 的这种扁平的网络结构跟比特币刚好吻合。

总之,P2P 的特点就是平等和开放。

网络运行方式

接下来我们聊整个网络是如何运行,如何发布交易,验证交易和打包区块的。

节点同时是交易的发出者也是记账者。P2P 网络决定了节点的地位是平等的,既然没有老大去记录交易,那么当然就是很多普通节点大家共同去记账了。比特币白皮书的“网络”部分,给出了比特币网络运行的步骤。首先,需要进行转账的节点要构建一条交易,然后广播给全网。网络上的交易会形成一个交易池,各个节点都会去选择里面手续费比较高的去处理,因为区块的大小毕竟是有限的。这样很多节点都会去把尽可能多的交易打包到一起,注意这些打包到一起的交易的集合还不能叫做一个区块,因为节点需要参加一个所谓的算力赛跑,也就是挖矿。挖矿成功,拿到了工作量证明的那个随机数之后,才能得到合法的区块哈希,区块才真的被生成了。只有赢得算力赛跑的那个人,才真正拥有了记账权。

节点都始终认为最长的那条链是正确的,并基于这条链来运算。由于是去中心化的网络,并且网络上也是有延迟的,所以很多时候,如果两个节点同时广播出了不同版本的下一个区块,那么某些节点可能会先收到其中一个,而其他节点却先收到另一个。那么记账权到底归谁呢?节点拿到区块后,首先要验证区块里面的交易是不是都是合法的,例如有没有人捣鼓,把某些钱双花过,如果验证不通过,那么即便比较早出现,区块也会被大家抛弃。区块验证通过,节点会基于它先收到的那个节点来添加后续区块,但是也会保存后收到那个区块,这样区块链就另外形成了一个分支,因为有其他节点是在这个分支上去进行下一个区块的生成的,所以这个分支有可能成为最长链。当下一个工作量证明被找到,下一个区块生产出来之后,到底哪条分支比较长就明确了,发现自己站错队的节点会切换到最长的这个分支上。

网络是有非常强的容错能力的。新的交易不一定非要到达网络上的所有节点,只要足够多的节点收到了这个交易,那么它不久后就可以被收入到区块中。区块广播的时候也是有容错能力的,不必担心个别的信息丢失。如果节点没有收到区块,那么当它收到下一个区块的时候,就会发现自己少了一个区块,然后会再次请求。

所以,网络运行的基本形式是,大家都发出交易,也都有权去验证和记录交易,虽然谁都可以去验证区块的合法性,但是只有赢得算力赛跑的节点,才是最终唯一的记账人。当然,网络上每十分钟就会生成一个区块,同时工作量证明机制也决定了记账过程除了算力赛跑之外也有一定的随机性,所以不是谁的算力最强,就会永远做记账人。

网络增强

通过上面对 P2P 的介绍,我们可以看到比特币真的是一个人人平等的开放系统,当然实际中,比特币网络的确没有这么简单,为了实现更好的效率和更强的功能,比特币网络在 P2P 的基础上是做了很多增强的。

首先要明确一点,比特币的节点是分成不同类别的。实际中并不是所有连接到比特币网络上的机器都会参与记账,例如钱包节点和有些路由节点。全节点是功能最为完善的节点,不但有钱包和路由功能,还保存了完整的区块链拷贝,也能参与挖矿。还有一些专门的挖矿节点,他们可能是全节点,也可能比全节点功能少一些,以挖矿为主要任务。

比特币网络也不纯粹是一个 P2P 网络。真正的 P2P 网络上,所有节点获取信息的方式和机会应该是相同的。但是实际中,挖矿节点要参与算力赛跑,对时间是非常敏感的,所以可能采用类似 FIBRE 这样的非 P2P 传输方式来获取数据。但是,技巧都是公开的,谁都可以去使用,所以不会影响网络整体的公平性。另外,很多钱包节点或者 SPV 节点也需要向保存完整区块链的全节点去请求一些数据,所以也会用到非 P2P 形式的通信协议。

总之,实际中比特币网络的节点有角色差异的,通信协议也在 P2P 基础上有一些叠加的方案。但是要强调,这些都是为了增强网络功能,并不会从根本上改变比特币的公平性和开放性。

总结

关于比特币网络,我们就聊到这里了。总结起来,比特币是一个 P2P 网络,网络的上的节点地位是平等的,都有权利发布交易和记账。实际中节点角色有一定的分工,网络本身也在 P2P 基础上做了一些非 P2P 的增强。但是这些都是为了增加网络的效率和功能,所有的机制都是公开的无准入门槛的,所以整个网络的基本的 P2P 性不会受到破坏。

参考:

https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch08.asciidoc https://bitcoin.org/bitcoin.pdf


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

轻量级Django

轻量级Django

茱莉亚·埃尔曼 (Julia Elman)、马克·拉温 (Mark Lavin) / 侯荣涛、吴磊 / 中国电力出版社; 第1版 / 2016-11-1 / 35.6

自Django 创建以来,各种各样的开源社区已经构建了很多Web 框架,比如JavaScript 社区创建的Angular.js 、Ember.js 和Backbone.js 之类面向前端的Web 框架,它们是现代Web 开发中的先驱。Django 从哪里入手来适应这些框架呢?我们如何将客户端MVC 框架整合成为当前的Django 基础架构? 本书讲述如何利用Django 强大的“自支持”功......一起来看看 《轻量级Django》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码