ガイド

LINEのブロックチェーンは今どうなった?Kaia・Unifiと開発方法【2026】

LINEのブロックチェーンはFinschiaを経て、Klaytnと統合しKaiaになりました。2026年10月時点で何が残っているのか(Kaia、LINE NEXTのUnifi)、LINE上でWeb3機能を提供する選択肢、そしてコントラクト・ウォレット連携・LINE通知までの正しい最小構成の実装を解説します。

LineBot.pro Team· 更新 13 分で読めます
LINEのブロックチェーンは今どうなった?Kaia・Unifiと開発方法【2026】

#結論:2026年のLINEブロックチェーン

LINE Blockchainは、現在は独立したネットワークとしては存在しません。メインネットのデータは2022年12月にFinschiaへ移行し、LINKトークンは2023年5月にFNSAへ名称変更されました。さらに2024年、FinschiaはKakao発のブロックチェーンKlaytnと統合してKaiaとなり、EVM互換のメインネットが2024年8月29日に稼働しています。LINEのWeb3事業会社LINE NEXTは現在、LINEから開けるステーブルコインウォレットUnifiを運営しており、2026年にDapp PortalとMini Dappsを統合しました。日本のLINEアプリ内暗号資産取引サービスLINE BITMAXは2026年6月1日に終了しています。

開発者にとってのポイントは3つです。

  • 「LINEブロックチェーンAPI」はありません。 Messaging API、LIFF、LINEミニアプリにはウォレット・トークン・NFTの機能がなく、オンチェーンの処理はすべて自前のコードです。
  • LINEに届ける道は2つです。 LINE NEXTのUnifi Appsプログラムに参加するか、自社のLIFFアプリ/LINEミニアプリを作り、Kaiaや他のEVMチェーンのウォレットを自分で接続します。
  • 「ブロックチェーンでポイント」の多くは、チェーンなしの方がうまくいきます。 スタンプカード、ポイント、クーポンはデータベースの方が安く簡単です(後述の「ブロックチェーンが不要なケース」を参照)。

本記事の内容は、2026年10月時点で公式ページから確認できた事実に限っています。開発を任せたい場合は、当社のLINEミニアプリ・LIFF開発をご覧ください。

#年表:LINK ChainからKaiaまで

時期出来事出典
2018年8月LINEが初のトークン「LINK」と独自ブロックチェーン「LINK Chain」を発表。LINKはICOではなくLINEサービス利用の報酬として配布され、日本の居住者には代わりに「LINK Point」が付与LINE
2019年LINE Xenesisが運営する暗号資産取引サービス「LINE BITMAX」が日本で開始LINEヤフー
2022年12月22日Cosmos SDKベースのFinschiaが、旧LINE Blockchainメインネットの状態を引き継いで稼働Kaia docs
2023年5月Finschia Foundation(2023年3月にLINE Tech Plusが設立)がFinschiaメインネットへの移行を完了し、LINK(LN)をFINSCHIA(FNSA)に名称変更Finschia Foundation
2024年2月15日KlaytnとFinschiaのホルダーとガバナンスメンバーが統合提案(KGP-25/FGP-23)を承認Kaia blog
2024年8月29日Kaiaメインネット稼働。KLAYの残高はKAIAに、FNSAはKaia Portalで1 FNSA=148.079656 KAIAで交換可能にKaia blog、Kaia docs
2025年1月22日LINE NEXTがKaiaベースのMini DappsとDapp PortalをLINE上で提供開始LINE
2026年3月9日LINE NEXTがステーブルコインウォレット「Unifi」を正式公開(2月12日からベータ)。Dapp PortalとMini Dappsを統合LINE
2026年6月1日LINE BITMAXがサービス終了LINEヤフー

FNSAからKAIAへの交換サービスは、Kaiaの稼働から1年間提供すると告知されていました。FNSAをお持ちの場合は、Kaia Portalや利用中の取引所で最新の状況を確認してください。

#2026年10月時点で存在するもの

