区块链是怎么存储块&怎么找到前一个块

前言:学习区块链的过程中在想怎么管理区块链呢



📌 推荐项目回顾:

👉 Jeiwan 的 blockchain_go 项目

GitHub 地址:https://github.com/Jeiwan/blockchain_go


❓它是怎么存储区块 & 找前一个区块的?

项目分为多个阶段(chapter),随着学习进度逐步完善。不同阶段用的方式也不一样:


✅ 前期(基础阶段)

使用的是数组([]*Block)模拟链式结构:

go 复制代码
type Blockchain struct {
    blocks []*Block
}

每个区块中有字段:

go 复制代码
type Block struct {
    PrevBlockHash []byte
    Hash          []byte
    Data          []byte
}

查找前一个区块靠数组下标操作(blocks[i-1]),或手动遍历匹配 PrevBlockHash == Block.Hash。


🔄 中期(带持久化)

项目引入了 BoltDB(一个嵌入式的 key-value 数据库) 来持久化区块数据:

go 复制代码
type Blockchain struct {
    tip []byte // 当前最新区块的哈希
    db  *bolt.DB
}

所有区块用 Hash -> Block 存储在数据库中:

go 复制代码
db.Update(func(tx *bolt.Tx) error {
    b := tx.Bucket([]byte(blocksBucket))
    err := b.Put(newBlock.Hash, newBlock.Serialize())
    // ...
})

查找前一个区块的时候,就用:

go 复制代码
prevHash := currentBlock.PrevBlockHash
prevBlockData := db.Get(prevHash)

✔️ 也就是说:是通过"哈希查找 + 数据库"来定位前一个区块的!


相关推荐
Bczheng13 天前
四十六.创建一笔交易(9)--第三个区块 添加tx到钱包
区块链
2301_776045234 天前
理解Layer 1区块链协议
区块链
幻智星科技5 天前
零知识证明三大核心特性解析
区块链·零知识证明
2301_776045236 天前
山寨币与比特币之间的关系
大数据·人工智能·区块链
JF_Ma6 天前
1000个量化策略第29例:经典红利低波策略
区块链
AlanAshley6 天前
实时湖仓与区块链:数据架构的信任革命
架构·区块链
代码方舟7 天前
零信任架构实战:基于天远企业法人四要素高级版构建自动化电子印章授权与签约准入网关
人工智能·架构·自动化·区块链
AIFQuant7 天前
Python期货行情API接入:股指、黄金、原油多品种数据管道实战
开发语言·python·金融·区块链·量化开发
北冥you鱼8 天前
区块链供应链金融如何降低中小企业融资成本
网络·金融·区块链
2601_962885729 天前
2026 Python 股票数据接口选型指南(横评 + 决策树)
开发语言·python·区块链