【Blockchain】区块 | 节点 | 共识机制 | 公链 | 联盟链 | 以太坊 | DApp | 智能合约

本文主要是介绍【Blockchain】区块 | 节点 | 共识机制 | 公链 | 联盟链 | 以太坊 | DApp | 智能合约,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Blockchain

  • 初识区块链
    • 区块链是什么
    • 什么是区块
    • 什么是节点
    • 什么是分布式
    • 什么是共识机制
      • 工作量证明(Proof of Work, PoW)
      • 权益证明(Proof of Stake, PoS)
      • 历史证明(Proof of History, PoH)
      • 权威证明(Proof of Authority, PoA)
      • 信誉共识(Proof of Reputation, PoR)
      • 存储证明(Proof of Storage, PoS)
  • 区块链的准入门槛
    • 区块链的“嫡系部队”:公链
      • 完全去中心化
      • 任何人都可以匿名参与
      • 数据是全网公开的
      • 节点数量多变且不可预知
      • 运维成本较高,依赖奖励机制
      • 交易速度较慢
    • 区块链的“旁支亲戚”:联盟链
      • 多组织共同参与管理
      • 隐私保护良好
      • 交易成本低
      • 交易速度快
      • 个体节点上链成本高
      • 企业背书
  • 公联时代
    • 万链之王——以太坊
      • 以太坊是什么
      • 什么是DApp
      • 什么是智能合约
      • 以太坊和比特币的区别
    • 异构公链

初识区块链

想必你对区块链这个词并不陌生。近几年,各种知名公链龙争虎斗,“互联网大厂”也开始宣传自己的联盟链,各种类型的链上生态项目更有遍地开花的趋势,区块链随之进入大众的视野

区块链和比特币并非新兴概念。早在2008年10月31日,一个网名叫 SatoshiNakamoto的使用者,也就是我们所说的中本聪,发表了一篇名为《比特币:一种点对点的电子现金系统》的论文,文中描述了一个基于 P2P 网络、加密、区块链等技术的点对点的电子现金支付系统。这篇论文第一次提出比特币的概念,标志着比特币的诞生。

可以说,比特币是首个加密数字货币系统,也被认为是首次提出的区块链技术。

2009年1月3日,在位于芬兰赫尔辛基的服务器上,中本聪生成了序号为0的第一个比特币区块,也就是创世区块(Genesisgock),同时在互联网上线了比特币网络,将比特币落地实现为一个实际运行的区块链系统。2009年1月9日,序号为1的区块生成并与创世区块相连接,形成了第一条链,这标志着区块链正式诞生

区块链是什么

上文中提到区块链诞生的标志是序号为0的创世区块和序号为1的区块连接形成了第一条链,简单来说,可以把区块链理解为一串包含交易信息的数据块按照时间顺序有序连接组成的链表结构。

在 Andreas M.Antonopoulos 著的《精通比特币》一书中对区块链的描述如下:

客户端发起交易后向全网广播等待确认,系统中的节点把若干待确认的交易和上一个区块的哈希值打包放进一个区块(Block)中并审查区块内交易的真实性以形成一个候选区块。

随后,试图找到一个随机数使得该候选区块的哈希值小于某一特定值,一旦找到该数后系统判定该区块合法,节点向全网进行广播,其他节点对该区块进行验证后公认该区块合法,此时该区块就会被添加到链上,进而区块中的所有交易也自然被判定为有效。

此后发生的交易依此法类推连接在该区块之后,形成一个历史交易记录不断堆叠的账本链条。任何对链条上某一区块的改动都会导致该区块的哈希值变化,进而导致后续区块的哈希值变化,使其与原有账本对不上,因此篡改难度极高。

什么是区块

区块是在区块链中用于永久存储数据信息的载体单位。每个区块都包含区块大小、区块头、交易计数器和交易信息。区块在链上有序连接,每一个区块都指向前一个区块。每个区块的区块头都通过SHA256算法加密后生成一个独一无二的哈希值,用于识别该区块指向的前一区块(父区块)。

