区块链核心技术

区块链核心技术

学习目标

  • 理解区块链底层核心技术:哈希函数、默克尔树、数字签名、加密技术
  • 掌握主流共识机制的原理与分类
  • 了解区块的运行原理与整体架构
  • 认识联盟链的特点与应用场景

前置知识

  • 基本的计算机科学概念(数据结构、算法)
  • 对密码学有初步认知(非必须)
  • 已阅读 01-Web3 概述与愿景

一、哈希函数

1.1 什么是哈希函数

哈希函数(Hash Function)是一种将任意长度的输入映射为固定长度输出的数学函数。输出的结果称为哈希值(Hash Value)或摘要(Digest)。

输入(任意长度) → 哈希函数 → 输出(固定长度)

例如:

SHA-256("Hello") → 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
SHA-256("Hello!") → 334d016f755cd6dc58c53a86e183882f8ec14f52fb05345887c8a5edd42c87b7

仅仅多了一个感叹号,输出就完全不同——这就是哈希函数的雪崩效应

1.2 哈希函数的特点

特性 说明
正向计算容易 给定输入,可以快速算出哈希值
逆向推导困难 给定哈希值,几乎不可能反推出原始输入
抗碰撞性 很难找到两个不同的输入,使得它们的哈希值相同
确定性 相同的输入永远产生相同的输出
雪崩效应 输入的微小变化会导致输出的巨大变化

1.3 常见的哈希算法

MD5
- 输出长度 128 位(32 个十六进制字符)
- 计算速度快,但安全性已被破解
- 目前仅用于文件完整性校验等非安全场景

SHA-256
- 输出长度 256 位(64 个十六进制字符)
- 比特币采用的哈希算法
- 安全性高,目前尚未被破解
- 是区块链领域最广泛使用的哈希算法

哈希函数在区块链中的应用极为广泛:区块哈希、交易哈希、默克尔树、工作量证明(挖矿)等都依赖于哈希函数。


二、默克尔树与默克尔证明

2.1 什么是默克尔树

默克尔树(Merkle Tree)是一种树形数据结构,它的每个叶子节点是数据块的哈希值,每个非叶子节点是其子节点哈希值的组合哈希。

          Root Hash
         /         
      Hash01       Hash23
      /           /    
   Hash0  Hash1  Hash2  Hash3
     |      |      |      |
   Data0  Data1  Data2  Data3
  • 叶子节点:原始数据的哈希值
  • 中间节点:子节点哈希拼接后再次哈希
  • 根节点(Merkle Root):整棵树的"指纹",代表了所有数据的摘要

2.2 默克尔证明

默克尔证明(Merkle Proof)用于高效验证某条数据是否包含在默克尔树中,而不需要下载全部数据

默克尔证明

验证过程

假设要验证 Data1 是否在树中:
1. 提供 Data1 的哈希 Hash1
2. 提供兄弟节点 Hash0
3. 计算 Hash01 = Hash(Hash0 + Hash1)
4. 提供兄弟节点 Hash23
5. 计算 Root = Hash(Hash01 + Hash23)
6. 将计算结果与已知的 Merkle Root 对比,一致则验证通过

优势
- 验证一条数据只需要 O(log n) 个哈希值,而非 O(n) 条全部数据
- 这使得轻节点(SPV 节点)可以在不存储完整区块链的情况下验证交易


三、数字签名

数字签名是区块链中身份验证和交易授权的核心技术。

数字签名

3.1 基本原理

数字签名基于非对称加密(公钥密码学),包含一对密钥:

  • 私钥(Private Key):只有持有者知道,用于签名
  • 公钥(Public Key):公开的,任何人都可以用来验证签名

3.2 签名与验证流程

签名过程(发送方):
1. 对原始数据计算哈希值
2. 用私钥对哈希值进行加密,生成数字签名
3. 将原始数据和数字签名一起发送

验证过程(接收方):
1. 用发送方的公钥解密数字签名,得到哈希值 A
2. 对收到的原始数据计算哈希值,得到哈希值 B
3. 对比 A 和 B,一致则验证通过

3.3 在区块链中的作用

  • 身份验证:证明交易确实是由私钥持有者发起的
  • 防篡改:交易内容一旦被修改,签名验证就会失败
  • 不可否认:签名者无法否认自己签过的交易

在区块链中,你的私钥就是你的身份。常说的"Not your keys, not your coins"(不是你的私钥,就不是你的币),强调的正是私钥的重要性。


四、加密技术

加密技术

区块链中使用的加密技术主要分为两大类:

4.1 对称加密

  • 加密和解密使用同一把密钥
  • 优点:计算速度快
  • 缺点:密钥分发困难——如何安全地将密钥传递给对方?
  • 常见算法:AES、DES、3DES

4.2 非对称加密

  • 加密和解密使用不同的密钥(公钥加密,私钥解密)
  • 优点:解决了密钥分发问题,公钥可以公开
  • 缺点:计算速度比对称加密慢
  • 常见算法:RSA、ECC(椭圆曲线加密)

