2. Terms, Roles, and Trust Boundaries

This chapter defines the subjects, resources, credentials, nodes, and trust boundaries involved in resource interconnection within OpenAgenet (OAN). The role definitions support the protocols that follow; they are not abstract descriptions of organizational structures or deployment processes. The subject controls identities and resources, the Registrar node accepts and submits registrations, the Root platform authorizes, verifies, publishes, and governs semantics, the content distribution platform provides already-verified materials, the Discovery node synchronizes, filters, indexes, and returns results, and the caller verifies candidate resources and decides whether to connect. Each role’s permissions should match the facts it can produce or verify.

Three relationships require particular distinction in OAN: whether the resource controller is authorized to represent the resource DID; whether an infrastructure node is recognized by the Root platform and current governance status; and whether a resource version has passed Root publication and been indexed by a Discovery node. DIDs, signatures, VCs, Root proofs, and on-chain governance events carry different facts. No role can replace a verification performed by another role merely because it stores a JSON document, receives a successful HTTP response, or has a search ranking.

When reading this chapter, place each term into four questions: who or what does it describe, what does it prove, who creates or stores it, and can it replace another piece of evidence? For example, a resource DID describes the controlled resource object, a control proof expresses the resource controller’s operational authorization, node authorization expresses an infrastructure node’s qualification to operate, and a Root proof expresses that a particular resource version has passed Root verification. All four may appear in one registration or discovery flow, but they must not be collapsed into a generic “trusted” field.

Judgment dimension Typical question Main evidence
Object identity Which subject or resource does the current material describe? Subject DID, resource DID, DID Document
Control relationship Who can represent this object in a submission or update? Control public key, control proof, signature
Infrastructure qualification Which node is qualified to perform a network action? Node authorization, governance status, authorization domain
Publication and visibility Which version has been accepted, distributed, and indexed? Root proof, synchronization record, discovery response
Business invocation Should the caller connect and invoke the resource? Local verification result, endpoint authentication, business policy

2.1 Core Terms and Abbreviations

2.1.1 Unified Terminology Table

Full English term Abbreviation
OpenAgenet OAN
Internet of Agents IoA
Decentralized Identifier DID
DID Document
did:oan Method
Verifiable Credential VC
Verifiable Presentation VP
ResourcePackage
Resource Metadata
oanMetadata
Resource Controller
Resource Provider
Agent Service
Skill
MCP Server
Tool/API
Registrar Service Node
Discovery Service Node
Root Platform
Content Delivery Network CDN
Trust Indexer
User Agent
Model Context Protocol MCP
Agent2Agent Protocol A2A
A2A Agent Card
Software Development Kit SDK
Application Programming Interface API
Hypertext Transfer Protocol HTTP
JavaScript Object Notation JSON
Request for Comments RFC
Root-verified ResourcePackage
Root Proof
Registration Verifiable Credential
Resource DID
Local Identity
Node Authorization
Governance Status
Resource Version
Service Endpoint
Capability Tag
Capability Tag Tree
Semantic Discovery
Structured Discovery
Authorization Domain
Control Plane
Data Plane
Semantic Plane
Governance Authority
Verifiable Control Proof
Public HTTP API
Message Authentication Code
Resource Type
Subject Type
implementationLinks
Protocol Binding
Publication Cursor
Publication Sequence
Governance Event Sequence
Synchronization Cursor
Freshness
Governance Event
Publication Fact
Discovery Index
Data Integrity Proof
Public Key Multibase
Crypto Suite
Nonce
Hash Algorithm
Package Claims
Protocol Version
Version Constraint
Previous Version
Challenge
Proof
Holder
Controller
Credential Subject
Request ID
Replay Protection
Idempotency
Rate Limiting
Signature
Discovery Query
Query Projection
Exact Lookup
Lexical Search
Hybrid Search
Search Score
Query Explanation
Pagination Cursor
Publication Manifest
Notification Batch
Publication Job
Watermark
Backoff
Signed Request Envelope
DID Control Challenge
Subject Control Proof Bundle
Registration Submission
Discovery Response
Index Snapshot
Query Fallback
Protocol Envelope
Capability Vocabulary
Governance Projection
Sync Batch
Correlation ID
Checkpoint
Event Cursor
Capability Set
Content Digest
Audience
Cross-Origin Resource Sharing CORS
Entity Tag ETag
Server-Side Request Forgery SSRF
Web Cryptography API
OpenAPI Specification
Node Package Manager npm
Base64url
Base58
JSON Web Key JWK
Multibase
Ed25519
SM2
SHA-256
SM3

