# Usecases

{% embed url="<https://media.giphy.com/media/lqRu0AbfzcpMJlmT2I/giphy.gif>" %}

Smart contracts are infinitely more flexible in their capabilities than EOAs. Each smart contract can define different rules and configurations within its code.

Some examples of use cases can be seen below:

| **Use Case**        | **EOAs**                                                                        | Contract Accounts                                                                                                                                |
| ------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| Permission controls | Private key grants full access to everything.                                   | Define a list of tiered permission levels. e.g. Require 3 out of 5 signers to approve a transaction.                                             |
| Batch transactions  | Each individual action requires a separate signature.                           | Capable of batching transactions together; e.g. approving a token transfer and transferring a token in the same operation.                       |
| Account Recovery    | Loss or exposure of private key means full loss of control over the wallet.     | There is no private key. You can write any arbitrary logic in code that allows you to recover the funds in the wallet.                           |
| Transaction limits  | Any transaction your wallet signs is what occurs. You cannot restrict anything. | Write any logic to control how funds can be transferred. E.g. a function to halt transactions to other addresses while you recover your account. |

These are just a few of the capabilities that contract accounts offer over traditional EOAs. The key thing is; that **contract accounts are code**.

This means a*nything* you can write in code is therefore possible in a contract account.<br>


---

# 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://chainex.gitbook.io/whitepaper/technological-foundations/usecases.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.
