区块链基础

zhenxi
2023-07-20 / 0 评论 / 4 阅读 / 正在检测是否收录...

Bitcoin,最小记账单位是聪,是一种点对点的去中心化的电子现金交易系统。底层采用了区块链技术。比特币是一种数字货币,也是首个被广泛接受和使用的加密货币。它于2009年由一位化名为中本聪(Satoshi Nakamoto)的人或团队创建。比特币的设计旨在实现去中心化的电子现金系统,使用户能够直接在互联网上进行安全的点对点交易,无需第三方机构的干预。

特性:

①无需可信任的第三方。

②点对点交易,全球流通性。

③安全性、隐私性、可追溯、交易的不可篡改性。

以下是比特币的一些关键特点:

  1. 去中心化:比特币没有中央机构或政府控制,交易记录存储在分布式的区块链网络中,由全球的计算机节点维护。这使得比特币的交易具有去中心化、开放和透明的特性。
  2. 匿名性与透明度:比特币的交易是通过使用公钥和私钥进行加密和验证的。用户的身份可以保持匿名,但所有的交易记录都可以在区块链上进行查看,实现了一定的透明度。
  3. 有限供应:比特币的供应是有限的。根据中本聪的设计,最多只能发行2100万枚比特币。这种稀缺性在一定程度上增加了比特币的价值。
  4. 挖矿:比特币通过一种称为"挖矿"的过程产生。挖矿是指计算机节点通过解决复杂的数学问题来验证交易,并将其记录到区块链中。挖矿者会获得新发行的比特币作为奖励。
  5. 高度波动的价格:由于比特币市场相对较小且容易受到供求关系、市场情绪和外部因素的影响,比特币价格经常出现大幅波动。这使得比特币成为一种受欢迎的投资资产,但也增加了投资风险。

1 点对点交易

P2P:点对点交易,无中介,避免第三方的介入。

点对点交易是一种直接在参与方之间进行交换的交易模式,而无需借助中介或第三方机构的干预。在点对点交易中,交易双方直接进行沟通、协商和执行交易,实现资产或商品的转移。

以下是点对点交易的一些关键特点:

  1. 去中介化:点对点交易的最大特点是去除了中介机构的角色。传统的交易方式可能需要银行、支付机构或其他中介来确保交易的安全性和可靠性,而在点对点交易中,参与方直接进行交易,无需依赖中介。
  2. 快速高效:由于点对点交易直接在参与方之间进行,交易过程更加简洁和高效。没有中介机构的介入,可以减少交易的处理时间和手续费用,加快交易的执行速度。
  3. 低成本:点对点交易通常减少了中介机构的费用和手续费用,从而降低了交易成本。交易双方可以直接协商交易条件和费用,并在双方达成一致后进行交易,减少了额外的开销。
  4. 去信任:在点对点交易中,交易双方之间建立了直接的信任关系。通过使用加密技术和智能合约等技术手段,可以确保交易的安全性和可靠性,减少了对第三方机构的依赖。
  5. 隐私保护:点对点交易可以提供一定程度的隐私保护。交易双方可以选择保持匿名,只公开必要的交易信息,从而保护个人隐私。

点对点交易在数字货币领域得到了广泛应用,比特币就是最著名的点对点交易系统之一。然而,点对点交易并不仅限于数字货币,它可以应用于各种领域,如文件共享、共享经济、物联网设备间的直接交互等。点对点交易的发展为实现更加去中心化、高效和安全的交易提供了新的可能性。

