> ## Documentation Index
> Fetch the complete documentation index at: https://injectivelabs-docs-ai-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 钱包连接

Injective 支持 Ethereum 和 Cosmos 原生钱包。你可以使用 Metamask、Ledger、Keplr、Leap 等流行钱包在 Injective 上签署交易。

### Wallet Strategy

支持所有这些钱包的推荐方式是使用我们构建的 [WalletStrategy](./strategy/) 抽象。这种方法将使你的 dApp 用户能够连接和使用不同的钱包。

将其与 [MsgBroadcaster](../transactions/msgbroadcaster/) 抽象结合使用，可以通过一次函数调用来签署交易。这是 Helix、Hub、Explorer 等所有产品中使用的方式，我们强烈建议在你的 dApp 中使用这种方法。

如果你仍然想原生使用某些钱包（不使用 WalletStrategy 类），我们将在本文档中提供如何通过 Metamask 和 Keplr 连接到基于 Injective 构建的 dApp 的示例。

### Metamask

Metamask 是一个 Ethereum 原生钱包，可用于连接和与基于 Injective 构建的 dApp 交互。

* **从 Metamask 获取 Injective 地址**

```ts lines highlight={4-6,11-13} theme={null}
import { getInjectiveAddress } from "@injectivelabs/sdk-ts/utils";

const getEthereum = () => {
  if (!window.ethereum) {
    throw new Error("Metamask extension not installed");
  }
  return window.ethereum;
};

const ethereum = getEthereum();
const addresses = await ethereum.request({
  method: "eth_requestAccounts",
}); /** these are evm addresses */

const injectiveAddresses = addresses.map(getInjectiveAddress);
console.log(injectiveAddresses);
```

* **使用 Metamask 签署交易**

如何在 Injective 上使用 Metamask 准备 + 签署 + 广播交易的示例可以在[这里](../transactions/ethereum/)找到。

### Keplr

Keplr 是一个 Cosmos 原生钱包，可用于连接和与基于 Injective 构建的 dApp 交互。

* **从 Keplr 获取 Injective 地址**

```ts lines theme={null}
import { ChainId } from "@injectivelabs/ts-types";

const getKeplr = () => {
  if (!window.keplr) {
    throw new Error("Keplr extension not installed");
  }

  return window.keplr;
};

(async () => {
  const keplr = getKeplr();
  const chainId = ChainId.Mainnet;
  await keplr.enable(chainId);
  const injectiveAddresses = await keplr
    .getOfflineSigner(chainId)
    .getAccounts();

  console.log(injectiveAddresses);
})();
```

* **使用 Keplr 签署交易**

如何在 Injective 上使用 Keplr 准备 + 签署 + 广播交易的示例可以在 [Cosmos Transactions](../transactions/cosmos/) 中找到。
