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

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



📌 推荐项目回顾:

👉 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)

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


相关推荐
小赖同学啊1 天前
物联网数据安全区块链服务
开发语言·python·区块链
CN-Dust1 天前
【FMZ】数字货币程序化交易简介
区块链
数据与人工智能律师1 天前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
小赖同学啊1 天前
区块链技术在物联网(IoT)中的核心应用场景
物联网·区块链
YSGZJJ2 天前
股指期货空头减仓说明了什么?
区块链
小赖同学啊2 天前
基于区块链的物联网(IoT)安全通信与数据共享的典型实例
物联网·安全·区块链
TechubNews2 天前
东方之珠·数链未来:香港回归28周年RWA革命赋能全球金融
区块链·稳定币
yoona10202 天前
在 Sepolia 上使用 Zama fhEVM 构建隐私代币与流动性池:全流程实战指南
区块链·隐私币·zama
选择不变2 天前
日线周线MACD指标使用图文教程,通达信指标
大数据·区块链·通达信指标公式·炒股技巧·短线指标·炒股指标
链上Sniper2 天前
智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
java·大数据·linux·运维·web3·区块链·智能合约