比特币的点对点交易是通过使用公钥和私钥进行加密和验证的。以下是比特币点对点交易的一般过程:

  1. 生成钱包:参与比特币交易的第一步是生成一个比特币钱包。钱包由一个公钥和一个私钥组成。公钥是用于接收比特币的地址,而私钥是用于对交易进行签名和验证的秘密密钥。可以选择在网络上选择一个在线钱包或下载一个本地钱包。
  2. 创建交易:要进行比特币交易,首先需要创建一笔交易。交易包括发送方的钱包地址、接收方的钱包地址和要发送的比特币数量。创建交易后,它将被广播到比特币网络的所有节点。
  3. 签名交易:发送方使用其私钥对交易进行签名,以证明他们有权使用该比特币。签名过程使用密码学算法确保交易的安全性和完整性。
  4. 交易验证:一旦交易被广播到网络上的节点,其他节点将对交易进行验证。验证过程包括检查交易的有效性、发送方的资金是否充足以及交易是否符合网络的规则和协议。
  5. 区块确认:一旦交易通过验证,它将进入待处理的交易池中等待被矿工打包进区块。矿工是比特币网络上的节点,他们使用计算能力来解决复杂的数学问题,以竞争获得打包交易的权利。一旦一个矿工成功解决问题并创建一个新的区块,交易将被确认并添加到区块链中。
  6. 交易完成:一旦交易被添加到区块链中,它就被视为已完成。接收方的钱包将显示接收到的比特币,并且交易将被广播到网络上的其他节点,以确保所有节点的账本一致。

这是比特币点对点交易的一般过程。需要注意的是,整个过程通常需要一定的时间来完成交易确认和区块添加,特别是在交易量较高或网络拥堵的情况下。

2 区块链是如何运行的

image-20230630135330916

区块链是一种分布式的数据库技术,用于记录交易和数据的不可篡改的公共账本。它是由一系列被称为区块的数据块链接而成的链条,每个区块包含了一批交易和其他相关信息。

以下是区块链的基本运行原理:

  1. 分布式网络:区块链是由一个分布式网络中的多个节点组成的。这些节点可以是普通的计算机,它们通过对等网络连接在一起,并共同参与维护和验证区块链的完整性和安全性。
  2. 区块结构:每个区块都包含了一批已验证和确认的交易数据,以及一个与之相关的区块头。区块头包括了该区块的元数据,如时间戳、前一个区块的哈希值、随机数(用于工作量证明)等。
  3. 工作量证明(PoW):比特币等一些区块链系统使用了工作量证明机制来确保区块的创建是经过计算量大的过程。矿工通过解决复杂的数学难题,即挖矿过程,来获得创建新区块的权利。这个过程需要耗费大量的计算资源,从而保证了网络的安全性。
  4. 验证和共识:新的区块在被添加到区块链之前需要经过其他节点的验证。节点通过检查交易的有效性、签名的正确性等来确保区块和其中的交易是合法的。一旦多数节点达成一致,即达成共识,新的区块将被添加到区块链中。
  5. 不可篡改性:一旦一个区块被添加到区块链中,它几乎是不可篡改的。因为区块链中的每个区块都包含了前一个区块的哈希值,一旦有人试图篡改之前的区块,哈希值将发生变化,从而破坏了整个链条的一致性。
  6. 去中心化和可信性:由于区块链的数据和验证过程分布在多个节点上,而非由单一的中心机构控制,它具有去中心化的特点。这意味着没有单个实体能够掌控或操纵整个区块链。参与区块链的节点通过共识机制确保了数据的可信性和一致性。

3 区块链的账户体系

image-20230630135621140

image-20230630135634090

image-20230630135802927

通过私钥可以快速证实你的公钥,但是无法通过公钥计算出私钥。

下面是一个使用Python语言实现椭圆曲线加密算法(椭圆曲线数字签名算法,ECDSA)的简单示例。请注意,这只是一个简化的示例,并不适用于真实的生产环境。在实际应用中,应使用经过安全评估和验证的密码库来实现椭圆曲线加密算法。

import hashlib
import ecdsa

# 生成公钥和私钥
private_key = ecdsa.SigningKey.generate(curve=ecdsa.SECP256k1)
public_key = private_key.get_verifying_key()

# 加密消息
message = "Hello, World!"
message_hash = hashlib.sha256(message.encode()).digest()

# 签名消息
signature = private_key.sign(message_hash)

# 验证签名
is_valid = public_key.verify(signature, message_hash)

