Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

CAIP-10 Chains

Objekt uses CAIP-2 namespaces for chain identification and CAIP-10 for account addresses. Each namespace maps to an elliptic curve used for encryption key derivation.

Supported Namespaces

NamespaceCAIP-2CurveKey Size
EIP155eip155:*secp256k133 bytes (compressed)
BIP122bip122:*secp256k133 bytes (compressed)
Cosmoscosmos:*secp256k133 bytes (compressed)
Trontron:*secp256k133 bytes (compressed)
Sparkspark:*secp256k133 bytes (compressed)
Filecoinfil:*secp256k133 bytes (compressed)
Solanasolana:*X2551932 bytes
TONton:*X2551932 bytes
Suisui:*X2551932 bytes

CAIP-10 Address Format

<namespace>:<chain_reference>:<account_address>

Examples

ChainCAIP-10
Ethereum mainneteip155:1:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
Baseeip155:8453:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
Bitcoin mainnetbip122:000000000019d6689c085ae165831e93:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
Solana mainnetsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp:7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

Key Derivation

Encryption keypairs are derived deterministically from a wallet signature:

  1. Sign a fixed message: "objekt.sh encryption key v1"
  2. Hash the signature with SHA-256 to get a 32-byte seed
  3. Use the seed as a private key for the namespace's curve

This means a single OWS wallet can derive encryption keys for every supported chain.

# Show all derived encryption public keys
objekt wallet encryption-key my-wallet

In the Envelope

Recipients in an encrypted envelope are identified by their CAIP-10 address (optional id field) and their public key (always present). This allows clients to determine which chains can decrypt a given file without needing external metadata.