DIDs in this manual are decentralized identifiers, and did:oan is the method identifier used by OAN. A DID Document is a resolvable document corresponding to a DID. It contains verification methods, service endpoints, and resource-related metadata. The DID control relationship is demonstrated by verifiable keys and signatures. A VC is a verifiable credential used to express registration, node authorization, or other claims for which the issuer assumes responsibility. A VP is a credential presentation organized for verification. A ResourcePackage is a distributable object binding a resource version, metadata, hashes, and Root publication evidence.

The Registrar node is responsible for resource admission, request validation, control-proof verification, and submission to the Root platform. The Discovery node is responsible for synchronizing Root-published content, building indexes, and returning signed discovery responses. The Root platform performs three hub roles: trust authorization, data distribution, and semantic governance. The content distribution platform carries verified materials and is not a trust authority. MCP Servers, A2A, and Tool/API refer respectively to resource types or services and interfaces in external protocol contexts; similar terms do not imply the same lifecycle or permissions.

Names in the unified terminology table should be used directly in the body, interface descriptions, and examples. For example, registration materials may contain a resource type, resource DID, control proof, and service endpoint at the same time. “Resource type” is not “resource DID,” and a “service endpoint” is not a resource control identity. MCP is the name of an external protocol or a protocol identifier in a resource-type context and must not be generalized as a synonym for every tool resource. If an external protocol uses its own object name, explain the correspondence at the first mapping and use the names in Section 2.1.1 thereafter.

2.2 Resource Controller and Resource Provider

The resource controller holds the control key corresponding to the resource DID and is responsible for proving the authority to create, register, or update the DID Document and resource version. The resource provider supplies the actual capability, resource content, service endpoint, protocol binding, and usage instructions, and assumes business and operational responsibility for those claims. In an individual or small deployment, the two are usually the same subject. In an organizational setting, the controller may be an organization or platform, while the provider may be a team or system operating the service under delegation.

The Registrar node and Root platform verify the controller’s control evidence and the consistency of the submitted materials. They must not infer DID control merely because the provider can access an endpoint, nor infer that a business endpoint is genuinely available merely because the controller holds a private key. Resource metadata should make the relationship between controller and provider explicit. When that relationship changes, it should be expressed through an authorization update, ownership transfer, or new resource-version rule rather than by changing only a display name.

{
  "resourceDid": "did:oan:example-resource",
  "controller": "did:oan:example-controller",
  "provider": {
    "name": "Example Team",
    "endpoint": "https://example.invalid/resource"
  },
  "controlProof": {
    "createdBy": "controller",
    "verification": "signature over resourceDid and version"
  }
}

This example shows that the controller and provider can be separate: the controller creates the signature proof, while the provider is responsible for the endpoint and capability declarations. It does not mean that the provider automatically obtains resource control, nor that a control proof guarantees the business quality of the endpoint.

2.3 Subject Identity and Local Identity

Subject identity is the identity context on which a resource control relationship depends. Local Identity is the client-side collection of subject configuration, control keys, resource keys, and necessary credentials. When a Local Identity is created, keys should be generated or imported in a client environment controlled by the user. A registration request sends only the DID Document, public keys, signatures, and public credentials required for protocol verification; it does not send resource-control private keys or subject private keys. Multiple resources may be controlled by the same Local Identity, but each resource still has its own DID, version, and control-proof boundary.

Subject identity is the identity context on which a resource control relationship depends. Local Identity is the client-side collection of subject configuration, control keys, resource keys, and necessary credentials. When a Local Identity is created, keys should be generated or imported in a client environment controlled by the user. A registration request sends only the DID Document, public keys, signatures, and public credentials required for protocol verification; it does not send resource-control private keys or subject private keys. Multiple resource DIDs may be controlled by the same Local Identity, but each resource still has its own independent control boundary under the protocol. Local Identity is better understood as a client-side container for keys and configuration rather than an account on a Registrar node. It may associate a subject DID, multiple resource DIDs, imported node configuration, and necessary public credentials, but it cannot change the independent control boundary of each DID.

2.3.1 Subject Identity and Resource Control Identity

