Skip to content

BSP Domain System — .bsp ​

Version 0.2 | Ambrósio Institute


Overview ​

Every BEO and IEO in the BSP ecosystem is identified by a human-readable .bsp domain — a permanent, sovereign biological address registered on the Aptos blockchain via the DomainRegistry Move module.

The .bsp namespace is managed by the Ambrósio Institute. Domain assignment and uniqueness are enforced on-chain — not by a central server.


Domain Types ​

TypeFormatExampleCostTransferable
Individualfirstname.bspandre.bspFreeNever
Individual (privacy)initials-year.bspam1985.bspFreeNever
Individual (anonymous)[random].bspb7k3m.bspFreeNever
Professionaldr.name.bspdr.carlos.bspPaid, permanentNever
Institutionalinstitution.bspfleury.bspPaid, annualYes
Researchorg.topic.bspusp.longevity.bspPaidNo
Sub-institutionalname@institution.bspdr.silva@hcor.bspUnder hospital feeNo

Domain Rules ​

Permanence ​

Individual domains are permanent and non-transferable. Once andre.bsp is claimed, it exists forever on the Aptos blockchain and cannot be transferred to another person or deleted.

Uniqueness ​

The DomainRegistry smart contract guarantees that each .bsp domain can only exist once. No two entities can hold the same domain.

Case Insensitivity ​

All .bsp domains are stored and resolved in lowercase. Andre.bsp and andre.bsp refer to the same domain.

Reserved Namespaces ​

The following prefixes are reserved by the Ambrósio Institute:

  • bsp.* — Protocol infrastructure
  • institute.* — Institute operations
  • registry.* — Registry services
  • test.* — Testing environments

Domain Resolution ​

typescript
// Resolve a .bsp domain to a BEO or IEO
import { DomainResolver } from 'bsp-sdk'

const resolver = new DomainResolver()

// Resolve individual domain
const beo = await resolver.resolve('andre.bsp')
// Returns: { type: 'BEO', beo_id: '550e8400-...', public_key: 'ed25519:...' }

// Resolve institutional domain
const ieo = await resolver.resolve('fleury.bsp')
// Returns: { type: 'IEO', ieo_id: '9f1a2b3c-...', ieo_type: 'LABORATORY', ... }

// Check availability
const available = await resolver.isAvailable('newname.bsp')
// Returns: true | false

Domain Transfer ​

Institutional domains (type institution.bsp) can be transferred to a new owner entity. Individual domains are permanent and non-transferable — this section applies only to institutional domains.

Transfer Flow ​

text
Current owner initiates transfer
       │
       ▼
  TransferRequest created (status: PENDING)
       │
       ▼
  New owner accepts transfer (signs with their key)
       │
       ▼
  DomainRegistry updates ownership on-chain
       │
       ▼
  Transfer complete — old owner loses all domain privileges

Transfer Schema ​

typescript
DomainTransferRequest {
  domain:         string       // The .bsp domain being transferred (e.g. "fleury.bsp")
  current_owner:  string       // Current owner's IEO ID
  new_owner:      string       // New owner's IEO ID
  reason:         string       // Human-readable justification
  initiated_at:   ISO8601
  expires_at:     ISO8601      // Transfer request expires after 30 days
  signature:      string       // Current owner's Ed25519 signature
  arweave_tx:     string       // On-chain record
}

DomainTransferAcceptance {
  domain:         string
  new_owner:      string       // New owner's IEO ID
  accepted_at:    ISO8601
  signature:      string       // New owner's Ed25519 signature
  arweave_tx:     string       // On-chain record of completed transfer
}

Transfer Rules ​

  • Only institutional domains are transferable (individual, professional, research, and sub-institutional domains are non-transferable)
  • The current owner must initiate the transfer — the new owner can only accept, not request
  • Transfer requests expire after 30 days if not accepted
  • Both the initiation and the acceptance are recorded permanently on Arweave
  • Active consent tokens granted to the old owner's IEO are automatically revoked upon transfer completion
  • The Governance contract can block transfers for suspended IEOs

SDK Usage ​

typescript
import { DomainManager } from 'bsp-sdk'

const manager = new DomainManager({ ownerKey: currentOwnerPrivateKey })

// Initiate transfer
const transfer = await manager.initiateTransfer({
  domain: 'oldlab.bsp',
  newOwner: 'new-lab-ieo-id',
  reason: 'Company acquisition — laboratory assets transferred'
})

// New owner accepts
const newManager = new DomainManager({ ownerKey: newOwnerPrivateKey })
await newManager.acceptTransfer(transfer.domain)

Social Recovery Protocol ​

If a BEO holder loses their private key, the guardian network enables recovery.

Setup ​

typescript
// At BEO creation or anytime after
const recovery = new RecoveryManager(beoId)

await recovery.addGuardian({
  name: 'Maria',
  contact: 'maria@example.com',   // Encrypted and stored on-chain
  public_key: 'ed25519:...'
})

// Set recovery threshold
await recovery.setThreshold({ required: 2, total: 3 })

Recovery Flow ​

  1. Holder loses device and/or private key
  2. Holder contacts 2 of 3 guardians
  3. Each guardian submits a signed confirmation on-chain
  4. After 2 confirmations: new key pair can be registered
  5. Old key is revoked; new key is associated with the domain
typescript
// Guardian submits confirmation
const recovery = new RecoveryManager(beoId)
await recovery.confirmRecovery({
  guardian_key: guardianPrivateKey,
  new_public_key: recoveryPublicKey,  // Holder's new key
  request_id: recoveryRequestId
})

Security Properties ​

  • No single guardian can restore access alone
  • No central server is involved
  • The recovery protocol executes on-chain
  • The request is time-limited (72 hours default)
  • All recovery events are permanently auditable

Seed Phrase Backup ​

As a last resort (all guardians unavailable), the 24-word seed phrase provides emergency recovery.

The seed phrase is generated at BEO creation and must be written down and stored offline by the holder. The BSP system stores only a cryptographic hash — never the phrase itself.

Warning: If the seed phrase is lost and no guardians are available, access to the BEO cannot be recovered by anyone — including the Ambrósio Institute. Store it safely.


Ambrósio Institute · ambrosioinstitute.org · biologicalsovereigntyprotocol.com