# 序列化方式与存储

出于智能合约兼容、并发性能和安全方面的考虑，我们选择了在Java序列化中非常快的两种序列化方式：

fastjson + Kroy

DATACBc是BaaS区块链服务，为了兼容后续智能合约的变化，我们引入了json序列化方式，可以方便兼容不同的智能合约。由于fastjson出过好几次安全性事件，综合考虑下，我们仅仅中合约兼容中使用了最简单的json序列化，而最终的存储数据我们会将json字符串进行Kroy序列化，避免由于fastjson序列化引起的安全事件。

出于便捷部署和存储性能考虑，我们选择了非常适合分布式存储的数据库：

RocksDB

### fastjson介绍

fastjson 是阿里巴巴的开源JSON解析库，它可以解析JSON格式的字符串，支持将Java Bean序列化为JSON字符串，也可以从JSON字符串反序列化到JavaBean。

fastjson相对其他JSON库的特点是快，从2011年fastjson发布1.1.x版本之后，其性能从未被其他Java实现的JSON库超越。

fastjson在阿里巴巴大规模使用，在数万台服务器上部署，fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。&#x20;

开源地址：<https://github.com/alibaba/fastjson>

### Kroy介绍

Kroy 序列化，号称 Java 中最快的序列化框架。

Kroy 是一个快速序列化/反序列化工具，依赖于字节码生成机制（底层使用了 ASM 库)，因此在序列化速度上有一定的优势。

### RocksDB介绍

RocksDB是用于键值数据的高性能嵌入式数据库。它是Google的LevelDB的一个分支，经过优化，可以利用许多CPU内核，并有效利用快速存储（例如固态驱动器）来处理输入/输出受限的工作负载。它基于日志结构的合并树数据结构。它是用C ++编写的，并为C ++，C和Java提供了正式的语言绑定。
