长安链在部署fact示例合约后,无论是rust语言还是go语言版本,当发起数据上链,也就是调用合约中的save方法后,存储到statedb中的世界状态数据会多出cmecv1.0数据,其中time的值在自己拷贝出DB中的数据通过String转换后还显示不出来。
比如采用mysql数据库存储statedb时,通过navicat工具查看到的数据如下:
采用levelDB数据库存储statedb时,通过自己编写工具查看到的数据如下:
cmecv1.0�������� file_hash 57489dd0d217460b9e4220fa2ecc6639 file_name & 9979e39f4e7fb34a21ed832bec7fc7b0132213 time ��V
这是直接通过查看数据库的value值所看到的现象,但是通过sdk去查询合约,返回的结果值确实原来我们上链的数据原文。另外仔细看一下mysql数据库存储的object_key值也会发现多了一个前缀,后缀是file_hash的原文值。
既然是官方的demo,那么产生这样结果肯定是有原因的。我们不妨稍微猜测一下作者的目的。我们知道数据库存数据有一个天然的易修改特性,但是区块链是可防篡改的,但是这也是基于共识算法。说的防篡改,实际上是在基于共识算