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
| Namespace | CAIP-2 | Curve | Key Size |
|---|---|---|---|
| EIP155 | eip155:* | secp256k1 | 33 bytes (compressed) |
| BIP122 | bip122:* | secp256k1 | 33 bytes (compressed) |
| Cosmos | cosmos:* | secp256k1 | 33 bytes (compressed) |
| Tron | tron:* | secp256k1 | 33 bytes (compressed) |
| Spark | spark:* | secp256k1 | 33 bytes (compressed) |
| Filecoin | fil:* | secp256k1 | 33 bytes (compressed) |
| Solana | solana:* | X25519 | 32 bytes |
| TON | ton:* | X25519 | 32 bytes |
| Sui | sui:* | X25519 | 32 bytes |
CAIP-10 Address Format
<namespace>:<chain_reference>:<account_address>Examples
| Chain | CAIP-10 |
|---|---|
| Ethereum mainnet | eip155:1:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
| Base | eip155:8453:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
| Bitcoin mainnet | bip122:000000000019d6689c085ae165831e93:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 |
| Solana mainnet | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp:7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU |
Key Derivation
Encryption keypairs are derived deterministically from a wallet signature:
- Sign a fixed message:
"objekt.sh encryption key v1" - Hash the signature with SHA-256 to get a 32-byte seed
- 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-walletIn 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.