did:bts Method Specification

W3C DID Method for AI Agent Trust Identity

Status: Draft
Version: 1.0.0
Author: Simon Ng, Borealis Protocol Ltd
Created: March 2026

Abstract

The did:bts method is a Decentralized Identifier (DID) method designed specifically for AI agent identity. It binds a unique, permanent cryptographic identity to an autonomous software agent and associates that identity with a behaviorally-derived trust score. The method leverages the Borealis Trust Score (BTS) registry as its primary verifiable data registry, with optional anchoring to the Hedera Consensus Service (HCS) for immutable audit trails. This specification conforms to W3C Decentralized Identifiers v1.1 and supports full CRUD lifecycle management.

1.Introduction

1.1 Purpose

As autonomous AI agents proliferate across enterprise, consumer, and regulatory domains, the need for verifiable agent identity has become critical. The EU AI Act (effective August 2, 2026) mandates documented identity, audit trails, and accountability for high-risk AI systems. Existing DID methods (did:web, did:key, did:ethr) were designed for human or organizational identity. No W3C-registered DID method specifically addresses the unique requirements of AI agent identity:

The did:bts method fills this gap by providing a purpose-built DID method for AI agents that integrates trust scoring, lifecycle management, and regulatory compliance into the identity layer itself.

1.2 Scope

This specification defines:

1.3 Conformance

This specification conforms to the W3C Decentralized Identifiers (DIDs) v1.1 specification. The key words "MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

1.4 Terminology

2.DID Method Name

The method name for Borealis Trust Score identifiers is: bts

A DID using this method MUST begin with the following prefix: did:bts:

The prefix MUST be in lowercase. The remainder of the DID is case-insensitive.

3.Method-Specific Identifier

3.1 Syntax

The did:bts method-specific identifier is derived from the BTS License Key issued to the agent upon registration.

did-bts       = "did:bts:" bts-identifier
bts-identifier = 4*HEXGROUP
HEXGROUP       = 4HEXDIG
separator      = "-"

Example: did:bts:A1B2-C3D4-E5F6-G7H8

In ABNF notation per RFC 5234:

did-bts-method = "did:bts:" bts-specific-id
bts-specific-id = group "-" group "-" group "-" group
group = 4(ALPHA / DIGIT)

3.2 Identifier Properties

3.3 Examples

did:bts:A1B2-C3D4-E5F6-G7H8
did:bts:EEC9-3F5D-CBAE-48F1
did:bts:4857-9F68-2B12-DC20

4.DID Document

4.1 Structure

A resolved did:bts DID Document MUST conform to the W3C DID Core v1.1 data model and MUST include the following properties:

{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/suites/ed25519-2020/v1",
    "https://borealisprotocol.ai/ns/bts/v1"
  ],
  "id": "did:bts:A1B2-C3D4-E5F6-G7H8",
  "controller": "did:bts:A1B2-C3D4-E5F6-G7H8",
  "verificationMethod": [
    {
      "id": "did:bts:A1B2-C3D4-E5F6-G7H8#keys-1",
      "type": "Ed25519VerificationKey2020",
      "controller": "did:bts:A1B2-C3D4-E5F6-G7H8",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  ],
  "authentication": [
    "did:bts:A1B2-C3D4-E5F6-G7H8#keys-1"
  ],
  "assertionMethod": [
    "did:bts:A1B2-C3D4-E5F6-G7H8#keys-1"
  ],
  "service": [
    {
      "id": "did:bts:A1B2-C3D4-E5F6-G7H8#trust-score",
      "type": "BorealisTrustScore",
      "serviceEndpoint": "https://borealismark-api.onrender.com/v1/agents/did:bts:A1B2-C3D4-E5F6-G7H8"
    },
    {
      "id": "did:bts:A1B2-C3D4-E5F6-G7H8#audit-log",
      "type": "HederaConsensusAudit",
      "serviceEndpoint": "https://borealismark-api.onrender.com/v1/audit/did:bts:A1B2-C3D4-E5F6-G7H8"
    }
  ],
  "metadata": {
    "created": "2026-03-28T00:00:00Z",
    "updated": "2026-03-28T12:00:00Z",
    "deactivated": false,
    "trustScore": {
      "composite": 750,
      "creditRating": "A+",
      "factors": {
        "constraintAdherence": 0.82,
        "decisionTransparency": 0.78,
        "behavioralConsistency": 0.71,
        "anomalyRate": 0.88,
        "auditCompleteness": 0.69
      },
      "lastUpdated": "2026-03-28T12:00:00Z",
      "verificationMethod": "self-reported",
      "hederaAnchor": {
        "topicId": "0.0.10382960",
        "sequenceNumber": 42,
        "consensusTimestamp": "2026-03-28T12:00:00.000Z"
      }
    }
  }
}

4.2 Context

The did:bts method defines a custom JSON-LD context at https://borealisprotocol.ai/ns/bts/v1 that extends the base DID context with trust-score-specific vocabulary:

4.3 Verification Methods