概要こんな場合に関係します
KaiaEVM互換のレイヤー1ブロックチェーン。ネイティブコインはKAIA、メインネットのチェーンIDは8217、Kairosテストネットは1001。2026年のKaiaのアップデートは、アジアのステーブルコイン決済とオンチェーン金融が中心ですLINE NEXTのウォレット利用者がいるチェーンを使いたい
Unifi(LINE NEXT)LINEから開けるノンカストディアル型のステーブルコインウォレット。LINE・Apple・Google・Naverでログインでき、USD₮に対応。旧Dapp PortalとMini Dappsを含みますUnifiの利用者にアプリを届け、ミッションや報酬を提供したい
LINEミニアプリ/LIFFLINE内で開くWebアプリの基盤ユーザー体験を自社で作る(ブロックチェーン部分は自前)
Messaging APILINE公式アカウントからのメッセージ送信オンチェーンの出来事を顧客に通知したい
LINE BITMAX2026年6月1日にサービス終了(利用できる基盤はありません)

Unifiの開発者サイトdevelopers.unifi.meでは「Unifi Apps」として、ウォレットSDK(@linenext/dapp-portal-sdk)と、ユーザーがアプリ内のミッションを達成するとUnifiの報酬ウォレットから報酬が支払われるMission & Reward APIが公開されています。SDKのクライアントIDは、Unifi Appsへの申請と利用規約への同意を経て発行されます。SDKは、登録したドメインで動くLINEミニアプリまたはLIFFアプリ内での利用を前提としています。

#LINEユーザーにWeb3機能を届ける3つの方法

Unifi Apps(LINE NEXT)自社のLIFF/LINEミニアプリ+ウォレットメッセージ通知のみ
作るものUnifi Apps SDKやMission & Reward APIを使うWebアプリLINE内で開くWebアプリとウォレット接続オンチェーンの出来事をきっかけに送るボットのメッセージ
チェーンKaiaKaiaまたは任意のEVMチェーン不問
審査・承認Unifi Apps申請、SDK利用規約、ドメイン登録LINEミニアプリポリシー。認証済みミニアプリにするならLINEヤフーの審査通常のLINE公式アカウントのルール
ユーザーのウォレットUnifiウォレット組み込んだもの不要
向いている用途Unifiの利用者やステーブルコイン報酬を活用したいゲーム・アプリ自社ブランドの会員証、チケット、証明書「会員証の発行が完了しました」「20時から販売開始」

2つ目の方法を選ぶ場合の注意点です。

  • LIFFブラウザはWebViewです(iOSはWKWebView、AndroidはAndroid WebView)。ブラウザ拡張機能型のウォレットは使えないため、組み込み型ウォレットのSDKかWalletConnect方式の接続を使います。KaiaのドキュメントではReown、Web3Auth、Privy、Particleなどのライブラリが紹介されています。
  • 新規アプリはLINEミニアプリとして作りましょう。 LIFFはLINEミニアプリのブランドに統合される予定のため、LINEは2025年2月からこの方針を推奨しています。LINEミニアプリのチャネルは日本・タイ・台湾向けがあり、2026年3月11日からはタイと台湾でもポリシー上の対象者なら誰でも未認証ミニアプリを公開できます。提供地域や認証、審査の詳細はLINEミニアプリ解説をご覧ください。
  • トークン機能を設計する前にポリシーを確認してください。 2026年10月時点のLINEミニアプリポリシーに暗号資産専用の項目はありませんが、ギャンブル関連の業種や、LINEヤフーが認めていない募金・クラウドファンディング等の資金調達は利用できず、投機心・射幸心を著しくあおる内容も禁止され、AppleとGoogleのポリシー順守も求められます。売買機能、金銭的価値のある報酬、トークン販売をミニアプリに組み込む場合は、事前にLINEヤフーへ確認しましょう。

#開発者向けKaiaの基本

