go语言--区块链学习(二)

温馨跳转链接:模块一:go语言–区块链学习(一)-CSDN博客

文章目录

    • 模块二:区块链和比特币
      • 前记
      • 2.1 比特币介绍
        • 2.1.1 货币发展
        • 2.1.2 诞生背景
          • 2.1.2.1 纸币的风险
          • 2.1.2.2 比特币
          • 2.1.2.3 比特币是什么?
      • 2.2 去中心化
        • 2.2.1 中心化
          • 2.2.1.1 什么是中心化
          • 2.2.1.2 优点和缺点
        • 2.2.2 去中心化
          • 2.2.2.1 什么是去中心化
          • 2.2.2.2 优点和缺点
          • 2.2.2.3 如何实现去中心化
          • 2.2.2.4 比特币和去中心化的关系
      • 2.3 区块链介绍
        • 2.3.1 什么是区块链
        • 2.3.2 记账
        • 2.3.3 账本
      • 2.4 挖矿介绍
        • 2.4.1 钱包
          • 2.4.1.1 私钥
          • 2.4.1.2 公钥
        • 2.4.2 节点
          • 2.4.2.1 全节点
          • 2.4.2.2 矿工节点
          • 2.4.2.3 验证节点
          • 2.4.2.4 轻节点
          • 2.4.2.5 超级节点
        • 2.4.2 挖矿
          • 2.4.2.1 什么是挖矿
      • 2.5 比特币技术和结构
        • 2.5.1 算力、矿场、矿工
        • 2.5.2 比特币参数
        • 2.5.3 技术
        • 2.5.4 比特币地址生成规则
        • 2.5.5 比特币结构
          • 2.5.5.1 区块头
          • 2.5.5.2 区块体
      • 2.6 数字签名
        • 2.6.1 数字签名的作用
        • 2.6.2 签名
        • 2.6.3 验证
        • 2.6.4 签名哪些数据
      • 2.7 共识机制
        • 2.7.1 工作量证明(Proof of Work,PoW)
        • 2.7.2 权益证明(Proof of Stake,PoS)
        • 2.7.3 权益证明+随机选择(Delegated Proof of Stake,DPoS)
        • 2.7.4 实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)
        • 2.7.5 共享证明(Proof of Authority,PoA)

模块二:区块链和比特币

前记

此模块为纯理论介绍,只是简单地介绍了区块链和比特币的关系,有关理论也是写的特别浅显,也没有内容要点总结归纳之类的,想要更加理解区块链的相关理论知识需要大家自己查阅资料,仔细研究。

感兴趣的小伙伴可以看看这个视频系列:区块链之新 _ 纪录片 _ bilibili _ 哔哩哔哩弹幕视频网

事实上,比特币网络的设计初衷是为了作为一种点对点的支付系统,因此其功能相对较为有限,主要用于进行价值转移和存储。

然而,比特币的底层技术——区块链技术,为许多其他应用程序提供了基础设施,这些应用程序可以在区块链上构建,并且可以拥有更广泛的用途。

例如,以太坊就是一种基于区块链的智能合约平台,它允许开发人员创建和部署各种类型的智能合约应用程序。与比特币不同,以太坊的设计目标是提供一个可编程的区块链,使开发人员能够在其上构建更灵活、更复杂的应用程序。

对于我们程序员,因为比特币这一章没有具体开发的这一块的内容,所以博主只是在这里简单地介绍了点部分理论知识。

大家也不需要知道比特币怎么去买卖,也不需要太过于关注比特币跌了还是涨了,想着怎么去一夜暴富。我们是学习技术的人,那是比用程序的人而更为高级的写程序的人,是互联网时代不可或缺的伟大缔造者之一,咱不用多么妄自菲薄,看轻自己,当你亲手写出来的程序得到大部分使用人的认可时,你将会有巨大的成就感和满足感,所以大家老老实实敲代码,为万恶的资本添砖加瓦吧。

2.1 比特币介绍

