> For the complete documentation index, see [llms.txt](https://hashly.gitbook.io/hashly-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hashly.gitbook.io/hashly-docs/technical/wallets.md).

# Compatible Wallets

Hashly connects to Hedera wallets over **WalletConnect**, using Hedera's own WalletConnect integration, on **Hedera mainnet**. It never holds your keys or your assets.

***

## ⭐ Supported Wallets

| Wallet          | Browser extension | Phone app | Install                                         |
| --------------- | ----------------- | --------- | ----------------------------------------------- |
| 💜 **HashPack** | ✅                 | ✅         | [hashpack.app](https://www.hashpack.app/)       |
| 🔵 **Kabila**   | ✅                 | ✅         | [wallet.kabila.app](https://wallet.kabila.app/) |

These are the two wallets the connect dialog offers.

***

## 🔌 How the Connection Is Made

When you open the connect dialog, Hashly starts a WalletConnect pairing right away, so the QR code and the pairing code are ready to use. Then it picks the most direct route for the wallet you choose:

| Where you are                               | What happens                                                                                         |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| 🧩 **Desktop with the extension installed** | The extension is detected (marked **Installed**) and opens its own approval popup. No QR code needed |
| 📱 **On a phone**                           | Hashly hands the pairing to the wallet app through its universal link, and you approve in the app    |
| 🖥️ **Desktop without the extension**       | Scan the QR code with the wallet app on your phone, or copy the pairing code into your wallet        |
| 📲 **Inside a wallet's in-app browser**     | Hashly watches for the new session and signs you in as soon as the wallet reports it                 |

The pairing code expires. The dialog shows a countdown and a **New code** button when it runs out, and the network badge in the corner confirms you're pairing with **mainnet**.

***

## ✍️ Sign-In

1. 🔗 The wallet approves the connection and shares your account ID.
2. ✍️ Hashly asks it to sign the message `Sign in to Hashly` followed by a timestamp.
3. 🔍 Hashly fetches the account's public key from the Hedera mirror node and checks the signature, with the same Hedera signed-message prefix wallets apply.
4. ⏱️ The timestamp must be less than **5 minutes** old, so a signature can't be replayed later.
5. 🔓 You're signed in for **24 hours**: an HTTP-only `auth-token` cookie, plus a copy of the session token in local storage that Hashly sends with its own requests. That copy keeps sign-in working in in-app browsers that drop cookies.

Signing is free, because it doesn't create a transaction.

***

## 🧾 Transactions You Might Sign

Hashly only asks for a transaction when you start one, and your wallet shows it before you approve:

| Transaction              | When                                                           |
| ------------------------ | -------------------------------------------------------------- |
| 💎 **HBAR payment**      | Buying Hashly Premium while a sale is open                     |
| 🔗 **Token association** | Associating a raffle prize token so it can be delivered to you |

Transactions go to the Hedera network, can't be reversed by Hashly and may carry network fees.

***

## 👀 What Hashly Reads from Your Account

Everything Hashly reads is public data from the Hedera mirror node and NFT marketplaces:

* 🐉 **Santuario Hedera and El Santuario NFTs**, checked when you vote to work out your voting power
* ⚡ **NFTs you can stake**, and whether they're listed for sale
* 🎁 **Raffle requirements** and whether a prize token is associated
* 🏛️ **The NFTs your museum can show**

***

## ⚠️ Important Notes

* 🔒 **No private keys.** Hashly never asks for or stores your private key or recovery phrase. Anyone who asks for them is not Hashly.
* 🔑 **Supported account keys.** Signature checks work for accounts whose key is a single **ED25519** or **ECDSA (secp256k1)** key. Accounts controlled by a key list or threshold key can't sign in.
* ⏰ **24-hour sessions.** When a session ends, disconnect and connect again to sign a new message.
* 🌐 **Mainnet only.** Hashly reads and verifies against Hedera mainnet.

***

## 🛠️ Troubleshooting

| Problem                                              | Try this                                                                                    |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| Nothing happens after picking a wallet               | Press **Try again**, or **Use QR instead** and scan the code                                |
| The QR code does nothing                             | It may have expired. Press **New code**                                                     |
| **Couldn't connect** with "Backend rejected sign-in" | Check the account uses a single ED25519 or ECDSA key, and that your device clock is correct |
| Votes fail after a day                               | Your 24-hour session ended. Disconnect and connect again                                    |
| No wallet button on the page                         | You're on a News page. Open any other page to connect                                       |

***

## 💡 Tips

* 🧩 **On desktop, the extension is the quickest route.** No QR code, no phone.
* 📱 **On a phone, open Hashly in the wallet's in-app browser** if the app switch doesn't bring you back.
* 🆕 **New to Hedera?** The [Get Started](https://hash-ly.com/onboarding) page covers creating a wallet and getting HBAR.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://hashly.gitbook.io/hashly-docs/technical/wallets.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
