首页 > 其他分享 >BSN-DDC基础网络DDC SDK详细设计五:官方合约BSN-DDC-1155

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

时间:2022-11-18 14:01:03浏览次数:73  
标签:String 检查 1155 BSN 3.2 DDC 拥有者 调用者

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

DDC(Distributed 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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

接收者账户

to

String



DDC数量

amount

BigInteger



DDCURI

ddcURI

String



附加数据

data

byte[]



  • 输出参数:

字段名

字段

类型

必传

备注



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. 检查签名事件是否被注册;​
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

接收者账户

to

String



DDC信息合计

ddcInfo

Multimap<BigInteger,String>



附加数据

data

byte[]



  • 输出参数:

字段名

字段

类型

必传

备注



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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

授权者账户

operator

String



授权标识

approved

Boolean



  • 输出参数:

字段名

字段

类型

必传

备注



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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

拥有者账户

owner

String



授权者账户

operator

Boolean



  • 输出参数:

字段名

字段

类型

必传

备注



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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

拥有者账户

from

String



接收者账户

to

String



DDCID

ddcId

BigInteger



数量

amount

BigInteger


DDCID所对应的数量

附加数据

data

byte[]



  • 输出参数:

字段名

字段

类型

必传

备注



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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

拥有者账户

from

String



接收者账户

to

String



拥有者DDCID集合

ddcs

Map<BigInteger,BigInteger>



附加数据

data

byte[]



  • 输出参数:

字段名

字段

类型

必传

备注



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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

拥有者账户

owner

String



DDCID

ddcId

BigInteger



  • 输出参数:

字段名

字段

类型

必传

备注



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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

拥有者账户

owner

String



DDCID集合

ddcIds

List<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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

拥有者账户

owner

String



DDCID

ddcId

BigInteger



  • 输出参数:

字段名

字段

类型

必传

备注

数量


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集合

ddcs

Multimap<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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

DDCID

ddcId

BigInteger



  • 输出参数:

字段名

字段

类型

必传

备注

DDCURI


String



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. 检查签名事件是否被注册;
  • 输入参数:

字段名

字段

类型

必传

备注

调用者

sender

String


调用者地址

DDC拥有者

owner

String



DDC唯一标识

ddcId

BigInteger



DDC资源标识符

ddcURI

String



  • 输出参数:

字段名

字段

类型

必传

备注



String


交易哈希

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

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

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

标签:String,检查,1155,BSN,3.2,DDC,拥有者,调用者
From: https://blog.51cto.com/u_15476243/5868420

相关文章

  • uva 11552
    给你一个长度 k ,一个字符串 S(都为小写字母),保证 S 的长度为 k的整数倍。将 S 按顺序分为 S/k 组,组内字符可以重新排列问最少有几个块?(如fff,ww) 枚举开头......
  • DDC SDK详细设计(二)DID功能设计
    id:BSN_2021公众号:BSN研习社2022年1月25日,区块链服务网络发展联盟(简称“BSN联盟”)推出了“BSN-DDC基础网络”(简称DDC网络)。DDC网络的推出,为NFT技术在我国的落地提供基础设......
  • BSN-DDC基础网络DDC SDK整体设计流程
    id:BSN_2021公众号:BSN研习社2022年1月25日,区块链服务网络发展联盟(简称“BSN联盟”)推出了“BSN-DDC基础网络”(简称DDC网络)。DDC网络的推出,为NFT技术在我国的落地提供基础设......
  • DDCTF2019-HOMEBREW-EVENT-LOOP-md
    title:DDCTF2019HOMEBREWEVENTLOOP.mddate:2022-09-2711:42:22tags:[DDCTF2019]homebreweventloop代码审计fromflaskimportFlask,session,request,Re......
  • 《近期BSN开发常见问题答疑(2022.9.23)》
    区块链服务网络(Blockchain-basedServiceNetwork)(以下称为“BSN”)是一个跨云服务、跨门户、跨底层框架,用于部署和运行区块链应用的全球性公共基础设施网络,由国家信息中心、......
  • CF1155D 题解
    题目传送门题目分析说实话,第一眼这题以为是贪心...(事实上我看所有动态规划都像贪心)。然后接着发现贪心明显做不了,又看见最大子段和,很容易联想到\(\text{dp}\)。在设计......
  • SpringBoot中重写addCorsMapping解决跨域以及提示list them explicitly or consider u
    场景SpringBoot中通过重写WebMvcConfigurer的addCorsMapping方法实现后台服务解决跨域问题:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/111283955在Spr......
  • 【Virt.Contest】CF1155(div.2)
    CF传送门T1:ReverseaSubstring只有本身单调不减的字符串不能转换为字典序更小的字符串。否则肯定会出现\(s_i>s_{i+1}\)的情况。所以只要从头到尾扫一遍,找到\(s_i>......