2.1.1 货币发展
  1. 物物交换:最早期的人类社会中,人们通过直接交换商品来满足彼此的需求。
  2. 实物货币:随着时间的推移,人们选择某些特定的贵重物品作为交换媒介,这些物品具有普遍接受和稀缺性,例如贵金属和贝壳。
  3. 人工货币:为了方便交换,人们开始将贵重物品制成标准化的形状和重量,并加上政府或统治者的印记,这样的硬币可以更容易地被广泛接受并用于交换。随着经济的发展和贸易的扩大,纸币开始出现。纸币是由政府或中央银行发行的信用工具,其价值由政府或中央银行的信誉支撑。
  4. 电子货币:随着科技的进步,电子货币逐渐流行起来。这种形式的货币可以通过电子设备进行交易和转移,例如银行卡、支付宝等。
  5. 数字货币:近年来,随着区块链技术的发展,加密货币(如比特币)成为一种新兴的数字货币。加密货币基于分布式账本技术,去中心化并且具有高度安全性。
2.1.2 诞生背景
2.1.2.1 纸币的风险
  1. 假币风险:纸币容易被伪造,尤其是高面值的纸币。伪造者可以通过技术手段制造假币,这对经济稳定和信任造成威胁。
  2. 货币贬值:中央银行发行纸币时,过量的货币供应可能导致通货膨胀和货币贬值。当市场上流通的纸币数量超过实际需求时,购买力可能下降,人们的储蓄价值受到侵蚀。
  3. 政治干预:纸币的发行受到政府和中央银行的控制,政府可能滥发货币以满足自身需求,或者通过调整利率和汇率等手段来影响经济运行。这种政治干预可能引发金融危机或不稳定。
2.1.2.2 比特币

2008年9月15日:美国雷曼兄弟宣布破产,引发全球金融危机,人们对传统金融机构和中央银行的信任受到了动摇。

2008年10月31日:中本聪发表《比特币:一种点对点的电子现金系统》的论文,提出了比特币的概念,比特币被设计为一种去中心化的数字货币,旨在提供一种不依赖于传统金融机构的交易和储值方式。

2009年1月3日:比特币网络正式开始运行,中本聪采用挖矿的方式来产生新的比特币。

2009年1月中旬:中本聪挖出了比特币的创世区块(Genesis Block)。

2.1.2.3 比特币是什么?

比特币是一种数字货币,也被称为加密货币或虚拟货币。

比特币基于区块链技术,采用去中心化的点对点网络进行交易,没有任何中央机构或政府控制。区块链是一个公共账本,记录着比特币交易的所有信息,确保交易的透明性和安全性。

比特币的发行是通过矿工运算解决复杂的数学问题来完成的,这个过程被称为挖矿。挖矿不仅用于创建新的比特币,也用于验证和确认交易的有效性。

2.2 去中心化

2.2.1 中心化
2.2.1.1 什么是中心化

中心化(Centralization)是指权力、资源、决策等方面集中于某个中心,由这个中心来统一管理和控制的一种组织形式。在中心化组织中,权力和资源通常由某个特定的机构或个人掌控,其他人需要遵循其决策和规定进行行动。

在计算机网络中,中心化也常用于描述某些应用程序或服务的架构方式。在中心化网络中,所有的节点都连接到一个中央服务器或节点,并通过该中央节点进行通信和数据传输。例如,传统的客户端-服务器模式就是一种中心化的网络架构方式。在这种模式中,客户端向服务器发送请求,服务器对请求进行处理并返回结果。

2.2.1.2 优点和缺点

中心化的优点包括决策效率高、资源使用效率高等,但缺点也十分明显,例如容易产生单点故障、安全性较低、透明度不足等。相比之下,去中心化的组织结构更加民主、自由,能够避免单一机构掌控所有权力和资源的问题,但也需要解决分散决策、资源利用效率低等问题。

2.2.2 去中心化
2.2.2.1 什么是去中心化

去中心化(Decentralization)是指将权力、资源、决策等分散到多个节点或参与者之间,而不是集中在单一中心机构或个人手中的一种组织形式。在去中心化的组织结构中,权力和控制权被分散到各个节点,并通过协议、算法等机制来实现合作和决策。

