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

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



📌 推荐项目回顾:

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

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


相关推荐
前进的李工32 分钟前
零知识证明:不泄露秘密也能自证
人工智能·web安全·区块链·零知识证明
焦点链创研究所1 小时前
以太坊基金会:以太坊状态演进路径与未来挑战
区块链
hengcaib2 小时前
赵良波:打造生鲜配送行业标杆,引领“新鲜、优质、安全”新风尚
大数据·区块链
CryptoRzz3 小时前
日本股票 API 对接实战指南(实时行情与 IPO 专题)
java·开发语言·python·区块链·maven
Wnq100725 小时前
在去中心化的边缘计算机集群中部署分布式 CORBA 及其AGENT
分布式·去中心化·区块链
berabtc7 小时前
比特币价值稳定后参与去中心化金融活动
金融·web3·去中心化·区块链·微策略·btcfi
Moonbeam Community7 小时前
Polkadot 生态的跨链桥:Snowbridge、Hyperbridge 与未来的 REVM
区块链
MicroTech20258 小时前
隐私计算与区块链融合:微算法科技(NASDAQ MLGO)构建新一代区块链网络的创新实践
网络·科技·区块链
Sui_Network8 小时前
社交游戏 Super-B 登陆 Epic 游戏商店抢先体验
人工智能·游戏·rpc·区块链·量子计算
友莘居士16 小时前
Hyperledger Fabric与 FISCO BCOS深度对比
区块链·fabric·fisco