哈希属性表(HAT,Hash Attributes Table)(草稿)
-
哈希属性表(HAT,Hash Attributes Table)
1. 密码网络数据逻辑
1)哈希即数据身份
哈希是任何数据或文件的唯一身份。2)数据与意义分离
数据的存储与数据的社会意义分离,哈希为联系纽带。3)数据开放存取
所有数据在开放存储环境下以哈希寻址存取。不再以传统的私有存储或权限设置控制数据。4)加密密钥即权限
用户通过对数据进行加密获得隐私,通过共享密钥共享数据。5)用户掌握哈希属性
用户通过掌握数据哈希的属性,形成、管理和使用自己的文件数据库。2. 文件的哈希属性:
文件的哈希属性是对文件的全面描述,分为6类17项属性,除了fid之外,其他均可为空。
格式为压缩json格式:HPack json
编码为uft-8
分类 序号 字段名 中文名 类型 值的说明 长度 basic 1 fid 文件身份 string 文件的Sha256值 32 2 name 文件名 string 文件全名,含后缀 0~256 3 type 类型 string 应用自定义,兼容传统后缀 0~8 extend 4 description 描述 string 用户自定义 0~256 5 size 文件大小 Int32 文件实际大小byte 0~5 6 firstTime 首获时间 time stamp 绝对时间 0~4 7 lastTime 最后修改属性时间 time stamp 绝对时间,哈希修改视为新文件 0~4 version 8 sourceHash 源哈希 string Sha256 0~32 9 previousVersionHash 前版哈希 string Sha256 0~32 slice 10 firstPartHash 首片哈希 string sha256 0~32 11 previousPartHash 前片哈希 string sha256 0~32 12 total 分片总数 Int16 2~65535 0~2 crypto 13 encryptionAlgorithm 加密算法 string 空为未加密 0~32 14 publicKey 加密公钥 string hex 0~66 manage 15 rank 重要性 int 1~5 0~1 16 Status 状态 int 0删除,1活跃,2归档 0~1 17 location 存放位置 string array url 0~4096 3. HAT文件的结构
存放哈希属性表的文件按以下方式组织:
1. FC:string,2字节
2. Json内容,参见下表
3. 文件结束标志:eoffield number field name type length content required 1 type String 4 Fixed: "FEIP"<br>Case insensitive Y 2 sn int 2 Serial number<br>Fixed: 30 Y 3 ver int 1 Fixed: 1 Y 4 name String 4 Fixed: "HAT"<br>Case insensitive N 5 hash hex 32 Sha256 value of this protocol file N 6 data object 哈希属性表,HPack Json Y 如:my.hat
FC { "type": "FEIP", "sn": 30, "ver": 1, "name": "HAT", "hash": "", "data":{ [ ["fid", "name", "type", "description", "size", "firstTime", "lastTime", "sourceHash", "previousVersionHash", "previousPartHash", "tatol", "encryptionAlgorithm","publickey", "rank", "status", "location"], ["00000000000000000000000000000000000000000000000000000000000000”, “my.hat”, “hat”, “示例文件", , ”1622265045“, "1622265200", ,,,"ECC256k1-AES256CBC", "0323156856677ab2b1308fa1ede716a06ff03fd50aad338396d1b6ea8fa46a59ac", "5", "1", ["https://bbs.cash/topic/558/","fd://filedrive"]], ["03a7f8988aac6d6cd3015144667a9ba943e18b58f6a900fa57651fd391d83b9d”, “FEIP12V2_通讯簿(zh-CN).pdf”, “PDF”, “协议文本:FEIP12V2_通讯簿(zh-CN)”] ] } } eof
4. 应用逻辑
- 运行:App运行时HAT在内存中
- 日常:非运行期间,HAT在本设备保存
- 备份:定期或不定期形成HAT文件,加密备份到分布式存储系统
- 时间顺序定期更新(每日或每周),或不定期更新(如备份文件时更新hat文件)
- 保存历史版本
- 应用方按文件重要程度定期检查数据是否存在
- 存储方根据数据访问情况,设计冷热存储方案和旧信息清理策略
- HAT文件哈希和存储位置上链(参见5链上管理)
5. 链上管理
- Hat文件属性上链,构成一个cid的文件入口
- 上链信息包括
field number field name type length content required 1 type String 4 Fixed: "FEIP"<br>Case insensitive Y 2 sn int 2 Serial number<br>Fixed: 30 Y 3 ver int 1 Fixed: 1 Y 4 name String 4 Fixed: "HAT"<br>Case insensitive N 5 hash hex 32 Sha256 value of this protocol file N 6 data.fid string 32 文件身份,文件的Sha256值 Y 7 data.srcHash string 0~32 源哈希,Sha256 N 8 data.preVerHash string 0~32 前版哈希,Sha256 N 9 data.prePartHash string 0~32 前片哈希,sha256 N 10 data.algo string 0~32 加密算法,空为未加密,建议"ECC256k1-AES256CBC" N 11 data.loca string array 0~2048 存放位置,url N 12 data.app string 0~32 上链应用,address of the app N Example of add a HAT on Chain
{ "type": "FEIP", "sn": 30, "ver": 1, "name": "HAT", "hash": "", "data":{ "fid": "113334433335252533322334353232332223", "srcHash": "3335535334343535353535535335353535", "preVerHash": "11111111111224444445555555555666666", "prePartHash": "", "algo": "ECC256k1-AES256CBC" "loca": ["https://bbs.cash/topic/558/"] "app": "FDN3tsToURpGULc6xpap8MXiZkpMfmwang" } }
- 删除系列HAT文件信息
field number field name type length content required 1 type String 4 Fixed: "FEIP"<br>Case insensitive Y 2 sn int 2 Serial number<br>Fixed: 30 Y 3 ver int 1 Fixed: 1 Y 4 name String 4 Fixed: "HAT"<br>Case insensitive N 5 hash hex 32 Sha256 value of this protocol file N 6 data.op string array 3 操作:"del" Y 7 data.srcHash string 32 源哈希,Sha256 Y Example to delete a HAT series
{ "type": "FEIP", "sn": 30, "ver": 1, "name": "HAT", "hash": "", "data":{ "op": "del", "srcHash": "3335535334343535353535535335353535" } }
- 设计存储应用或中间件专门管理HAT文件
- 其他应用调用存储应用或接口统一登记和存储
- 其他应用也可以按协议独立管理HAT文件