在技术领域,去中心化常用于描述一种网络架构或应用程序的设计模式。在去中心化网络中,参与者之间通过点对点的连接进行通信和交互,没有中央服务器或中介机构。每个节点都可以拥有相同的权限和能力,共同参与网络的管理和维护。

总体而言,去中心化是一种追求权力分散、参与者自治和系统公正的组织形式,它在技术、经济和社会领域都有广泛的应用和影响。

比特币和区块链技术是去中心化的典型例子。比特币是一种去中心化的数字货币,没有中央银行或政府机构掌控和发行。比特币网络由全球的矿工节点组成,他们通过计算生成新的区块并验证交易的有效性。这种去中心化的设计使得比特币具有抗审查、去信任、安全性高等特点。

2.2.2.2 优点和缺点

去中心化的优点包括降低单点故障的风险、提高系统的可靠性和韧性、增加参与者的权力和自主性等。去中心化还可以促进创新和合作,减少对中央权威的依赖,并提供更多的透明度和公正性。

然而,去中心化也面临一些挑战和限制。例如,分散决策可能导致效率降低和协调困难,数据共享和隐私保护也需要更加细致的设计和解决方案。此外,去中心化的系统可能面临规模扩展和性能问题,需要通过技术创新来克服。

2.2.2.3 如何实现去中心化
  1. 区块链技术:区块链是一种去中心化的分布式账本技术,可以用于记录和验证交易或数据。区块链通过共识算法和分布式节点的协作来实现去中心化的数据存储和管理。比特币就是基于区块链技术构建的去中心化的数字货币。
  2. P2P网络:点对点网络(Peer-to-Peer,P2P)是一种直接连接参与者的网络架构,没有中央服务器或中介机构。P2P网络中的节点可以直接相互通信和交换数据,从而实现去中心化的信息传输和资源共享。
  3. 分布式计算:将计算任务分配给多个节点进行并行处理,避免单一中心节点的瓶颈和单点故障,从而实现去中心化的计算。
  4. 去中心化自治组织(DAO):去中心化自治组织是一种利用智能合约和区块链技术实现组织自治和决策的方式。DAO的规则和运作由代码和协议来约束和执行,参与者可以通过投票和贡献来影响组织的发展和决策。
2.2.2.4 比特币和去中心化的关系
  1. 去中心化的发行和管理:比特币的发行和管理不依赖于任何中央银行或政府机构,而是通过去中心化的共识算法和分布式节点来实现。
  2. 去中心化的交易验证:比特币网络中的矿工节点通过计算和验证交易来维护网络的安全和稳定,而没有一个单一的中心机构来控制和验证交易。
  3. 去中心化的参与者:任何人都可以成为比特币网络的参与者,无需获得特殊权限或许可。每个节点都有相同的权力和能力,在网络中平等参与。

总的来说,比特币的去中心化体现了一种基于分布式节点和共识算法的组织形式,使得比特币具有抗审查、去信任和安全性高的特点。但同时也需要注意到,去中心化并不意味着没有任何中心化的结构和问题,它需要通过技术和设计来平衡权力和效率的考量。

2.3 区块链介绍

2.3.1 什么是区块链

区块链(Blockchain)是一种分布式账本技术,用于记录和验证交易或数据。它通过将交易按时间顺序组成一个不可篡改的数据块链,并通过加密和共识算法确保数据的安全性和一致性。

区块链的核心概念是分布式、去中心化和不可篡改。在传统的中心化系统中,数据由中央机构或第三方机构掌控和管理,而在区块链中,数据由网络中的多个节点共同维护和验证,没有一个单一的中心机构控制。

