012-013-part-9 区块的Serialize Deserialize

Posted qq_34773934

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了012-013-part-9 区块的Serialize Deserialize相关的知识,希望对你有一定的参考价值。

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

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操作

以上是关于012-013-part-9 区块的Serialize Deserialize的主要内容,如果未能解决你的问题,请参考以下文章

使用XmlUtil.serialize()时,org.apache.xml.serializer.ToXMLSAXHandler无法强制转换为JBOSS中的org.apache.xml.seriali

Serializer

序列化组件

序列化组件

ArrayList源码分析

LinkedList源码解析