存储区块链其实是存储所有区块到数据库
kv数据库 boltdb
把区块序列化成【】byte,
以当前区块的hash为key,
以序列化以后的byte数组value
db.put(block.hash,block.Serial() )
以后拿到
hash
就可以把hash
作为key
取得value
反序列化就可以得到区块,就可以得到prevhash
,prevhash
为0
时退出遍历的循环只要有了最新的hash,依次就可以遍历区块链
怎么序列化,怎么反序列化,怎么创建数据库,数据库原理
想打开数据库,两种情况,数据库存在,
数据库不存在->创建数据库
数据库的表是什么?就是kv,打开数据库后没表要创建表
打开表后取数据
view查看 update更新
命令行工具CLI
编译后在终端里运行,为什么是./tendermint呢?是因为不在bin(在path中)中,不在path中
接下来开始讨论序列化
序列化应该是block的方法哦(返回【】byte)
反序列化就不是block的方法了,用包调用,传入【】byte,返回*Block
打包成【】byte
解包【】byte
测试
不用深究,里面都是io操作