数据归档
特性简介
为了解决块链式区块链数据无限增长的问题,hyperchain底层区块链平台提供了一种基于“状态快照”的数据归档方法,以解决区块链数据的存储问题。 hyperchain存储的数据从内容上可以划分为两类:
区块数据
世界状态数据
前者指的就是块链式结构“区块链”中的区块数据;而后者指的是从“创世状态”开始,历经若干次的状态变迁后(执行交易),当前区块链世界中所有账户的状态。 区块链网络作为一个整体,可以被看成是一个基于交易的状态机:hyperchain开始于一个初始(“Genesis”)状态,然后伴随着交易的执行不断地进行状态变迁得到了一个截止目前为止的最终状态。这个最终状态是区块链网络能接受的经过共识的区块链世界状态。这个状态保存每个账户的信息,例如账户余额,账户合约源码,账户变量数据等。 但是随着运行时间的增长,某些账户(合约账户)自身的变量数据会越来越大,因而这类数据同样需要进行归档。
针对于两种不同的存储内容,我们的数据归档也分为两个方面,其一为对块链式的区块链数据进行归档,其二为对特定的合约账户的数据进行归档。
数据归档功能的面向对象特指“区块链数据”。区块链数据包括:
区块数据
交易数据
回执数据
非法交易记录数据
账本修改日志
当hyperchain接收到一个数据归档请求时,会将用户制定区域的区块数据、交易数据、回执数据等区块链数据从“线上数据库”搬移到“档案数据库”,实现线上数据库的减负。 但是为了保持区块链的完整性,PBFT算法的完备性,数据归档必须基于一个数据快照进行。例用户在区块高度为10的时候,制作了一个数据快照,那么当区块高度为30时,可以基于该快照信息,将0-10范围内的区块链数据进行归档。