The did:bts method REQUIRES Ed25519 verification keys (Ed25519VerificationKey2020). The key pair is generated at agent registration and the public key is stored in the DID Document.

4.4 Services

The DID Document MAY include the following service endpoints:

Service Type Purpose Required
BorealisTrustScore Current trust score and factor breakdown RECOMMENDED
HederaConsensusAudit Immutable audit trail on Hedera HCS OPTIONAL
AgentTelemetry Telemetry submission endpoint OPTIONAL

5.Verifiable Data Registry

The did:bts method uses the Borealis Trust Score Registry as its verifiable data registry. The registry is a centralized service operated by Borealis Protocol Ltd with the following properties:

5.1 Resolution Endpoint

DID resolution for did:bts identifiers is performed via HTTPS:

GET https://borealismark-api.onrender.com/v1/did/{did-bts-identifier}
Accept: application/did+json

The resolver MUST return a DID Document conforming to Section 4.1 or an appropriate error.

5.2 Hedera Anchoring

When a trust score is calculated or updated, the registry MAY anchor a hash of the score to Hedera Consensus Service topic 0.0.10382960. This provides:

The HCS message format is:

{
  "type": "bts-score-anchor",
  "did": "did:bts:A1B2-C3D4-E5F6-G7H8",
  "scoreHash": "<SHA-256 of composite score + factors + timestamp>",
  "timestamp": "2026-03-28T12:00:00Z"
}

6.CRUD Operations

6.1 Create (Register)

A new did:bts identifier is created when an agent is registered with the Borealis Trust Score registry.

Preconditions:

Process:

  1. Registrant acquires a BTS License Key via POST /v1/licenses/free (free tier) or Stripe purchase flow
  2. The key is generated in format BTS-XXXX-XXXX-XXXX-XXXX
  3. The registrant submits the key and a public key to POST /v1/agents/register
  4. The registry validates the key, generates the DID did:bts:<key-without-prefix>, and creates the DID Document
  5. The raw BTS key is sent to the registrant via email (one-time delivery)
  6. The key is stored as a SHA-256 hash in the registry (the raw key is never stored)
  7. Initial trust score is set to 650 (UNRATED baseline)

Result: A new DID Document is created and resolvable via the resolution endpoint.

Error Conditions:

6.2 Read (Resolve)

DID resolution returns the current DID Document for a given did:bts identifier.

Resolution Process:

  1. Extract the method-specific identifier from the DID
  2. Query the Borealis registry: GET /v1/did/{identifier}
  3. If found and active, return the DID Document with HTTP 200
  4. If found and deactivated, return the DID Document with metadata.deactivated: true
  5. If not found, return HTTP 404

Resolution Options:

DID URL Dereferencing:

The following DID URL patterns are supported:

Pattern Returns
did:bts:XXXX-XXXX-XXXX-XXXX Full DID Document
did:bts:XXXX-XXXX-XXXX-XXXX#keys-1 Verification method
did:bts:XXXX-XXXX-XXXX-XXXX#trust-score Trust score service
did:bts:XXXX-XXXX-XXXX-XXXX?service=trust-score Redirects to trust score endpoint

6.3 Update

The DID Document for a did:bts identifier MAY be updated under the following constraints:

What CAN be updated:

What CANNOT be updated:

Key Rotation Process:

  1. Agent (or controller) signs a key rotation request with the current private key
  2. Request includes the new Ed25519 public key
  3. Registry verifies signature against current public key
  4. If valid, the DID Document is updated with the new key
  5. Previous key is recorded in document metadata for audit purposes
  6. Hedera HCS anchor records the rotation event

Authentication: All update operations MUST be authenticated by signing the request body with the private key corresponding to the current verification method in the DID Document.

6.4 Deactivate

A did:bts identifier MAY be deactivated (permanently disabled). Deactivation is irreversible.

Process:

  1. Agent controller signs a deactivation request with the current private key
  2. Registry verifies the signature
  3. DID Document is updated: metadata.deactivated: true
  4. The DID Document remains resolvable (for audit purposes) but the agent is marked inactive
  5. The identifier is permanently retired and MUST NOT be reissued
  6. Hedera HCS anchor records the deactivation event

Conditions that trigger automatic deactivation:

Post-Deactivation:

7.Security Considerations

7.1 Threat Model

The did:bts method addresses the following threat categories:

7.1.1 Key Compromise

If an agent's private key is compromised, an attacker could impersonate the agent or modify its DID Document. Mitigations:

7.1.2 Registry Compromise

The Borealis registry is a centralized service. If compromised, an attacker could modify DID Documents or trust scores. Mitigations:

7.1.3 Sybil Attack

An attacker could register many agents to manipulate the trust scoring network. Mitigations:

7.1.4 Denial of Service

The resolution endpoint could be targeted by DDoS attacks. Mitigations:

7.1.5 Man-in-the-Middle

Resolution requests could be intercepted and modified. Mitigations:

7.2 Cryptographic Algorithms