区块链主要使用椭圆曲线加密(ECC),特别是 secp256k1 曲线(比特币和以太坊均采用)。相比 RSA,ECC 在同等安全级别下密钥更短、计算更快,非常适合资源受限的场景。


五、共识机制

共识机制是区块链的核心,它解决了一个根本问题:在没有中心化权威的情况下,如何让所有节点对数据达成一致?

根据"先写后共识"还是"先共识后写",可以将主流共识机制分为两大类。

5.1 先写入后共识

这类机制先让节点提出区块,再由网络确认其合法性。

POW(工作量证明,Proof of Work)
- 节点通过消耗算力解决数学难题来竞争记账权
- 最先解出难题的节点获得出块权和奖励
- 代表项目:比特币
- 优点:安全性经过十多年验证,去中心化程度高
- 缺点:能耗巨大、交易确认慢

POS(权益证明,Proof of Stake)
- 节点根据质押的代币数量和时间来竞争记账权
- 质押越多,获得出块权的概率越大
- 代表项目:以太坊 2.0
- 优点:能耗低、效率高
- 缺点:可能导致"富者越富"

DPOS(委托权益证明,Delegated Proof of Stake)
- 代币持有者投票选出一定数量的"代表"(超级节点)来轮流出块
- 代表项目:EOS
- 优点:交易速度快、吞吐量高
- 缺点:去中心化程度降低,容易形成寡头

POX(混合证明)
- 结合 POW 和 POS 的优点
- 不同阶段或不同功能使用不同的共识方式
- 试图在安全性、去中心化和性能之间取得平衡

5.2 先共识后写入

这类机制先让节点就区块内容达成共识,再将区块写入链。

PBFT(实用拜占庭容错,Practical Byzantine Fault Tolerance)
- 节点之间通过多轮投票达成共识
- 能容忍不超过 1/3 的恶意节点
- 优点:交易最终性强(一旦确认就不可逆)、延迟低
- 缺点:节点数量增加时通信开销急剧增长,不适合大规模公链

Chained-BFT
- PBFT 的改进版本,将共识过程流水线化
- 每一轮的投票同时也是对前一轮的确认
- 降低了通信复杂度,提高了吞吐量
- 代表项目:Diem(原 Libra)

Tower-BFT
- 利用时间作为共识的辅助手段
- 节点对某个区块投票后,必须等待一定时间才能改变投票
- 等待时间随投票轮次指数增长,使得历史区块越来越难被推翻
- 代表项目:Solana


六、区块运行原理

区块运行原理

一个区块的基本结构包含:

6.1 区块头(Block Header)

字段 说明
前一区块哈希 指向上一个区块,形成链式结构
时间戳 区块创建的时间
默克尔根 该区块所有交易的默克尔树根哈希
难度目标 POW 中的挖矿难度(仅 POW 链)
Nonce 矿工尝试的随机数(仅 POW 链)

6.2 区块体(Block Body)

  • 包含该区块内的所有交易记录
  • 交易被组织成默克尔树,根哈希存在区块头中

6.3 运行流程

  1. 用户发起交易,用私钥签名后广播到网络
  2. 各节点收到交易后放入交易池(Mempool)
  3. 出块节点从交易池中选取交易,打包成区块
  4. 通过共识机制确认区块的合法性
  5. 确认后的区块被追加到链上,交易正式生效
  6. 所有节点同步最新状态

区块之间通过"前一区块哈希"首尾相连,形成一条不可篡改的链。如果篡改了某个历史区块的数据,其哈希值就会改变,导致后续所有区块的"前一区块哈希"都失效——攻击者必须重新计算之后所有区块的哈希,在算力上这几乎不可能实现。


七、联盟链

7.1 什么是联盟链

联盟链(Consortium Blockchain)是介于公有链和私有链之间的区块链形态。它由多个已知的组织共同维护,只有获得授权的节点才能参与共识和读写数据。

7.2 联盟链的特点

特点 说明
部分去中心化 由多个联盟成员共同管理,而非完全开放或单一机构控制
可控性强 节点准入需要审批,网络行为可监管
数据不默认公开 数据仅对联盟成员可见,支持隐私保护
交易速度快 节点数量有限且互相信任,共识效率远高于公有链

7.3 联盟链 vs 公有链

维度 公有链 联盟链
参与者 任何人 授权组织
去中心化程度 中等
交易速度 较慢(BTC ~7 TPS) 较快(可达数千 TPS)
隐私性 数据公开 数据可控
典型场景 加密货币、DeFi 企业协作、政务

八、应用场景

区块链技术(尤其是联盟链)已在多个领域落地应用:

8.1 商品溯源

  • 商品从原材料到终端消费者的每一个环节都记录在链上
  • 消费者扫码即可查看完整的流转链路
  • 数据不可篡改,有效防止造假
  • 典型案例:食品安全溯源、奢侈品防伪、药品追踪

