主页 > imtoken钱包安卓版下载步骤 > 区块链的基本概念

区块链的基本概念

5. 区块链的基本概念 5.1. 数据块

在区块链技术中,数据永久存储在块中。 区块按时间顺序逐一生成并连接成链,每个区块记录其创建过程中发生的所有交易信息。 区块的数据结构一般分为区块头和区块体。 其中,区块头用于链接前一个区块,通过时间戳特性保证历史数据的完整性; 区块体包含所有在区块创建过程中已经验证和生成的交易信息。

比特币分叉对比特币的影响_比特币定义_外国的比特币便宜中国的比特币贵为什么?

//这段代码摘自比特币源代码中区块头的定义
/** Nodes collect new transactions into a block, hash them into a hash tree,
 * and scan through nonce values to make the block's hash satisfy proof-of-work
 * requirements.  When they solve the proof-of-work, they broadcast the block
 * to everyone and the block is added to the block chain.  The first transaction
 * in the block is a special one that creates a new coin owned by the creator
 * of the block.
 */
 class CBlockHeader
{
public:
    // header
    int32_t nVersion;
    uint256 hashPrevBlock;
    uint256 hashMerkleRoot;
    uint32_t nTime;
    uint32_t nBits;
    uint32_t nNonce;
    .......

5.2. 矿业

区块是在挖矿过程中产生的。 挖矿实际上是一种穷举随机数算法,找到一个随机数Nonce,使得计算出的哈希值满足一定的条件,从而获得区块的记账权,同时从系统中获得一定数量的比特币奖励.

5.3. 哈希函数、默克尔树

参考另一篇博文:

5.4. 双花

双重支付问题又称“双花”问题,即利用货币的数字特性,用“同一笔钱”完成两次或多次支付。 这个问题来源于如何保证每笔数字现金只会被花费一次,避免重复花费。 区块链技术作为比特币运行的底层技术,在很大程度上解决了这个问题和“拜占庭将军问题”。 这里仅对相关概念进行简要说明。

在传统的金融和货币体系中,由于货币和货币是具有客观和独特属性的物理实体,因此可以避免双重支付。 但在其他电子货币系统中,需要有可信的第三方管理机构提供担保。 区块链技术在去中心化系统中通过分布式节点之间无需任何第三方机构的相互验证和共识机制,有效解决了双重支付问题,在信息传递的同时完成价值转移。

5.5. P2P网络

P2P网络技术是一种连接区块链系统中点对点节点的网络技术。 与中心化网络模型不同,P2P网络中各节点的计算机地位是平等的,各节点拥有相同的网络算力。 没有中央服务器。 所有节点通过特定的软件协议共享一些计算资源、软件或信息内容。 在比特币出现之前,P2P网络计算技术已被广泛用于开发各种应用程序,如即时通讯软件、文件共享下载软件、网络视频播放软件、计算资源共享软件等。P2P网络技术是其中之一构成区块链技术架构的核心技术。

外国的比特币便宜中国的比特币贵为什么?_比特币分叉对比特币的影响_比特币定义

5.6. 加密演算法

非对称加密算法是指使用公钥和私钥对数据存储和传输进行加密和解密。 公钥可以公开发布,供发送方用来加密要发送的信息,私钥供接收方用来解密接收到的加密内容。 常用的非对称加密算法有RSA和ECC。 非对称加密算法的流程如下图所示。 区块链使用非对称加密的公私密钥对在节点之间建立信任。

比特币分叉对比特币的影响_比特币定义_外国的比特币便宜中国的比特币贵为什么?

以比特币为例。 在比特币系统中,我们使用公钥加密创建密钥对来控制比特币的获取。 密钥对包括私钥和从中派生的唯一公钥。 公钥用于接收比特币,而私钥用于在使用比特币支付时签署交易。 公钥和私钥之间的数学关系,使得私钥可用于为特定消息生成签名。 此签名可以在不泄露私钥的情况下验证公钥。 使用比特币支付时,比特币的当前所有者需要在交易中提交其公钥和签名(每笔交易的签名都不同,但都是由同一个私钥生成的)。 比特币网络中的每个人都可以通过提交的公钥和签名进行验证,确认交易是否有效,即确认付款人对当时交易的比特币拥有所有权。

外国的比特币便宜中国的比特币贵为什么?_比特币定义_比特币分叉对比特币的影响

5.7. 数字签名 5.7.1。 基本概念

目的:保证信息传输的完整性,验证发送方的身份,防止交易中的抵赖行为。

实现过程:数字签名技术是用发送方的私钥对摘要信息进行加密,与原文一起传送给接收方。 接收方只能用发送方的公钥对加密后的摘要信息进行解密,然后利用HASH函数对接收到的原文生成摘要信息,并与解密后的摘要信息进行比较。 如果相同,说明接收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,所以数字签名可以验证信息的完整性。

数字签名是一个加密过程,而数字签名验证是一个解密过程。

数字签名是非对称密钥加密技术和数字抽象技术的应用。

5.7.2. 基础知识

首先我们要了解什么是非对称加密和消息摘要。

1.非对称加密

在通信双方,如果采用非对称加密,一般遵循以下原则:公钥加密,私钥解密。 同时,一般一个密钥加密,另一个密钥可以解密。

因为公钥是公开的,如果用它来解密,很容易被不必要的人解密消息。 因此,私钥也可以被认为是个人身份的证明。

如果通信双方需要相互发送消息,则应建立两套非对称加密机制(即两对公钥和私钥密钥对)。 发送消息的一方使用对方的公钥加密,接收消息的一方使用自己的私钥。 解密。

2. 留言摘要

消息摘要将消息散列转换为固定长度的唯一值字符串。 唯一值是指不同的消息转换的摘要是不同的,可以保证是唯一的。 这个过程是不可逆的,即明文不能通过摘要来逆向。

使用此功能,可以验证消息的完整性。

3.数字签名

假设有两个通信方A和B,他们之间使用了两套非对称加密机制。

现在A给B发消息:

比特币定义_比特币分叉对比特币的影响_外国的比特币便宜中国的比特币贵为什么?

那么,如果在发送过程中,有人修改了里面的密文报文,B得到的密文,解密后得到的明文不是A发送的,信息不正确。

要解决两个问题: 1. A的身份认证 2. A发送的消息的完整性,那么就要用到上面说的基础知识了。

数字签名的过程如下:

比特币定义_外国的比特币便宜中国的比特币贵为什么?_比特币分叉对比特币的影响

简单解释:

A:对明文进行摘要运算得到摘要(消息完整性),然后用A的私钥对摘要进行加密(身份认证),得到数字签名,将密文和数字签名一起发送给B。

B:收到A的消息后,先用自己的私钥解密密文,得到明文。 用A的公钥对数字签名进行解密后,得到正确的摘要(解密成功表明A的身份已经通过认证)。

对明文进行摘要操作,得到实际收到的消息,表明消息没有被篡改(消息完整性)。 六、区块链运行的核心技术 6.1. 区块链链接

区块链是由区块组成的链,每个区块分为区块头和区块体两部分。 区块主体只负责记录前期的所有交易信息,区块链的大部分功能都是由区块实现的。

外国的比特币便宜中国的比特币贵为什么?_比特币定义_比特币分叉对比特币的影响

6.2. 共识机制

区块链是分布式的。 在没有中央控制的情况下,没有信息基础的个人之间如何就交易的合法性达成共识? 这里需要一个共识机制来解决。 目前区块链共识机制主要有四种:PoW、PoS、DPoS和分布式共识算法。

这里只是简要概述,请参阅:

6.2.1. 工作量证明

PoW,这就是比特币中使用的。 矿工将现有的尚未记录在网络中的交易打包成一个区块,然后不断遍历并尝试寻找一个随机数Nonce,使新区块的哈希值加上随机数满足一定的难度条件。 找到满足条件的随机数,确定区块链的最新区块,获得区块链本轮记账权。 矿工在网络中广播满足困难条件的区块。 在验证区块满足挖矿难度条件,区块中的交易数据满足协议规范后比特币定义,他们会将区块链接到自己版本的区块链上,从而形成全网对当前网络状态的共识。

6.2.2. 权益证明

PoS权益证明需要节点提供分布式共识机制,持有一定数量的代币,以获得竞争区块链的记账权。 如果只用代币余额来决定记账人,富人胜出,会导致记账权的中心化,降低共识的公平性。 因此,不同的PoS机制在权益证明的基础上采用不同的方式增加记账。 账户权限的随机性,避免中心化。 比如在点点币PoS机制中,链龄最长的比特币获得记账权的几率更大。

6.2.3.DPoS

与 PoS 的主要区别在于节点选举若干代理人,由代理人进行认证和记账。

6.3. 分布式共识算法

分布式共识算法是基于传统的分布式共识技术。 其中有解决拜占庭将军问题的拜占庭容错算法,如PBFT。 此外,解决非拜占庭问题的分布式共识算法(Paxos、Raft)是目前联盟链和私有链场景中常用的共识机制。

6.4. 解锁脚本

脚本是在区块链上实现合约自动验证和自动执行的重要技术。 脚本就像一组规则,它限制了接收者如何使用锁定在这个输出上的资产。 交易和合法性验证也依赖于脚本。 锁定脚本和解锁脚本。

锁定脚本是在输出交易中添加的条件,通过脚本语言实现,位于交易的输出端。 只有当解锁脚本满足锁定脚本要求的条件时,才能花费脚本上对应的资产,该资产位于交易的输入端。 解释后的脚本类似于编程领域的“虚拟机”,分布运行在区块链网络的各个节点上。

比特币的脚本机制相对简单。 以太坊进一步增强了脚本机制,开发了一套支持脚本的图灵完备语言。 脚本语言通过“虚拟机”执行。 可以说,以太坊实现了一个具有完整脚本语言的图灵A区块链平台。

6.5. 交易规则

区块链交易是构成区块的基本单位,也是区块链负责记录的实际有效内容。 大宗交易可以是转账,也可以是智能合约部署等其他交易。 就比特币而言,交易就是支付转账。 其交易规则如下:

对于以太坊来说,一笔交易也可能是智能合约的部署。 交易规则决定了符合一定语法规则的合约才能部署在区块链上。

6.6. 交易优先级

区块链交易的优先级由区块链协议规则决定。 对于比特币,包含在区块中的交易的优先级由交易广播到网络的时间和交易的大小决定。 随着交易在网络上广播的时间增加,交易的链龄增加,交易的优先级增加,最终会被包含在区块中。 对于以太坊而言,一笔交易的优先级还与交易的发布者愿意支付的交易手续费有关。 发布者愿意支付的交易费用越高,交易被包含在区块中的优先级就越高。

6.7. 默克尔证明

外国的比特币便宜中国的比特币贵为什么?_比特币分叉对比特币的影响_比特币定义

Merkle 树的一个重要应用是快速支付验证。 轻量级节点不需要下载每一笔交易和每一个区块,它们可以只下载链的区块头比特币定义,比如下面的代码,数据块头的大小是80字节。 如果轻客户端希望确定交易的状态,它可以简单地要求 Merkle 证明显示 Merkle 树中的特定交易。

//摘自比特币源码
class CBlockHeader
{
public:
    // header
    int32_t nVersion;
    uint256 hashPrevBlock;
    uint256 hashMerkleRoot;
    uint32_t nTime;
    uint32_t nBits;
    uint32_t nNonce;
    CBlockHeader()
    {
        SetNull();
    }
    ADD_SERIALIZE_METHODS;
    template <typename Stream, typename Operation>
    inline void SerializationOp(Stream& s, Operation ser_action) {
        READWRITE(this->nVersion);
        READWRITE(hashPrevBlock);
        READWRITE(hashMerkleRoot);
        READWRITE(nTime);
        READWRITE(nBits);
        READWRITE(nNonce);
    }
    void SetNull()
    {
        nVersion = 0;
        hashPrevBlock.SetNull();
        hashMerkleRoot.SetNull();
        nTime = 0;
        nBits = 0;
        nNonce = 0;
    }
    bool IsNull() const
    {
        return (nBits == 0);
    }
    uint256 GetHash() const;
    int64_t GetBlockTime() const
    {
        return (int64_t)nTime;
    }
};

(如果你对比特币源代码感兴趣,这里是:)

在以太坊中,它更复杂。 以太坊的每个区块头不仅包含一棵 Merkle 树,而是三棵 Merkle 树。 下图是以太坊的 Merkle 证明树:

比特币分叉对比特币的影响_比特币定义_外国的比特币便宜中国的比特币贵为什么?

我这里还没看懂。 深入理解可以参考这篇博文—Merkle Patricia Tree详解:6.8.RLP

RLP(Recursive Length Prefix,递归长度前缀编码)是以太坊中对象序列化的一种主要编码方式,其目的是对任意嵌套的二进制数据序列进行编码。 以太坊中的所有数据都以 RLP 的形式存储,RLP 是一种编码格式,可以将任意长度和维度的字符串数组拼接成一个字符串。 更多参考:

6.9. 区块链交易流程

以比特币交易为例,区块链交易不是通常意义上的一手支付一手交付的交易,而是转账。 每次转账都构造一个交易数据会很尴尬。 为了使价值易于合并和分割,比特币交易被设计成包括多个输入和输出,即一笔交易可以转移给多个人。 从产生到在网络中传播,经过工作量证明,全网节点的验证,最后记录在区块链中,就是区块链交易的整个生命周期。 整个区块链交易流程如下图所示:

外国的比特币便宜中国的比特币贵为什么?_比特币分叉对比特币的影响_比特币定义

7. 补充概念 7.1 拜占庭将军问题

“拜占庭将军问题”是军队中可能出现叛徒,将军之间无法信任,相距甚远。 能否找到一种分布式协议,让他们远程协商,保证攻击的一致性。 由此扩展到计算领域,发展成为容错理论。

拜占庭容错(BFT)是分布式计算领域的一种容错技术。 拜占庭假设是对现实世界的建模,在现实世界中,由于硬件错误、网络拥塞或中断以及恶意攻击,计算机和网络的行为可能无法预测。 拜占庭容错技术旨在处理这些异常行为并满足待解决问题的规范要求。

7.2UTXO(Unspent Transaction Outputs,未花费的交易输出)

Unspent Transaction Outputs,未花费的交易输出,是比特币交易过程中的基本单位。

7.3. 公钥加密

公钥密码体制分为公钥、私钥、加解密算法三部分。 加密是指通过加密算法和公钥/私钥对内容(明文)进行加密,得到密文。 加密过程需要使用公钥; 解密是通过解密算法和私钥/公钥对密文进行解密得到Plaintext,解密过程需要解密算法和私钥。

公钥密码体制的公钥和算法是公开的(这也是公钥密码体制名称的来源),私钥是保密的。 针对不同的目的,您可以选择使用公钥或私钥进行加密,然后使用对应的私钥或公钥进行解密。

加密算法分为对称加密算法和非对称加密算法。 在对称加密算法中,加密密钥和解密密钥相同; 在非对称加密算法中,加密密钥和解密密钥是不同的。 比特币的区块链采用的是“椭圆曲线算法”(ECC),是非对称加密算法的典型代表。

私钥一般是从加密安全的随机源中取出一长串随机字节,并使用SHA256哈希算法对其进行运算生成的,这样可以轻松生成一个256位的数字。 如果运算结果小于n-1(其中n=1.158*1077,略小于2256),我们就有了合适的私钥。 否则,我们用另一个随机数再次重复它。 公钥的生成可以通过加密算法从私钥得到,公钥逆向推导出私钥几乎是不可能的。

7.4. 比特币钱包

比特币钱包是一个形象的概念。 比特币本身是由一对数字密钥(私钥、公钥)决定的,因为有了私钥,就可以拥有相应地址比特币的处置权。 可以说,私钥就相当于因为比特币,管理这些数字密钥的软件通常被称为“钱包”。

7.5. 图灵完备

可以计算每个图灵可计算函数的计算系统被称为图灵完备的。 一种语言是图灵完备的,这意味着该语言的计算能力相当于一个通用图灵机(Universal Turing Machine),这是现代计算机语言所能拥有的最高能力。