共计 6135 个字符,预计需要花费 16 分钟才能阅读完成。
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);
调用者:平台方、终端用户;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看接收者账户地址信息是否为空;
查看接收者账户地址格局是否正确;
查看须要生成的 DDC 数量是否大于 0;
查看 DDCURI 信息是否为空;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | 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);
调用者:平台方、终端用户;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看接收者账户地址信息是否为空;
查看接收者账户地址格局是否正确;
查看生成的 DDC 数量汇合大小是否大于 0;
查看生成的 DDC 数量汇合中每个 DDC 数量是否大于 0;
查看生成的 DDCURI 汇合大小是否大于 0;
查看生成的 DDCURI 汇合中每个 DDCURI 是否为空;
查看生成的 DDC 数量汇合与 DDCURI 汇合的大小是否相等;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | 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 拥有者;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看受权者账户地址信息是否为空;
查看受权者账户地址格局是否正确;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | 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);
调用者:经营方、平台方或终端用户;
外围逻辑:
查看拥有者账户地址信息是否为空;
查看拥有者账户地址格局是否正确;
查看受权者账户地址信息是否为空;
查看受权者账户地址格局是否正确;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
拥有者账户 | 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 受权者;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看拥有者账户地址信息是否为空;
查看拥有者账户地址格局是否正确;
查看接收者账户地址信息是否为空;
查看接收者账户地址格局是否正确;
查看 DDCID 数值是否大于 0;
查看 DDC 转移所对应的数量是否大于 0;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | 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 受权者;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看拥有者账户地址信息是否为空;
查看拥有者账户地址格局是否正确;
查看接收者账户地址信息是否为空;
查看接收者账户地址格局是否正确;
查看转移的 ddcs 汇合大小是否大于 0;
查看转移的 ddcs 汇合中每个 DDCID 是否大于 0;
查看转移的 ddcs 汇合中每个 DDC 数量是否大于 0;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | 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 受权者;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看拥有者账户地址信息是否为空;
查看拥有者账户地址格局是否正确;
查看须要销毁的 DDCID 汇合长度是否大于 0;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | 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 受权者;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看拥有者账户地址信息是否为空;
查看拥有者账户地址格局是否正确;
查看须要销毁的 DDCID 汇合大小是否大于 0;
查看须要销毁的 DDCID 汇合中每个 DDCID 数值是否大于 0;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | 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);
调用者:经营方、平台方以及终端用户;
外围逻辑:
查看拥有者账户地址信息是否为空;
查看拥有者账户地址格局是否正确;
查看 DDCID 汇合长度是否大于 0;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
拥有者账户 | 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);
调用者:经营方、平台方以及终端用户;
外围逻辑:
查看 ddcs 汇合大小是否大于 0;
查看 ddcs 汇合中拥有者账户地址信息是否为空;
查看 ddcs 汇合中拥有者账户地址格局是否正确;
查看 ddcs 汇合中每个 DDCID 数值是否大于 0;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
拥有者 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);
调用者:经营方、平台方以及终端用户;
外围逻辑:
查看 DDCID 数值是否大于 0;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
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 受权者;
外围逻辑:
查看 sender 为标筹备 address 格局;
查看 owner 地址格局是否正确;
查看 ddcId 数值是否大于 0;
查看 ddcURI 是否为空字符串;
查看签名事件是否被注册;
输出参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
调用者 | sender | String | 是 | 调用者地址 |
DDC 拥有者 | owner | String | 是 | |
DDC 惟一标识 | ddcId | BigInteger | 是 | |
DDC 资源标识符 | ddcURI | String | 是 |
输入参数:
字段名 | 字段 | 类型 | 必传 | 备注 |
---|---|---|---|---|
String | 是 | 交易哈希 |
本文材料内容来源于 BSN-DDC SDK 具体设计 -V1.0,GitHub 地址为:
https://github.com/BSN-DDC/di…
欲浏览更多信息,请您点击登录查看。