BSN-DDC基础网络的DID功能设计

这篇具有很好参考价值的文章主要介绍了BSN-DDC基础网络的DID功能设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

id:BSN_2021 公众号:BSN 研习社

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。

本期是系列文章第二期,DID功能设计。

DID

与实体用户相关的数字化身份信息的管理,包含注册DID、更新密钥、验证DID等链方暂时可以不用关注。

1.1注册DID

个人或机构都可通过“注册DID”给自己生成一个数字化身份。每个DID都对应唯一的一份DID Document,且DID Document存储于区块链网络中。

1.1.1功能介绍

注册DID包含两个环节:为用户生成DID数字身份和向区块链网络发布DID Document 。

1.1.2 API定义

  • 方法定义:

    DidDataWrapper createDid();

  • 调用者:平台方、运营方

  • 核心逻辑:

  1. 根据Secp256k1算法生成两组公私钥对;
  2. 生成Base DID Document;
  3. 生成DID标识符(生成规则参照“标识符生成规则”);
  4. 生成DID Document(格式示例参照“DID Document格式”);
  5. 执行DID Document上链处理;
  6. 用主公钥对DID进行签名;
  7. 返回DID,DID签名值,主备公私钥,和 DID Document数据内容。
  • 输入参数:无
  • 输出参数:
字段名 字段 类型 必传 备注
DID did String
DID签名值 didSign String
主公私钥 authKeyInfo KeyPair
备公私钥 recyKeyInfo KeyPair
DID文档 document DocumentInfo
KeyPair
私钥信息 privateKey String
公钥信息 publicKey String
加密算法 type String
DocumentInfo
DID did String
版本号 version String
创建时间 created String
更新时间 updated String
主公钥 authentication PublicKey
备公钥 recovery PublicKey
签名信息 proof Proof
PublicKey
公钥信息 publicKey String
加密算法 type String
Proof
签名值 signValue String
签名算法 type String
签名者的DID creator String

1.1.3 DID格式

DID的内容格式由W3C标准格式前缀、项目名、DID标识符三部分组成,各部分之间以英文符冒号为分隔符。如下示例:

did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC

1.1.3.1 标识符生成规则

DID标识符通过以下算法生成:

base58(ripemd160(sha256()))

以下为Base DID Document的格式示例:

{
"@context": "https://w3id.org/did/v1",
"authentication":
{
"type": "Secp256k1",
"publicKey":"28986472722394106073871327423452879123214061743224210681401278929598807211140001274507530324221923795865447680836742348963337343510229880669968499735858"
}
"recovery":
{
"type": "Secp256k1",
"publicKey":"9251971168042915941551574641987721503984542761641852064853964541181378832746959340151297908312616596971625573967556676367696067937171601766581709843378481"
}
}

1.1.3.2 DID Document格式

DID Document里面的主要内容有DID和主备公钥信息,格式如下所示:

{
"did": "did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC",
"version": 1,
"created": "2021-05-20T16:02:20Z",
"updated": "2021-05-20T16:02:20Z",
"authentication":
{
"type": "Secp256k1",
"publicKey":"28986472722394106073871327423452879123214061743224210681401278929598807211140001274507530324221923795865447680836742348963337343510229880669968499735858"
}
"recovery":
{
"type": "Secp256k1",
"publicKey":"9251971168042915941551574641987721503984542761641852064853964541181378832746959340151297908312616596971625573967556676367696067937171601766581709843378481"
}
}

1.1.3.3 DID Document完整格式

DID Document数据格式内容比摘要格式内容多了proof信息,proof是使用主私钥对DID Document摘要格式内容进行Secp256k1签名的一些信息,格式如下所示:

{
"did": "did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC",
"version": 1,
"created": "2021-05-20T16:02:20Z",
"updated": "2021-05-20T16:02:20Z",
"authentication":
{
"type": "Secp256k1",
"publicKey":"28986472722394106073871327423452879123214061743224210681401278929598807211140001274507530324221923795865447680836742348963337343510229880669968499735858"
}
"recovery":
{
"type": "Secp256k1",
"publicKey":"9251971168042915941551574641987721503984542761641852064853964541181378832746959340151297908312616596971625573967556676367696067937171601766581709843378481"
}
"proof": {
"type": "Secp256k1",
"creator": "did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC",
  "signatureValue":          "zD5nt+P/Ga/CRG2hJU/SMRXy210CLdvATsxQdPxTEy9Mc9Y0OSFpE3Yu5k2+OjQKVOtu5of9VFbgO3Zljw/vQxs="
}
}

1.2更新密钥

