W3C规定的DID(Decentralized Identifier)位数是固定的吗?
我尝试在 https://www.w3.org/TR/did-core/ 检查规范,但在那里找不到任何解释。我特别检查了“3.1 DID 语法”https://www.w3.org/TR/did-core/#did-syntax
我问的是第二个冒号后面的位数。 如果出现以下情况,我想了解以“123...”开头的最后一部分 做了:方法:123456789abcdefghi
在w3c文档中,我看到了6位和20位的示例。 因此,看起来位数并不是固定的,可以由开发者指定。
我最好的猜测是DID的位数不是固定的。
有了解这方面情况的朋友请告诉我我的猜测是否正确。
您问题中提到的部分称为方法特定ID或方法特定标识符,这是第二个冒号(
:
)之后的部分。它被称为特定方法,这告诉我们它不受任何最大限制的约束,完全取决于确定其性质、结构和长度的方法以及如何确定它。
您在https://www.w3.org/TR/did-core/#did-syntax中引用的形成 DID 语法的 w3c 标准的部分也说明了相同的内容:
根据 DID ABNF 语法规则
method-specific-id = *( *idchar ":" ) 1*idchar
idchar = ALPHA / DIGIT / "." / "-" / "_" / pct-encoded
我们可以看到这些语法规则是基于ABNF规则的,ABNF中星号(
*
)代表重复(https://www.rfc-editor.org/rfc/rfc5234#section-3.6)。指定某个元素可以出现的次数。
*idchar
表示 idchar 出现零次或多次。1*idchar
表示 idchar 出现一次或多次。这里的 idchar 可以包含大小写字母、数字、句点、连字符、下划线和百分比编码字符。
注意:语法规则中的冒号(:)表示方法特定的ID确实可以有由冒号分隔的各个部分。示例:did:example:foo:bar:baz
所以,是的,您的猜测是正确的,DID 中第二个冒号之后的字符数不是固定的,而是通过 DID 的方法定义的,该方法最终由开发人员定义。
虽然语法规则没有明确规定method-specific-id的最大长度,但我们应该避免过长的DID,这会导致管理、存储、共享、记忆变得繁琐,影响用户体验。