A subject DID expresses the subject of a control relationship, while a resource DID expresses a resource object that can be registered, published, discovered, and updated independently. Subject identity and resource identity may be associated through the same key system, but they must not be conflated in the protocol. A subject private key proves that the subject can manage related resources; a resource-control signature proves that a particular operation on the resource DID is authorized. A runtime account of the provider, a web-login account, or an account for a Registrar node cannot automatically replace either type of DID control evidence.

2.3.2 Local Key Generation, Import, and Backup

The Local Identity flow should support creating a subject identity in the client, importing an existing identity backup, storing resource-control materials, and restoring them when needed. A backup file may contain the subject DID, public key, control key, resource configuration, and necessary credentials, but its sensitivity and custody responsibility must be explicit. During import, the structure and correspondence among keys must be checked; a filename or display text must not be treated as proof of identity authenticity. Downloads, imports, and restoration in a browser-based registration flow are client-side operations. The server receives only the public materials required for protocol verification.

{
  "subjectDid": "did:oan:example-subject",
  "resources": [
    {
      "resourceDid": "did:oan:example-resource",
      "controlKey": "stored locally"
    }
  ],
  "publicMaterial": ["subject public key", "resource public key", "credential references"],
  "privateMaterial": "client-side only"
}

This is a conceptual example of a Local Identity backup. The actual backup format, encryption method, and fields depend on the client implementation. The private material in the example must not be uploaded to a Registrar node, the Root platform, or a Discovery node.

2.3.3 Private-Key Custody and Node Visibility

Resource-control private keys, subject private keys, and node-runtime private keys should be held by their respective controllers. A Registrar node, Root platform, Discovery node, content distribution platform, or off-chain trust indexer should not obtain these private keys from ordinary registration or discovery requests. Nodes may see public keys, signatures, and public credentials in DID Documents, and may retain submission records, Root proofs, and index data, but public evidence cannot be used to derive private keys. Server privileges, log privileges, and backup policies held by node operators remain part of the deployment security boundary and must be managed separately.

2.4 Root Platform

The Root platform is OAN’s network-level coordination and verification center, but it is not the execution center for all business capabilities. It receives submissions from authorized infrastructure nodes, verifies identities, control proofs, resource types, versions, hashes, and publication conditions in registration requests, maintains trusted publication facts that nodes can synchronize, and coordinates notifications to the content distribution platform and Discovery nodes. The Root platform stores and issues proofs and statuses required for network verification; it should not hold the control keys of resource-provider business endpoints.

2.4.1 Trust-Authorization Hub

As the trust-authorization hub, the Root platform determines, according to governance status, which Registrar nodes, Discovery nodes, and other infrastructure participants are qualified to perform corresponding network actions, and provides eligible nodes with verifiable authorization materials. The subject of this judgment is node qualification, role, and authorization scope, not the business quality of a resource. Nodes must also check whether authorization remains valid at runtime; they must not continue restricted operations solely because an old VC exists or a previous request succeeded.

The question answered by this hub is “can this node perform a particular network action,” not “is every item of business content returned by the node trustworthy.” Node authorization materials normally need to be associated with node identity, role, authorization domain, validity period, and governance status. When processing a restricted request, the executing node should check both the authorization material and current status rather than checking only whether the VC signature is valid.

2.4.2 Data-Distribution Hub

As the data-distribution hub, the Root platform organizes verified resource versions, DID Documents, ResourcePackages, hashes, Root proofs, and synchronization cursors, and makes verifiable materials available to authorized Discovery nodes through the content distribution platform. The content distribution platform may cache and transmit these materials in batches, but it must not modify facts accepted by the Root platform. A Discovery node must still recheck hashes, proofs, versions, and authorization domains after receipt.

{
  "publication": {
    "resourceDid": "did:oan:example-resource",
    "version": "1.0.0",
    "packageDigest": "sha256:example-digest",
    "rootProof": "available for verification",
    "publicationSequence": 42
  },
  "distribution": {
    "consumer": "authorized discovery service node",
    "verification": ["packageDigest", "rootProof", "governanceStatus"]
  }
}

This example distinguishes the publication fact formed by the Root platform from the transmission task performed by the content distribution platform. Successful distribution only means that the materials arrived; it does not mean that the receiver has completed verification, and it does not grant a Discovery node visibility beyond its authorization domain.

