# 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' }
```