8.2 公益慈善

  • 捐款的每一笔去向都记录在链上,公开透明
  • 捐赠者可以实时追踪资金流向
  • 解决了传统慈善的信任危机
  • 杜绝资金挪用和暗箱操作

8.3 供应链金融

  • 核心企业的信用可以通过区块链传递给上下游中小企业
  • 应收账款可以在链上确权和流转
  • 金融机构基于链上数据为中小企业提供融资
  • 降低了信息不对称,提高了融资效率

8.4 互助保险

  • 保险规则写入智能合约,理赔条件透明
  • 符合条件时自动触发理赔,无需人工审核
  • 参与者共同管理资金池
  • 降低了运营成本和道德风险

九、整体架构

区块链系统的整体架构通常分为以下几层:

整体架构

层级 说明
应用层 DApp、智能合约、用户界面
合约层 智能合约引擎、虚拟机(EVM 等)
共识层 共识算法(POW、POS、PBFT 等)
网络层 P2P 网络、节点通信、数据广播
数据层 区块结构、链式存储、默克尔树、数字签名

每一层都承担特定的职责,共同构成了完整的区块链系统。

整体架构详细


十、百度超级链(XuperChain)

百度超级链(XuperChain)是百度自主研发的区块链底层技术,也是国内较有代表性的联盟链平台之一。

主要特点

  • 自主知识产权:核心技术完全自研,拥有多项专利
  • 高性能:单链可达数万 TPS,满足大规模商用需求
  • 灵活共识:支持可插拔的共识机制,可根据场景选择 PBFT、DPOS 等
  • 智能合约:支持 Solidity 和 C++ 等多语言合约开发
  • 隐私保护:内置多种隐私计算方案
  • 开源开放:核心代码已开源,降低了企业接入门槛

XuperChain 已在政务、司法、医疗、金融等领域有落地应用,是国内企业级区块链解决方案的重要选择之一。


小结

本篇介绍了区块链的核心技术栈:哈希函数保证数据完整性,默克尔树实现高效验证,数字签名确保身份认证,加密技术保护数据隐私,共识机制解决去中心化环境下的信任问题。这些技术共同构成了区块链的技术基座。联盟链将这些技术应用于企业协作场景,在商品溯源、公益慈善、供应链金融等领域已经产生了实际价值。

上一篇:01-Web3 概述与愿景
下一篇:03-智能合约与 Solidity 基础(待续)

主题测试文章,只做测试使用。发布者:Walker,转转请注明出处:https://walker-learn.xyz/archives/7479

(0)
Walker的头像Walker
上一篇 5天前
下一篇 4天前

相关推荐

  • 引用类型详解:数组、结构体、映射、字符串

    引用类型详解:数组、结构体、映射、字符串 学习目标 掌握 Solidity 中四种引用类型(数组、结构体、映射、字符串/变长字节数组)的定义和使用方法。 前置知识 已学习值类型(整型、布尔、地址、定长字节数组等)。 数组(Array) storage 中的数组 Solidity 中数组分为两种: 静态数组 T[K]:长度固定,编译时确定 动态数组 T[]:长…

  • Web3 概述与愿景

    Web3 概述与愿景 学习目标 理解 Web1、Web2、Web3 的演进历程与核心区别 掌握 Web3 的核心理念:去中心化、数据确权、用户主权 了解 Web3 带来的创新机会与全新商业模式 熟悉 Web3 开发者的学习路线图 前置知识 基本的互联网使用经验 对软件开发有初步了解(非必须,但有助于理解技术部分) 一、Web1 → Web2 → Web3 的…

    Web3与WASM 17小时前
    400
  • 动态调用与Fallback机制

    动态调用与Fallback机制 学习目标 掌握 call 动态调用的语法与使用场景 理解 calldata 数据结构(selector + 参数编码) 掌握 fallback / receive 函数的触发机制 理解 tx、msg、block 三种上下文变量的区别 call 动态调用 基本语法 (bool success, bytes memory data…

    21小时前
    100
  • Delegatecall 与代理模式

    Delegatecall 与代理模式 学习目标 理解 delegatecall 的工作原理 掌握 Storage Layout(存储布局)规则 掌握代理模式与合约升级 了解非结构化存储(Unstructured Storage) delegatecall 原理 什么是 delegatecall 语法:address.delegatecall(bytes ca…

    19小时前
    100
  • 函数定义与访问控制

    函数定义与访问控制 学习目标 掌握 Solidity 函数定义、可见性修饰符、交易属性、modifier 和构造函数。 函数定义 一般形式 function fname([参数]) [可见性][交易属性][modifier...] returns(返回值) { ... } 函数签名:fname([参数]) —— 唯一标识一个函数 返回值:returns(返回…

    Web3与WASM 23小时前
    100
简体中文 繁体中文 English