比特币区块链系统采用工作量证明的方式产生区块,区块中会包含一些交易,也就是一笔笔的转账信息,而区块链正是这些转账信息的有序记录,所以我们也称区块链为去中心化的分布式记账系统。比特币的系统通过这种区块包含交易、交易包含转账信息的方式实现了转账的功能。通俗地理解,由“区块”构成的“链”叫“区块链”。

什么是节点

每个安装有区块链客户端软件并连接在区块链网络上的智能设备,不管是矿机、手机,还是服务器等,都可以被称为区块链节点。
区块链节点包括全节点和轻节点。拥有并维护全网所有交易数据的节点称为全节点;只拥有并维护与自己相关的交易数据的节点称为轻节点。
所有节点支撑起了整个区块链网络,共同为区块链的稳定性和安全性提供保障。一个区块链网络的节点越多,这条区块链就越安全、越稳定。

什么是分布式

区块链以点对点网络为基础。在区块链网络中,每个节点都会处理交易,并以工作量为证明进行投票。投票结果也就是所谓的“共识”。在共识达成之后便会更新分布式账本的内容,每个节点都会维护自己的账本记录。每个节点的数据都是独立记录和存储的,共识的制定也源于节点的工作量证明。在区块链网络中,不存在任何“中央机构”去限制节点的正常操作。这也是为什么我们称区块链是完全去中心化的。

有别于中心化系统的数据可更改的特性,区块链的分布式体系具有天然的数据保护的优势。经过节点共同验证的数据存储至区块链上后会被永久储存,如果有恶意节点意图篡改已上链的数据,那么需要同时控制系统中超过 51%的节点来提供工作量证明,而这对于一个节点众多且分布广泛的区块链网络来讲,几乎是不可能实现的。几年前,曾经有人做过计算,如果想篡改以太坊上的某个数据,那么需要全国所有的超级计算机共同进行长达数月的计算。这在当时是不可能完成的任务,更不要说又过去了这么多年,可能性更加微乎其微。

用一个简单的例子来说明这个问题。比如,如何证明“我借给你100元钱?”通常有两种方法。一种方法是,在我借给你100元钱时,有一个德高望重的长者监督,长者见证了这个过程,而长者的可信度是很高的,于是大家都相信“我借给了你100元钱”。另一种方法是,长者不一定一直都在,于是我找了100个普通人见证这个过程,这100个人虽然可信度存疑,但是如果你想赖掉这100元钱,至少要让其中的大部分人改变想法,而这会付出相当大的成本。

通过以上内容,我们可以看出区块链的结构带来的独特特性:去中心化和信息不可篡改(安全性)。

除此之外,区块链还有其特有的匿名性和可扩展性。

区块链的匿名性表现为每个人在区块链上都需要一个以公钥哈希值为标识的虚拟身份。你可以把它简单地理解为你的银行卡号别人可以往这个账户里转账,但是如果不借助银行系统,他不知道这个银行卡号对应的所有者是谁。这个虚拟身份在完全不涉及线下交易时是无法与使用者本人产生关联的。换言之,一个使用者如果单纯地在区块链上活动且不主动透漏自己的个人信息,那么区块链可以为其提供极佳的匿名性。

区块链的可扩展性主要体现在交易量和节点数量上。交易量主要由网络的吞吐量决定;节点数量则取决于网络硬件设施的性能和成本。
这里就不得不提及知名的区块链三元悖论–区块链系统无法同时满足去中心化(Decentralization)、安全性(Security)和可扩展性(Scalability)这三个特性,最多只能满足其中两个特性,这也被称为“不可能三角”

