指南

LINE區塊鏈現況:Kaia、Unifi與在LINE上開發Web3(2026)

LINE的區塊鏈先轉為Finschia,再與Klaytn合併成Kaia。本文整理2026年10月還存在的服務(Kaia、LINE NEXT的Unifi)、在LINE裡提供Web3功能的做法,以及從智慧合約、錢包綁定到LINE通知的正確最小實作。

LineBot.pro Team· 更新 13 分鐘閱讀
LINE區塊鏈現況:Kaia、Unifi與在LINE上開發Web3(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目前經營Unifi,一個可以在LINE裡開啟的穩定幣錢包,並在2026年整合了Dapp Portal與Mini Dapps。至於日本LINE App內的虛擬資產交易服務LINE BITMAX,已於2026年6月1日結束服務。

對開發者來說,重點有三個:

  • 沒有所謂的「LINE區塊鏈API」。 Messaging API、LIFF與LINE MINI App都沒有錢包、代幣或NFT功能,所有鏈上邏輯都是你自己的程式碼。
  • 進入LINE的路有兩條。 申請加入LINE NEXT的Unifi Apps計畫,或自己開發LIFF應用程式/LINE MINI App,再自行串接Kaia或其他EVM鏈的錢包。
  • 很多「區塊鏈集點」的點子,不用鏈反而做得更好。 集點卡、點數和優惠券用資料庫做更便宜也更簡單(請見下方「什麼情況不需要區塊鏈」)。

本文只寫我們在官方頁面查證過的事實,資料時間為2026年10月。如果想直接委託開發,請參考我們的LINE MINI App/LIFF開發服務。

#時間軸:從LINK Chain到Kaia

時間發生什麼事資料來源
2018年8月LINE發表第一個代幣LINK與自有區塊鏈網路LINK Chain。LINK不做ICO,而是作為使用LINE服務的獎勵發放;日本居民改拿「LINK Point」LINE
2019年由LINE Xenesis營運、內建於LINE App的虛擬資產交易服務LINE BITMAX在日本上線LY Corporation
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在LINE推出以Kaia為基礎的Mini Dapps與Dapp PortalLINE
2026年3月9日LINE NEXT正式推出穩定幣錢包Unifi(2月12日起Beta),整合Dapp Portal與Mini DappsLINE
2026年6月1日LINE BITMAX結束服務LY Corporation

FNSA換KAIA的服務當初公告為自Kaia上線起提供一年。如果你還持有FNSA,請先到Kaia Portal和你使用的交易所確認最新狀態。

#現在還有哪些服務(2026年10月)

是什麼什麼情況跟你有關
Kaia相容EVM的Layer 1區塊鏈,原生幣為KAIA,主網Chain ID 8217,Kairos測試網1001。Kaia 2026年的更新重點是亞洲的穩定幣結算與鏈上金融想用LINE NEXT錢包使用者已經在用的鏈
Unifi(LINE NEXT)可在LINE裡開啟的非託管穩定幣錢包,可用LINE、Apple、Google或Naver登入,支援USD₮,並整合了原本的Dapp Portal與Mini Dapps想讓應用程式出現在Unifi使用者面前,並提供任務與獎勵
LINE MINI App/LIFFLINE讓網頁應用程式在LINE裡開啟的平台使用者體驗由你打造,區塊鏈邏輯也是你自己寫
Messaging API從你的LINE官方帳號發送訊息想在鏈上事件發生時通知顧客
LINE BITMAX已於2026年6月1日結束服務(沒有可以使用的基礎)

Unifi的開發者網站developers.unifi.me將相關服務稱為Unifi Apps,包括錢包SDK(@linenext/dapp-portal-sdk),必須先送出Unifi Apps申請並同意條款才會拿到Client ID;以及Mission & Reward API:使用者完成你應用程式裡的任務後,由Unifi的獎勵錢包直接發放獎勵。這個SDK的設計是在已註冊網域的LINE MINI App或LIFF應用程式中使用。

#讓LINE使用者用到Web3功能的三種做法

Unifi Apps(LINE NEXT)自己的LIFF/LINE MINI App+錢包只做訊息通知
要做什麼使用Unifi Apps SDK和/或Mission & Reward API的網頁應用程式在LINE裡開啟的網頁應用程式,加上錢包串接由鏈上事件觸發的機器人訊息
使用的鏈KaiaKaia或任何你選的EVM鏈不限
審核Unifi Apps申請、SDK條款、網域註冊LINE MINI App政策;想取得認證就要通過LY的審查一般LINE官方帳號規範
使用者錢包Unifi錢包你串接的錢包不需要
適合想爭取Unifi使用者與穩定幣獎勵的遊戲和應用程式自有品牌的會員卡、票券或證書「您的會員卡已發行」「晚上8點開賣」

選擇第二種做法時要注意:

  • LIFF瀏覽器是WebView(iOS用WKWebView,Android用Android WebView),所以不能用瀏覽器擴充功能型的錢包。請改用內嵌式錢包SDK或WalletConnect類型的連線;Kaia文件列出了Reown、Web3Auth、Privy與Particle等函式庫。
  • 新的應用程式請做成LINE MINI App。 因為LIFF將整合進LINE MINI App品牌,LINE從2025年2月起就建議這麼做。LINE MINI App頻道可選日本、泰國、台灣,而且從2026年3月11日起,在台灣和泰國只要符合政策資格,任何人都能發布未認證的MINI App。服務地區、認證與審查細節請看LINE MINI App完整說明。
  • 設計代幣功能前先讀政策。 截至2026年10月,LINE MINI App政策沒有專門針對加密資產的條款,但不接受博弈相關業者,以及未經LY認可的募款、群眾募資等籌資行為,也禁止明顯煽動投機或射倖心理的內容,並要求遵守Apple與Google的政策。要在MINI App裡加入交易、具金錢價值的獎勵或代幣銷售,請先向LY確認。

#開發者必知的Kaia基礎

主網Kairos測試網
Chain ID82171001
公開RPC(僅供測試)https://public-en.node.kaia.iohttps://public-en-kairos.node.kaia.io
區塊瀏覽器kaiascan.iokairos.kaiascan.io
測試幣—faucet.kaia.io(每個帳號每24小時可領一次)
  • Kaia是Klaytn的硬分叉。 Chain ID沒有改變,Baobab測試網更名為Kairos,Cypress改稱Mainnet。JSON-RPC方法改用kaia_命名空間,klay_仍可使用,也支援eth_命名空間。
  • 相容EVM。 Solidity、Hardhat、ethers.js和MetaMask的用法跟在Ethereum上一樣。Kaia文件說明其出塊時間為1秒,交易可立即確定(immediate finality)。
  • 手續費是浮動的。 Kaia硬分叉之後,基本費用(base fee)會逐區塊調整,也可以另加優先費用。請讓ethers.js自動估算,不要照抄舊Klaytn教學裡固定的gasPrice: 250000000000(250 gkei)(Kaia docs)。
  • 代幣標準。 Kaia有自己的KIP-7(同質化代幣)與KIP-17(NFT)標準,實作在由OpenZeppelin分叉而來的Kaia Contracts;一般的ERC-20與ERC-721合約也能直接部署。
  • 公開節點不適合正式環境。 Kaia說明這些端點僅供測試與開發,不保證可用性,也不應用於商業用途(公開RPC列表)。正式上線請使用節點服務商或自行架設端點節點。

#實作範例:與LINE綁定的NFT會員卡

情境:一家咖啡店要發NFT會員卡給熟客。顧客打開咖啡店的LINE MINI App、連結錢包、領取會員卡,接著咖啡店的LINE官方帳號在聊天室通知發卡完成。

  1. MINI App執行liff.init()並取得使用者的ID Token
  2. 伺服器發出一次性nonce與要簽署的訊息
  3. 錢包簽署這段訊息
  4. 伺服器向LINE驗證ID Token、用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 MINI App證明使用者是誰、擁有哪個錢包

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 scope
  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與要簽署的完整文字,在伺服器端只保存幾分鐘且只能使用一次。千萬不要把liff.getProfile()的個人資料或使用者ID當成身分證明傳給伺服器;LINE文件的做法是傳送ID Token,由伺服器驗證(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 Token,client_id = LINE MINI App/LIFF頻道的Channel 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} 已發行完成。` }],
  });
}

實際專案最常卡關的三個細節:

  • 使用者ID依提供者(Provider)而不同。 ID Token裡的sub,是MINI App頻道所屬提供者底下的使用者ID。只有當兩個頻道屬於同一個提供者,而且顧客已加入你的LINE官方帳號好友、沒有封鎖時,Messaging API頻道才能對這個ID推播。
  • 推播訊息會消耗則數。 每則推播都會計入LINE官方帳號每月的訊息則數;回覆顧客傳來的訊息(Reply)則不計入。台灣、日本、泰國的方案請參考LINE官方帳號費用指南。
  • 已認證的MINI App也可改用服務訊息, 但只能用來確認或回應使用者的操作,不能發促銷內容,而且僅限已認證的MINI App。

如果還不熟悉Webhook與Channel Access Token,請從LINE Messaging API教學和LIFF應用程式開發指南開始。

#資安與法規

  • 金鑰。 部署與鑄造用的私鑰請存放在Secrets Manager或KMS,絕對不要放進前端程式碼或NEXT_PUBLIC_變數。鑄造錢包只存放必要的金額,合約的Owner權限交給多簽錢包(Kaia文件有Safe的教學)。
  • 不信任來自前端的資料。 ID Token與簽章都在伺服器端驗證,使用短時間失效的一次性nonce,並對API設定流量限制。
  • 智慧合約。 使用OpenZeppelin等經過稽核的函式庫、撰寫測試;若牽涉實際價值,上主網前請第三方稽核。非必要不要使用可升級代理合約。
  • 個人資料。 與LINE使用者ID綁定的錢包地址屬於個人資料,請寫進隱私權政策;LINE MINI App頻道也必須提供隱私權政策網址才能通過審查。
  • 法規。 在日本,為顧客提供虛擬資產兌換等服務,必須向金融廳登記為暗號資產交換業者;泰國由證券交易委員會(SEC)監管數位資產業務;台灣則由金融監督管理委員會監理虛擬資產服務提供者。你的代幣或NFT是否受監管取決於設計,上線前請在各市場諮詢法律專業人士。
  • 平台規範。 除了法律之外,LINE MINI App政策以及Apple、Google的規範也都適用。

#什麼情況不需要區塊鏈

目的更簡單的做法值得用鏈的情況
集點卡或點數LINE官方帳號的集點卡,或LIFF應用程式背後的資料庫點數必須能轉讓,或能在你的店以外使用
優惠券LINE官方帳號的優惠券幾乎沒有
會員等級資料庫加上LINE官方帳號會員資格要能轉售,或要向第三方證明
活動票券訂位系統發出的QR票券轉售紀錄必須能在不信任主辦方的情況下追溯
真品證明資料庫中附簽章的紀錄買家與二手買家必須能自行驗證

區塊鏈會帶來錢包導入、手續費、金鑰管理、無法撤回的錯誤與法律問題。如果顧客從不會把這些東西帶到你的店以外,資料庫加上LINE官方帳號就能更快、更便宜地完成。不用區塊鏈的做法請看LINE顧客管理(CRM)指南。

#LineBot.pro能幫上什麼

LineBot.pro沒有任何區塊鏈、錢包、NFT或代幣功能。區塊鏈、LIFF與LINE MINI App的專案屬於依需求客製開發,歡迎透過LINE系統開發、LINE MINI App/LIFF開發頁面或聯絡表單告訴我們需求,我們會和你一起確認範圍。

自助工具可以協助上線時LINE端的工作:

  • 用AI做公告用的圖文訊息。 用文字描述內容,AI會撰寫文案、繪製1200 × 675 px的圖片,並組出附有MINI App按鈕、格式正確的Flex Message。每張8點,生成失敗會自動退點。
  • 用行銷活動功能群發給好友。 可發給所有好友或貼上的LINE使用者ID清單,立即發送或預約發送。發送本身0點,但會消耗LINE每月的訊息則數。
  • 加一個開啟MINI App的圖文選單按鈕。 AI圖文選單產生器會做出圖片與JSON(10點),按鈕可開啟連結或傳送文字,再由你自己上傳到LINE官方帳號管理後台。

新註冊送50點,不需綁卡。之後可購買一次性點數包:不用訂閱,點數也不會過期。

製作上線公告卡片 →

#常見問題

Q: LINE現在還有自己的區塊鏈嗎?

沒有。LINE Blockchain主網在2022年12月轉為Finschia,Finschia再與Klaytn合併成Kaia,主網自2024年8月29日運作至今。LINE NEXT的Unifi錢包也是在Kaia上運作。

Q: LINK幣後來怎麼了?

LINK在2023年5月更名為FINSCHIA(FNSA)。自2024年8月29日起,可透過Kaia Portal以1 FNSA=148.079656 KAIA的比例兌換成KAIA,這項服務當初公告提供一年。最新狀態請向Kaia Portal或你使用的交易所確認。

Q: LINE BITMAX還能用嗎?

不能。LINE BITMAX已在2026年6月1日結束服務。LY Corporation表示,帳戶中剩餘的虛擬資產會依合理公允的市價換成日圓,退還到使用者登記的金融機構帳戶。

Q: LIFF應用程式或LINE MINI App可以串接加密貨幣錢包嗎?

可以,但要當成一般網頁程式來實作,LINE沒有提供錢包API。LIFF瀏覽器是WebView,請使用內嵌式錢包SDK、WalletConnect類型的連線,或在LINE NEXT核准申請後使用Unifi Apps SDK。加入代幣功能之前,請先確認LINE MINI App政策。

Q: Unifi是什麼?

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 訊息溝通。