print("Message:", message)
print("Signature valid:", is_valid)

在这个示例中,我们使用ecdsa库来实现椭圆曲线加密算法。首先,我们生成一个随机的私钥private_key,然后通过私钥获取对应的公钥public_key。然后,我们选择一个消息message,计算其哈希值message_hash

接下来,我们使用私钥对哈希值进行签名,生成签名signature。最后,我们使用公钥来验证签名的有效性,并将结果存储在变量is_valid中。

请注意,此示例仅用于说明椭圆曲线加密算法的基本概念和操作流程。在实际使用中,应注意密钥的生成和管理,正确处理异常情况,并使用适当的密码学库来实现更复杂的椭圆曲线加密算法。

4 交易过程

image-20230630140224525

比特币交易是通过区块链网络进行的点对点数字货币交换过程。以下是比特币交易的一般过程:

  1. 创建交易:发送方(也称为付款方)使用自己的比特币钱包应用程序创建一笔交易。交易包括指定接收方(也称为收款方)的比特币地址、交易金额和其他必要的交易信息。
  2. 签名交易:发送方使用自己的私钥对交易进行数字签名。这个签名是对交易的加密验证,证明发送方拥有所用的比特币。
  3. 广播交易:发送方将已签名的交易广播到比特币网络中的节点。节点是连接到区块链网络的计算机,它们负责接收和传播交易信息。
  4. 交易验证:比特币网络中的节点收到交易后,会对交易进行验证。验证包括检查交易的有效性、确认发送方是否有足够的比特币余额,并验证交易的数字签名是否有效。
  5. 区块打包:一旦交易通过验证,它们被添加到一个待确认的交易池中,等待被矿工打包到新的区块中。待确认的交易通常按照交易费用(手续费)的高低排序。
  6. 矿工确认:比特币矿工是通过解决复杂数学难题来维护比特币网络安全的人。他们收集待确认的交易,并将这些交易打包到一个新的区块中。一旦矿工成功解决问题并生成新的区块,他们会将区块添加到区块链中,并通过区块链的共识机制获得一定数量的比特币作为奖励。
  7. 确认交易:当交易被添加到区块链中的一个区块后,它被视为已确认。随着越来越多的区块添加到区块链上,交易的确认数增加。通常,要达到足够的安全性,需要等待交易被多个区块确认。

5 挖矿

挖矿(Mining)是指通过解决复杂的数学问题来维护和验证区块链网络的过程,特别是应用于比特币和其他加密货币。

在比特币网络中,挖矿的主要目的是添加新的区块到区块链中,并确保交易的安全性和可靠性。以下是比特币挖矿的基本概念:

  1. 挖矿节点:参与挖矿的计算机被称为挖矿节点。它们连接到比特币网络,接收并处理待确认的交易。
  2. 工作量证明:比特币挖矿使用工作量证明(Proof-of-Work)机制。挖矿节点需要解决一个复杂的数学问题,即找到一个满足一定条件的哈希值。这个过程需要大量的计算力和电力消耗。
  3. 挖矿竞赛:挖矿节点之间存在竞争关系,谁能率先解决数学问题,就有机会添加新的区块到区块链中。为了增加成功的几率,挖矿节点会不断尝试不同的随机值,这也被称为挖矿的“哈希碰撞”。
  4. 区块奖励:当一个节点成功挖出一个新的区块并将其添加到区块链中时,它将获得一定数量的比特币作为奖励。这个奖励由新发行的比特币和交易费组成。
  5. 挖矿池:由于挖矿变得越来越困难,个人矿工通常会组成挖矿池(Mining Pool),共同合作解决数学问题。一旦有矿池的成员成功挖出一个新的区块,奖励将按照参与贡献的比例分配给矿池的成员。

每个记账者做的事情:

image-20230630140312557

那采取谁的账单呢?于是设计了用工作量证明机制:

image-20230630140445100

所以,挖矿就是要去找那个随机数。

6 记账验证

