跳到主要内容

1. 摘要

本协议专为构建安全、可信、高效的数字化追溯服务体系而设计,旨在利用区块链技术提供资产全生命周期的透明化追踪和溯源解决方案,适用于多种产业场景下的实物资产及其流转过程。星火·链网通过创建分布式数字身份(BID)、资产铸造、资产合成(拆分)和资产流通四大核心智能合约方法,实现从原材料采购、生产加工、流通销售直至终端消费者的全程追溯,保障信息的真实性、不可篡改性和可验证性。

2. 动机

随着全球经济数字化进程加速,对商品和服务的质量、安全、合规性的追溯需求日益增强。传统的追溯系统存在数据安全性差、可信程度低、监管效率低、重复建设严重等问题。因此,亟需一种能够打破信息孤岛、提升数据互信、强化监管效能的通用型资产溯源协议,以应对复杂的供应链管理和市场监管需求。星火·链网数字化追溯网络应运而生,其提出的资产溯源协议旨在建立一套标准化、轻量化、体系化的追溯框架,助力各行业实现无缝追溯、提升产业管理水平、强化公信力和品牌信誉。

3. 原理

利用分布式数字身份(BID)与智能合约技术,构建起一套完整严密的资产全程追溯框架。其核心技术原理如下:

  • 分布式数字身份(BID):  在星火·链网通用型资产溯源协议中,分布式数字身份(BID)作为关键核心技术之一,为每个参与追溯的实体(包括企业、产品、原材料、设备等)提供了一个唯一的、可验证的身份标识。通过BID,可以在链上构建完整的资产关系网络,使得资产的流转路径得以透明化、精确化。每个BID承载着实体的相关信息,如生产厂商、生产时间、批次等关键数据,使得资产在链上的表现形式既能体现同质化商品的共性,也能反映出单个批次商品的个性化追溯信息。

  • 智能合约驱动的资产全生命周期管理:

    • 资产铸造:智能合约在资产进入追溯体系之初,就负责将现实世界的原材料或初级产品映射到区块链上,通过资产铸造方法,为这些实体赋予链上资产的身份(即BID),确保其原始状态和来源信息被不可篡改地记录在链上,相当于发行了基于区块链的半同质化资产凭证(参照BRC1155合约机制)。

    • 资产合成/拆分:智能合约进一步运用创新的“资产发行资产”模式,管理资产在生产加工过程中的转化和组合。无论是在食材的组合烹饪,还是在原料的物理拆分或化学重组等情况下,智能合约都能够根据预先设定的协议规则,通过输入原材料BID生成新的成品BID,或是一个原材料BID生成多个新产品BID,从而在链上形成多样化的资产生成模式。

    • 资产流通:资产在供应链中的所有权转移与流转则完全依赖于智能合约的资产流通规范。例如每当资产从生产者传递给仓储、物流服务商乃至最终消费者时,智能合约都会记录下资产交易的双方账户信息、资产BID更新情况以及流转时间等关键要素,确保每一次交易的安全、透明,并为后续的追溯查询提供详尽的数据依据。

4. 规范

4.1. 初始化接口

部署合约时,填写合约的基本信息。会触发执行合约入口init方法,需要携带以下参数

调用示例:

{
"params":{
"name": "",
"symbol": "",
"describe": "",
"protocol": "",
"version": "",
"url": "",
"reserved": ""
}
}

调用示例参数说明:

参数类型描述
nameString必填,合约名称,长度限64字节内
symbolString必填,合约简称,长度限32字节内
describeString必填,合约描述,长度限1024字节
protocolString必填,资产数量,字符串型的数字
versionString必填,合约版本号,
urlString选填,项目方网址
reservedString选填,扩展字段

4.2. 调用接口

mint [required]

铸造资产

注意事项:

  • 触发事件: TransferSingle

调用示例:

{
"method": "mint",
"params":{
"to": "adxSe4SjPaUPcdnYb9CdrRtg6MYwcbQe5bigy",
"id": "000000000000000000000000000000000000000000000000000000000004cce0",
"value": "1000",
"uri": "http://xxxx"
}
}

调用示例参数说明:

参数类型描述
toString必填,铸造资产的归属账户地址
idString必填,资产ID,64字节长度,16进制字符串数字
valueString必填,资产数量,字符串型的数字
uriString必填,附加数据

burn [required]

销毁资产

注意事项:

  • 需要检查是否批准或者自己名下资产
  • 如果销毁数量等于账户名下资产数量,需要将该关系从链上删除,以便缓解链上数据存储压力
  • 触发事件: TransferSingle,其中 to参数为 "0x" 空地址

调用示例:

{
"method": "burn",
"params":{
"from": "",
"id": "000000000000000000000000000000000000000000000000000000000004cce0",
"value": "123"
}
}

传入参数:

参数类型描述
fromString资产拥有者的地址
idString资产ID,64字节长度,16进制字符串数字
valueString销毁个数

compose[required]

合并资产

注意事项:

  • 需要检查是否批准或者自己名下资产
  • 一个或多个资产合并的逻辑是需要将该资产进行销毁操作
  • 触发事件: TransferSingle

调用示例:

{
"method": "compose",
"params":{
"input": [
{
"contract": "adxSZ6PUrKMd7PBXtivq3Qa9qGoAHjZfDz7Ai",
"id":"a4a945a28e8f12635a9cadd46857196425cee2e358ea9ae2b6c2bc048c541284",
"value":"2"
},
{
"contract": "adxSoETtf7F6higsWVx8qfn7wWQFvQJghDbQR",
"id":"4bcd7bae4da0d1e22461d54d7813bddc5ace91275a397c015f0594416d997a5f",
"value":"1"
}
],
"output": {
"contract": "adxSeQTY4RFWzdpc9LfmfMCFxVxKancSMbSkK",
"id":"7a0b750eb10e90ba5b4954d74e3632db4b3f83cd24a60698d58b5d85a84568c9",
"to":"adxSdZkLR1QZs2S1ztP1FuVTr2PHvy9BmW6qA",
"value":"100",
"uri":"https://bubi.cn"
}
}
}

调用示例参数说明:

参数类型描述
inputArray必填,资产输入集合(待销毁的资产集合)
input.contractString必填,合约地址,
input.idString必填,资产ID,64字节长度,16进制字符串数字
input.valueString必填,资产数量,字符串型的数字
outputObject必填,资产输出对象
output.contractString必填,资产所属合约
output.toString必填,新铸造资产的归属账户地址
output.idString必填,新资产ID,64字节长度,16进制字符串数字
output.valueString必填,新铸造资产数量,字符串型的数字
output.uriString必填,新资产的附加数据

split[required]

拆分资产

注意事项:

  • 触发事件: TransferSingle

调用示例:

{
"method": "split",
"params":{
"input": {
"contract": "adxSoETtf7F6higsWVx8qfn7wWQFvQJghDbQR",
"id":"4bcd7bae4da0d1e22461d54d7813bddc5ace91275a397c015f0594416d997a5f",
"value":"1"
},
"output": [{
"contract": "adxSkGg2NAADe7Zm3whEfHy8nXAVtYhVehKKh",
"id":"d4f04f7378d3ab6b92c2a3cff127e5350f09dfedf86eadb2c552ebc2691d6dd2",
"to":"adxSdZkLR1QZs2S1ztP1FuVTr2PHvy9BmW6qA",
"value":"100",
"uri":"https://xxxxx"
},
{
"contract": "adxSid3nyFf7sGCeuL2xhpsrAbJy3yFwcFsfy",
"id":"7a0b750eb10e90ba5b4954d74e3632db4b3f83cd24a60698d58b5d85a84568c9",
"to":"adxSdZkLR1QZs2S1ztP1FuVTr2PHvy9BmW6qA",
"value":"100",
"uri":"https://xxxxx"
}]
}
}

调用示例参数说明:

参数类型描述
inputArray必填,资产输入对象(需要拆分的资产)
input.contractString必填,合约地址
input.idString必填,资产ID,64字节长度,16进制字符串数字
input.valueString必填,资产数量,字符串型的数字
outputObject必填,资产输出集合(拆分后资产)
output.contractString必填,资产所属合约
output.toString必填,新铸造资产的归属账户地址
output.idString必填,新资产ID,64字节长度,16进制字符串数字
output.valueString必填,新铸造资产数量,字符串型的数字
output.uriString必填,新资产的附加数据

4.3. 事件定义

TransferSingle[required]

当资产被单独转移时候,需要触发该事件,包括铸造和销毁操作。

tlog('TransferSingle', operator, from, to, id, value);

事件参数:

参数类型描述
TransferSingleStringTlog的 topic 主题名称
operatorString触发合约执行的源账户地址
fromString源账户地址
toString目标账户地址
idString资产ID
valueString资产数量,字符串型的数字

TransferSingle[required]

当资产被单独转移时候,需要触发该事件,包括铸造和销毁操作。

tlog('TransferSingle', operator, from, to, id, value);

参数:

参数类型描述
TransferSingleStringTlog的 topic 主题名称
operatorString触发合约执行的源账户地址
fromString源账户地址
toObject目标账户地址
idString资产ID
valueString资产数量,字符串型的数字