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

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



📌 推荐项目回顾:

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

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


相关推荐
Bczheng14 小时前
二十三.交易数据之签名(2)--选币逻辑
区块链
zhglhy7 小时前
交易支付/证券/数字货币交易所交易引擎核心功能对比
区块链
长安链开源社区12 小时前
学者观察 | 基于区块链的隐私计算技术——北京理工大学教授祝烈煌
运维·区块链
链上日记17 小时前
WEEX行业视角:从近期安全事件看,2026 年或成为行业安全分水岭
大数据·安全·区块链
m0_3801671418 小时前
如何用 CoinGlass API 构建交易信号系统
人工智能·ai·区块链
m0_3801671418 小时前
如何用订单簿数据判断真假突破(OrderBook 实战)
大数据·人工智能·区块链
2301_7760452318 小时前
什么叫流动性:数字货币与美股市场解读
人工智能·区块链
长安链开源社区1 天前
长安链2.3.8生产版本发布,安全、开放、灵活的企业级区块链底座
安全·区块链
程序员李程峰1 天前
基础知识④链和代币之间的关系
web3·去中心化·区块链·智能合约·同态加密·共识算法·信任链
程序员李程峰1 天前
基础知识⑤ERC-20、BEP-20 和TRC-20 这三种流行的加密代币标准
web3·去中心化·区块链·智能合约·同态加密·共识算法·信任链