更新时间:2025-08-04 GMT+08:00
分享

使用分布式数字身份添加存证

功能介绍

使用DID添加存证。进行该操作的有两种角色,存证持有者和操作员。存证持有者指的是拥有该存证的人,操作员经过授权后可以将存证持有者的存证代为上传的人。存证持有者上传存证时只需要提供自身的DID以及存证持有者对存证文件哈希的签名两个参数。操作员上传存证时,需要提供存证持有者的DID,操作员的DID,操作员对存证文件哈希的签名以及存证持有者对操作员授权的可验证凭证的索引(Verifiable Credential Index)四个参数。注意:只对文件Hash值上链,不对原文进行报送,Hash值需要用户本地生成并保证正确性,请使用SM3算法。

URI

POST /v1/{project_id}/chains/{chain_id}/evidences/did

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

租户从IAM申请到的projectid,一般为32位字符串

chain_id

String

数字资产链实例ID

请求参数

表2 请求Body参数

参数

是否必选

参数类型

描述

owner_did

String

存证持有者的did,该值不能为空。

operator_did

String

上传该存证者的操作员的去中心化标识符,如果是本人上传存证,此时该值为空值。

verifiable_credential_index

String

当操作员上传存证时,存证持有者首先要使用智能合约向操作员签发一个可以执行操作的可验证凭证(Verifiable Crendential,VC),签发VC成功后智能合约会返回一个索引,这个索引称之为verifiable_credential_index。操作员上传存证时需要同时将授权的索引verifiable_credential_index作为参数进行传递,链上可以根据这个参数查询存证持有者对操作员授权的VC进行授权验证。

signature

String

如果是存证持有者本人进行存证操作,那么存证本人需要对存证文件的哈希值进行签名;如果是操作员代替存证持有者进行存证操作,那么操作员需要对存证文件的哈希值进行签名,哈希算法请使用SM3算法,该值不能为空。

charge_type

String

存证类型, normal:普通存证

name

String

存证名称,默认为文件名称

file_hash

String

文件hash值。

platform_name

String

平台名称,用户定义的平台名称

data_type

Integer

存证的文件类型,1:文件类型2:图片类型3:视频类型4:音频类型5:其他

响应参数

状态码:200

表3 响应Body参数

参数

参数类型

描述

tx_id

String

交易ID, 64位哈希值

ev_id

String

存证ID

状态码:400

表4 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码:401

表5 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码:403

表6 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码:500

表7 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

请求示例

{
  "charge_type" : "normal",
  "name" : "test.pgn",
  "file_hash" : "501da8f081152990fe2e896f83124a0dc55f1562fe5fc67ede08332a082cb410",
  "platform_name" : "test",
  "data_type" : 1
}

响应示例

状态码:200

success

{
  "tx_id" : "e5e967bb14f97734c9957560267357ee916918bd5dd5130e30fe6e88ca2c76df",
  "ev_id" : "7484b9b5b4bc11ed87c64a2b0e716f7e"
}

状态码:400

Error response

{
  "error_code" : "TDE.40000400",
  "error_msg" : "InvokeReq params invalid"
}

状态码:401

Error response

{
  "error_code" : "TDE.40100401",
  "error_msg" : "unauthorized user"
}

状态码:403

Error response

{
  "error_code" : "TDE.40300403",
  "error_msg" : "c59b99a1-32e8-11ef-8e12-0255ac100037 chainID does not exist"
}

状态码:500

Error response

  • {
      "error_code" : "TDE.50010010",
      "error_msg" : "Internal error"
    }
  • {
      "error_code" : "TDE.50010019",
      "error_msg" : "c59b99a1-32e8-11ef-8e12-0255ac100037 chainID status is Unavailable"
    }
  • {
      "error_code" : "TDE.50004001",
      "error_msg" : "db query error"
    }
  • {
      "error_code" : "TDE.50010011",
      "error_msg" : "the file hash already exist"
    }

状态码

状态码

描述

200

success

400

Error response

401

Error response

403

Error response

500

Error response

相关文档