> For the complete documentation index, see [llms.txt](https://learn.cypherock.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.cypherock.com/design-decision/cypherock-x0-hardware-architecture.md).

# Cypherock X0 Hardware Architecture

Cypherock X0 is designed with a two-part architecture in mind: the 4 X0 Cards and the X0 Wallet App on the user's smartphone. Unlike Cypherock X1, there is no separate device in between. The secure computation that the X1 Vault performs in Cypherock X1 is carried out inside the X0 Card itself, and the smartphone takes the place of the X1 Vault as the user's interface.

## X0 Cards

The X0 Cards are tamper-proof passive cards that run a Javacard OS and have a security rating of EAL6+. Our custom proprietary applet runs on top of this secure Javacard OS.

Each X0 Card stores one shard of every wallet and is capable of performing every security-sensitive operation on its own:

* Wallet generation
* Wallet reconstruction
* Key derivation
* Transaction signing
* Secure erasure of temporary secrets

The X0 Cards are powered by the NFC field of the smartphone they are tapped against, so they need no battery and no cable.

## X0 Wallet App

The X0 Wallet App runs on iOS 15 and above and Android 9 and above, on smartphones with NFC.

It stores the fifth shard of every wallet in the smartphone's hardware-backed secure storage:

* The Keychain on iOS
* The Keystore on Android

This storage is protected by the app's biometric lock or passcode.

The smartphone's screen and touch input act as the interface for every wallet operation, and its internet connection is used to fetch blockchain data, broadcast signed transactions and authenticate the X0 Cards with Cypherock's server.

## Communication

The X0 Wallet App communicates with the X0 Cards over end-to-end encrypted NFC, as explained in [Encrypted NFC communication for X0 Cards](/design-decision/cypherock-x0-hardware-architecture/encrypted-nfc-communication-for-x0-cards.md).

The reasons that led Cypherock to choose Javacards for its cards apply equally to the X0 Cards, which you can read in [Using Javacards instead of MicroSD](/design-decision/cypherock-x1-hardware-architecture/using-javacards-instead-of-microsd.md).
