哈希属性表(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. 文件结束标志:eof

    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 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. 应用逻辑

    1. 运行:App运行时HAT在内存中
    2. 日常:非运行期间,HAT在本设备保存
    3. 备份:定期或不定期形成HAT文件,加密备份到分布式存储系统
      1. 时间顺序定期更新(每日或每周),或不定期更新(如备份文件时更新hat文件)
      2. 保存历史版本
      3. 应用方按文件重要程度定期检查数据是否存在
      4. 存储方根据数据访问情况,设计冷热存储方案和旧信息清理策略
      5. HAT文件哈希和存储位置上链(参见5链上管理)

    5. 链上管理

    1. Hat文件属性上链,构成一个cid的文件入口
    2. 上链信息包括
    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"
        }
    }
    
    1. 删除系列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"
        }
    }
    
    1. 设计存储应用或中间件专门管理HAT文件
    2. 其他应用调用存储应用或接口统一登记和存储
    3. 其他应用也可以按协议独立管理HAT文件

Log in to reply