FEIP32V1_HAT(zh-CN)



  • FEIP32: HAT
    Version: 1
    Language: en-US
    Author: C_armX, Deisler-JJ_Sboy, master_wang
    Status: draft
    Created date: 2021-06-12
    Last modified date:2021-06-12
    File hash: ""
    TXid: 
    

    FEIP32V1_HAT(zh-CN)

    Contents

    Introduction

    General rules of FEIP type protocols

    Rules specific to this protocol

    哈希属性

    哈希属性表

    哈希属性文件

    使用逻辑

    链上管理

    Introduction

    Protocol type: FEIP
    Serial number: 32
    Protocol name: HAT
    Version: 1
    Description : 基于数据哈希对数据进行描述、识别、索引、组织和定位的共识。
    Author: C_armX, Deisler-JJ_Sboy,master_wang
    Language: en-US
    Tags: FEIP, Service
    Previous version hash:""
    

    General rules of FEIP type protocols

    1. Write important data in OP_RETURN for public witness under FEIP type protocols

    2. The max size of OP_RETURN : 4096 bytes

    3. Format : compacted json

    4. Encoding : utf-8

    Rules specific to this protocol

    1. 本协议提出以数据哈希为数据的身份描述数据重要属性的共识。

    2. 哈希属性(HA):指一项数据(或文件)的17项属性描述值,用于识别、索引、组织和定位特定数据。参见哈希属性

    3. 哈希属性表(HAT):指存放多个数据的哈希属性的列表。

    4. 哈希属性表文件(HAT file):指专门用于保存哈希属性表的文件。

    5. 编码:哈希属性的值的编码为utf-8

    哈希属性

    数据(或文件)的哈希属性(HA)是对数据的全面描述,分为6类17项属性,除了fid之外,其他均可为空。

    分类 序号 字段名 中文名 类型 值的说明 长度
    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

    哈希属性表

    当管理多个数据或文件时,这些数据的哈希属性集合为一个列表,即哈希属性表(Hash Attributes Table)。

    哈希属性表采用Hpack Json的方式保存和解析。

    哈希属性表文件

    由多个数据的哈希属性组成的哈希属性表(HAT)可以保存在文件中,称为HAT文件,该文件按以下方式组织:

    1. FC:string,2字节
    2. 文件描述的Json,参见下表
    3. 哈希属性表(HAT),Hpack Json格式
    4. 文件结束标志: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: 32 Y
    3 ver int 1 Fixed: 1 Y
    4 name String 3 Fixed: "HAT"<br>Case insensitive N
    5 hash hex 32 Sha256 value of this protocol file N

    Example of the content of a HAT file my.hat

    FC
    {
        "type": "FEIP",
        "sn": 30,
        "ver": 1,
        "name": "HAT",
        "hash": ""
    }
    [
       ["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
    

    使用逻辑

    1. 运行:App在运行时,HAT在内存中;
    2. 保存:App非运行期间,HAT在设备本地保存;
    3. 备份:App根据用户设定,定期或不定期将HAT文件加密备份到分布式存储系统;
    4. 上链:HAT文件的关键哈希属性保存在链上,称为获得和管理数据的入口。

    链上管理

    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: 32 Y
    3 ver int 1 Fixed: 1 Y
    4 name String 3 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.pubKey string 0~66 加密公钥,空为上链签名者公钥 N
    12 data.loca string array 0~2048 存放位置,url N
    13 data.app string 0~32 上链应用,address of the app N

    Example of add a HAT on Chain

    {
        "type": "FEIP",
        "sn": 32,
        "ver": 1,
        "name": "HAT",
        "hash": "",
        "data":{
            "fid": "113334433335252533322334353232332223",
            "srcHash": "3335535334343535353535535335353535",
            "preVerHash": "11111111111224444445555555555666666",
            "prePartHash": "",
            "algo": "ECC256k1-AES256CBC"
            "pubKey": ""
            "loca": ["https://bbs.cash/topic/558/"]
            "app": "FDN3tsToURpGULc6xpap8MXiZkpMfmwang"
        }
    }
    

    删除系列HAT文件信息

    指定源哈希,将以此为源头的系列链上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: 32 Y
    3 ver int 1 Fixed: 1 Y
    4 name String 3 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": 32,
        "ver": 1,
        "name": "HAT",
        "hash": "",
        "data":{
            "op": "del",
            "srcHash": "3335535334343535353535535335353535"
        }
    }
    

Log in to reply