区块链的主要组成部分包括:

  1. 数据块(Block):数据块是区块链中的基本单位,用于存储一组交易或数据记录。每个数据块都包含一个唯一的标识符(哈希值)、时间戳和前一数据块的引用,形成一个链式结构。

  2. 分布式网络(Distributed Network):区块链网络由多个节点组成,每个节点都存储着完整的区块链副本。节点之间通过对等连接进行通信和数据传输。

  3. 共识算法(Consensus Algorithm):区块链网络中的节点通过共识算法来达成一致,并验证和记录新的数据块。常见的共识算法包括工作量证明(Proof of Work,PoW)、权益证明(Proof of Stake,PoS)等。

  4. 加密算法(Cryptography):区块链使用加密算法来确保数据的安全性和隐私性。每个数据块都通过哈希函数进行加密,而交易数据则经过公钥加密和签名来验证身份和完整性。

2.3.2 记账

记账(Accounting)指的是将交易或数据记录添加到区块链中的过程。在区块链中,每个交易都被封装成一个数据块,并通过共识算法获得网络节点的确认。一旦获得确认,该数据块就会被添加到区块链的末尾,成为最新的账本记录。记账的过程通常包括验证交易的有效性、加密数据以确保安全性,并根据共识算法确定数据块的顺序。

  1. 提交交易:参与区块链网络的用户将要进行的交易提交到网络中。交易可以是转账、存储数据或执行智能合约等操作。
  2. 验证交易:网络中的节点开始验证交易的有效性,包括检查交易的签名、余额是否足够等。验证的规则取决于具体的区块链协议和网络的共识算法。
  3. 创建区块:一旦交易通过验证,节点将这些交易打包成一个新的数据块。数据块通常包含多个交易记录和其他元数据,如时间戳和前一数据块的哈希值。
  4. 完成工作量证明(Proof of Work):某些区块链网络使用工作量证明机制来确定哪个节点有权创建新的数据块。这个过程需要节点通过计算复杂的数学问题来寻找一个特定的哈希值,以证明他们完成了特定的工作量。
  5. 数据块广播:一旦节点完成工作量证明,他们会将新的数据块广播给整个网络。其他节点接收到数据块后,会对其进行验证。
  6. 共识达成:节点通过共识算法对收到的数据块进行验证,并决定是否接受该数据块。常见的共识算法包括Proof of Work(工作量证明)、Proof of Stake(权益证明)等。
  7. 添加到链上:一旦数据块被大多数节点接受和验证,它将被添加到区块链的末尾,成为新的账本记录。数据块的哈希值将成为下一个数据块的前一数据块的引用,形成了一个不可篡改的链式结构。
  8. 更新本地账本:每个节点在添加新数据块后会更新本地的账本副本,以反映最新的交易记录和状态变化。
2.3.3 账本

账本(Ledger)是区块链中存储和记录所有交易和数据的地方。它是一个按时间顺序组织的数据块链,每个数据块都包含一组交易记录。每个数据块都有一个唯一的标识符(哈希值),并包含前一数据块的引用,形成了一个不可篡改的链式结构。通过查阅账本,可以追溯到区块链的创始状态,并验证每个交易的完整性和合法性。

区块链的账本具有以下特点:

  1. 去中心化:账本由区块链网络中的多个节点共同维护,没有一个单一的中心机构控制。
  2. 不可篡改:一旦数据被记录在区块链上,几乎不可能被修改或删除。每个数据块都包含前一数据块的引用,形成一个链式结构,保证了数据的完整性和可追溯性。
  3. 透明和公开:区块链的账本是公开可见的,任何人都可以查看和验证数据,增加了透明度和公正性。
  4. 高安全性:区块链使用加密算法和共识算法来保证数据的安全性和网络的稳定性,防止篡改和双重支付等问题。

2.4 挖矿介绍

2.4.1 钱包

钱包是用于存储、管理和交换加密货币的工具或应用程序。它们提供了一个安全的数字环境,让用户可以管理他们的加密货币资产。钱包并不实际存储加密货币本身,而是存储用户的私钥和公钥,以便用户可以访问和控制他们的资产。

2.4.1.1 私钥

私钥是一串由数字和字母组成的字符串,是一种用于身份验证和数字签名的密码。私钥只有拥有者知道,并且不能被其他人访问或查看。私钥通常由随机数生成,可以用于签署交易和证明所有权。如果私钥丢失或被盗,用户将无法访问其加密货币。