用户的主私钥丢失或者泄漏,可以通过“更新密钥”重新生成一对主公私钥。

1.2.1 功能介绍

用户通过备份的公私钥来完成主公私密钥更新。密钥更新后用户的DID Document也将更新,但是DID不会改变。

1.2.2 API定义

  • 方法定义:

    KeyPair resetDidAuth(ResetDidAuth restDidAuth);

  • 调用者:平台方、运营方;

  • 核心逻辑:

  1. 验证请求参数内的备公私钥是否匹配;
  2. 生成新的主公私钥;
  3. 验证请求参数内的备公钥与DID Document内的备公钥是否一致;
  4. 更新DID Document并使用新的主私钥按Secp256k1重新签名;
  5. 返回新的密钥。
  • 输入参数
字段名 字段 类型 必传 备注
DID did String
主公私钥 primaryKey KeyPair
备公私钥 recoveryKey KeyPair
KeyPair
私钥 privateKey String
公钥 publicKey String
加密算法 type String
  • 输出参数:
字段名 字段 类型 必传 备注
新公私钥 keyInfo KeyPair
KeyPair
私钥 privateKey String
公钥 publicKey String
加密算法 type String

1.3   验证DID

用户可以通过“验证DID”对自己的DID身份进行查验,以此来确认DID Document是否已存在于链上;也可以确认第三方对自己DID身份的查验结果能否通过。

1.3.1 功能介绍

用户通过DID Document中的主公钥进行签名验证,验签通过则认可DID身份。

1.3.2 API定义

  • 方法定义:

    Boolean verifyDIdSign(DidSign didSign);

  • 调用者:平台方、运营方;

  • 核心逻辑:

  1. 验证DID Document是否在链上存在;
  2. 解析DID Document的主公钥;
  3. 验证DID签名是否正确,并返回验证结果。
  • 输入参数:
字段名 字段 类型 必传 备注
DID did String
DID签名值 didSign String
  • 输出参数:
字段名 字段 类型 必传 备注
Boolean

1.4 注册发证方

用户可以通过“注册发证方”使自己的DID身份拥有可注册凭证模板的权限。1.4.1 功能介绍注册发证方仅是对DID身份进行了标记,不会改变DID和DID Document。发证方的信息在链上存储,是公开透明的。1.4.2 API定义

  • 方法定义:Boolean registerAuthIssuer(RegisterAuthorityIssuer register);
  • 调用者:运营方;
  • 核心逻辑:
  1. 验证DID Document是否在链上存在;
  2. 解析DID Document的主公钥与当前公钥进行比对;
  3. 验证DID是否为发证方;
  4. 注册发证方并对基本信息上链。
  • 输入参数:
字段名 字段 类型 必传 备注
私钥 privateKey String 主私钥
DID did String
名称 name String 发证方名称
  • 输出参数:
字段名 字段 类型 必传 备注
Boolean

1.5 注册凭证模板

发证方依据自己所要签发的凭证信息,自定义凭证属性形成一份凭证模板。

1.5.1 功能介绍

一个发证方可以定义多个凭证模板逐个进行注册,基于凭证模板可以签发多个凭证,每个凭证都由发证方的私钥进行签名。

1.5.2 API定义

  • 方法定义:

    CptBaseInfo registerCpt(RegisterCpt registerCpt);

  • 调用者:运营方;

  • 核心逻辑:

  1. 验证DID Document是否在链上存在;
  2. 解析DID Document的主公钥与当前公钥进行比对;
  3. 验证DID是否为发证方;
  4. 注册凭证模板并对模板信息上链。
  • 输入参数:
字段名 字段 类型 必传 备注
私钥 privateKey String 主私钥
DID did String
属性信息 cptJsonSchema Map<String,JsonSchema>
标题 title String
描述 description String
类型 type String Proof
JsonSchema
字段类型 type String
字段描述 description String
是否必填 required Boolean true表示必填;false表示选填
  • 输出参数:
字段名 字段 类型 必传 备注
ID cptId Long
版本 cptVersion Integer

1.6 签发凭证

发证方根据用户信息,可通过“签发凭证”为用户生成凭证。1.6.1 功能介绍用户根据凭证模板的属性要求,向发证方提供了对应的属性值后,发证方可基于凭证模板为其生成一份凭证。1.6.2 API定义

  • 方法定义:CredentialWrapper createCredential(CreateCredential createCredential) ;
  • 调用者:运营方;
  • 核心逻辑:
  1. 验证DID Document是否在链上存在;
  2. 解析DID Document的主公钥与当前公钥进行比对;
  3. 验证DID是否为发证方;
  4. 验证凭证模板是否在链上存在;
  5. 验证属性格式;
  6. 凭证签发并返回凭证信息。
  • 输入参数:
字段名 字段 类型 必传 备注
私钥 privateKey String 主私钥
DID issuerDid String 发证方的DID
DID userDid String 用户的DID
到期日 expirationDate String
属性 claim Map<String,Object> 和凭证模板的格式一致
类型 type String Proof
  • 输出参数:
字段名 字段 类型 必传 备注
标准 context String
ID id String 凭证ID
类型 type String Proof
ID cptId Long 凭证模板ID
DID issuerDid String 发证方DID
DID userDid String 用户DID
到期日 expirationDate String 凭证到期日
生成日期 created String 凭证签发日
简要说明 shortDesc String 凭证简述
详细说明 longDesc String 凭证详述
内容 claim Map<String,Object>
签名信息 proof Map<String,Object>

1.7 验证凭证

用户可以通过“验证凭证”对凭证的真伪性、有效性进行查验。。1.7.1 功能介绍验证凭证包含两个方面:验证凭证内容和验证凭证是否到期,两个方面都验证通过,则认为凭证有效。1.7.2 API定义

  • 方法定义:Boolean verifyCredential(Credential credential,PublicKey publickKey);
  • 调用者:平台方、运营方;核心逻辑:
  1. 根据签名信息内的DID,在链上查询对应的Document;
  2. 解析Document内的公钥对凭证验签;
  3. 验证凭证内的到期日期。
  • 输入参数:
  • Credential
字段名 字段 类型 必传 备注
标准 context String
ID id String 凭证ID
类型 type String Proof
ID cptId Long 凭证模板ID
DID issuerDid String 发证方DID
DID userDid String 用户DID
到期日 expirationDate String 凭证到期日
生成日期 created String 凭证签发日
简要说明 shortDesc String 凭证简述
详细说明 longDesc String 凭证详述
内容 claim Map<String,Object>
签名信息 proof Map<String,Object>
  • PublicKey
字段名 字段 类型 必传 备注
算法类型 type String Secp256k1
公钥 publicKey String 主公钥
  • 输出参数:
字段名 字段 类型 必传 备注
Boolean

1.8吊销凭证

发证方可通过“吊销凭证”吊销已经签发给用户的凭证。

1.8.1 功能介绍

发证方对已签发的凭证进行作废标记。凭证已签发给用户,发证方是无法直接修改。所以凭证吊销后将吊销的凭证编号存储与区块链网络中。

1.8.2 API定义

  • 方法定义:

    Boolean revokeCredential(RevokeCredential cred) ;

  • 调用者:平台方;

  • 核心逻辑:

  1. 验证请求参数合法性;
  2. 通过DID标识符查询DID Document内的主公钥,验证其是否与请求参数内的私钥是否匹配;
  3. 通过凭证模板编号查询验证发证方与凭证模板的关联关系;
  4. 将凭证编号上链标记为已吊销;
  5. 返回吊销结果。
  • 输入参数:

RevokeCredential

字段名 字段 类型 必传 备注
ID credId String 凭证ID
模板ID cptId Long 凭证模板ID
DID did String 发证方DID
私钥 privateKey String 发证方私钥
  • 输出参数:
字段名 字段 类型 必传 备注
Boolean

1.9 查询吊销凭证

用户可通过“查询吊销凭证”查询发证方已吊销的凭证和吊销时间。1.9.1 功能介绍用户查询某个发证方已经吊销凭证的吊销列表。1.9.2 API定义

  • 方法定义:public Pages getRevokedCredList(QueryCredentialList queryCredentialList) ;
  • 调用者:运营方;
  • 核心逻辑:
  1. 验证请求参数合法性;
  2. 按请求参数查询相应结果;
  3. 返回吊销结果。
  • 输入参数:
字段名 字段 类型 必传 备注
页码 page Integer 当前页码
分页大小 size Integer 分页大小,单次最多可以检索50条
DID did String 发证方的DID
  • 输出参数:
字段名 字段 类型 必传 备注
页码 page Integer 当前页码
分页大小 size Integer
总数 totalNum Integer 总记录数
总页数 totalPage Integer
记录 result List<  BaseCredential> 记录列表
  • BaseCredential
字段名 字段 类型 必传 备注
ID id String 凭证编号
时间 created String 凭证吊销时间

本文资料内容来源于BSN-DDC SDK详细设计-V1.0,GitHub地址为:https://github.com/BSN-DDC/did-sdk。欲浏览更多信息,请您点击登录查看。文章来源地址https://www.toymoban.com/news/detail-810569.html