7.3 Centralization Considerations

The did:bts method relies on a centralized registry operated by Borealis Protocol Ltd. This is a deliberate design choice:

8.Privacy Considerations

8.1 Agent vs Human Privacy

The did:bts method is designed for AI agent identity, not human identity. AI agents do not have the same privacy rights as natural persons. However, the following privacy considerations apply:

8.1.1 Operator Privacy

The DID Document does not contain personally identifiable information (PII) about the agent's operator (human or organization). The operator's identity is known only to the registry (via the Stripe payment or email registration) and is not published in the DID Document.

8.1.2 Correlation Risk

A did:bts identifier is persistent and unique. Any party observing an agent's DID across multiple interactions can correlate those interactions. This is by design (trust requires trackability) but operators should be aware that agent activity linked to a did:bts is attributable.

8.1.3 Trust Score Disclosure

Trust scores are public metadata. An agent's composite score and credit rating are visible to any party that resolves the DID. The individual factor breakdown (constraint adherence, decision transparency, etc.) is available via the trust score service endpoint. Operators who do not wish to disclose trust scores should not register a did:bts identifier.

8.1.4 Telemetry Data

Telemetry submitted for trust score calculation is processed by the Borealis registry and is not published in the DID Document. Raw telemetry is retained for scoring purposes only and is not shared with third parties.

8.2 Data Minimization

The DID Document contains only:

No behavioral data, telemetry payloads, or operator information is included in the DID Document.

8.3 Right to Deactivation

An agent's operator MAY deactivate the DID at any time (Section 6.4). Upon deactivation:

9.Trust Score Methodology

The Borealis Trust Score is a composite metric derived from five behavioral factors:

Factor Weight Description
Constraint Adherence 35% How well the agent operates within defined boundaries
Decision Transparency 20% Whether the agent's decisions are explainable and logged
Behavioral Consistency 20% Predictability and stability of agent behavior over time
Anomaly Rate 15% Frequency of unexpected or out-of-bounds behaviors
Audit Completeness 10% Completeness of the agent's audit trail

Score Range: 0-1000 (raw), displayed as 0-100

Credit Ratings:

Rating Score Range Description
AAA+ 980-1000 Exceptional trust, verified by independent sidecar
AAA 950-979 Near-perfect behavioral record
AA 900-949 Consistently high trust
A+ 850-899 Strong trust with minor variances
A 800-849 Solid trust record
B+ 700-799 Above average, room for improvement
B 600-699 Baseline trust
C 500-599 Below average, requires attention
D 400-499 Low trust, restricted capabilities
FLAGGED <400 Under review or revoked

Verification Tiers:

Tier Max Score Method
Free 65 Self-reported telemetry only
Standard 85 Self-reported with rate limiting
Pro Uncapped Sidecar-verified telemetry (third-party attestation)

10.Conformance

10.1 DID Producer Conformance

A conforming did:bts producer (the Borealis registry) MUST:

10.2 DID Consumer Conformance

A conforming did:bts consumer (any party resolving or verifying a DID) MUST:

10.3 Test Vectors

Valid DID:

did:bts:A1B2-C3D4-E5F6-G7H8

Valid DID Document (minimal):

{
  "@context": ["https://www.w3.org/ns/did/v1"],
  "id": "did:bts:A1B2-C3D4-E5F6-G7H8",
  "verificationMethod": [{
    "id": "did:bts:A1B2-C3D4-E5F6-G7H8#keys-1",
    "type": "Ed25519VerificationKey2020",
    "controller": "did:bts:A1B2-C3D4-E5F6-G7H8",
    "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
  }]
}

Invalid DIDs:

did:bts:            (empty identifier)
did:bts:TOOLONG-1234-5678-9012-ABCD  (5 groups instead of 4)
did:BTS:A1B2-C3D4-E5F6-G7H8  (uppercase method name)
did:bts:A1B2C3D4E5F6G7H8  (missing separators)

11.References

11.1 Normative References

11.2 Informative References

Appendix A:DID Method Registration

Registry JSON

{
  "name": "bts",
  "status": "provisional",
  "specification": "https://borealisacademy.com/specs/did-bts/v1",
  "verifiableDataRegistry": "Borealis Trust Score registry (REST API) with optional Hedera Consensus Service anchoring for immutable audit trails",
  "contactName": "Borealis Protocol Ltd",
  "contactEmail": "[email protected]",
  "contactWebsite": "https://borealisprotocol.ai"
}

Appendix B:Relationship to Existing Methods

Feature did:bts did:web did:key did:hedera
Target entity AI agents Organizations Ephemeral keys General purpose
Trust scoring Native (5-factor) None None None
Ledger anchoring Optional (Hedera HCS) None None Required (Hedera)
Key rotation Supported Supported Not supported Supported
Deactivation Supported (irreversible) Domain removal Not supported Supported
Privacy model Agent-centric (no PII) Domain-centric Key-centric Account-centric
Regulatory alignment EU AI Act compliant General Minimal General