Skip to content
BEO Digital Identity

Biological Entity Object (BEO)

"The sovereign biological identity of a human being. The anchor point for all measured life."

What is a BEO?

The BEO is the foundation of the entire BSP ecosystem. It represents a living human being — the sovereign owner of their biological data. All of a person's BioRecords are anchored to it. All ConsentTokens that authorize access are issued from it.

A BEO is created by the individual directly on Arweave, without approval from any authority. Once created, it belongs to the holder forever.

BEO vs IEO — Fundamental Distinction

FeatureBEOIEO
RepresentsA living human beingAn organization, system, or professional
Created byThe individual — no approval requiredAny institution — directly
TransferableNever — permanent individual identityYes — on company acquisition or merger
Can read BEOsOwn data onlyNever without valid consent token
Can write BioRecordsCannot — individuals observe, not recordYes — with active ConsentToken
Domain formatfirstname.bspinstitutionname.bsp

Cryptographic Identity

BEO control is entirely determined by the possession of the private key.

KeyTypeUsage
private_keyEd25519 (64 bytes)Generated locally, never transmitted. Signs authorizations, decrypts BioRecords, signs Arweave transactions.
public_keyEd25519 (32 bytes)Registered publicly on Arweave. Labs use this to identify your BEO and encrypt data before submission.
seed_phrase24 BIP-39 wordsMnemonic representation of the private key. Store this offline — it is your backup.

Key Generation

javascript
// 100% on-device — nothing is sent to any server
const entropy  = crypto.getRandomValues(new Uint8Array(32))
const mnemonic = bip39.entropyToMnemonic(entropy)
const seed     = await bip39.mnemonicToSeed(mnemonic)
const keyPair  = ed25519.fromSeed(seed.slice(0, 32))

const privateKey = keyPair.secretKey  // stays on device forever
const publicKey  = keyPair.publicKey  // registered on Arweave

Social Recovery

If you lose your device and seed phrase, Social Recovery lets you regain access using trusted Guardians — no central server needed.

  • Up to 3 Guardians: trusted people or platforms you designate
  • Threshold: 2-of-3 confirmations required (default)
  • Mechanism: Shamir Secret Sharing — your key is split into 3 encrypted fragments stored on Arweave
  • Security: No single guardian can act alone. The Institute is never involved.

Recovery Flow

1. User opens app on new device → no private key found
2. App generates new key pair locally
3. Recovery request posted to Arweave (RECOVERY_REQUEST transaction)
4. Two guardians decrypt their fragments and post GUARDIAN_CONFIRM transactions
5. BEORegistry updates the BEO with the new public key
6. Access restored — old key permanently invalidated

Complete BEO Schema

json
{
  "beo_id":     "uuid-v4",
  "domain":     "andre.bsp",
  "public_key": "ed25519_pub_...a1b2",
  "created_at": "2026-01-10T14:32:00Z",
  "version":    "1.0.0",

  "recovery": {
    "enabled":   true,
    "threshold": 2,
    "guardians": [
      {
        "contact":     "maria.bsp",
        "public_key":  "ed25519_pub_...",
        "role":        "primary",
        "status":      "active",
        "accepted_at": "2026-01-10T15:00:00Z"
      }
    ]
  },

  "status":      "ACTIVE",
  "locked_at":   null,
  "key_version": 1
}

BioRecord Schema

Every biological measurement attached to a BEO is a BioRecord:

json
{
  "record_id":    "arweave-tx-id",
  "beo_id":       "uuid-v4",
  "ieo_id":       "uuid-v4",
  "biomarker":    "BSP-LA-004",
  "value":        4.8,
  "unit":         "%",
  "collected_at": "2026-02-26T08:00:00Z",
  "submitted_at": "2026-02-26T09:00:00Z",
  "ref_range": {
    "optimal":    "4.0-6.0",
    "functional": "3.5-6.5",
    "deficiency": "<3.5",
    "toxicity":   null
  },
  "status":     "CURRENT",
  "supersedes": null,
  "data_hash":  "sha256_..."
}

BioRecords are immutable. Corrections are submitted as new records that supersede the previous — the error stays in the history.


Lifecycle States

StateDescription
ACTIVENormal operation. All authorized operations permitted.
LOCKEDHolder voluntarily locked — useful if compromise suspected. No institution reads or writes. Recovery progress is tracked within active_recovery.status.

Smart Contracts — BEO Operations

BEORegistry

FunctionWho Can CallDescription
createBEO()AnyoneCreates a new BEO. Open — no approval required.
getBEO()AnyoneReturns public BEO data.
updateRecovery()BEO holder onlyConfigure or update guardian setup.
lockBEO()BEO holder onlyTemporarily locks all operations.
rotateKey()BEO holder (recovery)Replaces public key after successful recovery.

AccessControl

FunctionWho Can CallDescription
issueToken()BEO holder onlyIssues a new ConsentToken to an IEO.
revokeToken()BEO holder onlyImmediately revokes a ConsentToken.
verifyToken()Any IEOChecks if a token is valid for a specific operation.
getTokenHistory()BEO holder onlyFull audit log of all tokens ever issued.

IMPORTANT

issueToken() and revokeToken() are exclusively reserved for the BEO holder. No institution — not even the Ambrósio Institute — can grant or revoke access to a person's data.


Creating a BEO with the SDK

python
from bsp_sdk import BEOBuilder, Guardian

beo = BEOBuilder(domain="andre.bsp").build()
result = beo.register()

print(result.beo_id)      # Permanent UUID on Arweave
print(result.domain)      # andre.bsp
print(result.seed_phrase) # 24 words — store this offline, never digitally

# Optional: configure Social Recovery
beo.update_recovery(
    guardians=[
        Guardian(contact="maria.bsp",   role="primary"),
        Guardian(contact="+5511999...", role="secondary"),
        Guardian(contact="carlos.bsp",  role="tertiary"),
    ],
    threshold=2
)

Holder Rights (Unconditional)

  • ✓ Always recover your BEO using seed phrase
  • ✓ Always revoke any ConsentToken, instantly
  • ✓ Always export all your data (EXPORT_DATA intent)
  • ✓ Always lock your BEO
  • ✓ Always choose or replace guardians