2.4.1.2 公钥

公钥是与私钥相关联的另一个字符串,可以公开分享。它是通过对私钥进行数学运算而生成的。公钥用于验证数字签名的有效性和加密货币地址的生成。每个公钥对应唯一的加密货币地址,这是用于发送和接收加密货币的标识符。

当用户使用钱包向其他人发送加密货币时,他们需要使用自己的私钥对交易进行数字签名。其他人可以使用用户的公钥来验证数字签名的有效性,并确认交易是否合法。如果数字签名有效,则交易得到确认并被添加到区块链上。

2.4.2 节点

在区块链中,节点是指网络中运行的计算机或设备,它们参与到区块链的维护和运行中。每个节点都具有独特的标识符,并且可以执行一些特定的任务,包括验证交易、创建新的区块、共识算法、存储数据等。

2.4.2.1 全节点

全节点(Full Node):全节点是区块链网络中最重要的节点类型之一。它们完整地保留了整个区块链的副本,并可以验证和存储所有的交易数据。全节点不仅能够验证交易的有效性,还可以参与共识算法的运行和区块的创建。全节点对于区块链的安全性和去中心化特性至关重要。

2.4.2.2 矿工节点

矿工节点(Miner Node):矿工节点是负责创建新的区块并将其添加到区块链上的节点。矿工节点通过执行复杂的计算任务来解决共识算法所需的工作量证明(Proof of Work)或其他共识机制。成功解决这些问题的矿工节点将获得一定数量的加密货币作为奖励。

2.4.2.3 验证节点

验证节点(Validator Node):验证节点是专门用于验证交易和区块合法性的节点。它们参与共识算法,并通过验证交易的有效性来确保区块链的安全和一致性。验证节点通常需要满足一定的条件和资格要求,以确保它们具有足够的可信度。

2.4.2.4 轻节点

轻节点(Light Node):轻节点是相对于全节点而言的一种轻量级节点。它们并不保存整个区块链的完整副本,而是仅保存一部分数据,如区块头或交易摘要。轻节点可以向全节点请求所需的信息,并依赖于全节点来验证交易和查询状态。

2.4.2.5 超级节点

超级节点(Super Node):超级节点是在某些特定区块链网络中使用的一种节点类型。它们通常由具有较高性能和可靠性的计算机组成,并具有更大的存储容量和处理能力。超级节点在维护整个网络的稳定性和安全性方面扮演着重要角色。

这些节点类型在区块链网络中相互协作,共同构建和维护整个区块链系统。每个节点的功能和角色可能因不同的区块链平台和协议而略有差异。

2.4.2 挖矿
2.4.2.1 什么是挖矿

挖矿是指参与区块链网络维护和安全性保障的过程。在某些区块链网络中,比如比特币,挖矿是通过解决数学难题来创建新的区块并添加到区块链中的过程。挖矿是区块链网络中的节点为了获得奖励而进行的计算工作。

以下是挖矿的一般过程:

  1. 确认交易:在挖矿之前,矿工需要先确认待处理的交易。这些交易包括用户的转账请求、智能合约执行请求等。矿工会将这些交易打包成一个区块,并准备开始挖矿。
  2. 工作量证明:挖矿的过程通常涉及到工作量证明机制,其中最常见的是Proof of Work(PoW)。矿工需要通过计算难题来找到一个符合特定条件的哈希值。这个计算过程需要不断尝试不同的数值,直到找到符合条件的哈希值为止。这个计算过程是高度计算密集的,需要大量的计算资源和能源消耗。
  3. 验证与广播:一旦矿工找到了符合条件的哈希值,他们会将其与区块中的交易数据一起打包,并将这个新的区块广播到整个网络中。
  4. 共识达成:其他节点接收到新的区块后,会对其进行验证。验证的过程包括检查工作量证明是否正确、交易的有效性等。如果大多数节点都接受并验证了这个新区块,那么就达成了共识,即这个区块被添加到区块链上。
  5. 奖励与更新:作为挖矿的奖励,矿工获得一定数量的区块链网络代币(如比特币)。同时,他们的账本也会更新,记录他们创建了一个新的区块。