メインネットKairosテストネット
チェーンID82171001
公開RPC(テスト用途のみ)https://public-en.node.kaia.iohttps://public-en-kairos.node.kaia.io
ブロックエクスプローラーkaiascan.iokairos.kaiascan.io
テスト用コイン—faucet.kaia.io(1アカウントにつき24時間に1回)
  • KaiaはKlaytnのハードフォークです。 チェーンIDは変わらず、テストネットBaobabはKairosに、CypressはMainnetに名称変更されました。JSON-RPCはkaia_名前空間に移り、klay_も引き続き使え、eth_名前空間も利用できます。
  • EVM互換です。 Solidity、Hardhat、ethers.js、MetaMaskがEthereumと同じように使えます。Kaiaのドキュメントでは、ブロック生成は1秒、トランザクションは即時ファイナリティとされています。
  • 手数料は変動制です。 Kaiaハードフォーク以降、ブロックごとに調整されるベースフィーに、任意で優先手数料を加える方式です。古いKlaytnのチュートリアルにある固定のgasPrice: 250000000000(250 gkei)は使わず、ethers.jsに見積もらせましょう(Kaia docs)。
  • トークン規格:Kaiaには独自のKIP-7(代替性トークン)とKIP-17(NFT)があり、OpenZeppelinのフォークであるKaia Contractsで実装されています。標準のERC-20やERC-721もそのままデプロイできます。
  • 公開エンドポイントは本番用ではありません。 Kaiaはテストと開発のために提供しており、稼働は保証されず、商用目的では使わないよう案内しています(公開RPC一覧)。本番ではノードプロバイダーか自前のエンドポイントノードを使います。

#実装例:LINEと連携するNFT会員証

想定するのは、カフェが常連客にNFTの会員証を配るケースです。顧客はカフェのLINEミニアプリを開いてウォレットを接続し、会員証を受け取ります。その後、カフェのLINE公式アカウントがトークで発行完了を伝えます。

  1. ミニアプリでliff.init()を実行し、ユーザーのIDトークンを取得
  2. サーバーが1回限りのnonceと署名するメッセージを発行
  3. ウォレットがそのメッセージに署名
  4. サーバーがIDトークンをLINEで、署名をethers.jsで検証し、LINEのユーザーIDとウォレットアドレスを紐付けて保存
  5. サーバーが自社のミンター鍵で会員証をミント
  6. トランザクションの確定後、LINE公式アカウントからメッセージを送信

#ステップ1:コントラクト(OpenZeppelin v5、Hardhat 2)

bash
mkdir membership-pass && cd membership-pass
npm init -y
npm install --save-dev hardhat@hh2 @nomicfoundation/hardhat-toolbox@hh2 dotenv
npm install @openzeppelin/contracts
npx hardhat init

hh2タグでインストールされるのはHardhat 2で、Kaia公式のHardhatガイドと同じバージョンです。Hardhat 3は設定ファイルの形式が異なります。

solidity
// contracts/MembershipPass.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";

contract MembershipPass is ERC721, Ownable {
    uint256 private _nextTokenId;
    string private _base;

    constructor(address initialOwner, string memory baseURI)
        ERC721("Cafe Membership Pass", "PASS")
        Ownable(initialOwner)
    {
        _base = baseURI;
    }

    function mintTo(address to) external onlyOwner returns (uint256 tokenId) {
        tokenId = _nextTokenId++;
        _safeMint(to, tokenId);
    }

    function _baseURI() internal view override returns (string memory) {
        return _base;
    }
}
typescript
// hardhat.config.ts
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import "dotenv/config";

const accounts = process.env.DEPLOYER_PRIVATE_KEY ? [process.env.DEPLOYER_PRIVATE_KEY] : [];

const config: HardhatUserConfig = {
  solidity: "0.8.28",
  networks: {
    kairos: {
      url: process.env.KAIROS_RPC_URL ?? "https://public-en-kairos.node.kaia.io",
      chainId: 1001,
      accounts,
    },
    kaia: {
      url: process.env.KAIA_RPC_URL ?? "",
      chainId: 8217,
      accounts,
    },
  },
};

export default config;
typescript
// scripts/deploy.ts
import { ethers } from "hardhat";

