> ## 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が入力されます。

ダッシュボードに表示するサインイン方法を選択します — [サインイン方法を設定する](/ja/waas/configuration#configure-sign-in-methods) を参照してください。

## 署名と送信

`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>
  ウォレットの署名をブロードキャストせずに取得したい場合は、`signAndSendTransaction` の代わりに `signTransaction` を使用します — 例えば、マルチパーティーのトランザクションに署名を追加して自分で提出する場合です。
</Tip>

### トランザクション履歴を読む

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

<Note>
  `getTransactions` には [サーバールートハンドラー](/ja/waas/quickstart#setup) が必要です — デフォルトのクライアントのみ (Secure RPC) モードでは使用できません。
</Note>

### ウォレットをエクスポートする

ウォレットはノンカストディアルであるため、ユーザーは自分のキーを持ち運ぶことができます。`exportWallet` は、サインインしたユーザーが秘密鍵を明らかにしてエクスポートするための安全で暗号化されたフローを開きます。

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

## 次のステップ

<CardGroup cols={2}>
  <Card title="API リファレンス" icon="code" href="/ja/waas/api-reference">
    完全な `useHeliusWallet()` サーフェスとインポート。
  </Card>

  <Card title="Privy からの移行" icon="arrow-right-arrow-left" href="/ja/waas/migrating-from-privy">
    既存の Privy ウォレットを Helius WaaS に移行する
  </Card>
</CardGroup>
