目录
2.2.非对称加密(Asymmetric Cryptography)
1.区块链入门第一问,什么是区块链?
先看一段视频,初步了解区块链的概念(注意:本文章以比特币系统为例子,比特币系统≠区块链,而是区块链包含比特币系统)区块链概念入门视频
https://www.bilibili.com/video/BV1J7411Z7T9/?spm_id_from=333.337.search-card.all.click
1.1.定义
区块链是一种分布式、去中心化的数字账本技术,通过加密和共识机制确保数据不可篡改、可追溯。
1.2.核心特点
去中心化、透明性、安全性、不可篡改。
2.密码学基础
区块链技术依赖密码学来确保安全性、隐私性和数据的完整性。以下是区块链中常用的密码学技术及其具体应用。
2.1.哈希函数(Hash Functions)
哈希函数是一种将任意长度的数据(输入)转换为固定长度输出的算法,输出称为“哈希值”或“摘要”。在区块链中,哈希函数是核心工具。
主要特性
-
单向性(Hiding):从哈希值无法反推出原始数据。
-
抗碰撞性(Collision Resistance):几乎不可能找到两个不同输入生成相同哈希值。
-
谜题友好性(Puzzle Friendliness):输出随机均匀,适合挖矿。
-
快速计算:输入数据后立刻得出结果。
区块链中的应用
-
区块链接:
-
每个区块包含前一区块的哈希值,形成链式结构
-
示例:区块 100 的哈希是 abc123,区块 101 的头部记录 abc123,保证顺序和完整性
-
-
数据结构图
简易链表图 -
交易验证:
-
交易数据被哈希,生成唯一标识。
-
示例:A转账 1 BTC 给 B,交易哈希是 xyz789,节点验证时对比哈希。
-
-
工作量证明(PoW):
-
矿工调整 nonce,计算哈希,直到满足条件(如前 N 位为 0)。
-
示例:比特币要求哈希值小于目标值,矿工试 billions 次才找到。
-
通俗比喻
-
哈希像一台“碎纸机”,把文件(数据)撕成固定大小的碎片(哈希值),碎片无法拼回原样,但能证明文件没变。
2.2.非对称加密(Asymmetric Cryptography)
非对称加密使用一对密钥:公钥(Public Key) 和 私钥(Private Key)。公钥公开,私钥保密,数据用一种密钥加密后只能用另一种解密。
主要特性
-
加密与解密:公钥加密的数据只能私钥解密,反之亦然。
-
数字签名:私钥签名,公钥验证,确保身份和完整性。
常见算法
-
ECDSA(椭圆曲线数字签名算法):基于椭圆曲线,提供高效的安全性。(先做了解,后续课程会解释)
-
RSA:较少用于区块链,因计算开销大。
区块链中的应用
-
地址生成:
-
公钥通过哈希生成比特币地址(如 1A1zP1...)。
-
示例:用户生成的公钥哈希后变成她的收款地址。
-
-
交易签名:
-
用户用私钥签名交易,证明所有权。
-
示例:A转 1 BTC 给 B,她用私钥签名交易,网络用她的公钥验证。
-
-
身份验证:
-
公钥确认交易发起者身份,保护隐私(地址匿名)。
-
示例:Bob 看到交易来自 1A1zP1...,但不知道是 Alice。
-
通俗比喻
-
公钥像一个邮箱,任何人都能往里塞信(加密);私钥像钥匙,只有持有人能打开(解密)。
-
签名像手写签名,证明“我是本人”,别人用你的字迹样本(公钥)验证。
2.3.数字签名(Digital Signatures)
数字签名是非对称加密的应用,用私钥对数据签名,公钥验证,确保数据的真实性和完整性。
区块链中的应用
-
交易授权:
-
用户签名交易,证明“是我发的”。
-
示例:Alice 签名“转账 1 BTC”,网络验证签名匹配她的公钥。
-
-
防止篡改:
-
签名绑定交易内容,改动会导致签名无效。
-
示例:若有人改金额为 2 BTC,签名校验失败。
-
工作原理
-
A 用私钥对交易哈希签名,生成签名。
-
节点用 A 的公钥验证签名与哈希是否匹配。
通俗比喻
-
像在支票上签字,别人看签名(公钥)确认是你写的,且支票没被改。
2.4.区块链密码学的整体作用
技术 | 作用 | 比特币示例 |
---|---|---|
哈希函数 | 链接区块、验证完整性、挖矿 | SHA-256 生成区块哈希 |
非对称加密 | 签名交易、生成地址 | ECDSA 签名转账 |
对称加密 | 保护本地数据 | AES 加密钱包文件 |
数字签名 | 证明身份、防篡改 | 验证 Alice 的 1 BTC 转账 |
Merkle Tree | 高效验证交易 | 区块头存储 Merkle Roo |
3.数据结构
区块的组成:每个区块是一个独立的数据单元,包含两大部分:区块头(Header)和区块体(Body)。
3.1.区块头(Block Header)
-
作用:存储元数据,用于链接和验证。
-
比特币中的组成(80 字节固定):
-
版本号(Version, 4 字节):协议版本,如 4。
-
前一区块哈希(Previous Block Hash, 32 字节):指向前一区块的哈希值。
-
Merkle 根(Merkle Root, 32 字节):区块体内交易的哈希汇总。
-
时间戳(Timestamp, 4 字节):区块创建时间(Unix 时间戳)。
-
难度目标(Difficulty Target, 4 字节):挖矿难度值。
-
Nonce(4 字节):随机数,用于挖矿调整哈希。
-
3.2.区块体(Block Body)
-
作用:存储实际数据。
-
内容:
-
交易列表(Transactions):多笔交易记录,如“Alice 转 1 BTC 给 Bob”。
-
大小:比特币区块最大 1MB,可存数百到数千笔交易。
区块 100: Header: Version: 4 Prev Hash: 00000000000000000001abcd... Merkle Root: 4a6b8c9d... Timestamp: 1698765432 Difficulty: 1d00ffff Nonce: 123456789 Body: Transactions: [Tx1, Tx2, Tx3, ...]
-
3.3.默克尔树(Merkle Tree)
Merkle Tree 是一个二叉树,通过哈希函数组织区块体的交易数据,生成单一的 Merkle Root。
计算过程
-
叶子节点:图中tx代表每一笔交易,每一笔交易都是一个叶子节点,每笔交易双重哈希(SHA-256(SHA-256(Tx)))
-
中间节点:除根节点(Merkle Root)外,其他H()都是中间节点,两两配对哈希:H12 = SHA-256(SHA-256(H1 + H2))。
-
根节点:最终哈希为 Merkle Root,存入区块头。