挖矿的目的是通过计算和验证来确保区块链网络的安全性和完整性。通过工作量证明机制,挖矿抵制了恶意攻击者和操纵者对网络的攻击。挖矿参与者通过提供计算资源和维护网络的安全性来获得代币奖励,这也是激励机制的一部分,促使更多的人参与到区块链网络中。然而,值得注意的是,不同的区块链网络可能使用不同的共识算法和奖励机制,因此挖矿的具体细节会有所不同。

2.5 比特币技术和结构

2.5.1 算力、矿场、矿工
  1. 算力:比特币的共识算法是工作量证明(Proof of Work,PoW),它要求矿工通过计算区块头的哈希值来找到符合一定条件的答案,从而获得新的比特币奖励。矿工所能提供的计算能力就是算力。
  2. 矿场:指专门用于挖掘比特币或其他加密货币的设备集中的场所。矿场通常由大量矿机组成,它们利用高度优化的硬件和软件来提高算力和效率,以获得更多的比特币奖励。
  3. 矿工:指参与比特币挖矿的个人或组织。矿工使用自己的计算机或专门设计的矿机来执行复杂的算法,并将解决方案提交给网络。矿工可以获得新的比特币奖励,同时也会收取一定的交易手续费。
2.5.2 比特币参数
  1. 区块链高度:指当前区块链中区块的数量,也就是区块链的长度。
  2. 难度系数:难度系数代表挖矿的难度,它由比特币网络根据当前的总算力动态调整,以保持每10分钟产生一个新区块的稳定速率。
  3. 区块奖励:指每个成功挖出新区块的矿工可以获得的比特币数量。创世区块的奖励是50个比特币,每隔210,000个区块奖励减半一次,目前的奖励是3.125个比特币。
2.5.3 技术
  1. 区块链:比特币是第一个应用区块链技术的加密货币。区块链是一个去中心化的分布式数据库,它将交易记录组成区块,并通过共识算法保证数据的安全性和一致性。
  2. 共识算法:比特币的共识算法是工作量证明(PoW),它要求矿工通过计算区块头的哈希值来找到符合一定条件的答案,从而获得新的比特币奖励。除了PoW,还有其他共识算法,如权益证明(Proof of Stake,PoS)和权益共享(Delegated Proof of Stake,DPoS)等。
  3. 分布式网络:比特币使用点对点(Peer-to-Peer,P2P)网络,没有中心化的服务器,所有节点都可以平等地参与到网络中来。这种分布式网络可以提高安全性和抗攻击能力。
  4. 加密算法:比特币使用SHA-256算法进行加密,这是一种非对称加密算法,可以将数据转换为固定长度的哈希值,并保证不同的输入数据产生的哈希值是不同的。这种加密算法可以在保证数据安全的同时,避免了数据泄露。
2.5.4 比特币地址生成规则
  1. 比特币地址:比特币地址是一串由数字和字母组成的字符串,用于接收比特币的支付。比特币地址通常以1或3开头,长度为26-35个字符。
  2. 私钥和公钥:比特币地址是通过私钥和公钥生成的。私钥是一个由随机数生成的256位二进制数,用于签名交易。公钥是由私钥生成的,它是一个由椭圆曲线加密算法(Elliptic Curve Cryptography,ECC)计算得出的256位二进制数。
  3. 地址生成:比特币地址有一个版本号和校验和,其中校验和是通过对公钥哈希值进行两次SHA-256哈希运算得到的。然后将版本号、公钥哈希值和校验和合并为一个字符串,再对这个字符串进行Base58编码。编码后的结果就是比特币地址。
2.5.5 比特币结构

比特币的结构主要包括区块头和区块体两部分。

2.5.5.1 区块头