2.4.3 Semantic-Governance Hub

As the semantic-governance hub, the Root platform maintains capability tags and their hierarchy, identifiers, aliases, and versions for tag selection and recommendation during registration, and for semantic indexes and query explanations at Discovery nodes. Semantic governance determines how tags are organized and evolved, but it does not replace resource control proofs or node authorization. A Discovery node may use local indexing and ranking methods on the basis of Root vocabulary, but it must not extend its authorization domain through local tags.

The capability tag tree answers “how can capabilities be described and located with shared vocabulary.” It does not answer “who controls the resource” or “which node can publish the resource.” A Discovery node may map a natural-language task to one or more capability tags and return tag matches and relevance explanations, but the final result must still be associated with the resource DID, version, origin, governance status, and Root proof.

2.4.4 Root Platform Responsibility Boundary

The Root platform is responsible for network-level verification, authorization, publication, and coordination. It does not execute specific business invocations for resource providers, guarantee the business quality of resource endpoints, or automatically grant a caller business permission because a resource has been published. Public websites, metrics, maps, and governance-event displays are observation entry points, not replacements for Root facts. When the Root platform is unavailable, nodes may provide limited existing data under explicit freshness and fallback rules, but they must not fabricate new acceptance, authorization, or publication facts.

2.5 Registrar Service Node

The Registrar node is the admission and submission boundary through which resource providers enter OAN. It may provide forms, SDKs, or Skills, check DID syntax, resource types, required fields, capability tags, endpoints, hashes, and control proofs, and package qualified requests into signed submissions to the Root platform. A registration VC or registration result issued by the Registrar node proves only that it processed the relevant registration fact. It cannot replace a Root proof or allow the Registrar node to expand the resource’s network visibility by itself.

The Registrar node must perform restricted actions using its own valid node authorization and permitted authorization domain, and must retain enough request IDs, verification results, error reasons, and submission status for auditing. It may reject malformed requests or requests with unclear control. When the Root platform rejects a request or asynchronous publication fails, the Registrar node must return the actual status and must not display local admission as network-wide publication completion.

From the evidence-chain perspective, the Registrar node produces at least three distinguishable results: whether the request arrived and passed local validation, whether it was submitted to the Root platform, and whether the Root platform accepted and published it. When troubleshooting registration, a client or operator should query these levels using the request ID, resource DID, version, and submission status rather than relying only on a page saying “submission successful.”

2.6 Discovery Service Node

The Discovery node is the authorized read side of Root-published content. It obtains candidate ResourcePackages from the content distribution platform or Root notifications, verifies Root proofs, hashes, versions, and governance status, filters resources according to its authorization domain, and builds structured and semantic indexes. Its responses to users, applications, and agents are locally processed discovery responses. It must therefore retain resource origin, version, freshness, and verification status, and must assume responsibility for response content when signed responses are supported.

A Discovery node may optimize query performance, ranking, and semantic matching, and may retain an older snapshot for limited fallback display. It must not modify Root publication facts, add unauthorized resources to a trusted index, or use local ranking to override revocation, suspension, or version status. Search results are inputs to the caller’s subsequent verification, not automatic invocation permission.

{
  "resourceDid": "did:oan:example-resource",
  "version": "1.0.0",
  "match": {
    "type": "semantic",
    "capabilities": ["code-search", "structure-summary"],
    "score": 0.91
  },
  "source": {
    "discoveryNode": "authorized-node",
    "publicationSequence": 42,
    "freshness": "known"
  },
  "verificationRequired": true
}

The score, tag match, and explanation in a discovery response belong to the index or query layer. resourceDid, version, source, and freshness support subsequent verification. Even a high relevance score cannot bypass DID Document, Root proof, governance-status, or endpoint checks.

2.7 Content Distribution Platform

The content distribution platform carries ResourcePackages, DID Documents, metadata, proofs, hashes, and synchronization materials that have been verified by the Root platform and permitted for propagation. Its goal is to improve the reachability, batch efficiency, and caching capability of node synchronization. It is a data-plane component, not an authority for governance or identity trust. Recipients must reverify distributed content using the Root proof, hashes, and status. The distribution layer may be operated by the same organization as the Root platform or by independent infrastructure, but that deployment relationship must not change the protocol responsibility boundaries.

2.8 Off-Chain Trust Indexer