这是因为,一条区块链如果高度满足去中心化和安全性,那么需要所有节点参与计算和存储,这将极大地提高对网络吞吐量的要求和对硬件设施的性能需求,而这样的需求提高带来的是技术限制和高额的设备成本,这就限制了许多节点的加入,因此极大地影响了区块链的可扩展性。在区块链高度满足去中心化和可扩展性的情况下,这条区块链的节点是非常分散的,需要分散计算和存储,也就无法达到全量共识。在这种情况下,攻击这条区块链网络的难度就会下降,当有不可靠节点或恶意节点存在时,整条链的安全将会受到威胁。如果一条区块链想要高度满足安全性和可扩展性,就需要保证参与共识的节点是可信的,而这就需要做到中心化管理。因此,区块链原有的去中心化就会降低。

什么是共识机制

这里提到的共识机制只是冰山一角,各种各样层出不穷的共识机制只是为了能实现一点,即在 Web3.0去中心化的前提下,通过多方认证的方法来确保系统的稳定性、可靠性及真实性。常用的工作量证明机制对能源的浪费有目共睹。在未来,何种共识机制会成为时代的弄潮儿尚不清楚,但至少一花独放不是春,百花齐放春满园。

工作量证明(Proof of Work, PoW)

比特币、以太坊等大家较为熟悉的公链,均采用PoW共识机制节点在争夺一个新的区块的出块权时,需要对上一个区块的区块头进行某种运算(比如,比特币采用的算法是SHA256),直到得到目标值,即出块成功。

权益证明(Proof of Stake, PoS)

在 PoW 共识机制中,更多的计算带来了更多的能源浪费,而权益证明则省去了矿机消耗电力的环节,通过使用Staking(即质押,通常指的是质押一定凭证来获取相关权益的行为,但是Web3.0圈内通常会直接使用英文单词Staking)的数额来提高自己的投票权,只需要进行签名就可以验证。

历史证明(Proof of History, PoH)

poH最早由区块链公链 Solana 提出。Solana 验证者通过将时间藏编码为一个简单的 SHA256序列哈希的可验证延迟函数(VDF)来维护时钟体系。Solana使用 VDF 并不是为了随机性;相反,验证者使用 VDF是为了维护自己的时钟。因为每个验证者都维护自己的时钟,所以选择领导者(Leader)在先,进行一个完整的纪元在后每个验证者都运行VDF以证明它已经获得了传输区块和验证者的时间段(Slot),并得到补偿,正如区块生产者会因为生成区块而获得奖励一样。

权威证明(Proof of Authority, PoA)

只有获得权限的节点才能够参与网络治理。PoA一般用在联盟链或者较为中心化的区块链中,确保整个网络的参与方都是可靠的值得信赖的。

信誉共识(Proof of Reputation, PoR)

PoR与PoA类似,主要区别在于,PoR的出块机制依靠每个节点自身的 Reputation 值。影响因素包括品牌形象、品牌价值、链上行为的可信任度等,这与传统的企业评价方式类似,每个企业都需要维护自己的企业形象,以确保自己的产品能够获得市场的认可。

存储证明(Proof of Storage, PoS)

PoS的投票权根据节点提供的存储空间确定。这种机制的问题在于,矿工只需要在接收到挑战时重新存储该数据,并声明自己拥有存储空间即可获得奖励,无法验证矿工是否持续地存有数据。

区块链的准入门槛

区块链的“嫡系部队”:公链

公链,也称为区块链公链系统,是区块链最基础、底层的网络其他协议都是在公链网络上进行部署的。在通常情况下,开发协议的第一步就是选择一个或者多个公链网络。

公链有以下几个特点:

完全去中心化

区别于联盟链,公链的最大特点是完全去中心化,链上的任何人都可以读取链上数据并且参与链上的共识过程,任何人都可以部署智能合约和发起交易。链上数据由所有节点共同维护,公链官方只能为它提供技术支持,无法对公链系统中的信息进行操控。

任何人都可以匿名参与