async function main() {
  const [deployer] = await ethers.getSigners();
  const pass = await ethers.deployContract("MembershipPass", [
    deployer.address,
    "https://example.com/pass/",
  ]);
  await pass.waitForDeployment();
  console.log("MembershipPass:", await pass.getAddress());
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

まずはfaucetで受け取ったテスト用KAIAを使い、npx hardhat run scripts/deploy.ts --network kairosでテストネットにデプロイします。設定にgasPriceを書いていないのは意図的です。

#ステップ2:LINEミニアプリで「誰が」「どのウォレットを持っているか」を証明する

typescript
// lib/link-wallet.ts(LIFFブラウザで実行)
import liff from "@line/liff";
import { BrowserProvider, type Eip1193Provider } from "ethers";

export async function linkWallet(walletProvider: Eip1193Provider) {
  await liff.init({ liffId: process.env.NEXT_PUBLIC_LIFF_ID! });
  if (!liff.isLoggedIn()) {
    liff.login();
    return;
  }

  const idToken = liff.getIDToken(); // openidスコープが必要
  if (!idToken) throw new Error("No ID token");

  const { nonce, message } = await fetch("/api/wallet/nonce", { method: "POST" }).then((r) => r.json());
  const signer = await new BrowserProvider(walletProvider).getSigner();
  const signature = await signer.signMessage(message);

  const res = await fetch("/api/wallet/link", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ idToken, address: await signer.getAddress(), nonce, signature }),
  });
  if (!res.ok) throw new Error("Wallet link failed");
}

walletProviderは選んだウォレットSDKから取得します。/api/wallet/nonceはランダムなnonceと署名させる文面を返し、サーバー側で数分間だけ保持して1回限り使えるようにします。liff.getProfile()のプロフィールやユーザーIDを本人確認の根拠としてサーバーに送ってはいけません。LINEのドキュメントでは、IDトークンを送ってサーバーで検証するよう案内されています(LIFFドキュメント)。

#ステップ3:サーバーで両方を検証してから紐付ける

typescript
// app/api/wallet/link/route.ts
import { NextResponse } from "next/server";
import { isAddress, verifyMessage } from "ethers";
import { consumeNonce, saveWalletLink } from "@/lib/wallet-store"; // 自前のストレージ

export async function POST(req: Request) {
  const { idToken, address, nonce, signature } = await req.json();
  if (!isAddress(address)) return NextResponse.json({ error: "Bad address" }, { status: 400 });

  // 1. LINEでIDトークンを検証。client_id = LINEミニアプリ/LIFFのチャネルID
  const verify = await fetch("https://api.line.me/oauth2/v2.1/verify", {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({ id_token: idToken, client_id: process.env.LINE_LOGIN_CHANNEL_ID! }),
  });
  if (!verify.ok) return NextResponse.json({ error: "Invalid ID token" }, { status: 401 });
  const { sub: lineUserId } = await verify.json();

  // 2. nonceが存在し、期限内で、未使用であること。発行した文面を返す
  const message = await consumeNonce(nonce);
  if (!message) return NextResponse.json({ error: "Expired nonce" }, { status: 401 });

  // 3. ウォレットがその文面にそのまま署名していること
  if (verifyMessage(message, signature).toLowerCase() !== address.toLowerCase()) {
    return NextResponse.json({ error: "Signature mismatch" }, { status: 401 });
  }

  await saveWalletLink({ lineUserId, address });
  return NextResponse.json({ ok: true });
}

#ステップ4:会員証をミントし、LINEで顧客に知らせる

typescript
// lib/issue-pass.ts(サーバー専用)
import { Contract, JsonRpcProvider, Wallet, type ContractTransactionReceipt } from "ethers";
import { messagingApi } from "@line/bot-sdk";

const provider = new JsonRpcProvider(process.env.KAIA_RPC_URL);
const minter = new Wallet(process.env.MINTER_PRIVATE_KEY!, provider);
const pass = new Contract(
  process.env.PASS_ADDRESS!,
  [
    "function mintTo(address to) returns (uint256)",
    "event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)",
  ],
  minter,
);
const line = new messagingApi.MessagingApiClient({
  channelAccessToken: process.env.LINE_CHANNEL_ACCESS_TOKEN!,
});