需要让其它的记账者接受认证这个账单。此时才真正的提交区块。

image-20230630140732800

7 区块和区块链

image-20230630141227893

8 UTXO模型

image-20230630142140365

9 双花问题

把同一笔钱签名付给多个人:双花

image-20230630142340441

比如A与B、A与C双花交易,一个记账者记账A与B交易,一个记账者记账了A与C交易。这两个账本不一样!

image-20230630142420915

10 分叉与最长链原则

image-20230630142635426

image-20230630142651063

11 区块链的读写权限

根据区块链的读写权限主要有三种类型:

image-20230630143119306

image-20230630143415852

12 区块链中的加密算法

image-20230630153125335

image-20230630153134388

image-20230630153815685

13 梅克尔树

image-20230630154703827

image-20230630154720442

14 共识机制 区块链的灵魂

什么是共识?

image-20230630154930344

分布式系统中拜占庭将军问题:

image-20230630155044503

三种安全模型:

image-20230630155458224

两个定理:FLP、CAP

image-20230630155653808

分布式系统的共识机制:

image-20230630160105801

比特币类共识机制的特点:

image-20230630160329468

POW共识机制:工作量证明

image-20230701105828235

image-20230701105849101

POS共识机制:权益证明

POS(Proof of Stake)共识算法是一种用于区块链网络的共识机制。与传统的工作量证明(Proof of Work)不同,POS算法根据参与者持有的加密货币数量来选择区块的生成者和验证者。以下是POS共识算法的基本原理和特点:

  1. 参与者选择:在POS中,区块的生成者和验证者是根据他们持有的加密货币数量来选择的。一般而言,持有更多货币的参与者有更高的机会被选为区块生成者和验证者。这是因为他们的经济利益与网络的安全和稳定性密切相关,有更大的激励去维护网络的正常运行。
  2. 区块生成:在POS中,被选中的区块生成者负责创建新的区块。与POW不同,他们不需要通过解决复杂的数学问题来获得权益。相反,他们仅需展示他们拥有足够的加密货币作为抵押品。生成区块的权益通常与持有的加密货币数量成比例。
  3. 区块验证:一旦区块生成者创建了新的区块,其他参与者将对该区块进行验证。验证者需要核实该区块的有效性和合规性,包括交易的正确性和数字签名的有效性等。验证者的权益通常与持有的加密货币数量成比例。
  4. 奖励和惩罚:POS机制中的奖励和惩罚机制旨在激励参与者维护网络的正常运行。如果一个参与者被选为生成者或验证者,并且成功完成任务,则他们将获得一定的奖励。然而,如果参与者被发现存在恶意行为或违规操作,他们的权益可能会被削减或没收。
  5. 节能环保:与POW相比,POS算法不需要大量的计算能力和电力消耗来解决复杂的数学问题。因此,POS被认为是一种更节能环保的共识算法。

POS共识算法在许多区块链项目中被采用,它提供了一种更高效、节能和经济友好的方式来达成共识,并增加了持币者的参与度和激励。然而,POS算法也面临一些挑战,如权益集中和安全性问题,需要在设计和实施中加以考虑和解决。

image-20230701110152488

image-20230701110206506

image-20230701110228047

DPOS:授权权益证明机制

DPOS(Delegated Proof of Stake)是一种共识机制,旨在提供高度可扩展和高性能的区块链网络。它是基于权益证明(Proof of Stake,PoS)的一种变体,引入了委托机制和选举过程。

在DPOS中,持有加密货币的持币者可以选择将自己的权益委托给其他节点,称为代表(Delegates)或超级节点(Super Nodes)。这些代表节点负责验证交易和创建新的区块。

