认识区块链(六):区块链的底层实现之共识机制与P2P

前言

在认识区块链系列的前几篇中,我们已经介绍了区块链的作用、发展、解决了什么问题、以及底层实现之密码学、分布式等等,这篇博客主要围绕的是区块链的另外两个底层技术--共识机制与P2P。

共识机制指的是在一个群体或者系统中,通过协商、讨论及其他方式达成一致的过程或结果。它是为了解决多个参与者之间的决策问题或达成共同目标而进行的一种合作机制。

P2P点对点技术指的是节点之间直接进行通信和交互,不需要通过中心化的服务器或者中介,且每个节点的身份是完全相同的,不存在类似sever/client的身份差别。

共识机制

在人类社会中,共识是一种重要的社会机制,不同国家、区域、人种、民族的认识都各不同,而共识则是用于协调不同个体或群体之间的利益、观点和行动。通过共识,人们可以达成共同的价值观、规则和结论,通常在现实世界中,共识是通过民主选举、协商、信任等方式实现,以确保多数人的意见被尊重并得到执行,比如政府官员的选举,就是民众的共识;保护环境、发展新能源,则是全世界人民的共识;买政府的债券,政府可以还上这个债,则是出于政府的公信力而产生出来的共识。

区块链的共识机制是通过分布式的特性,在计算机之间建立了一套足够可靠、可以信任的网络,通过技术背书而非中心化信用机构来进行全新的信用背书。

由于区块链的去中心化特性,没有中心化的权威机构来决定交易的顺序和有效性,因此共识机制是很重要的,共识机制确保了所有节点对于交易的顺序和有效性达成了一致。计算机中让不相干的人达成共识需要一套新的理论模型,区块链中的共识机制可以让系统在限定时间内完成对交易的验证和确认,对一笔交易,如果若干个利益不相关的节点能够达成共识,我们家可以认为全网也能够对此达成共识。

区块链信任的特点主要体现在区块链的用户无需信任交易的另一方,也无需信任任何一个中心化的机构,只需信任区块链应用就能实现交易,这种自信任的基础就是区块链的共识机制。

工作量证明

工作量证明(proof of work,PoW),这是比特币中采用的共识机制,在这个机制下,节点需要通过解决一个复杂的数学难题(挖矿)来竞争生成新的区块,并获得奖励。解决数学问题需要大量的计算能力及电力,因此节点需要付出一定的工作量来证明自己的贡献。这种机制的安全性建立在大量算力的条件下,因为攻击者需要掌握超过整个系统的50%算力才能"打赢"剩下的节点,从而篡改区块链的历史记录。

权益证明

权益证明(Proof of Stake,PoS),在权益证明中,节点的权益(比如持有的加密货币数量)决定了其生成新区块的机会。节点需要锁定一定数量的加密货币作为抵押品,然后根据抵押品的数量和时间长度来选择生成区块的权益。这种机制相对于POW机制更加节省算力和能力,因为不需要大量的计算,而是依赖持有的加密货币数量。然后,POS的问题是富者会越富。持有更多加密货币的节点更有可能生成新区块。

权威共识

权威共识(Delegated Proff of Stake,DPOS),是一种基于代表投票的共识机制。在DOPS中,持有加密货币的持币人可以通过投票选举一组代表节点来生成新的区块。这些代表节点相当于主节点,负责验证交易和生成区块,其他节点相当于从节点,通过投票来选择代表节点。DPOS具有较高的吞吐量和快速的交易确认时间,但也引入了一定程度的中心化,因为只有少数代表节点参与了区块的生成。

P2P

P2P的作用有几个方面

  • 去中心化:它使得区块链网络中的节点可以直接相互通信,而不需要依赖中心化的服务器或机构。每个节点都可以是平等的参与者,共同维护和管理区块链的数据及状态。
  • 分布式存储:它使得区块链中的数据可以分布在网络中的多个节点上。每个节点都存储了完整的区块链数据副本,这样即使某个节点被攻击或者故障,其他节点依旧可以提供数据的可用性和完整性。
  • 数据传输和共享:它使得节点之间可以直接传输和共享数据,而不需要通过中心化的服务器。这样可以提高数据传输的效率和速度,并降低传输的成本和延迟。
  • 去信任交互:P2P技术使得节点之间可以直接交互和交易,而不需要依赖第三方的信任机构,而不需要依赖第三方的信任机构。通过使用加密算法和智能合约,节点可以在不信任的环境下进行安全的交易和合作。

一个典型的例子就是比特币网络,它是由全球范围的节点组成,这些节点通过P2P技术进行通信和交互。

在比特币网络中,每个节点都可以成为矿工,负责验证交易和生成新的区块。节点之间通过P2P网络直接传输交易和区块数据,而不需要依赖中心化的服务器,当一个用户发起一笔比特币交易时,该交易会通过P2P网络广播到其他节点,其他节点通过验证交易的有效性,并将其包含在待确认的交易池中。然后矿工节点通过解决数学难题来生成新的区块,并将待确认的交易打包进区块中,这样,这样得倒了去中心化的确认和记录,而不需要依赖中心化的机构。

推荐阅读

当说到云原生时,我们究竟在谈论什么? - 掘金

不太熟悉Git? 不妨看看这篇文章 - 掘金

一文搞定常见分布式事务实现 - 掘金

你真的理解分布式理论吗? - 掘金

深入了解异地多活 - 掘金

02.K8S架构详解 - 掘金

01.你为什么需要学习K8S - 掘金

相关推荐
搬码后生仔1 小时前
asp.net core webapi项目中 在生产环境中 进不去swagger
chrome·后端·asp.net
凡人的AI工具箱1 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
Lx3522 小时前
Pandas数据重命名:列名与索引为标题
后端·python·pandas
小池先生2 小时前
springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失
java·spring boot·后端
百罹鸟2 小时前
【vue高频面试题—场景篇】:实现一个实时更新的倒计时组件,如何确保倒计时在页面切换时能够正常暂停和恢复?
vue.js·后端·面试
小蜗牛慢慢爬行3 小时前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
wm10434 小时前
java web springboot
java·spring boot·后端
龙少95436 小时前
【深入理解@EnableCaching】
java·后端·spring
溟洵7 小时前
Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)
linux·运维·数据库·后端·sql·mysql
SomeB1oody10 小时前
【Rust自学】6.1. 定义枚举
开发语言·后端·rust