export async function issuePass(lineUserId: string, address: string) {
  const tx = await pass.mintTo(address);
  const receipt: ContractTransactionReceipt | null = await tx.wait();
  if (!receipt) throw new Error("Transaction not confirmed");

  const transfer = receipt.logs
    .map((log) => pass.interface.parseLog(log))
    .find((event) => event?.name === "Transfer");

  await line.pushMessage({
    to: lineUserId,
    messages: [{ type: "text", text: `会員証 #${transfer?.args.tokenId} の発行が完了しました。` }],
  });
}

実際のプロジェクトでつまずきやすい点が3つあります。

  • ユーザーIDはプロバイダーごとに異なります。 IDトークンのsubは、ミニアプリのチャネルが属するプロバイダーでのユーザーIDです。Messaging APIのチャネルがこのIDにプッシュできるのは、両方のチャネルが同じプロバイダーに属し、かつ顧客がLINE公式アカウントを友だち追加していてブロックしていない場合だけです。
  • プッシュメッセージは通数を消費します。 プッシュは毎回LINE公式アカウントの月間メッセージ通数にカウントされますが、顧客からのメッセージへの応答(Reply)はカウントされません。日本・タイ・台湾の料金プランはLINE公式アカウントの料金ガイドをご覧ください。
  • 認証済みミニアプリならサービスメッセージも使えます。 ただしユーザーの操作に対する確認や応答に限られ、販促には使えません。また認証済みミニアプリのみが対象です。

WebhookやチャネルアクセストークンなどMessaging APIの基本は、LINE Messaging APIチュートリアルとLIFFアプリ開発ガイドから始めてください。

#セキュリティと法規制

  • 鍵の管理:デプロイ用とミント用の秘密鍵はシークレットマネージャーやKMSに保管し、フロントエンドのコードやNEXT_PUBLIC_変数には絶対に入れません。ミンターウォレットの残高は必要最小限にし、コントラクトのオーナー権限はマルチシグに持たせます(KaiaのドキュメントにSafeの解説があります)。
  • クライアントからの値を信用しない:IDトークンと署名はサーバーで検証し、短時間で失効する使い捨てのnonceを使い、APIにはレート制限をかけます。
  • コントラクト:OpenZeppelinなど監査済みのライブラリを使い、テストを書き、実際の価値が動く場合はメインネット前に第三者監査を受けます。アップグレード可能なプロキシは必要な場合だけにします。
  • 個人情報:LINEのユーザーIDに紐付いたウォレットアドレスは個人情報です。プライバシーポリシーに明記しましょう。LINEミニアプリの審査にはプライバシーポリシーのURLが必要です。
  • 法規制:日本では、顧客向けに暗号資産の交換などを行う事業は金融庁への暗号資産交換業の登録が必要です。タイでは証券取引委員会(SEC)がデジタル資産事業を監督し、台湾では金融監督管理委員会が仮想資産サービス事業者を監督しています。トークンやNFTが規制対象になるかは設計次第なので、公開前に各国の専門家へ相談してください。
  • プラットフォームのルール:法令に加えて、LINEミニアプリポリシーとApple・Googleのルールも適用されます。

#ブロックチェーンが不要なケース

目的もっと簡単な方法チェーンを使う価値があるのは…
スタンプカード・ポイントLINE公式アカウントのショップカード、またはLIFFアプリの裏側のデータベースポイントを譲渡したり、自社以外でも使えたりする必要がある場合
クーポンLINE公式アカウントのクーポンほぼありません
会員ランクデータベースとLINE公式アカウント会員権を転売できる、または第三者に証明する必要がある場合
イベントチケット予約システムのQRチケット転売履歴を、主催者を信用せずに追える必要がある場合
真贋証明データベース上の署名付き記録購入者や転売先が独自に検証できる必要がある場合

ブロックチェーンを使うと、ウォレットの導入、手数料、鍵の管理、取り消せないミス、法的な論点が増えます。顧客がそのアイテムを自社の外に持ち出さないなら、データベースとLINE公式アカウントの方が速く安く実現できます。ブロックチェーンを使わない選択肢はLINEで顧客管理(CRM)を行うガイドで紹介しています。