以下是DPOS共识机制的主要特点:

  1. 代表节点选举:持币者可以通过投票选举代表节点来代表他们参与共识过程。一般而言,持有更多权益的持币者有更高的机会成为代表节点。选举过程可以是连续的,也可以是定期的,根据具体的DPOS实现而定。
  2. 委托权益:持币者可以将自己的权益委托给代表节点,以增加代表节点的权益和竞争力。委托的权益通常与持币者的投票权和奖励成比例。持币者可以自由选择委托给不同的代表节点,也可以随时取消委托。
  3. 区块创建和验证:选举出的代表节点负责创建新的区块并验证交易。这些代表节点轮流出块,每个节点的轮次根据权益大小和选举规则来确定。由于代表节点的数量相对较少,DPOS可以提供更高的交易吞吐量和更低的确认时间。
  4. 惩罚和奖励:DPOS中的代表节点需要遵守共识规则,否则可能面临一定的惩罚。违规行为可能导致代表节点失去委托权益或其他形式的惩罚。相反,遵守规则的代表节点将获得一定的奖励,包括交易费用和委托奖励。
  5. 抗攻击性:DPOS共识机制具有一定的抗攻击性。由于代表节点的数量相对较少,攻击者需要控制大部分代表节点才能对网络进行恶意操作。这种抗攻击性使DPOS在某些情况下比其他共识机制更具安全性。

DPOS共识机制在一些区块链项目中得到了广泛应用,例如EOS和TRON。它提供了高性能、高度可扩展和治理灵活性的特点,但也需要仔细考虑代表节点的选举

image-20230701110746507

Staking:PoS共识下的挖矿模式

image-20230701113211639

PBFT:实用拜占庭容错算法

PBFT(Practical Byzantine Fault Tolerance)是一种用于分布式系统的共识算法,旨在解决拜占庭容错性(Byzantine fault tolerance)问题。在区块链技术中,PBFT被广泛应用于共识机制的设计和实现。

PBFT共识算法基于拜占庭将军问题,即在一个分布式系统中,存在部分节点可能是恶意的或者故障的,并且这些节点可能会发送错误或矛盾的信息以干扰系统的正常运行。PBFT算法通过达成共识来解决这个问题,使得系统能够在多个节点之间就某个值或顺序达成一致。

下面是PBFT共识算法的详细步骤:

  1. 预备阶段(Pre-Prepare Phase):

    • 客户端向主节点发送请求。
    • 主节点将该请求广播给其他副本节点。
    • 节点收到请求后验证其有效性并将其保存在一个预准备集合中。
  2. 准备阶段(Prepare Phase):

    • 主节点等待收到超过2/3的节点对请求进行确认。
    • 一旦主节点收到足够数量的确认消息,它会广播一个准备消息给所有节点。
    • 节点收到准备消息后,验证其有效性,并将其保存在一个准备集合中。
  3. 提交阶段(Commit Phase):

    • 主节点等待收到超过2/3的节点对准备消息进行确认。
    • 一旦主节点收到足够数量的确认消息,它会广播一个提交消息给所有节点。
    • 节点收到提交消息后,验证其有效性,并将请求执行并更新状态机。
  4. 响应阶段(Response Phase):

    • 执行完请求后,节点将响应结果发送给客户端。
    • 客户端收到足够数量的相同响应结果后,即可认为该结果是共识达成的。

PBFT算法通过使用预备、准备和提交三个阶段来实现共识。每个阶段都需要节点之间的投票和确认,以确保达成共识的正确性和安全性。只有在超过2/3的节点都达成一致时,系统才认为共识已经达成。

PBFT算法具有高性能和拜占庭容错性的优点,但也存在一些限制。首先,节点总数必须事先确定,且不能动态添加或删除节点。其次,PBFT算法要求网络延迟相对较小,否则可能导致性能下降。最后,算法的安全性假设了不超过1/3的节点是恶意的,当恶意节点超过这个比例时,算法可能无法达成共识。

总结来说,PBFT是一种用于拜占庭容错分布式系统的共识算法,可应用于区块链技术中。它通过预备、准备和提交三个阶段来实现共识,提供高性能和安全性,但也有其限制和假设条件。

image-20230701113337893

image-20230701113349345

image-20230716154519591

0

评论

博主关闭了所有页面的评论