接口网站开发推广拉新app哪几个靠谱
前言:学习区块链的过程中在想怎么管理区块链呢
📌 推荐项目回顾:
👉 Jeiwan 的 blockchain_go
项目
GitHub 地址:https://github.com/Jeiwan/blockchain_go
❓它是怎么存储区块 & 找前一个区块的?
项目分为多个阶段(chapter),随着学习进度逐步完善。不同阶段用的方式也不一样:
✅ 前期(基础阶段)
使用的是数组([]*Block
)模拟链式结构:
type Blockchain struct {blocks []*Block
}
每个区块中有字段:
type Block struct {PrevBlockHash []byteHash []byteData []byte
}
查找前一个区块靠数组下标操作(blocks[i-1]
),或手动遍历匹配 PrevBlockHash == Block.Hash
。
🔄 中期(带持久化)
项目引入了 BoltDB(一个嵌入式的 key-value 数据库) 来持久化区块数据:
type Blockchain struct {tip []byte // 当前最新区块的哈希db *bolt.DB
}
所有区块用 Hash -> Block
存储在数据库中:
db.Update(func(tx *bolt.Tx) error {b := tx.Bucket([]byte(blocksBucket))err := b.Put(newBlock.Hash, newBlock.Serialize())// ...
})
查找前一个区块的时候,就用:
prevHash := currentBlock.PrevBlockHash
prevBlockData := db.Get(prevHash)
✔️ 也就是说:是通过“哈希查找 + 数据库”来定位前一个区块的!