BSN-DDC基础网络DDC SDK详细设计五:官方合约BSN-DDC-1155

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

2022年1月25日区块链服务网络发展联盟简称“BSN联盟”推出了“BSN-DDC基础网络”简称DDC网络。DDC网络的推出为NFT技术在我国的落地提供基础设施能力支撑并为其合规发展保驾护航。

DDCDistributed Digital Certificate即分布式数字凭证其属性和功能类似于NFT。NFT是现实或数字世界中某个事物在区块链上的数字化权益证明尽管目前大多被用于数字艺术品版权领域然而其本质上是一种区块链分布式数据库技术并不带有特定的业务属性它的潜在使用场景是非常广泛的可应用在数字商品凭证、票证、账户管理、知识产权等各种领域。

DDC网络不直接向个人用户提供服务而是向拥有DDC/NFT业务的平台方提供极其便捷的网络接入服务以方便这些平台以极低的成本提供DDC/NFT的生成和管理服务。

DDC-SDK 是用于开发者与DDC合约交互的 API 工具。为了让运营方或各平台方对DDC-SDK整体设计有一个全面详细的了解同时为项目的开发、测试、验证、交付等环节提供原始依据以及开发指导BSN研习社推出BSN-DDC基础网络DDC SDK详细设计系列。分别从整体设计DID功能设计DDC权限管理、费用管理官方合约BSN-DDC-721官方合约 BSN-DDC-1155交易查询、区块查询、签名事件数据解析示例等八个方面全面详细的介绍DDC-SDK。

本期是系列文章第五期官方合约BSN-DDC-1155。

3.2.1  BSN-DDC-1155

3.2.4.1  安全生成

3.2.4.1.1   功能介绍

平台方或终端用户可以通过调用该方法进行DDC的安全生成。

3.2.4.1.2   API定义

  • 方法定义String safeMint(String sender,String to,BigInteger amount,String ddcURI,byte[] data);

  • 合约方法safeMint(address to,uint256 amount, string memory ddcURI, bytes memory data);

  • 调用者平台方、终端用户

  • 核心逻辑

  1. 检查sender为标准备address格式

  2. 检查接收者账户地址信息是否为空

  3. 检查接收者账户地址格式是否正确

  4. 检查需要生成的DDC数量是否大于0

  5. 检查DDCURI信息是否为空

  6. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
接收者账户toString
DDC数量amountBigInteger
DDCURIddcURIString
附加数据databyte[]
  • 输出参数

字段名字段类型必传备注
String交易哈希

3.2.4.2  批量安全生成

3.2.4.2.1   功能介绍

平台方或终端用户可以通过调用该方法进行DDC的批量安全生成。

3.2.4.2.2   API定义

  • 方法定义String safeMintBatch(String sender,String to,Multimap<BigInteger,String> ddcInfo,byte[] data);

  • 合约方法safeMintBatch(address to,uint256[] amounts, string[] ddcURIs, bytes memory data);

  • 调用者平台方、终端用户

  • 核心逻辑

  1. 检查sender为标准备address格式

  2. 检查接收者账户地址信息是否为空

  3. 检查接收者账户地址格式是否正确

  4. 检查生成的DDC数量集合大小是否大于0

  5. 检查生成的DDC数量集合中每个DDC数量是否大于0

  6. 检查生成的DDCURI集合大小是否大于0

  7. 检查生成的DDCURI集合中每个DDCURI是否为空

  8. 检查生成的DDC数量集合与DDCURI集合的大小是否相等

  9. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
接收者账户toString
DDC信息合计ddcInfoMultimap<BigInteger,String>
附加数据databyte[]
  • 输出参数

字段名字段类型必传备注
String交易哈希

3.2.4.3    账户授权

3.2.4.3.1   功能介绍

DDC拥有者可以通过调用该方法进行账户授权发起者需要是DDC的拥有者。

3.2.4.3.2   API定义

  • 方法定义

    String setApprovalForAll(String sender,String operator, Boolean approved);

  • 合约方法

    setApprovalForAll(address operator, bool approved);

  • 调用者DDC拥有者

  • 核心逻辑

  1. 检查sender为标准备address格式

  2. 检查授权者账户地址信息是否为空

  3. 检查授权者账户地址格式是否正确

  4. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
