• 区块链工作原理(节点、层)


    Users/Nodes in a Blockchain Network

    在某个节点被当作区块链网络的一部分之前,它必须要完成以下的要求:

    • 节点需要为认证过程生成公钥/私钥对
    • 节点需要与区块链网络中的其他一部分节点建立直接连接(peer connection),如果仅仅与一个节点连接,那么这个节点并不能享受到区块链带来的好处

    区块链节点的类型和它们在区块链系统内不同方面的参与情况如下图所示:

    在这里插入图片描述

    但要注意,表中列出的情况不是绝对的。例如在比特币中,miner nodes 就参与了交易的生成过程。

    Full Node (全节点)

    在本地保留区块链账本的完整记录,在不参考外部任何节点的情况下参与交易验证过程。且需要参与信息的路由过程,区块链中,当某个节点想与其他节点(不是他的相邻节点)对话时,就需要进行路由。

    Lightweight Blockchain Nodes (轻节点)

    只保留每个区块头,然后在需要完整信息时参考外部节点,它也会参与路由。

    Miner Nodes (矿工)

    参与区块链的共识(consensus)机制,并负责区块链的出块过程。它是区块链中的最高级别节点,可以改变一个区块链网络的状态,或者说,它负责保证整个区块链网络的正常运转。

    所谓的出块是指,参与共识机制的节点每次都会“投票”,按照不同的投票规则选出一个节点,本轮这个节点就可以创建一个区块,其它所有节点也会同步更新。

    根据交易的执行,我们还可以将节点分为

    • Leader Nodes:就是指我们刚刚提到的投票选出的出块节点
    • Validator Nodes:对区块进行验证

    或者

    • Sender Nodes:可以创建交易并向多个区块链节点发出交易,但必须用他们的个人私钥签署交易
    • Receiver Nodes:接收由 Sender Nodes 发出的交易。

    Layers in Blockchain

    区块链系统可以被分为六层:

    在这里插入图片描述

    Application Layer

    应用层直接与使用者进行交互。在这一层,不同的应用程序在客户端上运行,客户端使用应用程序与区块链系统交互。

    Virtualization and Smart Contract Layer

    这一层负责虚拟化和智能合约的相关执行,它也与用户机器互动,负责编译区块链代码。

    Consensus Layer

    共识层负责管理和达成 P2P 网络中的共识。它规定了需要执行哪种共识协议以及如何遵循规则来实现共识。

    Network and OS Layer

    这一层是负责管理区块链网络的底层网络服务和操作的核心层,通信机制、路由以及 P2P 网络都有该层来进行管理。

    Data Organization and Topology Layer

    该层涉及到包括散列(哈希)、数据存储加密算法、数据排序、侧链以及分片等任务。它还包括对交易模型以及 Merkle Tree 的管理问题。

    Merkle Tree(梅克尔树)是区块链的基本组成部分,它是一个代表区块中所有交易的二进制树, 其作用是快速归纳和校验区块数据的存在性和完整性,使得区块头只需包含根哈希值而不必封装所有底层数据。


    基于上面的讨论,我们将一个区块链的完整工作流程总结如下:

    1. 节点创建账户
    2. 节点创建交易
    3. 使用个人私钥签署交易
    4. 该交易被广播到验证节点
    5. 交易被成功验证
    6. 将多个这样的交易聚合
    7. Miner 节点将其收集并创建区块
    8. 达成共识后某个 Miner 节点出块
    9. 区块验证
    10. 该区块被成功添加到区块链中
    11. 该新增的区块信息被广播到整个区块链网络
    12. 其余节点在它们各自的本地区块链副本中添加该区块
    13. 该区块成为区块链网络的一部分,出块完成
  • 相关阅读:
    docker-compose
    常见的锁策略
    【owt-server】Internal Transport 5 : InternalServer 流管理、流通知、session管理
    适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》
    【数据结构】双向链表详解
    A Guide to Java HashMap
    Vue|单文件组件与脚手架安装
    C++ 类和对象 (查漏补缺)
    【Redis底层解析】链表类型
    JAVA便利店库存管理计算机毕业设计Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/myDarling_/article/details/128115066