id:BSN_2021 公眾號(hào):BSN 研習(xí)社
10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有南澗免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。2022年1月25日,區(qū)塊鏈服務(wù)網(wǎng)絡(luò)發(fā)展聯(lián)盟(簡(jiǎn)稱(chēng)“BSN聯(lián)盟”)推出了“BSN-DDC基礎(chǔ)網(wǎng)絡(luò)”(簡(jiǎn)稱(chēng)DDC網(wǎng)絡(luò))。DDC網(wǎng)絡(luò)的推出,為NFT技術(shù)在我國(guó)的落地提供基礎(chǔ)設(shè)施能力支撐,并為其合規(guī)發(fā)展保駕護(hù)航。
DDC(Distributed Digital Certificate)即分布式數(shù)字憑證,其屬性和功能類(lèi)似于NFT。NFT是現(xiàn)實(shí)或數(shù)字世界中某個(gè)事物在區(qū)塊鏈上的數(shù)字化權(quán)益證明,盡管目前大多被用于數(shù)字藝術(shù)品版權(quán)領(lǐng)域,然而其本質(zhì)上是一種區(qū)塊鏈分布式數(shù)據(jù)庫(kù)技術(shù),并不帶有特定的業(yè)務(wù)屬性,它的潛在使用場(chǎng)景是非常廣泛的,可應(yīng)用在數(shù)字商品憑證、票證、賬戶管理、知識(shí)產(chǎn)權(quán)等各種領(lǐng)域。DDC網(wǎng)絡(luò)不直接向個(gè)人用戶提供服務(wù),而是向擁有DDC/NFT業(yè)務(wù)的平臺(tái)方提供極其便捷的網(wǎng)絡(luò)接入服務(wù),以方便這些平臺(tái)以極低的成本提供DDC/NFT的生成和管理服務(wù)。
DDC-SDK 是用于開(kāi)發(fā)者與DDC 合約交互的 API 工具。為了讓運(yùn)營(yíng)方或各平臺(tái)方對(duì)DDC-SDK整體設(shè)計(jì)有一個(gè)全面詳細(xì)的了解,同時(shí)為項(xiàng)目的開(kāi)發(fā)、測(cè)試、驗(yàn)證、交付等環(huán)節(jié)提供原始依據(jù)以及開(kāi)發(fā)指導(dǎo),BSN研習(xí)社推出BSN-DDC基礎(chǔ)網(wǎng)絡(luò)DDC SDK詳細(xì)設(shè)計(jì)系列。分別從整體設(shè)計(jì),DID功能設(shè)計(jì),DDC權(quán)限管理、費(fèi)用管理,官方合約BSN-DDC-721,官方合約 BSN-DDC-1155,交易查詢(xún)、區(qū)塊查詢(xún)、簽名事件,數(shù)據(jù)解析,示例等八個(gè)方面,全面詳細(xì)的介紹DDC-SDK。
本期是系列文章第二期,DID功能設(shè)計(jì)。
DID
與實(shí)體用戶相關(guān)的數(shù)字化身份信息的管理,包含注冊(cè)DID、更新密鑰、驗(yàn)證DID等鏈方暫時(shí)可以不用關(guān)注。
1.1注冊(cè)DID
個(gè)人或機(jī)構(gòu)都可通過(guò)“注冊(cè)DID”給自己生成一個(gè)數(shù)字化身份。每個(gè)DID都對(duì)應(yīng)唯一的一份DID Document,且DID Document存儲(chǔ)于區(qū)塊鏈網(wǎng)絡(luò)中。
1.1.1功能介紹
注冊(cè)DID包含兩個(gè)環(huán)節(jié):為用戶生成DID數(shù)字身份和向區(qū)塊鏈網(wǎng)絡(luò)發(fā)布DID Document 。
1.1.2 API定義
方法定義:
DidDataWrapper createDid();
調(diào)用者:平臺(tái)方、運(yùn)營(yíng)方
核心邏輯:
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
DID | did | String | 是 | |
DID簽名值 | didSign | String | 是 | |
主公私鑰 | authKeyInfo | KeyPair | 是 | |
備公私鑰 | recyKeyInfo | KeyPair | 是 | |
DID文檔 | document | DocumentInfo | 否 | |
KeyPair | ||||
私鑰信息 | privateKey | String | 是 | |
公鑰信息 | publicKey | String | 是 | |
加密算法 | type | String | 是 | |
DocumentInfo | ||||
DID | did | String | 是 | |
版本號(hào) | version | String | 是 | |
創(chuàng)建時(shí)間 | created | String | 是 | |
更新時(shí)間 | 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的內(nèi)容格式由W3C標(biāo)準(zhǔn)格式前綴、項(xiàng)目名、DID標(biāo)識(shí)符三部分組成,各部分之間以英文符冒號(hào)為分隔符。如下示例:
did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC
1.1.3.1 標(biāo)識(shí)符生成規(guī)則
DID標(biāo)識(shí)符通過(guò)以下算法生成:
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里面的主要內(nèi)容有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數(shù)據(jù)格式內(nèi)容比摘要格式內(nèi)容多了proof信息,proof是使用主私鑰對(duì)DID Document摘要格式內(nèi)容進(jìn)行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更新密鑰
用戶的主私鑰丟失或者泄漏,可以通過(guò)“更新密鑰”重新生成一對(duì)主公私鑰。
1.2.1 功能介紹
用戶通過(guò)備份的公私鑰來(lái)完成主公私密鑰更新。密鑰更新后用戶的DID Document也將更新,但是DID不會(huì)改變。
1.2.2 API定義
方法定義:
KeyPair resetDidAuth(ResetDidAuth restDidAuth);
調(diào)用者:平臺(tái)方、運(yùn)營(yíng)方;
核心邏輯:
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
DID | did | String | 是 | |
主公私鑰 | primaryKey | KeyPair | 否 | |
備公私鑰 | recoveryKey | KeyPair | 是 | |
KeyPair | ||||
私鑰 | privateKey | String | 是 | |
公鑰 | publicKey | String | 是 | |
加密算法 | type | String | 是 |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
新公私鑰 | keyInfo | KeyPair | 是 | |
KeyPair | ||||
私鑰 | privateKey | String | 是 | |
公鑰 | publicKey | String | 是 | |
加密算法 | type | String | 是 |
用戶可以通過(guò)“驗(yàn)證DID”對(duì)自己的DID身份進(jìn)行查驗(yàn),以此來(lái)確認(rèn)DID Document是否已存在于鏈上;也可以確認(rèn)第三方對(duì)自己DID身份的查驗(yàn)結(jié)果能否通過(guò)。
1.3.1 功能介紹
用戶通過(guò)DID Document中的主公鑰進(jìn)行簽名驗(yàn)證,驗(yàn)簽通過(guò)則認(rèn)可DID身份。
1.3.2 API定義
方法定義:
Boolean verifyDIdSign(DidSign didSign);
調(diào)用者:平臺(tái)方、運(yùn)營(yíng)方;
核心邏輯:
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
DID | did | String | 是 | |
DID簽名值 | didSign | String | 是 |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
Boolean | 是 |
1.4 注冊(cè)發(fā)證方
用戶可以通過(guò)“注冊(cè)發(fā)證方”使自己的DID身份擁有可注冊(cè)憑證模板的權(quán)限。1.4.1 功能介紹注冊(cè)發(fā)證方僅是對(duì)DID身份進(jìn)行了標(biāo)記,不會(huì)改變DID和DID Document。發(fā)證方的信息在鏈上存儲(chǔ),是公開(kāi)透明的。1.4.2 API定義
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
私鑰 | privateKey | String | 是 | 主私鑰 |
DID | did | String | 是 | |
名稱(chēng) | name | String | 是 | 發(fā)證方名稱(chēng) |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
Boolean | 是 |
1.5 注冊(cè)憑證模板
發(fā)證方依據(jù)自己所要簽發(fā)的憑證信息,自定義憑證屬性形成一份憑證模板。
1.5.1 功能介紹
一個(gè)發(fā)證方可以定義多個(gè)憑證模板逐個(gè)進(jìn)行注冊(cè),基于憑證模板可以簽發(fā)多個(gè)憑證,每個(gè)憑證都由發(fā)證方的私鑰進(jìn)行簽名。
1.5.2 API定義
方法定義:
CptBaseInfo registerCpt(RegisterCpt registerCpt);
調(diào)用者:運(yùn)營(yíng)方;
核心邏輯:
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
私鑰 | privateKey | String | 是 | 主私鑰 |
DID | did | String | 是 | |
屬性信息 | cptJsonSchema | Map | 是 | |
標(biāo)題 | title | String | 是 | |
描述 | description | String | 是 | |
類(lèi)型 | type | String | 是 | Proof |
JsonSchema | ||||
字段類(lèi)型 | type | String | 是 | |
字段描述 | description | String | 是 | |
是否必填 | required | Boolean | 是 | true表示必填;false表示選填 |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
ID | cptId | Long | 是 | |
版本 | cptVersion | Integer | 是 |
1.6 簽發(fā)憑證
發(fā)證方根據(jù)用戶信息,可通過(guò)“簽發(fā)憑證”為用戶生成憑證。1.6.1 功能介紹用戶根據(jù)憑證模板的屬性要求,向發(fā)證方提供了對(duì)應(yīng)的屬性值后,發(fā)證方可基于憑證模板為其生成一份憑證。1.6.2 API定義
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
私鑰 | privateKey | String | 是 | 主私鑰 |
DID | issuerDid | String | 是 | 發(fā)證方的DID |
DID | userDid | String | 是 | 用戶的DID |
到期日 | expirationDate | String | 是 | |
屬性 | claim | Map | 是 | 和憑證模板的格式一致 |
類(lèi)型 | type | String | 是 | Proof |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
標(biāo)準(zhǔn) | context | String | 是 | |
ID | id | String | 是 | 憑證ID |
類(lèi)型 | type | String | 是 | Proof |
ID | cptId | Long | 是 | 憑證模板ID |
DID | issuerDid | String | 是 | 發(fā)證方DID |
DID | userDid | String | 是 | 用戶DID |
到期日 | expirationDate | String | 是 | 憑證到期日 |
生成日期 | created | String | 是 | 憑證簽發(fā)日 |
簡(jiǎn)要說(shuō)明 | shortDesc | String | 是 | 憑證簡(jiǎn)述 |
詳細(xì)說(shuō)明 | longDesc | String | 是 | 憑證詳述 |
內(nèi)容 | claim | Map | 是 | |
簽名信息 | proof | Map | 是 |
1.7 驗(yàn)證憑證
用戶可以通過(guò)“驗(yàn)證憑證”對(duì)憑證的真?zhèn)涡?、有效性進(jìn)行查驗(yàn)。。1.7.1 功能介紹驗(yàn)證憑證包含兩個(gè)方面:驗(yàn)證憑證內(nèi)容和驗(yàn)證憑證是否到期,兩個(gè)方面都驗(yàn)證通過(guò),則認(rèn)為憑證有效。1.7.2 API定義
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
標(biāo)準(zhǔn) | context | String | 是 | |
ID | id | String | 是 | 憑證ID |
類(lèi)型 | type | String | 是 | Proof |
ID | cptId | Long | 是 | 憑證模板ID |
DID | issuerDid | String | 是 | 發(fā)證方DID |
DID | userDid | String | 是 | 用戶DID |
到期日 | expirationDate | String | 是 | 憑證到期日 |
生成日期 | created | String | 是 | 憑證簽發(fā)日 |
簡(jiǎn)要說(shuō)明 | shortDesc | String | 是 | 憑證簡(jiǎn)述 |
詳細(xì)說(shuō)明 | longDesc | String | 是 | 憑證詳述 |
內(nèi)容 | claim | Map | 是 | |
簽名信息 | proof | Map | 是 |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
算法類(lèi)型 | type | String | 是 | Secp256k1 |
公鑰 | publicKey | String | 是 | 主公鑰 |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
Boolean | 是 |
1.8吊銷(xiāo)憑證
發(fā)證方可通過(guò)“吊銷(xiāo)憑證”吊銷(xiāo)已經(jīng)簽發(fā)給用戶的憑證。
1.8.1 功能介紹
發(fā)證方對(duì)已簽發(fā)的憑證進(jìn)行作廢標(biāo)記。憑證已簽發(fā)給用戶,發(fā)證方是無(wú)法直接修改。所以憑證吊銷(xiāo)后將吊銷(xiāo)的憑證編號(hào)存儲(chǔ)與區(qū)塊鏈網(wǎng)絡(luò)中。
1.8.2 API定義
方法定義:
Boolean revokeCredential(RevokeCredential cred) ;
調(diào)用者:平臺(tái)方;
核心邏輯:
RevokeCredential
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
ID | credId | String | 是 | 憑證ID |
模板ID | cptId | Long | 是 | 憑證模板ID |
DID | did | String | 是 | 發(fā)證方DID |
私鑰 | privateKey | String | 是 | 發(fā)證方私鑰 |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
Boolean | 是 |
1.9 查詢(xún)吊銷(xiāo)憑證
用戶可通過(guò)“查詢(xún)吊銷(xiāo)憑證”查詢(xún)發(fā)證方已吊銷(xiāo)的憑證和吊銷(xiāo)時(shí)間。1.9.1 功能介紹用戶查詢(xún)某個(gè)發(fā)證方已經(jīng)吊銷(xiāo)憑證的吊銷(xiāo)列表。1.9.2 API定義
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
頁(yè)碼 | page | Integer | 是 | 當(dāng)前頁(yè)碼 |
分頁(yè)大小 | size | Integer | 是 | 分頁(yè)大小,單次最多可以檢索50條 |
DID | did | String | 是 | 發(fā)證方的DID |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
頁(yè)碼 | page | Integer | 是 | 當(dāng)前頁(yè)碼 |
分頁(yè)大小 | size | Integer | 是 | |
總數(shù) | totalNum | Integer | 是 | 總記錄數(shù) |
總頁(yè)數(shù) | totalPage | Integer | 是 | |
記錄 | result | List< ?BaseCredential> | 是 | 記錄列表 |
字段名 | 字段 | 類(lèi)型 | 必傳 | 備注 |
---|---|---|---|---|
ID | id | String | 憑證編號(hào) | |
時(shí)間 | created | String | 憑證吊銷(xiāo)時(shí)間 |
本文資料內(nèi)容來(lái)源于BSN-DDC SDK詳細(xì)設(shè)計(jì)-V1.0,GitHub地址為:https://github.com/BSN-DDC/did-sdk。欲瀏覽更多信息,請(qǐng)您點(diǎn)擊登錄查看。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