公链无准入机制。公链上通常都有成百上千个节点,任何人都可以成为公链的节点,为整个网络提供运行保障。

下面是对“公链官方如果跑路了,这条链会怎么样”和“公链的官方会不会销毁这条链”两个热门问题的回复。

即便公链官方不再维护公链,只要网络中还有节点在工作,这条公链就会一直存在。对于节点众多的公链系统来说,官方无法销毁超过一半的节点的记账内容,所以“官方销毁公链”这种可能性几乎是不存在的

数据是全网公开的

公链的链上数据需要所有节点共同维护,也就是说公链的链上交易数据需要对所有节点公开,这样才能证明数据的真实性和有效性。

节点数量多变且不可预知

正是因为公链无准入机制,任何人都可以作为节点加入和退出公链网络,所以公链的节点数量是随时都在变化的,且完全不可预知。

运维成本较高,依赖奖励机制

公链的节点并不是免费为系统提供记账和维护服务的。为了鼓通每个工作的节点,交易发行者需委向参与记录这笔交易的书点供记账手续费。

交易速度较慢

对于比特币、以太坊这类早期公链来说,由于其技术限制法满足同时处理链上众多交易的网络吞吐量,交易速度相对较许多新生公链正在努力突破技术限制,提高交易速度和网络吞吐量且取得了较为显著的效果,所以“公链交易速度较慢”逐渐变得不再是问题。

区块链的“旁支亲戚”:联盟链

既然说到公链,就不得不提及一种企业区块链–联盟链。

公链和联盟链适用于不同的使用对象及应用场景。公链对全网公开,所以一些私密度很高的数据并不适合存放在公链上。同时,公链体系在初期需要很强的技术去搭建,在后期运行时也需要众多节点记账并维护,对于一些非公众参与场景中使用者之间的记账来说,成本过高,性价比偏低,而联盟链适用于解决这种类型的问题。

联盟链仅允许获得授权的节点加入网络,不同节点的权限不同信息并非全网公开,而是仅可被有权限的节点查看,因此联盟链的使用场景往往是企业间的交互。

联盟链的几大特点如下:

多组织共同参与管理

联盟链的理想模式是由多个机构共同参与管理,每个机构管理个或多个节点,但在现实执行中很可能会出现一些问题。比如,目前,大型互联网公司(“大厂”)自己掌握搭建的联盟链的全部节点并享有绝对决策权和话语权,这就使得联盟链上的其他参与方陷人被动局面,这种情况下的联盟链更像品牌背书的中心化服务器失去了区块链的本质特点。

隐私保护良好

联盟链的准入门槛高,链上的节点少,进入联盟链的节点都具有很高的信任度。同时,联盟链上数据的读取权限由机构决定,很好地保护了链上数据的隐私。

交易成本低

由于联盟链是局域的,使用者的数量和需要处理的交易量是有限的,维护节点并不需要太高的成本。

交易速度快

由于联盟链上的节点大多具有很高的信任度,交易不需要所有节点确认,这极大地提高了交易速度。

个体节点上链成本高

聚盟储需要对个体节点进行严格的审查才能允许其进入联链,上链成本和收费极高且自主性差,完全受限于“大厂,的玩法要求。
各条联盟链都有高额的节点与流量费用和商务开发费用

企业背书

联盟链发展得好与“大厂”兴衰绑定,也取决于“大厂”的发展规划,无法共荣,却一损俱损。

那么,前面提到的灵魂拷问–“联盟链官方如果跑路了,这条链会怎么样”和“联盟链的官方会不会销毁这条链”–再次出现

这次的答案和前面的答案完全相反,联盟链的运行依赖于链上企业控制的可信节点,一旦企业不存在或者销毁了所有可信节点联盟链就会被废弃。从这一点上来看,联盟链系统与现行的中心化服务器一致

其实区块链除了公链和联盟链,还有私有链。只是私有链只面向单独的个体和企业,并不常出现在大众的视野中,所以在此不赘述

