今天的越写越快乐系列为大家带来《区块链第一课》读书笔记的第二章节深入区块链技术,通过自己的读书心得结合作者对于区块链技术的观点,希望给大家带来一个看待区块链不一样的视角。
关于作者
陈浩,元界CTO,海枫藤/RightBTC交易系统架构师,维优联合创始人,区块链技术早起布道者区块链数字经济布道者,开源贡献者,极客时间《深入浅出区块链》作者。
关于本书
这本书的副标题是深入浅出技术与应用,是写给区块链的入门者,也包括我这个菜鸟,书中的很多观点通俗易懂,值得我们去思考和深入挖掘个中的内涵。
深入区块链技术
深入区块链技术 - 图片来自简书AppP2P网络协议
P2P网络协议是计算机之间进行数据通信的一种常见协议,其应用的场景从流媒体到点对点通信,从文件共享打破协同处理,在多个领域都有它的身影出现。有关网络协议的相关知识,请查看Wiki。
说白了,
网络协议就是计算机之间约定俗成的一种数据交换协议
,就好像你在淘宝上买东西,淘宝作为交易平台,提供和撮合了买方和买方的交易达成,而交易过程中出现的任何问题都有相应的协议来解决,在区块链的世界里,这种协议构成了交易的信任基础。
区块链的网络连接与拓扑结构
区块链中的协议包含了完整的点对点传输协议,也囊括了比特币的挖矿协议及轻节点交互协议。比特币的P2P网络协议基于TCP协议构建,主网默认通信端口为8333。
比特币全节点组成的网络是一种全分布式拓扑结构,节点与节点之间的传输过程更接近“泛洪算法”,即交易从某个节点产生,接着广播到邻近节点,再从临近节点一传十,十传百,直至传播到全网。
节点发现
节点发现是任何区块链节点接入区块链P2P网络的第一步。这与你孤身一人去陌生的地方旅游一样,如果没有地图和导航,你就只能向附近的人问路,“向附近的人问路”这个动作就可以理解成节点发现。节点发现可分为初始节点发现和启动后节点发现。
局域网穿透
区块链的P2P网络是一种全分布式的拓扑结构。如今的网络环境是由局域网和广域网组成的,也就是说,当你在局域网上运行一个区块链节点时,在广域网上是发现不了的,广域网上的节点只能被动接受连接,并不能主动发起连接。你可以在局域网上通过VPC配置路由,将公网IP和端口映射到局域网中你的IP和端口即可。比特币和以太坊均使用了UPnp协议作为局域网穿透工具,只要局域网中的路由设备支持NAT网关功能及UPnp协议,即可将你的区块链节点自动映射到广域网上。
节点交互协议
一旦节点建立连接,节点之间的交互便会遵循一些特定的命令,这些命令写在消息的头部,消息体中写的是消息内容。命令分为两种:一种是请求命令,一种是数据交互命令。也就是说建立连接后,就可以发送一系列的命令。比如发送心跳命令、发送区块同步命令等。
分布式一致性算法与共识机制
还记得我上次说的一个村子举办相亲大会的故事吗?分布式系统面临几个问题:一致性问题、可终止性问题、合法性问题。一致性是指在某个分布式系统中,任何节点的提案能够在约定的协议下被其他所有节点所认可。这里说的认可是指任意节点对外呈现的信息必须一致。可终止性可以理解为系统必须在有限的时间内给出一致性的结果。合法性是指提案必须是系统内的节点提出的,当然最重要的也是最基础的问题就是我们常说的一致性问题。那么对于上述故事中村子之间的投票会体现在什么地方呢?
- 非人为恶意篡改投票过程;
- 人为恶意篡改投票过程;
在介绍具体的分布式一致性算法之前,我们先介绍两个定理做一下铺垫。
- FLP不可能性。简单来说,即使网络通信完全可靠,只要产生拜占庭错误,也就不存在一个确定性的共识机制能够为异步分布式系统提供一致性了。换句话说就是,不存在一个通用的共识机制可以解决所有的拜占庭错误。
- CAP定理。一致性、可用性和分区容忍性三者中,我们只能选择两个作为主要的强化点,另外一个必然被弱化。
经典的分布式一致性算法有Raft算法和Paxos算法。Raft算法是一种强Leader型的一致性算法,它的吞吐量基本就是Leader的吞吐量,它无法抵御节点恶意篡改数据的攻击。Paxos算法提供适用于不同场合的一致性算法。所以Paxos算法有很多变种,经典的Paxos算法是Leaderless型的,有的变种则是强Leader型的,叫做Fast Paxos。PBFT的全称是实用拜占庭容错算法。PBFT是一种状态机制,要求所有节点共同维护一个状态,并采取一致的行动。PBFT非常适用于联盟链等对性能具有较高要求的场合,超级账本项目中的Fabric框架默认采用的就是PBFT的修改版本。
对于区块链的共识机制,是基于经济学的博弈算法,以区别于经典的分布式一致性算法。该算法的整体思路就是让攻击者的成本远远大于收益,也就是从成本的角度设计的分布式算法。目前具有工业成熟度的是POW,比较成熟的还有PoS和DPoS。
PoW共识机制
Pow算法也就是工作量证明,它最初被应用于邮箱服务,为了防止垃圾信息泛滥,发送者需要计算一个按照规则约定的难题的答案,将消息发送给接收者的同时需要附带验证这个答案,当这个答案被验证有效时,接收者才会接收这个消息。可以看出,PoW的核心设计思路就是提出一个计算难题,让人们通过计算机设备“解题”,而验证答案的过程则非常简单,“解题”的过程却不是那么容易。具体的解题规则和验证原则请参考《精通比特币》一书。
PoS共识机制
Pos也称为权益证明,也就是你所持有的数字货币的价值与你持有的时间长短有关,也就是根据币龄来获取相应的权益。节点所拥有的币龄越多,获得记账权的概率越大。这个类似于公司的股权结构股权占比的合伙人,其话语权越重(公司的收益权和投票权不同,具体内容请阅读相关资料)。
DPoS共识机制
DPOS共识机制就是将PoS共识机制的记账者转换为由指定节点组成的小圈子,只有这个圈子中的节点才能获得记账权,而不是所有人都可以参与记账。这个圈子中可能有21个节点,也可能有101个节点。
个人感想
通过以上知识点的梳理,我们理解了分布式系统中的一致性算法,区块链中使用的点对点网络,还有就是目前最常用的三种共识算法,我相信这些基础知识构建了区块链技术的地基,也是区块链技术落地具体场景的关键,没有这些基础技术的加成,也不会出现运行接近十年的比特币网络,更不会出现Dapp,当然也没有基于区块链技术的信任网络的诞生。虽然这些技术还不是很成熟,但是我坚信越来越多的企业和组织正在积极探索具体的落地场景,对于传统行业也有一定的借鉴意义,更坚信基于信任构建的美好社会会很快的到来,我更是充满期待,希望和大家一起去见证这无比激动和开心的时刻,更更希望它早一点儿到来。若是我的文章对你有所启发,那将是我莫大的荣幸。
网友评论