The off-chain trust indexer is the read-side projection component for on-chain governance facts. It reads governance events such as node authorization, authorization-domain changes, suspension, restoration, and revocation, and writes authorization status into a queryable model for the Root platform, Registrar nodes, and Discovery nodes according to sequences or cursors. Projection results may be delayed or affected by faults. They must retain the last processed position, event source, projection time, and error status. Runtime code must not equate “seen by the indexer” with the final on-chain fact.

When the Root platform or another executing node uses indexer status, it must define expiration, staleness, and fallback behavior. For actions that must prevent an unauthorized node from continuing, the node should fail closed when status cannot be confirmed or exceeds the allowed freshness. Public statistics or historical displays may show delay and old data, but must not change the actual authorization decision.

{
  "governanceProjection": {
    "nodeId": "did:oan:example-node",
    "role": "discovery",
    "authorizationDomain": "example-domain",
    "status": "active",
    "eventSequence": 128,
    "source": "governance event stream",
    "projectedAt": "2026-09-09T00:00:00Z"
  },
  "decision": "allow indexed discovery within the authorization domain"
}

This projection is an off-chain read model of on-chain governance events and must retain the event sequence and projection time. If the sequence is interrupted, the status is stale, or the source cannot be verified, the executing node should follow the failure policy for sensitive actions rather than treating the last successful projection as permanent authorization.

2.9 Caller, User, Application, and Agent

The user is the person expressing an intent to register, discover, or use a business capability. The browser or another client is the tool that carries the Local Identity and requests. The application is software that calls OAN interfaces and executes local policies. The user agent is an agent that can query and initiate calls on behalf of the user. These roles may appear together in one flow, but their sources of authority differ: the user controls local keys, the client protects private materials, the application verifies network evidence, and the user agent selects resources based on the verification result.

During discovery, the caller is a relying party. During an actual business invocation, it must also handle request signing, credential presentation, replay protection, and local authorization policies. It must not trust only search ranking, a website display name, or a resource description forwarded by a third party. Before connecting, it should verify the DID, VC, Root proof, governance status, version, and endpoint declaration, and decide whether to continue according to the concrete business risk.

2.10 Governance Authority and Authorization Domain

The governance authority decides whether an infrastructure node enters, remains within, or exits OAN’s trusted operating scope. An authorization domain is the capability or resource scope that a node is permitted to process. It may constrain which resources a Registrar node accepts, which resources a Discovery node synchronizes and returns, and which network actions a node may perform. An authorization domain is not a resource control relationship or a capability tag: tags describe and match capabilities, while authorization domains limit permissions and visibility.

Governance status may be formed jointly from on-chain events, Root runtime status, and node authorization materials, but an executing node must state the source and priority of each fact. A historical authorization VC, cached status, or manually maintained display must not override a current revocation or suspension. When authorization-domain changes propagate with delay, the node should follow the prescribed freshness and fail-closed rules for sensitive actions.

An authorization domain can be understood as “resource scope + action scope + observation scope.” Resource scope limits which resources or resource types a node can process. Action scope limits whether the node can register, synchronize, index, or perform management actions. Observation scope limits which callers or network areas may receive results. These three scopes jointly determine effective node permissions; a broad active status cannot replace them.

2.11 Trust Boundaries and Responsibility Matrix

The OAN responsibility matrix should be established along four dimensions: producing facts, verifying facts, storing status, and making external statements. The resource controller produces resource identity and control proof. The Registrar node verifies admission materials and submits registration. The Root platform verifies node authorization and resource versions and forms publication facts. The content distribution platform transfers verified materials. The Discovery node verifies and indexes them within its authorization domain. The off-chain trust indexer projects governance status. The caller verifies candidate resources and executes local invocation policy. Every action should point to a corresponding signature, credential, hash, governance event, interface response, or persistent record.

2.11.1 Resource Controller and Resource Provider

The resource controller is responsible for the resource DID, control key, and update authorization. The resource provider is responsible for capability descriptions, resource content, endpoints, and business availability. They may be the same subject or may be separated through an explicit delegation or operating relationship. The Registrar node and Root platform should determine resource-operation permission only through a verifiable control proof. They must not infer that the provider controls the resource DID merely because it submitted a service address or successfully logged in.

2.11.2 Registrar Node, Root Platform, and Discovery Node