#LineBot.proでできること

LineBot.proにはブロックチェーン、ウォレット、NFT、トークンの機能はありません。ブロックチェーン、LIFF、LINEミニアプリの案件はご依頼に応じた個別開発です。LINE開発、LINEミニアプリ・LIFF開発のページ、またはお問い合わせフォームからご相談いただければ、要件を一緒に整理します。

セルフサービスのツールは、ローンチ時のLINE側の作業に役立ちます。

  • AIで告知用のリッチメッセージを作成:内容を文章で伝えると、AIがコピーを書き、1200×675pxの画像を描き、ミニアプリへのボタン付きの正しいFlex Messageを組み立てます。1枚8クレジットで、生成に失敗した場合は自動で返還されます。
  • キャンペーン機能で友だちに配信:すべての友だち、または貼り付けたLINEユーザーIDのリストに、今すぐまたは予約で配信できます。送信は0クレジットですが、LINEの月間通数は消費します。
  • ミニアプリを開くリッチメニューのボタン:AIのリッチメニュー作成ツールが画像とJSONを作ります(10クレジット)。ボタンはリンクを開くかテキストを送るかを選べ、LINE Official Account Managerへのアップロードはご自身で行います。

新規登録で50クレジットを無料でお渡しします(カード登録不要)。その後は買い切りのクレジットパックをご購入いただけます。月額料金はなく、クレジットに有効期限もありません。

告知用カードを作る →

#よくある質問

Q: LINEは今も独自のブロックチェーンを持っていますか?

持っていません。LINE Blockchainのメインネットは2022年12月にFinschiaとなり、FinschiaはKlaytnと統合してKaiaになりました。Kaiaのメインネットは2024年8月29日から稼働しており、LINE NEXTのUnifiウォレットもKaia上で動いています。

Q: LINKトークンはどうなりましたか?

2023年5月にFINSCHIA(FNSA)へ名称変更されました。2024年8月29日からはKaia Portalで1 FNSA=148.079656 KAIAの比率でKAIAに交換でき、この交換サービスは1年間の提供と告知されていました。最新の状況はKaia Portalや利用中の取引所で確認してください。

Q: LINE BITMAXはまだ使えますか?

使えません。LINE BITMAXは2026年6月1日にサービスを終了しました。LINEヤフーによると、口座に残った暗号資産は合理的かつ公正な市場価格で日本円に換価され、登録済みの金融機関口座へ順次返金されます。

Q: LIFFアプリやLINEミニアプリで暗号資産ウォレットを接続できますか?

できます。ただし通常のWebのコードとして実装するもので、LINEにウォレットのAPIはありません。LIFFブラウザはWebViewなので、組み込み型ウォレットのSDK、WalletConnect方式の接続、またはLINE NEXTに申請が承認された場合はUnifi Apps SDKを使います。トークン機能を加える前にLINEミニアプリポリシーを確認しましょう。

Q: Unifiとは何ですか?

LINE NEXTが2026年3月9日に正式公開したノンカストディアル型のステーブルコインウォレットで、LINEから利用できます。USD₮に対応し、Kaia上で動作し、旧Dapp PortalとMini Dappsを統合しています。

Q: LineBot.proにブロックチェーン機能はありますか?

ありません。LineBot.proはリッチメニュー、リッチメッセージ、バナーの作成、キャンペーン配信、キーワード応答のためのツールです。ブロックチェーン関連はご依頼に応じた個別開発になります。


次のステップ:

LineBot.proについて

LineBot.proは、LINE公式アカウント向けのAIツールです。リッチメニュー、リッチメッセージ、バナーの作成、一斉配信、キーワードによる自動応答に対応しています。本記事はLINE Messaging APIの実務経験をもとに、当チームが執筆しています。

お問い合わせ
LineBot.pro

LINEビジネスを自動化する準備はできましたか?

LineBot.proでLINEコミュニケーションの自動化を今すぐ始めましょう。