BSN-DDC 基础网络关键知识点接入DDC网络
Posted BSN研习社
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BSN-DDC 基础网络关键知识点接入DDC网络相关的知识,希望对你有一定的参考价值。
id:BSN_2021
公众号:BSN研习社
2022年1月25日,区块链服务网络发展联盟(简称“BSN联盟”)上线推出了“BSN-DDC基础网络”并进入试商用阶段。同时,BSN-DDC官网门户(ddc.bsnbase.com)上线发布,供DDC/NFT业务方进行“平台方”的注册申请。BSN-DDC的推出,将为NFT技术在我国的落地提供基础设施能力支撑,并为其合规发展保驾护航。
BSN-DDC为什么具有如此大的作用?
为方便开发者全面深入了解BSN-DDC,BSN研习社推出BSN-DDC 基础网络关键知识点解读系列。分别从背景、平台方加入、接入DDC网络、DDC的生成和管理、基础网络跨链机制方面,全面深入介绍BSN-DDC。
本期是系列文章第三期,接入DDC网络。
1.支持 DDC 的开放联盟链
BSN 联盟将持续引入众多国内外主流的区块链底层框架,分别打造成以中国城市命名的开放联盟链(节点部署有权限控制,无法使用任何cryptocurrencies),并使其作为支撑 DDC 网络的区块链底层环境。以下是 DDC 网络上的开放联盟链信息:
上述每个开放联盟链的具体特点和智能合约编写方式均与对应的底层技术基本一致,平台方也可以到相应的底层技术开源社区或官网进行了解和学习。
平台方根据自己的业务要求和技术储备,可自行选择一条或多条 DDC开放联盟链使用。所有 DDC 开放联盟链上的官方 DDC 合约均定义了相同的方法。
2. DDC 官方门户功能
除前文提到的业务开通功能外,官方门户还为平台方提供了应用项目管理、链账户管理、官方 DDC 查询、官方 DDC 业务费查询、能量值查询、资金账户交易流水查询等功能。因为 DDC 网络只服务于平台方,因此官方门户也就是平台方使用的管理门户。虽然很多操作可以在门户网站中手工进行,但强烈建议平台方应对门户网站的 OpenAPI 熟悉,尽量使用OpenAPI 进行相应操作。例如如果平台方有数千个链账户,生成链账户以及链账户的能量值充值就无法有效地通过人工操作完成。
2.1 项目管理
平台方可在官方门户为其开发的基于 DDC 开放联盟链的区块链应用建立项目,在项目中管理应用接入 DDC 网络的安全控制参数:项目 ID 和项目 Key。平台方的应用业务系统与 DDC 网络的开放联盟链网关通信时,网关将验证这些安全控制参数,并在验证通过后,将应用的交易请求转发到开放联盟链网络中。平台方可基于每个 DDC 开放联盟链创建不限数量的多个项目。项目设置的目的是让平台方可以有效对不同业务进行不同的DDC 网络接入控制。平台方完全可以选择所有业务只使用同一个项目 ID。
同时,平台方也可以通过官方门户 OpenAPI 进行项目的创建和管理(建议)。
2.1.1 创建项目
登录官方门户,在“项目管理”页面,点击【创建项目】按钮;
自定义项目名称并选择开放联盟链框架,点击【完成创建】按钮。
2.1.2 项目 Key
创建项目后默认只启用项目 ID,项目 Key 由平台方自主选择是否需要启用。如果启用,那么访问 DDC 网络的开放联盟链网关时必须要有项目 ID 和项目 Key。
【启用】
登录官方门户,在“项目管理”页面,查询找到待启用项目 Key的项目;
点击【操作】下拉框后再点击【启用项目 Key】;
弹出确认框后点击【确认】按钮,便完成启用项目 Key。
【更新】
登录官方门户,在“项目管理”页面,查询找到待更新项目 Key的项目;
点击【操作】下拉框后再点击【更新项目 Key】;
弹出确认框后点击【确认】按钮,便完成更新项目 Key。
【禁用】
登录官方门户,在“项目管理”页面,查询找到待禁用项目 Key的项目;
点击【操作】下拉框后再点击【禁用项目 Key】;
弹出确认框后点击【确认】按钮,便完成禁用项目 Key。
2.1.3 下载接入参数
接入参数指的是接入开放联盟链网关的参数,平台方下载接入参数后按开放联盟链网关接入说明,便可在业务系统直接对接网关。
登录官方门户,在“项目管理”页面进行项目查询;
点击【操作】下拉框后再点击【下载接入参数】。
2.1.4 删除
登录官方门户,在“项目管理”页面进行项目查询;
点击【操作】下拉框后再点击【删除】;
弹出确认框后点击【确认】按钮,便完成删除项目。
2.2 管理链账户
平台方可在官方门户自主选择开放联盟链框架,自由创建链账户,并可对每一个链账户进行能量值和官方 DDC 业务费的充值操作,同时还可对任何链账户状态进行冻结和解冻操作。
因为平台方在任何一个项目内,在任何一个开放联盟链上开设的链账户数量没有限制,因此平台方可以根据自己的业务灵活设置链账户的管理,甚至可以为平台上几十万终端用户每人开设一个链账户,每个终端用户可以控制自己链账户的私钥,或由平台托管私钥(平台方自行实现)。当然,平台方也可以选择所有 DDC/NFT 全部生成到平台方唯一一个链账户内,完全根据平台方自己的业务需求和实现方法决定。DDC 网络致力于为平台方提供尽可能大的灵活性。
2.2.1 链账户的创建
由于开放联盟链的可公用性,有多种方式可以创建链账户,如:通过官方 DDC SDK 生成、通过链框架技术方提供的工具生成、通过第三方的钱包工具生成等。生成链账户后,平台方需在官方门户或通过官方门户OpenAPI 登记注册链账户,注册时需提交和验证业务凭证。只有注册后的链账户才能启用 DDC 网络业务功能。流程如下图所示:
登录官方门户,在“链账户管理”->“链账户”页面,点击【创建】按钮;
链账户的创建页面,选择 DDC 开放联盟链框架、定义链账户名称、选择该链账户是否使用官方 DDC(选择“否”则涉及不到官方DDC 类型)、选择官方 DDC 类型为平台方还是终端用户、选择创建方式、输入链账户相关信息、上传平台方的业务凭证;
点击【创建】按钮,完成链账户的创建。
如果会生成多个链账户,这里强烈建议平台方使用官方门户OpenAPI 进行操作。
2.2.2 链账户的充值
链账户是链上交易不可或缺的直接载体,每一个链账户都必须由所属平台方完成从门户资金账户到链账户的能量值以及官方 DDC 业务费充值(注意:链账户的能量值和官方 DDC 业务费是分开充值的),充值时需提交和验证业务凭证。平台方可在官方门户内查询具体的链账户余额并进行手动充值操作,也可以在自己的业务系统内,通过引用官方 DDC SDK或调用官方门户 OpenAPI 自动查询自己的资金账户余额,以及动态向任何链账户充值(强烈建议,如果涉及多个链账户)。
【能量值充值】
在 DDC 网络中执行任何合约时,都会从发起交易的链账户中扣减交易处理所需的能量值,所以为保证链账户在相应的链上发起的区块链交易能正常执行,平台方需为链账户进行能量值充值。
登录官方门户,在“链账户管理”->“链账户”页面,查询需充值的链账户;
点击【操作】下拉框后再点击【能量值充值】按钮;
在弹出框内,选择(输入)充值金额,点击【确认】按钮完成充值。
【官方 DDC 业务费充值】
调用官方 DDC 合约涉及到官方 DDC 业务费,所以为保证链账户在相应的链上正常调用官方 DDC 合约方法,平台方需为链账户进行官方 DDC业务费充值。
登录官方门户,在“链账户管理”->“链账户”页面,查询需充值的链账户;
点击【操作】下拉框后再点击【官方 DDC 业务费充值】按钮;
在弹出框内,选择(输入)充值金额,点击【确认】按钮完成充值。
2.2.3 链账户的冻结和解冻
链账户本身并没有状态,BSN-DDC 体系为了缔造完全可控、合法合规的基础网络,在官方 DDC 合约内对链账户增加了状态管理属性;同时在官方门户、门户 OpenAPI 以及 DDC SDK 里增加了对链账户的状态管理,让平台方可以对自己的终端用户的链账户进行冻结和解冻操作。
冻结和解冻仅应用于链账户是否可进行 BSN 官方 DDC 业务处理,并不会影响已发生的交易数据和被冻结链账户内的官方 DDC 业务费、能量值余额等,也不会影响该链账户调用平台方自定义合约。
【冻结】
登录官方门户,在“链账户管理”->“链账户”页面,查询需冻结的链账户;
点击【操作】下拉框后再点击【冻结官方 DDC】按钮。
【解冻】
登录官方门户,在“链账户管理”->“链账户”页面,查询需解冻的链账户;
点击【操作】下拉框后再点击【启用】按钮。
3.平台方系统接入 DDC 网络方式
官方门户给平台方提供了官方 DDC 数据的查询统计及管理的功能,而 DDC 网络的链上交易处理功能,平台方可通过以下两种方式接入。
3.1 直接调用 DDC 网络网关
DDC 网络的各个开放联盟链上智能合约的方法通过 DDC 网关开放给平台方,所以平台方可参考相应开放联盟链的网关接入说明调用 DDC 网关执行 DDC 智能合约(包括自行部署的合约)。为了避免出现开放联盟链的网络拥堵、执行效率低的情况,我们在 DDC 网关侧对每个平台方做了 100 笔/秒的交易限流控制(平台方的所有 DDC 网络项目共享使用该限流控制),以保证链上各应用方的交易处理处于相对平滑的状态。平台方可根据网关的限流策略,在其业务系统中根据实际业务需求自行实现与网关交易请求的削峰平谷机制。
需要强调的是,100 笔交易/秒的控制是 DDC 网络网关的控制。每条DDC 开放联盟链还有链本身的交易处理瓶颈。一般情况下,每条 DDC 开放联盟链的 TPS 数约在 1500-3000 范围内,如果交易量过大,开放联盟链的处理方式与公链一致,会进行交易排队。平台方应充分了解这些限制,并在自己的业务系统内做相应技术处理。
3.2 使用 DDC SDK 调用
每一条开放联盟链都有官方 DDC SDK,平台方可以在业务系统中,通过官方 DDC SDK 直接调用部署在 DDC 网络中的官方 DDC 合约方法。
详情参考官方 DDC SDK 说明。平台方可以在官方 DDC SDK 的基础上定制开发,以实现在业务系统调用其自定义的 DDC/NFT 合约。
4. 平台方部署智能合约
DDC 网络内的每个开放联盟链都有自己技术特色的底层技术,其智能合约的编程语言可能有不同的标准。平台方可根据应用业务的需要自行选择任何开放联盟链并根据相应标准编写智能合约,具体合约编写说明,请参见相应开放联盟链的在线文档。
智能合约在部署过程中,需要部署者支付一定数量的开放联盟链能量值,所以在部署合约之前,应提前生成链账户和对该链账户进行能量值充值(具体请参见链账户的创建和充值)。
平台方可以自己编写业务合约、DDC/NFT 合约或直接使用官方 DDC合约。DDC 网络内的每个智能合约,都将受到 BSN 联盟的管理,对于违规操作的合约,根据国家法律监管要求 BSN 联盟将对其进行关停处理。
BSN-DDC基础网络DDC SDK详细设计五:官方合约BSN-DDC-1155
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/did-sdk
欲浏览更多信息,请您点击登录查看。
以上是关于BSN-DDC 基础网络关键知识点接入DDC网络的主要内容,如果未能解决你的问题,请参考以下文章