Skip to content

Commit 1b9adf4

Browse files
committed
Add study notes for 2025-08-16
1 parent 1e43f62 commit 1b9adf4

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

tnt11003.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,58 @@ timezone: UTC+8
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-16
19+
20+
区块链应用学习
21+
22+
23+
### BTC数据结构
24+
25+
#### Hash pointer(哈希指针)
26+
27+
- 指针
28+
29+
​ 在程序运行过程中,需要用到数据。最简单的是直接获取数据,但当数据本身较大,要占用大空间时,不能直接使用。引入指针这一概念。当需要获取数据时,只需要按照指针所给的地址,节省内存。
30+
31+
指针实际上存储的是逻辑地址而非物理地址。
32+
33+
> 在比特币中,其最基本的数据结构便是一个个区块形成的区块链。
34+
35+
- 区块链与链表区别1:哈希指针代替普通指针
36+
37+
​ 每个区块根据自己的区块内容生成自己的哈希值,此外,每个区块(除创世纪块)都保存有前一个区块的哈希值。本区块哈希生成依赖于本区块内容,而本区块内容中又包含有前一个区块的哈希值。从而保证了区块内容**不被篡改**
38+
39+
40+
41+
#### Merkle Tree(默克尔树)
42+
43+
1. Merkle Tree用哈希指针代替了普通指针
44+
45+
​ 在区块块头中存储的是根节点的哈希值(对其再取一次哈希)。
46+
47+
​ 数据结构优点:只需要记住Root Hash(根哈希值),便可以检测出对树中任何部位的修改。
48+
49+
2. Merkle Tree的实际用途
50+
51+
​ Merkle Tree可以用于提供Merkle Proof。关于Merkle proof,需要先了解比特币系统中节点。比特币中节点分为轻节点和全节点。全节点保存整个区块的所有内容,而轻节点仅仅保存区块的块头信息。
52+
53+
> 为什么要分轻节点和全节点?
54+
> 硬件的局限。一个区块大小为1MB,对于移动便携设备来说,如果存储区块的所有内容,则所需空间过大,耗损大。所以轻节点只需要存储区块块头信息,全节点存储区块所有内容即可。
55+
56+
​ 当需要向轻节点证明某条交易是否被写入区块链,需要用到Markle proof。将交易到根节点这一条路径称为Merkle proof,全节点将整个Merkle proof发送给轻节点,轻节点即可根据其算出根哈希值,和自己保存的对比,以此验证该交易是否被写入区块链。只要沿着该路径,所有哈希值都正确,说明内容没有被修改。
57+
58+
59+
60+
### 数字货币中经常出现的问题
61+
62+
- 双花攻击
63+
64+
数字货币本身为带有签名的数据文件,可以进行复制。例子:对用户来说,可以将同一货币花费两次。
65+
66+
> 修改:对货币添加唯一编号(不可篡改),每次支付向货币发行单位查询真伪。
67+
> 该方法每次交易都需要依赖于第三方机构来判断货币真伪且防止双花攻击。通常第三方机构具有较高的可信度;
68+
> 但很多场景下,并不存在这样一个可信赖的第三方机构(中心化高信任度机构)。以去中心化思想为核心的比特币系统依据需求而创造出来
69+
1870
# 2025-08-15
1971

2072
### 部署实践

0 commit comments

Comments
 (0)