区块头是一个由80个字节组成的数据结构,包含了区块的元信息。具体来说,区块头包括以下内容:

  1. 版本号:表示当前区块的版本。
  2. 前一个区块的哈希值:指向前一个区块的哈希值,用于将区块串联起来。
  3. Merkle根:通过对区块中所有交易的哈希值进行两两配对,并再次进行哈希计算得到的根哈希值。
  4. 时间戳:表示当前区块的生成时间。
  5. 难度目标:表示当前区块链的难度系数。
  6. 随机数:也称为Nonce,是矿工为了满足难度目标而不断尝试的参数。
2.5.5.2 区块体

区块体是一个由交易组成的数据结构,包含了区块的内容。具体来说,区块体包括以下内容:

  1. 交易数量:表示当前区块中包含的交易数量。
  2. 交易列表:即所有包含在区块中的交易记录,每条交易记录都包含了发送者、接收者、交易金额等信息。

2.6 数字签名

数字签名是一种密码学技术,用于验证一个文档、电子邮件或其他数据的真实性和完整性。数字签名可以确保数据未被篡改,并且只能由数据的拥有者进行签名。

2.6.1 数字签名的作用

数字签名的主要作用是保证数据的真实性和完整性。数字签名可以防止数据在传输或存储过程中被篡改,同时也可以保证数据的来源不被冒充。数字签名在电子商务、电子政务、数字版权等领域得到了广泛的应用。

2.6.2 签名

在进行数字签名之前,需要获取以下三个信息:

  • 原始数据:即要签名的数据。
  • 私钥:用于对原始数据进行加密,生成数字签名。
  • 数字签名算法:用于生成数字签名的算法,例如RSA、DSA、ECDSA等。
2.6.3 验证

在验证数字签名时,需要获取以下三个信息:

  • 原始数据:即已签名的数据。
  • 公钥:用于对数字签名进行解密,验证数字签名的真实性。
  • 数字签名算法:用于验证数字签名的算法,必须与签名时使用的算法相同。
2.6.4 签名哪些数据

数字签名通常只对原始数据进行签名,不包括任何附加信息或元数据。如果需要对多个数据进行签名,可以将这些数据合并成一个数据块,然后再进行签名。

2.7 共识机制

2.7.1 工作量证明(Proof of Work,PoW)
  1. 工作量证明通过要求节点解决一个复杂的数学难题来获得记账权。这个难题通常需要大量的计算资源和能源来解决。
  2. 解决问题的过程被称为挖矿,而解决问题并添加新区块的节点将获得一定数量的加密货币作为奖励。
  3. 区块链系统中的所有节点都可以参与挖矿,但拥有更多计算能力的节点成功获得记账权的概率更高。
2.7.2 权益证明(Proof of Stake,PoS)
  1. 权益证明机制中,记账权与节点持有的加密货币数量相关。

  2. 在PoS系统中,节点可以锁定一部分加密货币作为抵押品,从而增加获得记账权的机会。

  3. 选择记账节点的过程是随机的,但持有更多加密货币的节点获得记账权的概率更高。

2.7.3 权益证明+随机选择(Delegated Proof of Stake,DPoS)
  1. DPoS是基于PoS的共识机制,通过选举信任节点来进行记账。
  2. 在DPoS系统中,持有加密货币的持币人可以投票选举一定数量的信任节点,这些节点负责验证交易和生成区块。
  3. 选举产生的信任节点会周期性地轮流担任记账节点的角色,从而提高了交易速度和可扩展性。
2.7.4 实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)
  1. PBFT是一种面向拜占庭容错问题的共识机制,适用于具有较小网络延迟和较少节点数量的环境。
  2. 在PBFT系统中,节点通过多轮消息交换和投票来达成共识。阈值设定为超过两个第三分之二的节点达成一致才能进行下一步操作。
2.7.5 共享证明(Proof of Authority,PoA)
  1. PoA机制中,记账权授予特定的权威节点,这些节点被认为是可信任的。
  2. 这些权威节点通常是由共识算法的设计者或网络管理员指定的,不依赖于计算工作量或加密货币持有量。
  3. 由于权威节点的控制,PoA机制通常具有高吞吐量和低延迟的特点。

未完待续。。。

你可能感兴趣的:(区块链学习,golang,区块链,学习)