授权者账户operatorString
授权标识approvedBoolean
  • 输出参数

字段名字段类型必传备注
String交易哈希

3.2.4.4    账户授权查询

3.2.4.4.1   功能介绍

运营方、平台方或终端用户可以通过调用该方法进行账户授权查询。

3.2.4.4.2   API定义

  • 方法定义

    Boolean isApprovedForAll(String owner,String operator);

  • 合约方法

    isApprovedForAll(address owner,address operator) returns (bool);

  • 调用者运营方、平台方或终端用户

  • 核心逻辑

  1. 检查拥有者账户地址信息是否为空

  2. 检查拥有者账户地址格式是否正确

  3. 检查授权者账户地址信息是否为空

  4. 检查授权者账户地址格式是否正确

  5. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
拥有者账户ownerString
授权者账户operatorBoolean
  • 输出参数

字段名字段类型必传备注
Boolean

3.2.4.5  安全转移

3.2.4.5.1   功能介绍

DDC拥有者或DDC授权者可以通过调用该方法进行DDC的转移。

3.2.4.5.2   API定义

  • 方法定义

    String safeTransferFrom(String sender,String from,String to,BigInteger ddcId,BigInteger amount,byte[] data);

  • 合约方法

    safeTransferFrom(address from,address to,uint256 ddcId,uint256 amount,bytes memory data);

  • 调用者DDC拥有者、DDC授权者

  • 核心逻辑

  1. 检查sender为标准备address格式

  2. 检查拥有者账户地址信息是否为空;

  3. 检查拥有者账户地址格式是否正确

  4. 检查接收者账户地址信息是否为空

  5. 检查接收者账户地址格式是否正确

  6. 检查DDCID数值是否大于0

  7. 检查DDC转移所对应的数量是否大于0

  8. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
拥有者账户fromString
接收者账户toString
DDCIDddcIdBigInteger
数量amountBigIntegerDDCID所对应的数量
附加数据databyte[]
  • 输出参数

字段名字段类型必传备注
String交易哈希

3.2.4.6  批量安全转移

3.2.4.6.1   功能介绍

DDC拥有者或DDC授权者可以通过调用该方法进行DDC的批量转移。

3.2.4.6.2   API定义

  • 方法定义

    String safeBatchTransferFrom(String sender,String from,String to,Map<BigInteger,BigInteger> ddcs, byte[] data);

  • 合约方法

    safeBatchTransferFrom(address from, address to,uint256[] ddcIds,uint256[] amounts,bytes memory data);

  • 调用者DDC拥有者、DDC授权者

  • 核心逻辑

  1. 检查sender为标准备address格式

  2. 检查拥有者账户地址信息是否为空;

  3. 检查拥有者账户地址格式是否正确

  4. 检查接收者账户地址信息是否为空

  5. 检查接收者账户地址格式是否正确

  6. 检查转移的ddcs集合大小是否大于0

  7. 检查转移的ddcs集合中每个DDCID是否大于0

  8. 检查转移的ddcs集合中每个DDC数量是否大于0

  9. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
拥有者账户fromString
接收者账户toString
拥有者DDCID集合ddcsMap<BigInteger,BigInteger>
附加数据databyte[]
  • 输出参数

字段名字段类型必传备注
String交易哈希

3.2.4.7  销毁

3.2.4.7.1   功能介绍

DDC拥有者或DDC授权者可以通过调用该方法进行DDC的销毁。

3.2.4.7.2   API定义

  • 方法定义

    String burn(String sender,String owner,BigInteger ddcId);

  • 合约方法burn(address owner,uint256 ddcId);

  • 调用者DDC拥有者、DDC授权者

  • 核心逻辑

  1. 检查sender为标准备address格式

  2. 检查拥有者账户地址信息是否为空;

  3. 检查拥有者账户地址格式是否正确

  4. 检查需要销毁的DDCID集合长度是否大于0

  5. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
拥有者账户ownerString
DDCIDddcIdBigInteger
  • 输出参数

字段名字段类型必传备注
String交易哈希

3.2.4.8  批量销毁

3.2.4.8.1   功能介绍

DDC拥用者或DDC授权者可以通过调用该方法进行DDC的批量销毁。