The HTTP interfaces of these three roles correspond to different trust boundaries. The resource publisher submits a ResourceRegistrationSubmission to the Registrar node. The Registrar node submits a ResourceVerifyAndPublishRequest containing registrarDid and upstreamAuth to the Root platform. The Discovery node returns a ResourceDiscoveryResponse to the caller. The first interface receives resource-control materials, the second proves that an authorized node is representing the network, and the third provides local-index candidates. Interface reachability, request parseability, and candidate visibility are different facts and cannot replace one another across roles.

The Registrar node accepts, validates, and submits registrations. The Root platform verifies node authorization and resources, performs trusted publication, and coordinates distribution. The Discovery node synchronizes, verifies, filters by authorization domain, and serves queries over published materials. A Registrar result cannot replace a Root publication fact, and a Discovery result cannot rewrite Root status. Interfaces, proofs, and states among the three must remain traceable.

2.11.3 Caller and Verifier

The caller may be a user, application, or user agent. It submits queries, receives candidate resources, and decides whether to establish a business connection. The verifier may be the caller itself, an SDK, or a verification component trusted by the caller. It checks DIDs, signatures, VCs, Root proofs, governance status, versions, endpoints, and invocation policies. A verification component may provide a verification result, but it must not directly execute a high-risk business action without the caller’s policy authorization.

2.11.4 Responsibility for Key Actions

Resource creation and updates belong to the resource controller. Registration acceptance and registration credentials belong to the Registrar node. Root acceptance and trusted publication belong to the Root platform. Material transfer belongs to the content distribution platform. Authorization-domain indexing and discovery responses belong to the Discovery node. Governance-event projection belongs to the off-chain trust indexer. Final business invocation authorization belongs to the resource endpoint and the caller’s local policy. A public website, statistics interface, or manually maintained event table is an observation and presentation layer and cannot serve as protocol authority for these key actions.

The boundaries among roles can be checked by asking who produces facts, who verifies facts, who stores status, and who makes external statements. “Responsible” in the table below means protocol responsibility; it does not mean responsibility for all business content or runtime environments.

Role Main facts produced Main facts verified External result provided Responsibility not replaced
Resource controller DID Document, control proof, resource update Own keys and materials to be published Controlled resource materials Cannot declare Root publication by itself
Resource provider Capability description, endpoint, version, usage conditions Resource business content Resource description available for registration Does not necessarily control the DID
Registrar node Registration acceptance, field validation, registration credential Control proof, fields, admission qualification Registration materials submitted to Root Does not replace Root publication
Root platform Node authorization, publication fact, Root proof Node authorization, resource version, hash, control proof Trusted publication materials available for distribution Does not replace business-endpoint authorization
Content distribution platform Transfer, cache, and distribution records Publication-material integrity Publication artifacts available for retrieval Does not grant resource or node permissions
Discovery node Local synchronization, verification, and index records Publication proof, authorization domain, lifecycle Discovery results within authorization scope Does not change Root facts
Off-chain trust indexer Governance-status read model On-chain governance events and ordering Node-authorization status query Does not create on-chain governance facts
Caller/verification component Local verification and invocation decision DID, VC, VP, endpoint, and business policy Decision on whether to establish a connection Does not replace business authorization at the resource service

When a key action occurs, the corresponding signature, credential, hash, governance event, synchronization cursor, or interface response should be locatable. If a result has only “a node returned success” as evidence and its source and verification scope cannot be explained, it can be treated only as an observation of runtime status, not as a cross-role trust proof.

When troubleshooting a resource or node, establish the evidence chain in this order: identify the object and version, confirm the control proof or node authorization, check the publication fact and governance status, and finally inspect the discovery index, endpoint, and caller policy. This order applies to registration failures, stale discovery results, and propagation after node-authorization revocation. If any step lacks a source or cannot be verified, limit the conclusion to the observable scope.

References

Source Type Link
oan-protocol-common Code repository: shared protocol types, identity objects, and trust materials https://github.com/wolfbrother/oan-protocol-common
OAN Yellow Paper arXiv Yellow Paper: roles, trust boundaries, and verification mechanisms https://arxiv.org/abs/2606.03163
did:oan DID Method Specification Standard/method specification: DID method and identity objects https://github.com/OpenAgenet/oan-public-docs/blob/main/did-oan-specs/doc/OAN DID Method Specification.md
On this page