存储区块链其实是存储所有区块到数据库

kv数据库 boltdb

  1. 把区块序列化成【】byte,
  2. 以当前区块的hash为key,
  3. 以序列化以后的byte数组value

db.put(block.hash,block.Serial() )

以后拿到hash就可以把hash作为key取得value
反序列化就可以得到区块,就可以得到prevhashprevhash0时退出遍历的循环

只要有了最新的hash,依次就可以遍历区块链

怎么序列化,怎么反序列化,怎么创建数据库,数据库原理

想打开数据库,两种情况,数据库存在,

数据库不存在->创建数据库

数据库的表是什么?就是kv,打开数据库后没表要创建表

打开表后取数据

view查看 update更新

命令行工具CLI

编译后在终端里运行,为什么是./tendermint呢?是因为不在bin(在path中)中,不在path中


接下来开始讨论序列化

序列化应该是block的方法哦(返回【】byte)

反序列化就不是block的方法了,用包调用,传入【】byte,返回*Block

打包成【】byte
解包【】byte
测试

不用深究,里面都是io操作