diff --git a/app/wallet/page.tsx b/app/wallet/page.tsx new file mode 100644 index 0000000..6e9d94d --- /dev/null +++ b/app/wallet/page.tsx @@ -0,0 +1,125 @@ +import type { Metadata } from "next"; +import Link from "next/link"; +import { Server, Sparkles, Landmark, ArrowLeftRight, Fuel, ShieldCheck, Download, KeyRound, Github, Lock } from "lucide-react"; + +export const metadata: Metadata = { + title: "LightChain Wallet - self-custodial wallet for LightChain", + description: + "A self-custodial browser wallet built for LightChain: worker monitoring, encrypted AI inference, and DAO intelligence. Your keys never leave your device. No smart contract, no custody.", +}; + +const REPO = "https://github.com/marinom2/lightnode/tree/main/wallet"; + +const FEATURES: { icon: typeof Server; title: string; body: string; status: "live" | "soon" }[] = [ + { icon: ShieldCheck, title: "Self-custodial", body: "Keys are generated and encrypted on your device with AES-256-GCM + scrypt. They never leave it. No server, no custody, no smart contract.", status: "live" }, + { icon: Fuel, title: "Gas done right", body: "LightChain fees are negligible, so the wallet drops the gwei sliders and scary fee modals. One tap, fee shown as what it is: nothing.", status: "live" }, + { icon: Server, title: "Worker control", body: "See if your address is a registered worker, its stake, headroom, and claimable rewards - and stake or top up in one click. No other wallet knows LightChain workers exist.", status: "soon" }, + { icon: Sparkles, title: "Encrypted AI inference", body: "Ask an AI a question and pay per call from your own key, end-to-end encrypted and settled on-chain - right inside the wallet.", status: "soon" }, + { icon: Landmark, title: "DAO intelligence", body: "Decoded proposals, quorum distance, and your voting power, surfaced from the registries. Vote on the official DAO in a tap.", status: "soon" }, + { icon: ArrowLeftRight, title: "Built-in bridge", body: "Move LCAI between Ethereum and LightChain without leaving the wallet, over the Hyperlane warp route.", status: "soon" }, +]; + +function StatusPill({ status }: { status: "live" | "soon" }) { + return status === "live" ? ( + Live + ) : ( + Soon + ); +} + +function Step({ n, title, children }: { n: number; title: string; children: React.ReactNode }) { + return ( +
+ {n} +
+

{title}

+
{children}
+
+
+ ); +} + +export default function WalletPage() { + return ( +
+ {/* hero */} +
+

Self-custodial ยท LightChain

+

+ The LightChain Wallet +

+

+ A browser wallet built for LightChain - worker monitoring, encrypted AI, and DAO intelligence. Like Phantom, it is a pure self-custodial wallet: no smart contract, no custody, and your keys never leave your device. +

+
+ + Install it + + + View source + +
+
+ {["No smart contract", "Keys never leave your device", "Coexists with MetaMask (EIP-6963)", "Open source"].map((b) => ( + + {b} + + ))} +
+
+ + {/* features */} +
+ {FEATURES.map((f) => ( +
+
+ + +
+

{f.title}

+

{f.body}

+
+ ))} +
+ + {/* install */} +
+

Install it today

+

+ The wallet is open source and runs from source while it goes through a security audit. A Chrome Web Store listing follows the audit. Until then, load it unpacked in ~2 minutes: +

+
+ +
{`git clone https://github.com/marinom2/lightnode
+cd lightnode/wallet
+npm install
+npm run build`}
+

Produces a loadable extension at wallet/.output/chrome-mv3.

+
+ + Open chrome://extensions, enable Developer mode (top right), click Load unpacked, and select the wallet/.output/chrome-mv3 folder. + + + Pin the extension, open it, and create a new 24-word wallet (or import one). The recovery phrase is shown once and encrypted on your device - write it down; nobody, including us, can recover it. + +
+

+ + Once installed, the wallet appears automatically in dApp connect dialogs alongside MetaMask (via EIP-6963) - no need to overwrite anything. +

+
+ + {/* security */} +
+

Security

+ +

Independent and community-built. Not an official LightChain product.

+
+
+ ); +} diff --git a/components/nav.tsx b/components/nav.tsx index f092b40..a979387 100644 --- a/components/nav.tsx +++ b/components/nav.tsx @@ -41,6 +41,7 @@ const ALL_LINKS: NavItem[] = [ { href: "/onboard", label: "Run a worker" }, { href: "/dashboard", label: "Dashboard" }, { href: "/network", label: "Network" }, + { href: "/wallet", label: "Wallet", webOnly: true }, { href: "/build", label: "Build",