1. 摘要
区块链数据摘 要存证协议是一种基于区块链技术的创新性协议,旨在提供高度安全和可靠的数据存证服务。该协议利用区块链的去中心化和分布式特性,结合哈希函数的摘要算法,为数据生成独一无二的不可篡改的摘要。这个摘要承载了数据的核心信息,具有高度的概括性和代表性。通过将这些摘要记录在区块链上,可以确保数据的完整性、真实性以及可追溯性。因此,该协议为数字文档、交易记录等提供了安全的存证服务,为数据的可信传输和合法验证提供了关键支持。可应用在多个领域、如电子合同、知识产权、司法等。
2. 动机
提供一种标准化的方法,将数据的哈希摘要存储在区块链上。 确保数据的完整性和真实性,防止数据被篡改或伪造。 提供一种简单、高效的方式,用于验证数据摘要的有效性,从而实现对数据的可信认证。
3. 原理
数字存证摘要协议利用智能合约作为执行存证操作的自动化工具,其原理包括以下关键步骤:
1、数据哈希生成: 用户在本地环境(客户端应用程序等)使用哈希算法(SHA-256)对待存证的数据进行哈希运算,生成唯一的数据摘要。
2、存证智能合约创建: 用户在区块链上部署存证智能合约。该合约定义了存证交易的结构和逻辑,包括数据摘要存储、时间戳记录等功能。用户将数据摘要与其他必要信息传输至智能合约,并触发创建存证交易的函数。
3、智能合约存储: 存证智能合约将接收到的数据摘要及 相关信息记录在区块链上,生成一个不可篡改的存证交易。存证交易被打包进区块链中,成为区块链上的一个不可篡改的交易记录。
4、数据验证: 任何人都可以通过查询区块链上的存证智能合约,验证特定数据的存证状态。通过提供数据摘要,智能合约将检索相关存证交易,并返回存证的相关信息,包括时间戳、数据所有者等。验证者可以通过对比区块链上存储的数据摘要与本地计算得到的哈希值,来确认数据的完整性和真实性。
4. 规范
数据摘要存证协议采用的是区块链智能合约来实现,合约需要实现的函数, 其中包括合约初始化接口、 数据摘要存储、数据摘要查询
4.1. 初始化接口
部署合约时,填写合约的基本信息。会触发执行合约入口init方法,需要携带以下参数
调用示例:
{
"params": {
"managers": ["adxST9qmM7yiaeDf783opyGUHPCWrVzbtyWNF"]
}
}
调用示例参数说明:
参数 | 类型 | 描述 |
---|---|---|
managers | String[] | 必填,合约管理者账户地址 |
4.2. 调用接口
depositData [required]
将数据摘要存证到链上,需要将原始数据进行SHA-256得到数据的摘要dataContentDigest,并将数据数据摘要存证到合约中,该操作触发log事件depositDataLog
注意事项:
- 触发事件: depositDataLog
调用示例:
{
"method": "depositData",
"params":{
"dataContentDigest": "a819435be18e94cf5d59f09e806da795c0915a1aba2ee779a68c7ff4c0044f86" ,
"dataOwner":"张三",
"dataIntro":"数据描述"
}
}
调用示例参数说明:
参数 | 类型 | 描述 |
---|---|---|
dataContentDigest | String | 必填,原始数据进行SHA-256得到数据的摘要 |
dataOwner | String | 非必填,数据持有方地址 |
dataIntro | String | 非必填,数据描述信息 |
4.3. 查询接口
queryDepositData [required]
根据数据摘要查询数据摘要在链上是否存在,若存在,并将数据摘要信息及上链的其他信息全部返回,
调用示例:
{
"method": "queryDepositData",
"params":{
"dataContentDigest": "a819435be18e94cf5d59f09e806da795c0915a1aba2ee779a68c7ff4c0044f86"
}
}
调用示例参数说明:
参数 | 类型 | 描述 |
---|---|---|
dataContentDigest | String | 必填,数据摘要 |
响应数据:
{
"result":{
"type": "string",
"value": "{\"dataContentDigest\":\"a819435be18e94cf5d59f09e806da795c0915a1aba2ee779a68c7ff4c0044f86\",\"dataOwner\":\"张三\",\"dataIntro\":\"数据描述\",\"txHash\":\"e10827420b71923e8c1373107a8763cae11f7e33efdc74f5130e9b71b176c216\"}"
}
}
响应参数说明:
参数 | 类型 | 描述 |
---|---|---|
result | Object | |
result.type | String | 返回数据类型 |
result.value | String | 数据摘要具体信息 JSON字符串 |
result.value.dataContentDigest | String | 数据摘要信息 |
result.value.dataOwner | String | 数据持有方 |
result.value.dataIntro | String | 数据描述 |
result.value.txHash | String | 上链交易hash |
4.4. 事件定义
depositDataLog[required]
当数据摘要存证时,需要触发该事件,将数据摘要存证日志记录
tlog('depositData', from, dataContentDigest);
事件参数:
参数 | 类型 | 描述 |
---|---|---|
depositData | String | Tlog的 topic 主题名称 |
from | String | 合约调用账户地址 |
dataContentDigest | String | 数据摘要信息 |