> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 지갑 사용하기

> useHeliusWallet를 사용하여 인증 상태 읽기, 메시지 및 트랜잭션 서명, 전송 및 기록 읽기

## 인증

인증 상태를 읽고 로그인 작업을 수행하려면 `useHeliusWallet` 훅을 사용하세요:

```tsx theme={"system"}
"use client";

import { useHeliusWallet } from "helius-wallet-kit";

export function AuthButton() {
  const { status, login, logout, address } = useHeliusWallet();

  if (status === "loading") return <p>Loading…</p>;

  if (status === "authenticated") {
    return (
      <div>
        <span>{address}</span>
        <button onClick={() => logout()}>Sign out</button>
      </div>
    );
  }

  return <button onClick={() => login()}>Sign in</button>;
}
```

`login()`를 호출하면 활성화된 인증 방법을 사용하여 지갑 모달이 열립니다.

로그인 후 `status`는 `"authenticated"`가 되고 `user`에는 사용자의 id, 하위 조직 id, 지갑 id가 채워집니다.

대시보드에서 표시할 로그인 방법을 선택하세요 — [로그인 방법 구성](/docs/ko/waas/configuration#로그인-방법-구성)을 참조하세요.

## 서명 및 전송

`useHeliusWallet`는 지갑 주소, 서명 방법 및 Helius RPC에 연결된 Solana `Connection`를 제공합니다.

### 메시지 서명하기

```tsx theme={"system"}
const { signMessage } = useHeliusWallet();
const signature = await signMessage("Sign in to Acme");
```

### 트랜잭션 서명 및 전송하기

`signAndSendTransaction`는 클라이언트 측에서 트랜잭션에 서명하고 Helius를 통해 제출합니다. 직렬화된 트랜잭션을 받아 트랜잭션 서명을 반환합니다.

```tsx theme={"system"}
import {
  Transaction,
  SystemProgram,
  PublicKey,
  LAMPORTS_PER_SOL,
  ComputeBudgetProgram,
} from "@solana/web3.js";

const { address, connection, signAndSendTransaction, getPriorityFeeLevels } =
  useHeliusWallet();

const fromPubkey = new PublicKey(address!);
const toPubkey = new PublicKey(recipient);

// Estimate a priority fee from Helius.
const fees = await getPriorityFeeLevels([address!, recipient]);

const tx = new Transaction()
  .add(ComputeBudgetProgram.setComputeUnitPrice({ microLamports: fees.medium }))
  .add(
    SystemProgram.transfer({
      fromPubkey,
      toPubkey,
      lamports: 0.01 * LAMPORTS_PER_SOL,
    }),
  );

const { blockhash } = await connection.getLatestBlockhash();
tx.recentBlockhash = blockhash;
tx.feePayer = fromPubkey;

const serialized = tx.serialize({
  requireAllSignatures: false,
  verifySignatures: false,
});

const signature = await signAndSendTransaction(serialized);
```

<Tip>
  지갑의 서명을 방송하지 않고 받으려면, 예를 들어, 여러 당사자 트랜잭션에 추가한 후 직접 제출하려는 경우 `signTransaction`를 대신 사용하세요.
</Tip>

### 트랜잭션 기록 읽기

```tsx theme={"system"}
const { getTransactions } = useHeliusWallet();
const transactions = await getTransactions({ limit: 20 });
```

<Note>
  `getTransactions`는 [서버 라우트 핸들러](/docs/ko/waas/quickstart#설정)가 필요합니다 — 기본 클라이언트 전용 (Secure RPC) 모드에서는 사용할 수 없습니다.
</Note>

### 지갑 내보내기

지갑은 비관리형이므로 사용자는 키를 직접 보관할 수 있습니다. `exportWallet`는 로그인한 사용자가 개인 키를 공개하고 내보낼 수 있도록 안전하고 암호화된 흐름을 엽니다.

```tsx theme={"system"}
const { exportWallet } = useHeliusWallet();
await exportWallet();
```

## 다음 단계

<CardGroup cols={2}>
  <Card title="API 참조" icon="code" href="/docs/ko/waas/api-reference">
    전체 `useHeliusWallet()` 표면과 가져오기.
  </Card>

  <Card title="Privy에서의 마이그레이션" icon="arrow-right-arrow-left" href="/docs/ko/waas/migrating-from-privy">
    기존 Privy 지갑을 Helius WaaS로 이동
  </Card>
</CardGroup>
