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

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



📌 推荐项目回顾:

👉 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 小时前
Kodiak Perps:Berachain 原生永续合约平台上线
区块链
MicroTech20255 小时前
微算法科技(NASDAQ MLGO)“自适应委托权益证明DPoS”模型:重塑区块链治理新格局
科技·算法·区块链
粟悟饭&龟波功7 小时前
【区块链】一、原理与起源
区块链
snakecy9 小时前
智能家居技术发展与应用综述
人工智能·区块链
会跑的葫芦怪9 小时前
Web3开发中的前端、后端与合约:角色定位与协作逻辑
前端·web3·区块链
闲人编程19 小时前
Python与区块链:如何用Web3.py与以太坊交互
python·安全·区块链·web3.py·以太坊·codecapsule
小攻城狮长成ing20 小时前
从0开始学区块链第10天—— 写第二个智能合约 FundMe
web3·区块链·智能合约·solidity
野老杂谈20 小时前
【Solidity 从入门到精通】第1章 区块链与智能合约的基本原理
区块链·智能合约
wanhengidc1 天前
云手机与云服务器之间的关系
服务器·游戏·智能手机·云计算·区块链
leijiwen1 天前
web3品牌RWA资产自主发行设计方案
web3·区块链