# Supported Wallets

HollowDB supports both Arweave wallets and Ethereum wallets. In this page, we will show several ways to create the `signer` object.

## Arweave Wallet

An Arweave wallet is defined by a `JWKInterface` object, which is simply a JSON file that you can download from [arweave.app](https://arweave.app/). You can read the JSON object from disk, and pass it as the signer to HollowDB.

```typescript
import {JWKInterface} from 'warp-contracts';

const jwkPath = './some-wallet.json';
const signer = JSON.parse(fs.readFileSync(walletPath).toString()) as JWKInterface;
```

{% hint style="danger" %}
Always `.gitignore` your wallet files!
{% endhint %}

## Injected Arweave Wallet

If you are using HollowDB in browser, you can use [arweave-wallet-connector](https://www.npmjs.com/package/arweave-wallet-connector) to connect to your existing wallet on [arweave.app](https://arweave.app/) and use it as an injected wallet in HollowDB! This is done by providing the string `"use_wallet"` as the signer argument, which internally does the same to connect to Warp Contracts.

Using an injected Arweave wallet will trigger a pop-up on each interaction, similar to MetaMask pop-ups where you sign the transaction.

```typescript
// instantiate Arweave Web Wallet
const arweaveWebWallet = new ArweaveWebWallet(
  {
    name: "your-app-name",
    logo: "your-app-logo",
  },
  {
    state: {
      url: "arweave.app",
    },
  }
);

// connect
await arweaveWebWallet.connect();

// the magic string
const signer = "use_wallet";
```

## Ethereum Wallets

Similar to injected Arweave wallet, you can use an injected EVM-compatible wallet (such as MetaMask) to connect to HollowDB. This is made possible with the [Warp Contract Signature plugin](https://academy.warp.cc/docs/sdk/advanced/plugins/signature). Please refer to their documentation for more details.

Once you are able to obtain the `evmSignature` as described in their documentation, you can use the following `signer` for HollowDB:

```typescript
import { CustomSignature } from "warp-contracts";

// assuming `evmSignature` exists at this point
const signer: CustomSignature = { signer: evmSignature, signatureType: 'ethereum' }
```


---

# 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.hollowdb.xyz/hollowdb/supported-wallets.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.