作用
-
高效验证:只需 Merkle Root 和路径,确认交易存在。
-
轻客户端:手机钱包只存区块头,验证部分交易。
通俗比喻
-
像叠金字塔,底层是交易单,叠到顶是一个编号(Merkle Root),检查顶就知底完整。
4.比特币系统到底是怎么运作的呢?
A 向 B 转账 1 BTC,交易记录被打包进区块,全球节点同步验证。也就是说每个节点都保存有一份包含比特币网络所有交易信息的账本,此账本公开透明,不可修改。
概念总是枯燥无味的,接下来阅读一下小故事,根据小故事初步理解区块链概念:
故事:比特币小镇的魔法账本
在一个叫“比特镇”的地方,人们不用纸币,而是用一种神奇的数字货币——比特币(BTC)。这个镇子有个特别的规则:所有交易都记录在一个魔法账本上,这个账本不归镇长或银行管,而是由镇上每个人共同维护。
A 给 B 转账 1 BTC
有一天,小镇居民 A 想给 B 转账 1 BTC。她拿出自己的“魔法钱包”(其实是一个比特币地址),写下一张数字便条:“我,A,转给 B1 BTC。”便条上还有她的独家签名(用私钥加密),证明是她本人发的。
A 把这张便条大声喊了出来(广播到网络),镇上的每个人都听到了。镇子里有一些特别勤快的人,叫“矿工”,他们负责把便条整理好。
矿工打包便条
矿工们拿出自己的大账本,翻到最新的一页(区块)。这一页已经写了一些其他交易,比如“C 转给 D 0.5 BTC”。现在,矿工们把 A 的便条也抄上去。但有个规矩:新的一页不能随便写满,必须解开一个数学谜题(工作量证明,PoW)。
矿工小明特别聪明,第一个解开了谜题。他高兴地说:“我搞定了!”然后把这一页账本盖上一个魔法封印(哈希值),封印上还写着上一页的编号(前一区块的哈希)。这样,新的一页就正式加到了账本上。
全球同步的账本
小明把新账本展示给镇上所有人(全球节点)。大家检查了一下:
1. A 的签名是真的吗?(用公钥验证)
2. A 有没有足够的 BTC?(查账本历史)
3. 封印对不对?(校验哈希)
确认没问题后,每个人都把这页账本抄到自己的本子上(同步验证)。现在,镇上每人手里都有了一模一样的账本,上面记录了从第一天起所有的交易,包括“A 转给 B 1 BTC”。
公开透明,不可修改
这个账本有个魔法特性:
公开透明:谁都可以翻开看,想查 A 或 B 的交易记录,一目了然(不过只看到地址,看不到真名)。
不可修改:如果有人偷偷改了 A 的记录,比如把 1 BTC 改成 2 BTC,封印(哈希)就会不对,下一页的链接也会断掉。要改账本,得说服镇上过半的人一起改,可这几乎不可能——太费劲了!
故事的结局
B 收到 1 BTC,开心地去买了东西。A 的钱包里少了一点,但她不担心,因为整个小镇(比特币网络)都见证了这笔交易。矿工小明因为努力记账,还拿到了奖励——几枚新的比特币。
故事背后的原理
A 向 B 转账 1 BTC:用户发起交易,用私钥签名。
交易记录被打包进区块:矿工收集交易,解 PoW 谜题生成新区块。
全球节点同步验证:所有节点验证交易并更新账本。
账本公开透明,不可修改:通过哈希链接和分布式存储确保安全。
简单总结
比特币系统就像一个小镇的共享账本,大家一起记账、监督,没人能作弊。每次转账都写进账本,封好后传遍全镇,确保公平和安全。
5.提问环节
问题1:去中心化是如何实现的?为什么说它比中心化更安全?
问题2:透明性会不会泄露隐私?
问题3:Merkle Root 是怎么算出来的?
问题4:A 转账给 B 的 1 BTC,为什么需要全球节点同步验证?
请把问题答案留在评论区,问题没有标准答案,一起探讨心中最标准的答案,共同学习。