-
Notifications
You must be signed in to change notification settings - Fork 19
跨链身份体系
BCDNS为AntChain Bridge提供了身份服务,通过签发各类身份证书,实现区块链域名申请、域名验证、Relayer互认等流程。
BCDNS会为AntChain Bridge提供域名证书、域名空间证书、Relayer证书、PTC证书和信任根证书。
整体类图如下:
classDiagram
direction LR
class CrossChainCertificateTypeEnum {
<<enumeration>>
+ BCDNS_TRUST_ROOT_CERTIFICATE
+ DOMAIN_NAME_CERTIFICATE
+ RELAYER_CERTIFICATE
+ PROOF_TRANSFORMATION_COMPONENT_CERTIFICATE
}
class AbstractCrossChainCertificate {
CrossChainCertificateTypeEnum type
String version
String id
ObjectIdentity issuer
byte[] credentialSubject
IssueProof proof
long expirationDate
long issuanceDate
}
class IssueProof {
byte[] rawProof
byte[] certHash
String sigAlgo
String hashAlgo
}
class ObjectIdentity {
- byte[] rawId
- ObjectIdentityType type
}
class ObjectIdentityType {
<<enumeration>>
+ X509_PUBLIC_KEY_INFO
+ BID
}
ObjectIdentity "1" *--> "type 1" ObjectIdentityType
AbstractCrossChainCertificate "1" *--> "type 1" CrossChainCertificateTypeEnum
AbstractCrossChainCertificate "1" *--> "proof 1" IssueProof
AbstractCrossChainCertificate "1" *--> "issuer 1" ObjectIdentity
AbstractCrossChainCertificate --> IssueProof
从上图,可以看到证书的类型,域名和域名空间证书,都作为DOMAIN_NAME_CERTIFICATE
类型。
AbstractCrossChainCertificate
为证书的主要实现,包含下列字段:
- type:证书类型;
- version:证书结构的版本号;
- id:某一本证书的ID,由BCDNS签发时确定;
- issuer:签发该证书的主体ID,使用类型
ObjectIdentity
表示,下文会有所介绍; - credentialSubject:持有该证书的主体信息,不同类型证书有不同的主体结构,下文会有所介绍;
- proof:签发主体对该证书作出的证明,目前支持非对称密钥的签名;
- expirationDate:该证书的超时的时间戳,以秒为单位。
- issuanceDate:签发该证书的时间戳,以秒为单位。
上文中提到了主体ID类型ObjectIdentity
,目前支持两种类型X509_PUBLIC_KEY_INFO
和BID
。
-
X509_PUBLIC_KEY_INFO
该类型使用了
X.509 Subject Public Key Info
作为主体ID,在rawId
字段中存放了encoded的X.509 Subject Public Key Info
,详细可以参考RFC5280。 -
BID
该类型使用了星火链的DID方案。星火标识
BID
(Blockchain-based Identifier
,BID
),BID
标识是基于W3C DID
标准开发的新型分布式标识,任意实体可自主生成星火标识,在rawId
字段中存放了encoded的BID。
证书的credentialSubject
字段可以按照证书类型反序列化为不同的类型:
-
classDiagram direction LR class DomainNameCredentialSubject { String version DomainNameTypeEnum domainNameType CrossChainDomain domainName CrossChainDomain parentDomainSpace ObjectIdentity applicant byte[] subject } class DomainNameTypeEnum { <<enumeration>> + DOMAIN_NAME + DOMAIN_NAME_SPACE } DomainNameCredentialSubject "1" *--> "type 1" DomainNameTypeEnum
上图介绍了域名主体包含的字段:
- version:该主体类型的版本号;
- domainNameType:当前主体表达的类型,是域名的宣称还是域名空间的宣称;
- domainName:域名或者域名空间的值;
- parentDomainSpace:签发BCDNS的域名空间,规定根BCDNS的域名空间为空字符串,可见代码的
ROOT_DOMAIN_SPACE
;l - applicant:主体ID;
- subject:序列化的主体身份,根据主体ID类型,如果主体ID是
X509_PUBLIC_KEY_INFO
,则为空,如果是BID
类型,则为BID文档(BID Document)内容,subject的主要作用是保存主体的公钥内容,BID文档的使用较为简单,主要是使用publicKey
字段;
-
域名空间主体
域名空间和域名的主体结构相同,只有
domainNameType
不同,为DOMAIN_NAME_SPACE
。域名空间应当以点“.”开头,后接空间名字,比如‘’.web3“,如果是域名,则不应该以点开头。域名和域名空间的长度都不应该超过128字节,且建议使用小写英文字母表示,比如
antchain.web3
。 -
classDiagram direction BT class RelayerCredentialSubject { String version String name ObjectIdentity applicant byte[] subjectInfo }
上图介绍了Relayer主体包含的字段:
- version:该主体类型的版本号;
- name:Relayer的名称,这里可以随意填写;
- applicant:主体ID;
- subject:序列化的主体身份;
Relayer的运行需要依赖Relayer证书,详情请参考AntChain Bridge Relayer。
-
classDiagram direction LR class PTCCredentialSubject { String version String name PTCTypeEnum type ObjectIdentity applicant byte[] subjectInfo } class PTCTypeEnum { <<enumeration>> + EXTERNAL_VERIFIER + COMMITTEE + RELAY_CHAIN } PTCCredentialSubject "1" *--> "type 1" PTCTypeEnum
证明转换服务(PTC)会为AntChain Bridge 提供异构链跨链消息存在性验证服务,以及提供背书证明,PTC需要向BCDNS申请身份并注册信任根,对每条链都会提供第三方区块链信任锚(TP-BTA),以供跨链中的接收链验证跨链消息证明(TP-Proof)。
目前计划支持多种类型的PTC,比如
PTCTypeEnum
中的委员会(COMMITTEE)、区块链(RELAY_CHAIN)、外部服务(EXTERNAL_VERIFIER),区块链类型可以看作常见的中继链跨链方案。 -
classDiagram direction BT class BCDNSTrustRootCredentialSubject { String name ObjectIdentity bcdnsRootOwner byte[] bcdnsRootSubjectInfo }
最后是持有根域名的BCDNS信任根主体,上面字段包含主体的name,以及主体ID和主体信息。
域名空间证书用于表示某个BCDNS持有该域名空间,该空间不可以是根空间,这些BCDNS为下级BCDNS,而根BCDNS为最高级BCDNS,比如当前的星火链BCDNS,上级BCDNS可以给下级签发域名空间证书,每个BCDNS可以签发自己空间的区块链域名。
跨链证书的序列化使用了AntChain Bridge 提供的一个TLV序列化工具(使用介绍)。
跨链证书支持保存为PEM格式,证书对象可以通过CrossChainCertificateUtil转化至PEM格式,比如:
-----BEGIN BCDNS TRUST ROOT CERTIFICATE-----
AADZAQAAAAABAAAAMQEABAAAAHRlc3QCAAEAAAAAAwA7AAAAAAA1AAAAAAABAAAA
AQEAKAAAAGRpZDpiaWQ6ZWZiVGh5NXNiRzdQM21GVXAyRVdONW9RR1g2TFVHd2cE
AAgAAAChN2RlAAAAAAUACAAAACFrRWcAAAAABgDQAAAAAADKAAAAAAADAAAAYmlm
AQA7AAAAAAA1AAAAAAABAAAAAQEAKAAAAGRpZDpiaWQ6ZWZiVGh5NXNiRzdQM21G
VXAyRVdONW9RR1g2TFVHd2cCAHoAAAB7InB1YmxpY0tleSI6W3sidHlwZSI6IkVE
MjU1MTkiLCJwdWJsaWNLZXlIZXgiOiJiMDY1NjZhZjY2NWVlNTUwNjM1ZTk4Mzc1
YzdiMzg4NzZhMmNjMzFlM2E5ZDgxODk1N2U0NmEyNGEwZjI1YTc0YTQ0Y2NlIn1d
fQcAiAAAAAAAggAAAAAAAwAAAFNNMwEAIAAAALKKKxzUTalyw2vp96hOJ3TuDsNZ
/pjgltTL+ip2bsRNAgAHAAAARWQyNTUxOQMAQAAAAMsFd4D9Gf3hiIebiq5MFTpw
IV4AUtT9d+Y8gRK/kmNySzlJ32Shw3FNj8Uvy3yjBxjO6vKOWH5Jhu936zMWOgk=
-----END BCDNS TRUST ROOT CERTIFICATE-----