# Client (User)

Clients have two ways to submit their transactions to the transaction orderer.

1. **Using secure-rpc**:\
   Clients send their signed raw transactions to secure-rpc. The secure-rpc retrieves the necessary encryption key and other data from the DKG, encrypts the transaction, and forwards it to the sequencer. When the sequencer responds with an encrypted pre-confirmation, the secure-rpc then provides the decryption key. This ensures that transactions can only be decrypted after encrypted pre-confirmations are received.
2. **Using radius-snap**:\
   Clients can generate or import their private key through the radius-snap. This allows the snap to sign raw transactions and encrypt them using an encryption key obtained from the DKG locally. Once signed and encrypted, the transaction is sent directly to the sequencer.

### Client ↔ Secure RPC ↔ Tx. Orderer

<figure><img src="/files/M20NdLjyRk9cp86ZSy4d" alt=""><figcaption><p>via Secure RPC</p></figcaption></figure>

1. **Client** sends a raw transaction to Secure RPC.
2. **Secure RPC** fetches SKDE parameters and the encryption key from the Distributed Key Generation (DKG) Service.
3. **Secure RPC** encrypts the transaction.
4. **Secure RPC** sends the encrypted transaction to the Sequencer.

### Client ↔ Snap ↔ Tx. Orderer

<figure><img src="/files/v40M3D7zq8BtvnuJx6wt" alt=""><figcaption><p>via radius-snap</p></figcaption></figure>

1. **Client** generates or imports a private key.
2. **Client** sends a raw transaction to the Snap.
3. **Snap** fetches skde parameters and the encryption key from the Distributed Key Generation (DKG) Service.
4. **Snap** encrypts the transaction using `.wasm`.
5. **Snap** sends the encrypted transaction to the Sequencer.

For details on **radius-snap**, refer to its [GitHub repository](https://github.com/radiusxyz/radius-snap).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.theradius.xyz/overview/internal-secure-block-building-sbb/client-user.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
