orama/website/src/pages/blockchain.tsx
anonpenguin23 93dface005 feat(cli): add fanout push strategy and improve website responsiveness
- Add --fanout flag to push command for server-to-server deployment
- Implement agent forwarding for efficient multi-node distribution
- Update landing page scene heights and section padding for mobile devices
2026-03-28 15:27:54 +02:00

1251 lines
56 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { useState, lazy, Suspense } from "react";
import { Link } from "react-router";
import { Page } from "../components/layout/page";
import { SplitText } from "../components/ui/split-text";
const ConsensusScene = lazy(() =>
import("../components/landing/consensus-scene").then((m) => ({
default: m.ConsensusScene,
})),
);
const OramaOneInline = lazy(() =>
import("../components/landing/orama-one-scene").then((m) => ({
default: m.OramaOneInline,
})),
);
import { Section } from "../components/layout/section";
import { SectionHeader } from "../components/ui/section-header";
import { Button } from "../components/ui/button";
import { DashedPanel } from "../components/ui/dashed-panel";
import { CrosshairDivider } from "../components/ui/crosshair-divider";
import { AnimateIn } from "../components/ui/animate-in";
import { StatusDot } from "../components/ui/status-dot";
import { SILVER } from "../components/ui/silver-theme";
import {
ArrowRight,
ExternalLink,
Coins,
Vote,
Cpu,
Server,
Wallet,
Repeat,
ChevronRight,
Zap,
Shield,
Lock,
Eye,
EyeOff,
} from "lucide-react";
/* ═══════════════════════════════════════════
1. HERO
═══════════════════════════════════════════ */
function BlockchainHero() {
return (
<Section padding="wide">
<div className="flex flex-col items-center text-center min-h-[70vh] justify-center gap-6 max-w-3xl mx-auto">
<span
className="inline-flex items-center px-3 py-1 text-xs font-mono tracking-widest uppercase rounded-full"
style={{ border: `1px dashed ${SILVER.mid}`, color: SILVER.light }}
>
STANDALONE L1 BLOCKCHAIN
</span>
<h1 className="font-display font-bold text-4xl lg:text-6xl leading-tight">
<SplitText
text="The eternal decentralized"
className="text-fg"
delay={30}
duration={0.6}
splitType="chars"
from={{ opacity: 0, y: 30 }}
to={{ opacity: 1, y: 0 }}
/>
<br />
<SplitText
text="computer & financial system."
delay={30}
duration={0.6}
splitType="chars"
from={{ opacity: 0, y: 30 }}
to={{ opacity: 1, y: 0 }}
className=""
/>
</h1>
<style>{`
h1 > span:last-of-type .split-char {
background: ${SILVER.gradient};
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
`}</style>
<p className="text-muted text-sm leading-relaxed max-w-lg">
Orama combines Bitcoin-grade scarcity with a global decentralized cloud.
210,000,000 $ORAMA hard cap. Zero pre-mine. 100% mined. BTC-only economy.
Pure WASM smart contracts. Built for a 1,000-year horizon.
</p>
<div className="flex flex-wrap items-center gap-3 justify-center pt-4">
<Button asChild variant="ghost" size="lg">
<a href="/orama-whitepaper-v3.pdf" target="_blank" rel="noopener noreferrer">
Whitepaper
<ExternalLink className="w-3.5 h-3.5 ml-2" />
</a>
</Button>
<Button asChild variant="ghost" size="lg">
<Link to="/investors#participate">
Run a Node
<ArrowRight className="w-3.5 h-3.5 ml-2" />
</Link>
</Button>
</div>
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
2. TWO LAYERS
═══════════════════════════════════════════ */
function TwoLayers() {
return (
<Section>
<AnimateIn>
<SectionHeader
title="Two Layers, One Chain"
subtitle="An immutable financial core and a modular compute layer — tightly integrated, never separable."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-8">
<AnimateIn>
<DashedPanel withCorners withBackground className="h-full border-accent/30">
<div className="flex flex-col gap-4 p-4">
<div className="flex items-center gap-2">
<Lock className="w-6 h-6 text-accent" />
<span className="text-xs font-mono text-accent tracking-wider uppercase">Immutable</span>
</div>
<h3 className="font-display font-bold text-fg text-lg">Financial Core</h3>
<p className="text-muted text-sm leading-relaxed">
BTC + $ORAMA economics. 210M hard cap, emission schedule, halving, BTC-only economy,
100% mining distribution, and BTC bridge security. Designed to be unchangeable for 1,000 years.
No governance vote can ever modify these rules.
</p>
</div>
</DashedPanel>
</AnimateIn>
<AnimateIn>
<DashedPanel withBackground className="h-full">
<div className="flex flex-col gap-4 p-4">
<div className="flex items-center gap-2">
<Cpu className="w-6 h-6 text-accent" />
<span className="text-xs font-mono text-muted tracking-wider uppercase">Upgradable</span>
</div>
<h3 className="font-display font-bold text-fg text-lg">Compute Layer</h3>
<p className="text-muted text-sm leading-relaxed">
Pure WASM execution, distributed SQL, KV store, IPFS, serverless functions,
AI Marketplace, and native BTC bridge. Upgradable via governance but can never
break the money layer. Write contracts in Rust, Go, TypeScript, or C++.
</p>
</div>
</DashedPanel>
</AnimateIn>
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
3. CONSENSUS — THREE PILLARS
═══════════════════════════════════════════ */
function ThreePillars() {
const pillars = [
{
icon: Coins,
title: "Proof of Stake",
description: "Classic staking for economic security. Validators stake $ORAMA as collateral. Minimum 1,000 $ORAMA at mainnet. Slashing for double-signing (100%), downtime (5-30%), and false attestation (50%).",
primary: false,
},
{
icon: Zap,
title: "Proof of Contribution",
description: "Real work performed, measured on-chain every epoch (1 hour). Uptime 40%, bandwidth 30%, compute/storage 20%, reliability 10%. Contribution score directly multiplies your earning power.",
primary: true,
},
{
icon: Server,
title: "Proof of Infrastructure",
description: "Nodes running OramaOS receive a 1.5x multiplier via TPM-based remote attestation. A node runner with modest stake but perfect uptime and OramaOS earns more than a whale who only stakes.",
primary: false,
},
];
return (
<Section>
<AnimateIn>
<SectionHeader
title="Hybrid Consensus"
subtitle="Three mechanisms combined — stake, contribution, and infrastructure."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mt-8">
{pillars.map((p) => (
<AnimateIn key={p.title}>
<DashedPanel withCorners={p.primary} withBackground className={`h-full ${p.primary ? "border-accent/30" : ""}`}>
<div className="flex flex-col gap-4 p-3">
<div className="flex items-center gap-2">
<p.icon className="w-6 h-6 text-accent" />
{p.primary && (
<span className="text-xs font-mono text-accent tracking-wider uppercase">Core</span>
)}
</div>
<h3 className="font-display font-bold text-fg">{p.title}</h3>
<p className="text-muted text-sm leading-relaxed">{p.description}</p>
</div>
</DashedPanel>
</AnimateIn>
))}
</div>
{/* Effective Power Formula */}
<AnimateIn>
<div className="mt-6">
<DashedPanel withCorners withBackground>
<div className="flex flex-col gap-4 p-4">
<h3 className="font-display font-bold text-fg text-center">Effective Power Formula</h3>
<div className="text-center font-mono text-sm sm:text-base text-fg py-3 px-4 rounded-lg" style={{ background: "rgba(255,255,255,0.03)" }}>
Effective Power = Staked $ORAMA × (1 + Contribution Score) × Infrastructure Multiplier
</div>
<div className="grid grid-cols-2 sm:grid-cols-4 gap-3">
<div className="flex flex-col gap-1 items-center text-center">
<span className="text-xs font-mono text-muted tracking-wider uppercase">Block Time</span>
<span className="font-display font-bold text-fg">6 seconds</span>
</div>
<div className="flex flex-col gap-1 items-center text-center">
<span className="text-xs font-mono text-muted tracking-wider uppercase">Epoch</span>
<span className="font-display font-bold text-fg">1 hour</span>
</div>
<div className="flex flex-col gap-1 items-center text-center">
<span className="text-xs font-mono text-muted tracking-wider uppercase">Blocks/Day</span>
<span className="font-display font-bold text-fg">14,400</span>
</div>
<div className="flex flex-col gap-1 items-center text-center">
<span className="text-xs font-mono text-muted tracking-wider uppercase">Finality</span>
<span className="font-display font-bold text-fg">BFT / 1 hr</span>
</div>
</div>
</div>
</DashedPanel>
</div>
</AnimateIn>
</Section>
);
}
/* ═══════════════════════════════════════════
4. TOKENOMICS — Emission Schedule
═══════════════════════════════════════════ */
function TokenomicsSection() {
const utilities = [
{ icon: Zap, title: "Gas Currency", desc: "All transactions require $ORAMA. Base fee burned. EIP-1559 congestion multiplier." },
{ icon: Coins, title: "Staking", desc: "Validators stake $ORAMA. Minimum 1,000 at mainnet. Slashing for malicious behavior." },
{ icon: Vote, title: "Governance", desc: "25% of total voting power (quadratic). NFT holders control the other 75%." },
{ icon: Wallet, title: "Service Payments", desc: "SQL, KV, IPFS, compute, AI inference, DEX trades — all paid in $ORAMA." },
];
const emissionSchedule = [
{ era: "1", years: "1-2", reward: "100 $ORAMA", annual: "~52.5M", cumulative: "~105M" },
{ era: "2", years: "3-4", reward: "50 $ORAMA", annual: "~26.25M", cumulative: "~157.5M" },
{ era: "3", years: "5-6", reward: "25 $ORAMA", annual: "~13.1M", cumulative: "~183.7M" },
{ era: "4", years: "7-8", reward: "12.5 $ORAMA", annual: "~6.6M", cumulative: "~196.9M" },
{ era: "5", years: "9-10", reward: "6.25 $ORAMA", annual: "~3.3M", cumulative: "~203.5M" },
{ era: "6+", years: "11+", reward: "Halving", annual: "Decreasing", cumulative: "210M cap" },
];
return (
<Section>
<AnimateIn>
<SectionHeader
title="Tokenomics"
subtitle="$ORAMA — 210,000,000 hard cap. Zero pre-mine. 100% mined."
/>
</AnimateIn>
{/* Token overview + utility */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 mt-8 items-center">
<AnimateIn>
<div className="flex flex-col gap-5">
<span
className="font-display font-bold text-4xl"
style={{ background: SILVER.gradient, WebkitBackgroundClip: "text", WebkitTextFillColor: "transparent" }}
>
$ORAMA
</span>
<div className="grid grid-cols-3 gap-3">
<DashedPanel withBackground>
<div className="flex flex-col gap-1 p-2">
<span className="text-xs font-mono text-muted tracking-wider uppercase">Hard Cap</span>
<span className="font-display font-bold text-fg">210,000,000</span>
</div>
</DashedPanel>
<DashedPanel withBackground>
<div className="flex flex-col gap-1 p-2">
<span className="text-xs font-mono text-muted tracking-wider uppercase">Pre-Mine</span>
<span className="font-display font-bold text-fg">0%</span>
</div>
</DashedPanel>
<DashedPanel withCorners withBackground className="border-accent/30">
<div className="flex flex-col gap-1 p-2">
<span className="text-xs font-mono text-accent tracking-wider uppercase">Smallest Unit</span>
<span className="font-display font-bold text-fg">1M rays</span>
</div>
</DashedPanel>
</div>
{/* Block reward split */}
<DashedPanel withBackground>
<div className="flex flex-col gap-3 p-2">
<span className="text-xs font-mono text-muted tracking-wider uppercase">Block Reward Distribution</span>
<div className="flex h-3 rounded-full overflow-hidden">
<div className="h-full" style={{ width: "80%", background: SILVER.light }} title="Block Proposer" />
<div className="h-full" style={{ width: "20%", background: SILVER.dark }} title="Bonding Curve" />
</div>
<div className="flex items-center justify-between text-xs font-mono text-muted">
<div className="flex items-center gap-1.5">
<span className="w-2 h-2 rounded-sm" style={{ background: SILVER.light }} />
<span>80% Block Proposer</span>
</div>
<div className="flex items-center gap-1.5">
<span className="w-2 h-2 rounded-sm" style={{ background: SILVER.dark }} />
<span>20% Bonding Curve (cap 21M)</span>
</div>
</div>
</div>
</DashedPanel>
<p className="text-muted text-sm leading-relaxed">
Every single $ORAMA is earned by running a node. No team allocation, no investor round,
no foundation reserve, no airdrop. The creators earn tokens the same way as everyone else.
50% of total supply emitted in the first 2 years. Bitcoin-style halving every 2 years.
</p>
</div>
</AnimateIn>
<AnimateIn>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3">
{utilities.map((u) => (
<DashedPanel key={u.title} withBackground className="h-full">
<div className="flex flex-col gap-2 p-2">
<u.icon className="w-4 h-4 text-accent" />
<h4 className="font-display font-bold text-sm text-fg">{u.title}</h4>
<p className="text-muted text-xs leading-relaxed">{u.desc}</p>
</div>
</DashedPanel>
))}
</div>
</AnimateIn>
</div>
{/* Emission schedule table + fee schedule */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 mt-8">
{/* Emission schedule */}
<AnimateIn>
<DashedPanel withCorners withBackground>
<div className="overflow-x-auto p-2">
<span className="text-xs font-mono text-muted tracking-wider uppercase block mb-3 px-1">Emission Schedule</span>
<table className="w-full text-left text-xs sm:text-sm">
<thead>
<tr className="border-b border-dashed border-border">
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2 pr-3">Era</th>
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2 pr-3">Years</th>
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2 pr-3">Block Reward</th>
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2">Cumulative</th>
</tr>
</thead>
<tbody>
{emissionSchedule.map((row) => (
<tr key={row.era} className="border-b border-border/50">
<td className="text-sm text-fg py-2 pr-3 font-mono">{row.era}</td>
<td className="text-sm text-fg py-2 pr-3 font-mono">{row.years}</td>
<td className="text-sm text-fg py-2 pr-3 font-mono">{row.reward}</td>
<td className="text-sm text-fg py-2 font-mono">{row.cumulative}</td>
</tr>
))}
</tbody>
</table>
</div>
</DashedPanel>
</AnimateIn>
{/* Fee schedule */}
<AnimateIn>
<DashedPanel withBackground>
<div className="overflow-x-auto p-2">
<span className="text-xs font-mono text-muted tracking-wider uppercase block mb-3 px-1">Genesis Fee Schedule</span>
<table className="w-full text-left text-xs sm:text-sm">
<thead>
<tr className="border-b border-dashed border-border">
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2 pr-3">Operation</th>
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2">Cost</th>
</tr>
</thead>
<tbody>
{[
{ op: "Transfer", cost: "1,000 rays" },
{ op: "WASM Execution", cost: "1,000 rays / 1M instr." },
{ op: "SQL Query", cost: "500 rays" },
{ op: "IPFS Storage", cost: "10,000 rays / MB" },
{ op: "KV Read/Write", cost: "200 rays" },
{ op: "DEX Trade", cost: "1,000 rays" },
{ op: "Private (zk-SNARK)", cost: "4x public" },
].map((row) => (
<tr key={row.op} className="border-b border-border/50">
<td className="text-sm text-fg py-2 pr-3">{row.op}</td>
<td className="text-sm text-fg py-2 font-mono">{row.cost}</td>
</tr>
))}
</tbody>
</table>
</div>
</DashedPanel>
</AnimateIn>
</div>
<AnimateIn>
<div className="flex flex-wrap items-center justify-center gap-3 mt-8">
<Button asChild variant="ghost" size="lg">
<a href="/orama-whitepaper-v3.pdf" target="_blank" rel="noopener noreferrer">
Full Tokenomics in Whitepaper
<ExternalLink className="w-3.5 h-3.5 ml-2" />
</a>
</Button>
</div>
</AnimateIn>
</Section>
);
}
/* ═══════════════════════════════════════════
5. HOW TO ACQUIRE $ORAMA
═══════════════════════════════════════════ */
function AcquireSection() {
return (
<Section>
<AnimateIn>
<SectionHeader
title="How to Acquire $ORAMA"
subtitle="No pre-sale. No airdrop. Two ways to get $ORAMA."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-8">
{/* Mine it */}
<AnimateIn>
<DashedPanel withCorners withBackground className="h-full border-accent/30">
<div className="flex flex-col gap-4 p-4">
<div className="flex items-center gap-2">
<Server className="w-6 h-6 text-accent" />
<span className="text-xs font-mono text-accent tracking-wider uppercase">Primary</span>
</div>
<h3 className="font-display font-bold text-xl text-fg">Run a Node</h3>
<p className="text-sm text-muted leading-relaxed">
Run a node and mine $ORAMA. During testnet, no staking required any node operator
can participate and earn. Testnet tokens carry over to mainnet. At mainnet,
1,000 $ORAMA minimum stake activates, but testnet runners will already have earned more than enough.
</p>
<ul className="flex flex-col gap-2">
{[
"Era 1: 100 $ORAMA per block (~52.5M/year)",
"80% goes directly to the block proposer",
"OramaOS = 1.5x infrastructure multiplier",
"No staking needed during testnet",
"Testnet tokens are real — they carry over",
].map((item) => (
<li key={item} className="flex items-start gap-2">
<ChevronRight className="w-3.5 h-3.5 mt-0.5 shrink-0 text-accent" />
<span className="text-xs text-muted">{item}</span>
</li>
))}
</ul>
<Button asChild variant="ghost" size="sm" className="w-fit">
<Link to="/node">
Learn About Running a Node
<ArrowRight className="w-3.5 h-3.5 ml-2" />
</Link>
</Button>
</div>
</DashedPanel>
</AnimateIn>
{/* Buy from bonding curve */}
<AnimateIn>
<DashedPanel withBackground className="h-full">
<div className="flex flex-col gap-4 p-4">
<div className="flex items-center gap-2">
<Coins className="w-6 h-6 text-accent" />
<span className="text-xs font-mono text-muted tracking-wider uppercase">Secondary</span>
</div>
<h3 className="font-display font-bold text-xl text-fg">Buy with BTC</h3>
<p className="text-sm text-muted leading-relaxed">
Bridge BTC onto Orama and purchase $ORAMA from the protocol bonding curve or the
native order book. The bonding curve is always available as a guaranteed liquidity backstop.
Price follows a square root function cheap early, expensive later.
</p>
<ul className="flex flex-col gap-2">
{[
"Bonding curve: Price = k x sqrt(total_sold)",
"k = 0.0000000006 BTC at genesis",
"Max 21M tokens via bonding curve",
"~38.5 BTC fills the entire curve",
"BTC reserve directly backs the bridge",
].map((item) => (
<li key={item} className="flex items-start gap-2">
<ChevronRight className="w-3.5 h-3.5 mt-0.5 shrink-0 text-accent" />
<span className="text-xs text-muted">{item}</span>
</li>
))}
</ul>
<p className="text-xs text-muted/60 font-mono">
BTC only. No ETH, SOL, or stablecoins accepted.
</p>
</div>
</DashedPanel>
</AnimateIn>
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
6. ORAMA ONE — Hardware Node
═══════════════════════════════════════════ */
function OramaOneBlockchain() {
return (
<Section>
<AnimateIn>
<SectionHeader
title="Orama One"
subtitle="The people's hardware node. Plug in, connect, earn."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 mt-8 items-center">
<AnimateIn>
<DashedPanel withCorners withBackground>
<div className="flex flex-col items-center text-center gap-6 py-8 px-4">
<span
className="inline-flex items-center px-3 py-1 text-xs font-mono tracking-widest uppercase rounded-full"
style={{ border: `1px dashed ${SILVER.mid}`, color: SILVER.light }}
>
HARDWARE NODE
</span>
<h3
className="font-display font-bold text-3xl"
style={{
background: SILVER.gradient,
WebkitBackgroundClip: "text",
WebkitTextFillColor: "transparent",
}}
>
Orama One
</h3>
<p className="text-muted text-sm leading-relaxed max-w-sm">
A purpose-built, 3D-printed hardware node. Pre-loaded with OramaOS.
Plug in power, connect to internet, it joins the network automatically.
Silent, low-power, designed for your desk.
</p>
<p className="text-xs font-mono text-muted/50 tracking-wider uppercase">
Coming soon details to be announced
</p>
<Suspense fallback={null}>
<OramaOneInline />
</Suspense>
</div>
</DashedPanel>
</AnimateIn>
<AnimateIn>
<div className="flex flex-col gap-5">
<h3 className="font-display font-bold text-xl text-fg">
OramaOS hardened like a hardware wallet
</h3>
<p className="text-muted text-sm leading-relaxed">
OramaOS is a custom minimal operating system purpose-built for Orama nodes.
Running OramaOS provides the{" "}
<span className="text-fg font-semibold">1.5x Infrastructure Multiplier</span>,
verified via TPM-based remote attestation every epoch.
</p>
<ul className="flex flex-col gap-2">
{[
"No SSH — zero remote attack surface",
"Read-only root filesystem — tamper-proof",
"Full-disk encryption with Shamir secret sharing",
"Atomic updates with automatic rollback",
"Single root process (orama-agent) — minimal OS",
"TPM attestation — cryptographic proof, not trust",
"4+ cores, 8GB RAM, 256GB NVMe, TPM 2.0",
].map((item) => (
<li key={item} className="flex items-start gap-2">
<ChevronRight className="w-3.5 h-3.5 mt-0.5 shrink-0 text-accent" />
<span className="text-xs text-muted">{item}</span>
</li>
))}
</ul>
</div>
</AnimateIn>
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
7. BTC BRIDGE & NATIVE DEX
═══════════════════════════════════════════ */
function BtcBridgeAndDex() {
return (
<Section>
<AnimateIn>
<SectionHeader
title="BTC-Only Economy"
subtitle="Two assets exist on Orama: BTC and $ORAMA. Nothing else."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-8">
{/* BTC Bridge */}
<AnimateIn>
<DashedPanel withCorners withBackground className="h-full">
<div className="flex flex-col gap-4 p-4">
<div className="flex items-center gap-2">
<Shield className="w-5 h-5 text-accent" />
<h3 className="font-display font-bold text-fg">Trust-Minimized BTC Bridge</h3>
</div>
<p className="text-sm text-muted leading-relaxed">
Built into the protocol from genesis. Deposit BTC, receive native BTC on Orama 1:1.
Withdraw back to Bitcoin mainnet with Bitcoin-level security.
</p>
<ul className="flex flex-col gap-2">
{[
"Bitcoin light-client + zk-proofs + BitVM fraud proofs",
"1-of-N honest assumption — one honest validator is enough",
"0.25% bridge fee (50% validators, 50% auto-swap for Team NFTs)",
"Protocol reserve from bonding curve backs the bridge",
"Auto-halt on anomalous withdrawals (>10% in one epoch)",
"Min 0.001 BTC per bridge transaction",
].map((item) => (
<li key={item} className="flex items-start gap-2">
<ChevronRight className="w-3.5 h-3.5 mt-0.5 shrink-0 text-accent" />
<span className="text-xs text-muted">{item}</span>
</li>
))}
</ul>
</div>
</DashedPanel>
</AnimateIn>
{/* Native Order Book */}
<AnimateIn>
<DashedPanel withBackground className="h-full">
<div className="flex flex-col gap-4 p-4">
<div className="flex items-center gap-2">
<Repeat className="w-5 h-5 text-accent" />
<h3 className="font-display font-bold text-fg">Native Order Book</h3>
</div>
<p className="text-sm text-muted leading-relaxed">
A protocol-native order book a chain primitive, not a smart contract.
One pair: $ORAMA/BTC. Pure price discovery.
No intermediary. No privileged LP class.
</p>
<ul className="flex flex-col gap-2">
{[
"Order book, NOT an AMM — no liquidity pools",
"Limit orders, market orders, cancellation",
"Randomized in-block ordering — no MEV/front-running",
"Callable from WASM contracts and external RPC",
"No listing fees, no gatekeepers, permissionless",
"Custom WASM tokens trade against $ORAMA",
].map((item) => (
<li key={item} className="flex items-start gap-2">
<ChevronRight className="w-3.5 h-3.5 mt-0.5 shrink-0 text-accent" />
<span className="text-xs text-muted">{item}</span>
</li>
))}
</ul>
</div>
</DashedPanel>
</AnimateIn>
</div>
{/* Asset hierarchy */}
<AnimateIn>
<div className="mt-6">
<DashedPanel withBackground>
<div className="flex flex-col sm:flex-row items-center justify-center gap-3 p-4 font-mono text-sm">
<span className="font-bold" style={{ color: "#F7931A" }}>BTC</span>
<span className="text-muted">{"<->"}</span>
<span className="text-xs text-muted">protocol order book</span>
<span className="text-muted">{"<->"}</span>
<span className="font-bold" style={{ background: SILVER.gradient, WebkitBackgroundClip: "text", WebkitTextFillColor: "transparent" }}>$ORAMA</span>
<span className="text-muted">{"<->"}</span>
<span className="text-xs text-muted">WASM DEX contracts</span>
<span className="text-muted">{"<->"}</span>
<span className="font-bold text-fg">Custom Tokens</span>
</div>
</DashedPanel>
</div>
</AnimateIn>
</Section>
);
}
/* ═══════════════════════════════════════════
8. PRIVACY
═══════════════════════════════════════════ */
function PrivacySection() {
return (
<Section>
<AnimateIn>
<SectionHeader
title="Per-Transaction Privacy"
subtitle="PLONK zk-SNARKs with a universal trusted setup — upgrade privacy without new ceremonies."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-8">
<AnimateIn>
<DashedPanel withBackground className="h-full">
<div className="flex flex-col items-center text-center gap-3 p-5">
<Eye className="w-8 h-8 text-accent" />
<h3 className="font-display font-bold text-fg text-lg">Public (Default)</h3>
<p className="text-xs text-muted max-w-xs">
Fully transparent, lowest cost. Standard gas fees apply.
</p>
</div>
</DashedPanel>
</AnimateIn>
<AnimateIn>
<DashedPanel withCorners withBackground className="h-full border-accent/30">
<div className="flex flex-col items-center text-center gap-3 p-5">
<EyeOff className="w-8 h-8 text-accent" />
<h3 className="font-display font-bold text-fg text-lg">Private (4x Gas)</h3>
<p className="text-xs text-muted max-w-xs">
PLONK zk-SNARKs shield sender, receiver, and amount.
Only participants know the details. Transaction existence is still visible on-chain.
</p>
</div>
</DashedPanel>
</AnimateIn>
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
9. ANGELS & AI MARKETPLACE
═══════════════════════════════════════════ */
function AngelsSection() {
const steps = [
{ number: "01", title: "Build", desc: "Create an AI agent or model in any WASM-compatible language" },
{ number: "02", title: "Deploy", desc: "Register on the AI Marketplace — pricing set by the provider" },
{ number: "03", title: "Earn", desc: "Get paid in $ORAMA per API call. Transparent, competitive marketplace" },
];
const useCases = [
{ icon: Cpu, title: "Model Hosting", desc: "Host AI models, get paid per request" },
{ icon: Zap, title: "Angels", desc: "Autonomous agents with on-chain access" },
{ icon: Wallet, title: "On-Chain AI", desc: "Angels hold $ORAMA, execute transactions" },
{ icon: Server, title: "Compute", desc: "Capped at 10% of total network nodes" },
];
return (
<Section>
<AnimateIn>
<SectionHeader
title="AI Marketplace & Angels"
subtitle="A protocol-level primitive for hosting and consuming AI models and autonomous agents."
/>
</AnimateIn>
{/* How it works — 3 steps */}
<div className="grid grid-cols-3 gap-3 mt-8">
{steps.map((step) => (
<AnimateIn key={step.number}>
<DashedPanel withBackground className="h-full">
<div className="flex flex-col items-center text-center gap-2 p-4">
<span className="text-xs font-mono text-accent tracking-wider">{step.number}</span>
<h3 className="font-display font-bold text-fg">{step.title}</h3>
<p className="text-muted text-xs">{step.desc}</p>
</div>
</DashedPanel>
</AnimateIn>
))}
</div>
{/* Angel Marketplace preview */}
<AnimateIn>
<div className="mt-6">
<DashedPanel withCorners withBackground>
<div className="flex flex-col gap-5 p-4">
<div className="flex items-center justify-between">
<h3 className="font-display font-bold text-fg">What Angels Can Do</h3>
<span className="text-xs font-mono text-muted/50 tracking-wider">COMING SOON</span>
</div>
<p className="text-sm text-muted leading-relaxed">
Angels are autonomous AI agents that interact with Orama's on-chain primitives:
SQL, KV store, IPFS, BTC bridge, and the native DEX. They hold $ORAMA,
execute transactions, manage data, and interact with other Angels.
Builders set per-request or subscription pricing in $ORAMA.
</p>
<div className="grid grid-cols-2 sm:grid-cols-4 gap-3">
{useCases.map((uc) => (
<div key={uc.title} className="flex flex-col items-center text-center gap-2 py-3">
<uc.icon className="w-5 h-5 text-accent" />
<span className="text-sm font-display font-bold text-fg">{uc.title}</span>
<span className="text-xs text-muted">{uc.desc}</span>
</div>
))}
</div>
<p className="text-xs text-muted text-center">
Compute providers run standard nodes plus optional AI capacity. AI revenue is purely market-driven.
The protocol caps compute-provider nodes at 10% of total network nodes.
</p>
</div>
</DashedPanel>
</div>
</AnimateIn>
</Section>
);
}
/* ═══════════════════════════════════════════
10. GOVERNANCE & NFTs
═══════════════════════════════════════════ */
function GovernanceSection() {
return (
<Section>
<AnimateIn>
<SectionHeader
title="On-Chain Governance"
subtitle="Fully on-chain. No off-chain snapshots. NFT holders control 75% of voting power."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mt-8">
{[
{
title: "DeBros Team NFTs (100)",
power: "40%",
detail: "5 votes per NFT. 50% of bridge fees auto-swapped to $ORAMA. Emergency governance (24h). Migrated from Solana.",
highlight: true,
},
{
title: "DeBros NFTs (700)",
power: "35%",
detail: "1 vote per NFT. The community that built the network before the blockchain existed. Migrated from Solana.",
highlight: false,
},
{
title: "$ORAMA Holders",
power: "25%",
detail: "Quadratic voting: sqrt(tokens held). No whale can outweigh NFT holders. Open to all token holders.",
highlight: false,
},
].map((g) => (
<AnimateIn key={g.title}>
<DashedPanel withCorners={g.highlight} withBackground className={`h-full ${g.highlight ? "border-accent/30" : ""}`}>
<div className="flex flex-col gap-3 p-3">
<span className="font-display font-bold text-3xl text-accent">{g.power}</span>
<h3 className="font-display font-bold text-fg">{g.title}</h3>
<p className="text-muted text-sm leading-relaxed">{g.detail}</p>
</div>
</DashedPanel>
</AnimateIn>
))}
</div>
{/* Three tiers */}
<AnimateIn>
<div className="mt-6">
<DashedPanel withBackground>
<div className="overflow-x-auto p-2">
<span className="text-xs font-mono text-muted tracking-wider uppercase block mb-3 px-1">Decision Tiers</span>
<table className="w-full text-left text-xs sm:text-sm">
<thead>
<tr className="border-b border-dashed border-border">
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2 pr-3">Tier</th>
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2 pr-3">Period</th>
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2 pr-3">Threshold</th>
<th className="text-xs font-mono text-muted tracking-wider uppercase py-2">Scope</th>
</tr>
</thead>
<tbody>
{[
{ tier: "Emergency", period: "24 hours", threshold: "60% Team NFTs", scope: "Security patches, exploits" },
{ tier: "Protocol", period: "3 days", threshold: "66% all groups", scope: "Fee changes, new primitives, upgrades" },
{ tier: "Constitutional", period: "14 days", threshold: "90% all groups", scope: "Governance structure, bridge fees" },
].map((row) => (
<tr key={row.tier} className="border-b border-border/50">
<td className="text-sm text-fg py-2 pr-3 font-bold">{row.tier}</td>
<td className="text-sm text-fg py-2 pr-3 font-mono">{row.period}</td>
<td className="text-sm text-fg py-2 pr-3 font-mono">{row.threshold}</td>
<td className="text-sm text-muted py-2">{row.scope}</td>
</tr>
))}
</tbody>
</table>
</div>
</DashedPanel>
</div>
</AnimateIn>
</Section>
);
}
/* ═══════════════════════════════════════════
11. ROOTWALLET & OPEN SOURCE
═══════════════════════════════════════════ */
function RootWalletSection() {
return (
<Section>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<AnimateIn>
<DashedPanel withCorners withBackground>
<div className="flex flex-col items-center text-center gap-3 p-5">
<span
className="font-display font-bold text-xl"
style={{ background: SILVER.gradient, WebkitBackgroundClip: "text", WebkitTextFillColor: "transparent" }}
>
RootWallet
</span>
<p className="text-xs text-muted max-w-xs">
The official wallet of the Orama Network. Manage $ORAMA, bridged BTC,
governance votes, and Angel interactions all in one place.
</p>
<Button asChild variant="ghost" size="sm">
<a href="https://rootwallet.io" target="_blank" rel="noopener noreferrer">
rootwallet.io <ExternalLink className="w-3 h-3 ml-1" />
</a>
</Button>
</div>
</DashedPanel>
</AnimateIn>
<AnimateIn>
<DashedPanel withBackground>
<div className="flex flex-col items-center text-center gap-3 p-5">
<span className="font-display font-bold text-xl text-fg">Open Source</span>
<p className="text-xs text-muted max-w-xs">
Orama Network is fully open source. All critical protocol components are verifiable.
Bug bounty program from testnet launch.
</p>
<div className="flex flex-wrap gap-2 justify-center">
<Button asChild variant="ghost" size="sm">
<a href="https://github.com/DeBrosDAO/orama" target="_blank" rel="noopener noreferrer">
Orama <ExternalLink className="w-3 h-3 ml-1" />
</a>
</Button>
<Button asChild variant="ghost" size="sm">
<a href="https://github.com/DeBrosDAO/network-ts-sdk" target="_blank" rel="noopener noreferrer">
SDK <ExternalLink className="w-3 h-3 ml-1" />
</a>
</Button>
<Button asChild variant="ghost" size="sm">
<a href="https://github.com/DeBrosDAO/orama-vault" target="_blank" rel="noopener noreferrer">
Vault <ExternalLink className="w-3 h-3 ml-1" />
</a>
</Button>
</div>
</div>
</DashedPanel>
</AnimateIn>
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
12. ROADMAP
═══════════════════════════════════════════ */
function BlockchainRoadmap() {
const phases = [
{
status: "live" as const,
label: "NOW",
title: "Infrastructure Live",
items: [
"50+ nodes running across devnet and testnet",
"Core infrastructure operational (SQL, Cache, Storage, DNS)",
"Orama Proxy integrated with Anyone Protocol",
"AnChat Lite in closed beta",
],
},
{
status: "building" as const,
label: "TESTNET",
title: "Blockchain Testnet",
items: [
"L1 blockchain testnet — nodes begin earning $ORAMA",
"No staking required — all operators can participate",
"Testnet tokens carry over to mainnet (no reset)",
"PLONK trusted setup ceremony",
"Bug bounty program launches",
"AI Marketplace beta, Angels framework",
],
},
{
status: "planned" as const,
label: "TESTNET MATURITY",
title: "300-Node Threshold",
items: [
"Reach 300 independent nodes — hard genesis requirement",
"Bonding curve live on testnet",
"Native order book testing",
"DeBros NFT migration preparation",
"Orama One pre-orders",
],
},
{
status: "planned" as const,
label: "MAINNET",
title: "Full Launch",
items: [
"Full production launch — L1 blockchain live",
"BTC bridge live with trust-minimized security",
"Native DEX (order book) live — $ORAMA/BTC",
"Staking activated (1,000 $ORAMA minimum)",
"DeBros NFT bridge revenue begins",
"On-chain governance live",
],
},
];
const statusConfig = {
live: { dot: "active" as const, label: "LIVE" },
building: { dot: "warning" as const, label: "IN PROGRESS" },
planned: { dot: "neutral" as const, label: "PLANNED" },
};
return (
<Section>
<AnimateIn>
<SectionHeader
title="Roadmap"
subtitle="Milestone-based. No fixed dates. Ship when ready."
/>
</AnimateIn>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-8">
{phases.map((phase) => (
<AnimateIn key={phase.label}>
<DashedPanel withCorners={phase.status === "live"} withBackground className={`h-full ${phase.status === "live" ? "border-accent/30" : ""}`}>
<div className="flex flex-col gap-3 p-3">
<div className="flex items-center justify-between">
<div className="flex items-center gap-2">
<StatusDot status={statusConfig[phase.status].dot} />
<span className="text-xs font-mono text-muted tracking-wider uppercase">
{statusConfig[phase.status].label}
</span>
</div>
<span className="text-xs font-mono text-accent tracking-wider">{phase.label}</span>
</div>
<h3 className="font-display font-bold text-lg text-fg">{phase.title}</h3>
<ul className="flex flex-col gap-2">
{phase.items.map((item) => (
<li key={item} className="flex items-start gap-2">
<ChevronRight className="w-3.5 h-3.5 mt-0.5 shrink-0 text-accent" />
<span className="text-xs text-muted">{item}</span>
</li>
))}
</ul>
</div>
</DashedPanel>
</AnimateIn>
))}
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
13. FAQ
═══════════════════════════════════════════ */
function BlockchainFAQ() {
const [openIndex, setOpenIndex] = useState<number | null>(null);
const faqs = [
{
question: "Is this an EVM-compatible chain?",
answer: "No. Orama is a pure WASM blockchain from genesis. Developers write smart contracts in Rust, Go, TypeScript, C++, or any language that compiles to WebAssembly. No EVM, no Solidity.",
},
{
question: "Is this a fork of another chain?",
answer: "No. Orama is built from first principles — a standalone L1 with its own consensus (hybrid PoS + Proof of Contribution + Proof of Infrastructure), its own VM (WASM), and its own economic model (BTC-only, 100% mined).",
},
{
question: "How do I get $ORAMA?",
answer: "Run a node and mine it. During testnet, no staking is required — anyone can participate. Alternatively, bridge BTC onto Orama and buy $ORAMA from the bonding curve or the native order book. There is no pre-sale, airdrop, or investor allocation.",
},
{
question: "Can I pay with ETH or SOL?",
answer: "No. Orama is a BTC-only economy. The only two assets on Orama are BTC (bridged from Bitcoin mainnet) and $ORAMA. No ETH, SOL, stablecoins, or other altcoins exist on the chain.",
},
{
question: "When is mainnet?",
answer: "Mainnet launches when the 300-node genesis requirement is met and the testnet has proven stability. The roadmap is milestone-based, not date-based. During testnet, tokens are real and carry over to mainnet — there is no reset.",
},
{
question: "What is Proof of Infrastructure?",
answer: "Nodes running the hardened OramaOS operating system receive a 1.5x multiplier to their Effective Power, verified via TPM-based remote attestation. Combined with Proof of Contribution (real work: uptime, compute, bandwidth) and Proof of Stake, this ensures a node doing real work outearns a whale who only stakes capital.",
},
{
question: "What are Angels?",
answer: "Angels are autonomous AI agents that run on the Orama Network. They can interact with on-chain primitives (SQL, KV, IPFS, BTC bridge, DEX), hold $ORAMA, execute transactions, and interact with other Angels. Builders deploy them to the AI Marketplace and set per-request or subscription pricing in $ORAMA.",
},
{
question: "What about privacy?",
answer: "Every transaction has a public/private toggle. Private transactions use PLONK zk-SNARKs to shield sender, receiver, and amount. Gas cost for private mode is 4x public. PLONK uses a universal trusted setup performed once at genesis — no new ceremony needed for circuit upgrades.",
},
];
return (
<Section>
<AnimateIn>
<SectionHeader title="FAQ" subtitle="Common questions about the Orama L1." />
</AnimateIn>
<div className="flex flex-col gap-2 mt-8 max-w-3xl mx-auto">
{faqs.map((faq, i) => (
<AnimateIn key={i}>
<button
type="button"
onClick={() => setOpenIndex(openIndex === i ? null : i)}
className="w-full text-left"
>
<DashedPanel withBackground>
<div className="flex flex-col gap-0 p-2">
<div className="flex items-center justify-between gap-4">
<h3 className="font-display font-bold text-fg text-sm sm:text-base">{faq.question}</h3>
<ChevronRight className={`w-4 h-4 shrink-0 text-muted transition-transform duration-200 ${openIndex === i ? "rotate-90" : ""}`} />
</div>
<div className={`overflow-hidden transition-all duration-300 ${openIndex === i ? "max-h-60 mt-3 opacity-100" : "max-h-0 opacity-0"}`}>
<p className="text-muted text-sm leading-relaxed">{faq.answer}</p>
</div>
</div>
</DashedPanel>
</button>
</AnimateIn>
))}
</div>
</Section>
);
}
/* ═══════════════════════════════════════════
14. FINAL CTA
═══════════════════════════════════════════ */
function BlockchainCTA() {
return (
<Section padding="wide">
<AnimateIn>
<DashedPanel withCorners withBackground>
<div className="flex flex-col items-center text-center gap-6 py-8">
<span
className="inline-flex items-center px-3 py-1 text-xs font-mono tracking-widest uppercase rounded-full"
style={{ border: `1px dashed ${SILVER.mid}`, color: SILVER.light }}
>
100% MINED ZERO PRE-MINE
</span>
<h2 className="font-display font-bold text-2xl lg:text-3xl text-fg">
The eternal decentralized computer.
<br />
<span
style={{
background: SILVER.gradient,
WebkitBackgroundClip: "text",
WebkitTextFillColor: "transparent",
}}
>
Run a node. Mine $ORAMA.
</span>
</h2>
<p className="text-muted text-sm max-w-lg">
No tokens to buy beforehand. No pre-sale to miss. Run a node, earn $ORAMA,
and be part of the only blockchain where everyone starts equal.
</p>
<div className="flex flex-wrap items-center gap-3 justify-center">
<Button asChild variant="ghost" size="lg">
<Link to="/node">
Run a Node
<ArrowRight className="w-3.5 h-3.5 ml-2" />
</Link>
</Button>
<Button asChild variant="ghost" size="lg">
<a href="/orama-whitepaper-v3.pdf" target="_blank" rel="noopener noreferrer">
Read Whitepaper
<ExternalLink className="w-3.5 h-3.5 ml-2" />
</a>
</Button>
</div>
</div>
</DashedPanel>
</AnimateIn>
</Section>
);
}
/* ═══════════════════════════════════════════
PAGE
═══════════════════════════════════════════ */
export default function Blockchain() {
return (
<Page title="Orama L1 Blockchain — The Eternal Decentralized Computer">
<BlockchainHero />
<Suspense fallback={null}>
<ConsensusScene />
</Suspense>
<Section padding="none"><CrosshairDivider /></Section>
<TwoLayers />
<Section padding="none"><CrosshairDivider /></Section>
<ThreePillars />
<Section padding="none"><CrosshairDivider /></Section>
<TokenomicsSection />
<Section padding="none"><CrosshairDivider /></Section>
<AcquireSection />
<Section padding="none"><CrosshairDivider /></Section>
<OramaOneBlockchain />
<Section padding="none"><CrosshairDivider /></Section>
<BtcBridgeAndDex />
<Section padding="none"><CrosshairDivider /></Section>
<PrivacySection />
<Section padding="none"><CrosshairDivider /></Section>
<AngelsSection />
<Section padding="none"><CrosshairDivider /></Section>
<GovernanceSection />
<Section padding="none"><CrosshairDivider /></Section>
<RootWalletSection />
<Section padding="none"><CrosshairDivider /></Section>
<BlockchainRoadmap />
<Section padding="none"><CrosshairDivider /></Section>
<BlockchainFAQ />
<Section padding="none"><CrosshairDivider /></Section>
<BlockchainCTA />
</Page>
);
}