3.2.4.8.2   API定义

  • 方法定义

    String burnBatch(String sender,String owner,List<BigInteger> ddcIds);

  • 合约方法

    burnBatch(address owner,uint256[] ddcIds);

  • 调用者DDC拥用者、DDC授权者

  • 核心逻辑

  1. 检查sender为标准备address格式

  2. 检查拥有者账户地址信息是否为空;

  3. 检查拥有者账户地址格式是否正确

  4. 检查需要销毁的DDCID集合大小是否大于0

  5. 检查需要销毁的DDCID集合中每个DDCID数值是否大于0

  6. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
拥有者账户ownerString
DDCID集合ddcIdsList<BigInteger>
  • 输出参数

字段名字段类型必传备注
String交易哈希

3.2.4.9  查询数量

3.2.4.9.1   功能介绍

运营方、平台方以及终端用户可以通过调用该方法进行查询当前账户拥有的DDC的数量。

3.2.4.9.2   API定义

  • 方法定义

    BigInteger balanceOf(String owner,BigInteger ddcId);

  • 合约方法

    balanceOf(address owner, uint256 ddcId) returns (uint256);

  • 调用者运营方、平台方以及终端用户

  • 核心逻辑

  1. 检查拥有者账户地址信息是否为空

  2. 检查拥有者账户地址格式是否正确

  3. 检查DDCID集合长度是否大于0

  4. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
拥有者账户ownerString
DDCIDddcIdBigInteger
  • 输出参数

字段名字段类型必传备注
数量BigInteger拥有者账户所对应的DDCID所拥用的数量

3.2.4.10 批量查询数量

3.2.4.10.1 功能介绍

运营方、平台方以及终端用户可以通过调用该方法进行批量查询账户拥有的DDC的数量。

3.2.4.10.2 API定义

  • 方法定义

    List<BigInteger> balanceOfBatch(Multimap<String,BigInteger>ddcs);

  • 合约方法

    balanceOfBatch(address[] memory owners,uint256[] memory ddcIds) returns (uint256[] memory);

  • 调用者运营方、平台方以及终端用户

  • 核心逻辑

  1. 检查ddcs集合大小是否大于0

  2. 检查ddcs集合中拥有者账户地址信息是否为空

  3. 检查ddcs集合中拥有者账户地址格式是否正确

  4. 检查ddcs集合中每个DDCID数值是否大于0

  5. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
拥有者DDCID集合ddcsMultimap<String,BigInteger>
  • 输出参数

字段名字段类型必传备注
数量集合List<BigInteger>拥有者账户所对应的每个DDCID所拥用的数量

3.2.4.11  获取DDCURI

3.2.4.11.1 功能介绍

运营方、平台方以及终端用户可以通过调用该方法进行查询当前DDC的资源标识符。

3.2.4.11.2 API定义

  • 方法定义String ddcURI(BigInteger ddcId);

  • 合约方法ddcURI(uint256 ddcId) returns (string memory);

  • 调用者运营方、平台方以及终端用户

  • 核心逻辑

  1. 检查DDCID数值是否大于0

  2. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
DDCIDddcIdBigInteger
  • 输出参数

字段名字段类型必传备注
DDCURIString

3.2.4.12  URI设置

3.2.4.12.1 功能介绍

DDC拥有者或DDC授权者通过调用该方法对DDC的资源标识符进行设置。

3.2.4.12.2 API定义

  • 方法定义String setURI(String sender,String owner,BigInteger ddcId,String ddcURI);

  • 合约方法setURI(address owner,uint256 ddcId,string memory ddcURI);

  • 调用者DDC拥有者、DDC授权者

  • 核心逻辑

  1. 检查sender为标准备address格式;

  2. 检查owner地址格式是否正确

  3. 检查ddcId数值是否大于0

  4. 检查ddcURI是否为空字符串

  5. 检查签名事件是否被注册

  • 输入参数

字段名字段类型必传备注
调用者senderString调用者地址
DDC拥有者ownerString
DDC唯一标识ddcIdBigInteger
DDC资源标识符ddcURIString
  • 输出参数

字段名字段类型必传备注
String交易哈希

本文资料内容来源于BSN-DDC SDK详细设计-V1.0GitHub地址为

https://github.com/BSN-DDC/did-sdk

欲浏览更多信息请您点击登录查看。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6