到了这里,关于BSN-DDC基础网络的DID功能设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 国家级区块链基础设施BSN推出BSN-DDC以支持部署NFT

    摘要 产业动态: 谷歌成立区块链部门,将专注于分布式计算、存储等技术 腾讯最快于月内向日本企业提供元宇宙业务服务 目前暂无公司成功注册“元宇宙”相关商标 政策相关: 央行、公安部等11部门联合开展打击治理洗钱违法犯罪三年行动 北京市广播电视局:鼓励各机构

    2024年02月02日
    浏览(35)
  • DID系列8--BSN的DID解决方案

    登录BSN 区块链服务网络,https://bsnbase.com/p/main/index 功能模块----数字身份服务 1组成结构: DID主要包含三部分:SDK、Service和智能合约。其中SDK供开发者在项目内集成使用;Service处理业务逻辑,连接隐私数据存储区(Identity Hub)和链节点;智能合约部署于链上,由Service进行合

    2024年02月04日
    浏览(36)
  • BSN-DID研究6--客户端生成DID的计算方法

    DID研究的第一步就是为用户生成DID标识符, 在帮助文件 14.2 HTTP API · BSN中说明了计算方法, 在SDK代码中 com.reddate.did.sdk.util.DidUtils类提供了生成函数。 1 创建DID过程介绍 有两个方式创建DID, 一种是在服务端创建,然后返回给前端。 另一种是在前端直接创建。 BSN-DID服务支

    2024年02月16日
    浏览(35)
  • BSN实名DID服务发布会在北京召开

    12月12日,由国家信息中心、公安部第一研究所联合主办,中国移动通信集团有限公司、区块链服务网络(BSN)发展联盟、中关村安信网络身份认证产业联盟(OIDAA)承办的“BSN实名DID服务发布会”在北京召开,会上正式发布了BSN实名DID服务。国家信息中心主任徐强、公安部第

    2024年02月04日
    浏览(50)
  • BSN区块链思想领导力 | NFT/DDC 的未来

    信息来源:Medium 作者:BSN 区块链服务网络(Blockchain-based Service Network,BSN)是我国首个完全自主知识产权的全球性区块链公共基础设施网络,用于部署和运行区块链应用,目的是极大降低区块链应用的开发、部署、运维、互通和监管成本。BSN全面融合了国内外云资源和区块链

    2024年02月01日
    浏览(49)
  • 【区块链 | DID】白话数字身份

    《十四五数字经济发展规划》提出建立健全政务数据共享协调机制,加快数字身份统一认证和电子证照、电子签章、电子公文等互信互任,推进发票电子化改革,促进政务数据共享、流程优化和业务协同。在数字经济逐渐成形的背景下,推进数字政务进行数字化转型,数字身

    2024年02月08日
    浏览(39)
  • DID与智能合约的那些事

    上集我们提到如何透过去中心化身份DID保护敏感的个人身份讯息,今集将会深入DID到底是如何用智能合约的形式运作。 01 智能合约 如以太坊中主流的身份智能合约 ERC-725为例。使用者在该区块链上发布身份智能合约后,接着产生数个公私钥对。其中私钥由使用者自行保存于钱

    2024年02月02日
    浏览(47)
  • 分布式数字身份项目——微软DID

    微软 DID是一套基于 Azure云服务的分布式数字身份技术架构和基础功能,让解决方案实施商可方便的在不同区块链上实现分布式数字身份整体解决方案。微软是 DIF联盟的重要成员,以标准的开源技术、协议和参考实现为主要目标。 微软 DID的技术架构包括区块链 BAAS服务、注册

    2024年02月11日
    浏览(63)
  • DID系列7--Fiscobcos的WeIdendity

    WeIdentity 基于区块链的实体身份标识及可信数据交换解决方案: GitHub   Gitee 、 文档 WeIdentity文档:https://weidentity.readthedocs.io/zh_CN/latest/ 智能合约设计与实现: https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-contract-design.html 外部学者的研究文章 WeIdentity 的多签及限量凭证的实

    2024年02月02日
    浏览(33)
  • python setup.py egg_info did not run successfully. Preparing metadata (pyproject.toml) did not run

    前提条件: 首先检查Python是否加入环境变量中。 以下是在Windows系统中将Python添加到环境变量中的步骤: 1.打开“控制面板”,然后单击“系统和安全”。 2.单击“系统”。 3.单击“高级系统设置”。 4.单击“环境变量”。 5.在“系统变量”下,找到名为“Path”的变量,并双

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包