存证服务
存证服务就是将数据本身或数据的哈希值写入区块链成为电子证据。由于写链交易默认含有写入者的数字签名,这隐含着写链者对数据具有产权(版权)的意味,所以存证服务也是一种简单的版权保护实现和数据确权实现。
数据存证
URL
POST https://baas.qualink.com/bas/proof/data/upload
请求头部
Content-type: application/json
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
channel | String | 是 | Fabric通道名称,默认使用trace3 即可 |
biz_type_id | String | 是 | 业务类型,默认使用99 即可 |
biz_id | String | 是 | 业务ID |
proof_data | Json | 是 | 存证数据,必须为JSON格式,内容自定义 |
secret | String | 否 | 钱包密码,开启钱包加密托管时必须填写 |
use_encrypt | String | 是 | 加密类型(0:不加密,1:授权加密,2:虚拟通道) |
authorize_users | String[] | 否 | 授权列表,加密类型为授权加密时必填 |
channel_id | String | 否 | 虚拟通道编码,加密类型为虚拟通道时必填 |
示例:
{
"channel": "trace3",
"biz_type_id": "99",
"biz_id": "ZL20191107150300000001",
"proof_data": {
"XXX": "XXXX"
},
"secret": "",
"use_encrypt": "1",
"authorize_users": [
"20180504143743308070",
"20180504143743308071",
"20180504143743308072"
],
"channel_id": ""
}
返回数据
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
success | Boolean | true | 响应标记 |
msg | String | 成功 | 提示信息 |
data | Json | - | 返回数据 |
tx_id | String | - | 交易哈希 |
示例:
{
"success": true,
"msg": "存证成功",
"data": {
"tx_id": "410ff6bead691c3037f7787f97c75ed7096483fecf395f191845a0e7080ebe9c"
}
}
存证数据列表
URL
POST https://baas.qualink.com/bas/proof/data/list
请求头部
Content-type: application/json
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
page_num | String | 否 | 分页查询页号 |
page_size | String | 否 | 分页查询每页数量 |
type_id | String | 否 | 查询条件,业务类型ID |
biz_id | String | 否 | 查询条件,业务ID |
start_time | String | 否 | 查询条件,存证时间范围起始时间 |
end_time | String | 否 | 查询条件,存证时间范围结束时间 |
use_encrypt | String | 否 | 加密类型(0:不加密,1:授权加密,2:虚拟通道) |
示例:
{
"page_num": "1",
"page_size": "5",
"type_id": "99",
"biz_id": "ZL20191107150300000001",
"start_time": "2019-11-01",
"end_time": "2019-11-07",
"use_encrypt": "1"
}
返回数据
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
success | Boolean | true | 响应标记 |
msg | String | 成功 | 提示信息 |
data | Json | - | 返回数据 |
total | int | - | 总条数 |
pages | int | - | 总页数 |
page_num | int | - | 页码 |
page_size | int | - | 每页条数 |
list | List | - | 存证信息列表 |
transaction_id | String | - | 交易哈希 |
biz_type_id | String | - | 业务类型ID |
type_name | String | - | 业务类型名称 |
biz_id | String | - | 业务ID |
channel | String | - | Fabric通道 |
user_id | String | - | 存证用户 |
nick_name | String | - | 用户昵称 |
transaction_time | String | - | 交易时间 |
use_encrypt | String | - | 加密类型(0:不加密,1:授权加密,2:虚拟通道) |
organize_code | String | - | 企业编码 |
organize_name | String | - | 企业名称 |
示例:
{
"success": true,
"msg": "获取成功",
"data": {
"total": 779,
"pages": 156,
"page_num": 1,
"page_size": 5,
"list": [
{
"transaction_id":"a37cbab6467499e8f48a67eb5d3c1a8bf5a229c0cc8247883fbc6719a7bc3eae",
"biz_type_id": "99",
"type_name":"公共存证服务",
"biz_id": "ZL20191107152700000001",
"channel": "trace3",
"user_id": "20180504143743308070",
"nick_name": "xxx用户",
"transaction_time": "2019-11-07 15:09:52",
"use_encrypt": "0",
"organize_code":"911507007566600000",
"organize_name":"xxx企业"
},
{
"transaction_id":"a37cbab6467499e8f48a67eb5d3c1a8bf5a229c0cc8247883fbc6719a7bc3eae",
"biz_type_id": "99",
"type_name":"公共存证服务",
"biz_id": "ZL20191107152700000002",
"channel": "trace3",
"user_id": "20180504143743308070",
"nick_name": "xxx用户",
"transaction_time": "2019-11-07 15:09:53",
"use_encrypt": "1",
"organize_code":"911507007566600000",
"organize_name":"xxx企业"
}
]
}
}
存证数据明细
URL
POST https://baas.qualink.com/bas/proof/data/get
请求头部
Content-type: application/json
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
biz_type_id | String | 是 | 业务类型ID |
biz_id | String | 是 | 业务ID |
示例:
{
"biz_type_id": "99",
"biz_id": "ZL20191107150300000001"
}
返回数据
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
success | Boolean | true | 响应标记 |
msg | String | 成功 | 提示信息 |
data | Json | - | 返回数据 |
transaction_id | String | - | 交易哈希 |
biz_type_id | String | - | 业务类型ID |
biz_type_name | String | - | 业务类型名称 |
biz_id | String | - | 业务ID |
channel | String | - | Fabric通道 |
user_id | String | - | 存证用户 |
nick_name | String | - | 用户昵称 |
organize_code | String | - | 企业编码 |
organize_name | String | - | 企业名称 |
history_list | List | - | 历史列表 |
block_hash | String | - | 区块哈希 |
block_num | Long | - | 区块号 |
transaction_id | String | - | 交易哈希 |
transaction_time | String | - | 交易时间 |
signature | String | - | 应用级签名 |
public_key | String | - | 公钥 |
transaction_content | String | - | 交易内容 |
示例:
{
"success": true,
"msg": "获取成功",
"data": {
"transaction_id": "a37cbab6467499e8f48a67eb5d3c1a8bf5a229c0cc8247883fbc6719a7bc3eae",
"biz_type_id": "99",
"biz_type_name": "公共存证服务",
"biz_id": "ZL20191107152700000001",
"channel": "trace3",
"user_id": "20180504143743308070",
"nick_name": "xxx用户",
"organize_code": "911507007566600000",
"organize_name": "xxx企业",
"history_list": [
{
"block_hash": "0665C35179C814F21CEBD5D48FD540774F12D6BE779719412CD4B70453D66CC8",
"block_num": 28934,
"transaction_id": "a37cbab6467499e8f48a67eb5d3c1a8bf5a229c0cc8247883fbc6719a7bc3eae",
"transaction_time": "2019-11-07 15:09:52",
"user_id": "20180504143743308070",
"nick_name": "xxx用户",
"signature": "3045022100AEDF73852D4EB1228D7F8BE36FA006F803F2F2019728483EE39ADF939A8FE51F022008391707D074B509396D7A838B3D9A5857D738590EEF7683A0624F4071E91004",
"public_key": "3059301306072A8648CE3D020106082A8648CE3D030107034200049ABD66494301557ECFD0EE096A49974EABD38367BE51A7D1D49E1FBCCBA7718402C8EE9ECCCE5F6C9880BD5EBA11A9B3E65F673BE9F194C81BA711D3C57796AD",
"transaction_content": "[{\"isDelete\":false,\"value\":\"{\"CHANNEL_ID\":\"CHANNEL_2019103111020955117381\",\"ENCRYPT_DATA\":\"40E6BDA20B76336710BD4BFA8820D19A\"}\",\"key\":\"99_ZL20191107152700000001\"}]"
}
]
}
}
存证数据解密
URL
POST https://test.qualink.com/bas/proof/data/decrypt
请求头部
Content-type: application/json
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
biz_type_id | String | 是 | 业务类型ID |
biz_id | String | 是 | 业务ID |
secret | String | 否 | 钱包密码,启用钱包加密托管时必填 |
encrypt_data | String | 是 | 加密数据,明细接口中transaction_content 字段的value 值 |
示例:
{
"biz_type_id": "99",
"biz_id": "ZL20191107150300000001",
"secret": "123456",
"encrypt_data": "{\"ENCRYPT_DATA\":\"775F9C9CB943F4FDD74C6690EB1CB1E4771B8F150E069DE5B8A6ADE17D1FBF58\",\"AUTHORIZE_USERS\":[{\"USER_ID\":\"20180126093300000000\",\"BAAS_USER_ID\":\"FABRIC_20180126093300000000_0\",\"ENYCRYPT_SECRET\":\"049EA55B85ABC8E39F225140936BD720523E4F197AD0DBB52F3CA65398F8F2CBFE1237BBAD86B09B6059639AFEB4E656E5278E5E2C9D35C0635AEFDC2B0D87D2E69C8E4A32B3CE1DFDA470B86DA28734E3EBDB2839D426C2ABC581BB4B63DC19C36906AFCABDFB758756FEEBBB330F65275C4A2D041EF0964D4D0ADDB89217B48A\"},{\"USER_ID\":\"20180821145735929189\",\"BAAS_USER_ID\":\"FABRIC_20180821145735929189_201911070900204761_0\",\"ENYCRYPT_SECRET\":\"04AA0F4473DD041EDD7A8CB93B49379F63BAFD72D683901D17C51E69128DBA5CECDBE619083079460D1A3E4D6963EBFCE20F371BC40DDE38F5207B792DF5C5541F490F0C2FF6204C35BB42A1B1F012AFA502CDEF4E2B9ED68B38C1DA6A96D3FF9ECB95F23BA0A20380960387A241F977BC71BC047CE4E82411B4C34740F40D0764\"}]}"
}
返回数据
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
success | Boolean | true | 响应标记 |
msg | String | 成功 | 提示信息 |
data | Json | - | 返回数据 |
payload | String | - | 原始数据 |
示例:
{
"success": true,
"msg": "解密成功",
"data": {
"payload": "{\"xxxkey\":\"xxxvalue\"}"
}
}
文件存证
URL
POST https://baas.qualink.com/bas/proof/file/upload
请求头部
Content-Type: application/x-www-form-urlencoded
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
file | File | 是 | 存证文件 |
biz_type_id | String | 是 | 业务类型,默认使用99 即可 |
biz_id | String | 是 | 业务ID |
channel | Json | 是 | 存证数据,必须为JSON格式,内容自定义 |
secret | String | 否 | 钱包密码,开启钱包加密托管时必须填写 |
use_encrypt | String | 是 | 加密类型(0:不加密,1:授权加密,2:虚拟通道) |
authorize_users | String[] | 否 | 授权列表,加密类型为授权加密时必填 |
channel_id | String | 否 | 虚拟通道编码,加密类型为虚拟通道时必填 |
示例:
返回数据
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
success | Boolean | true | 响应标记 |
msg | String | 成功 | 提示信息 |
data | Json | - | 返回数据 |
tx_id | String | - | 交易哈希 |
示例:
{
"success": true,
"msg": "存证成功",
"data": {
"tx_id": "410ff6bead691c3037f7787f97c75ed7096483fecf395f191845a0e7080ebe9c"
}
}
存证文件列表
URL
POST https://baas.qualink.com/bas/proof/file/list
请求头部
Content-type: application/json
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
page_num | String | 否 | 分页查询页号 |
page_size | String | 否 | 分页查询每页数量 |
type_id | String | 否 | 查询条件,业务类型ID |
biz_id | String | 否 | 查询条件,业务ID |
start_time | String | 否 | 查询条件,存证时间范围起始时间 |
end_time | String | 否 | 查询条件,存证时间范围结束时间 |
use_encrypt | String | 否 | 加密类型(0:不加密,1:授权加密,2:虚拟通道) |
示例:
{
"page_num": "1",
"page_size": "5",
"type_id": "99",
"biz_id": "ZL20191107150300000001",
"start_time": "2019-11-01",
"end_time": "2019-11-07",
"use_encrypt": "1"
}
返回数据
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
success | Boolean | true | 响应标记 |
msg | String | 成功 | 提示信息 |
data | Json | - | 返回数据 |
total | int | - | 总条数 |
pages | int | - | 总页数 |
page_num | int | - | 页码 |
page_size | int | - | 每页条数 |
list | List | - | 存证信息列表 |
transaction_id | String | - | 交易哈希 |
biz_type_id | String | - | 业务类型ID |
type_name | String | - | 业务类型名称 |
biz_id | String | - | 业务ID |
channel | String | - | Fabric通道 |
user_id | String | - | 存证用户 |
nick_name | String | - | 用户昵称 |
transaction_time | String | - | 交易时间 |
use_encrypt | String | - | 加密类型(0:不加密,1:授权加密,2:虚拟通道) |
organize_code | String | - | 企业编码 |
organize_name | String | - | 企业名称 |
type | String | - | 文件类型 |
url | String | - | 文件下载地址 |
file_hash | String | - | 文件哈希 |
name | String | - | 文件名称 |
示例:
{
"success": true,
"msg": "获取成功",
"data": {
"total": 779,
"pages": 156,
"page_num": 1,
"page_size": 5,
"list": [
{
"transaction_id": "a37cbab6467499e8f48a67eb5d3c1a8bf5a229c0cc8247883fbc6719a7bc3eae",
"biz_type_id": "99",
"type_name": "公共存证服务",
"biz_id": "ZL20191107152700000001",
"channel": "trace3",
"user_id": "20180504143743308070",
"nick_name": "xxx用户",
"transaction_time": "2019-11-07 15:09:52",
"use_encrypt": "0",
"organize_code": "911507007566600000",
"organize_name": "xxx企业",
"type": "图片",
"url": "http://chain.ufile-inspur.ucloud.com.cn/qualink/baas/encrypt/201911071600105763719757201911071600105748543372.png",
"file_hash": "402098d92849ada7f08d8a636b3d6d8d51faa6b2a007d5cbdecd3bc1a1856730",
"name": "201911071600105763719757201911071600105748543372.png"
},
{
"transaction_id": "a37cbab6467499e8f48a67eb5d3c1a8bf5a229c0cc8247883fbc6719a7bc3eae",
"biz_type_id": "99",
"type_name": "公共存证服务",
"biz_id": "ZL20191107152700000001",
"channel": "trace3",
"user_id": "20180504143743308070",
"nick_name": "xxx用户",
"transaction_time": "2019-11-07 15:09:52",
"use_encrypt": "0",
"organize_code": "911507007566600000",
"organize_name": "xxx企业",
"type": "图片",
"url": "http://chain.ufile-inspur.ucloud.com.cn/qualink/baas/encrypt/201911071600105763719757201911071600105748543372.png",
"file_hash": "402098d92849ada7f08d8a636b3d6d8d51faa6b2a007d5cbdecd3bc1a1856730",
"name": "201911071600105763719757201911071600105748543372.png"
}
]
}
}
存证文件明细
URL
POST https://baas.qualink.com/bas/proof/file/get
请求头部
Content-type: application/json
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
file_url | String | 是 | 文件URL |
示例:
{
"file_url": "http://chain.ufile-inspur.ucloud.com.cn/qualink/baas/encrypt/201911071600105763719757201911071600105748543372.png"
}
返回数据
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
success | Boolean | true | 响应标记 |
msg | String | 成功 | 提示信息 |
data | Json | - | 返回数据 |
transaction_id | String | - | 交易哈希 |
biz_type_id | String | - | 业务类型ID |
biz_type_name | String | - | 业务类型名称 |
biz_id | String | - | 业务ID |
channel | String | - | Fabric通道 |
user_id | String | - | 存证用户 |
nick_name | String | - | 用户昵称 |
use_encrypt | String | - | 加密类型(0:不加密,1:授权加密,2:虚拟通道) |
file_hash | String | - | 文件哈希 |
file_name | String | - | 文件名称 |
file_type | String | - | 文件类型 |
file_url | String | - | 文件URL |
organize_code | String | - | 企业编码 |
organize_name | String | - | 企业名称 |
block_hash | String | - | 区块哈希 |
block_num | Long | - | 区块号 |
transaction_time | String | - | 交易时间 |
signature | String | - | 应用级签名 |
public_key | String | - | 公钥 |
transaction_content | String | - | 交易内容 |
示例:
{
"success": true,
"msg": "获取成功",
"data": {
"transaction_id": "a37cbab6467499e8f48a67eb5d3c1a8bf5a229c0cc8247883fbc6719a7bc3eae",
"biz_type_id": "99",
"biz_type_name": "公共存证服务",
"biz_id": "ZL20191107152700000001",
"channel": "trace3",
"user_id": "20180504143743308070",
"nick_name": "xxx用户",
"use_encrypt": "2",
"file_hash": "402098d92849ada7f08d8a636b3d6d8d51faa6b2a007d5cbdecd3bc1a1856730",
"file_name": "201911071600105763719757201911071600105748543372.png",
"file_type": "图片",
"file_url": "http://chain.ufile-inspur.ucloud.com.cn/qualink/baas/encrypt/201911071600105763719757201911071600105748543372.png",
"organize_code": "911507007566600000",
"organize_name": "xxx企业",
"block_hash": "0665C35179C814F21CEBD5D48FD540774F12D6BE779719412CD4B70453D66CC8",
"block_num": 28934,
"transaction_time": "2019-11-07 15:09:52",
"signature": "3045022100AEDF73852D4EB1228D7F8BE36FA006F803F2F2019728483EE39ADF939A8FE51F022008391707D074B509396D7A838B3D9A5857D738590EEF7683A0624F4071E91004",
"public_key": "3059301306072A8648CE3D020106082A8648CE3D030107034200049ABD66494301557ECFD0EE096A49974EABD38367BE51A7D1D49E1FBCCBA7718402C8EE9ECCCE5F6C9880BD5EBA11A9B3E65F673BE9F194C81BA711D3C57796AD",
"transaction_content": "[{\"isDelete\":false,\"value\":\"{\"FILE_HASH\":\"402098d92849ada7f08d8a636b3d6d8d51faa6b2a007d5cbdecd3bc1a1856730\",\"CHANNEL_ID\":\"CHANNEL_2019110709181488348056\",\"USER_ID\":\"20180821145735929189\",\"ORGANIZE_CODE\":\"\"}\",\"key\":\"402098d92849ada7f08d8a636b3d6d8d51faa6b2a007d5cbdecd3bc1a1856730\"}]"
}
}
存证文件解密
URL
POST https://baas.qualink.com/bas/proof/file/decrypt
请求头部
Content-type: application/json
Authorization: 平台用户身份令牌
请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
biz_type_id | String | 是 | 业务类型ID |
biz_id | String | 是 | 业务ID |
secret | String | 否 | 钱包密码,启用钱包加密托管时必填 |
file_url | String | 是 | 文件URL |
encrypt_data | String | 是 | 加密数据,明细接口中transaction_content 字段的value 值 |
示例:
{
"biz_type_id": "99",
"biz_id": "ZL20191107150300000001",
"secret": "123456",
"file_url": "http://chain.ufile-inspur.ucloud.com.cn/qualink/baas/encrypt/201911071600105763719757201911071600105748543372.png",
"encrypt_data": "{\"FILE_HASH\":\"402098d92849ada7f08d8a636b3d6d8d51faa6b2a007d5cbdecd3bc1a1856730\",\"CHANNEL_ID\":\"CHANNEL_2019110709181488348056\",\"USER_ID\":\"20180821145735929189\",\"ORGANIZE_CODE\":\"\"}"
}
返回数据
返回文件流