公联时代

万链之王——以太坊

以太坊是目前在世界范围内使用得最广泛的公链。简单来说,以太坊就像比特币的升级版本,比特币在区块链10时代诞生,而以太坊成了区块链2.0时代的开创者。

在比特币诞生4年左右,在对比特币进行了长期目深人的研究后,VitalikButerin发布了以太坊白皮书并开始招募开发者和募集资金。在该项目开启众筹后,仅42天便融资3.1万枚比特币。在融资后的一年,以太坊主网正式上线,同时开创了区块链2.0时代。

以太坊是什么

以太坊的创始人 Vitalik Buterin 认为,如果把比特币比作便携式计算器,那么以太坊就是智能手机。简单来说,以太坊是一个建立在区块链技术上的去中心化应用平台,智能合约和DAPP(Decentralized Application,去中心化应用程序)的存在,给了以太坊为使用者和开发者提供更广泛框架的可能性。

以太坊平台对底层区块链技术进行封装,这就使得开发者可以基于以太坊平台进行开发,在平台中建立或使用基于区块链技术的去中心化应用,降低了开发者的开发难度。目前,以太坊的开源代码已托管至 GiHub社区。这意味着每个人都可以对以太坊进行升级改造。

在以太坊白皮书中,Vitalik Buterin提到,“以太坊的目标是,据供一条内置有成熟的图灵完备的编程语言的区块链,用这种语言可以创建合约来编码,从而实现任意状态转换功能。”

什么是DApp

与传统App不同,DApp是运行在区块链网络中的。网络中的去中心化节点可以完整地控制 DApp。你可以简单地把DAPp理解为部署在公链上的App。在以太坊中,一般认为DApp是包含完整智能合约与U交互界面的更外层结构。

什么是智能合约

智能合约(SmartContract)的本质可以描述为脚本。通过利用以太坊区块链的能力,这些脚本可以处理很多种逻辑,如拍卖等。智能合约的关键点是,可以自动执行并不可篡改,这一特点保证了合约中的功能可以按照已有的逻辑执行。智能合约会将代码保存在区块链中,对于公链来说,代码将是完全公开的。

以太坊和比特币的区别

现在我们知道,以太坊是类似于比特币的技术,但它们的用处存在极大的区别。比特币仅使用一种特定的区块链技术,实际上是一套分布式的数据库,固定在比特币交易中的数据通常用于记笔记而以太坊上的交易还可能包含可执行的代码。

同时,以太坊和比特币的目的不同,比特币更希望成为一种替代货币系统,可以作为交换媒介或价值存储介质存在。以太坊更希望可以通过平台的运营获利而不是将自身建立为替代货币系统。

总之,比特币更像一种合法性尚未实现的货币,而以太坊则是一个具有生态性的、可大规模应用的智能合约平台。

现在我们大概了解了以太坊的基本概念,它是一个建立在区块链技术上的去中心化应用平台,具有图灵完备的编程语言,并为开发者提供了代码运行环境。

2015年年末,以太坊开发者FabianVogelsteller提出了ERC-20标准,即基于以太坊区块链智能合约发行可互换通证的方案,该标准支持使用者在以太坊上简单编写智能合约,创建表示价值的Token。

以太坊区块链,从技术上来看是一种数字资产系统,因此从比特币到以太坊、从区块链1.0到2.0,是从数字现金到数字资产的转变。

异构公链

关于异构公链,目前网络上并没有相关解释。本书中的“异构公链”特指与以太坊互不兼容的公链系统。

参考:
《一本书读懂Web3.0-区块链、NFT、元宇宙和DAO》a15a
《零基础学Web3.0》陈飞宇

这篇关于【Blockchain】区块 | 节点 | 共识机制 | 公链 | 联盟链 | 以太坊 | DApp | 智能合约的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/863588

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景