MyTXO Documentation
Technical reference for the MyTXO platform and YOUTXO Protocol.
Table of Contents
Platform Overview
MyTXO is a Bitcoin-native social platform where users create permanent digital identities inscribed as Ordinals. There was a golden age when your social identity and music discovery were inseparable. We're bringing it back — permanently, on Bitcoin.
Platform
MyTXO
Consumer-facing social platform
Protocol
YOUTXO
Your Unspent Transaction Output — open Bitcoin identity protocol
Token
$MYTXO
OP_20 governance/utility token on OP_NET (Bitcoin L1)
Brand Pillars
- "Your identity, your rules" — True ownership on Bitcoin
- badge "A place for legends" — Permanence, legacy, creator-first
- "The golden age returns" — Organic discovery, no algorithms
- "Built on Bitcoin, accessible to everyone" — No crypto jargon
- "One UTXO, infinite expression" — Responsible, efficient inscribing
OP_NET Smart Contracts
MyTXO runs on OP_NET, a Bitcoin Layer 1 smart contract platform. Three core contracts power on-chain identity, social graph, and content. All contracts are deployed on OP_NET testnet.
MyTXORegistry
On-chain identity
Stores username, display name, bio, avatar inscription ID, CSS customization inscription ID, playlist pointer, and Top 8 friends. The canonical source of truth for profile data.
MyTXOSocial
Social graph
Manages friend relationships (send, accept, deny, remove), guestbook signing, likes, and Legend Score computation. All social actions are recorded on-chain.
MyTXOContent
Content NFTs
Blurbs (short posts up to 280 characters) and blogs (title plus content hash reference). Content is minted as on-chain tokens. Full blog text is stored off-chain and referenced by hash.
Deployed on OP_NET testnet (Bitcoin L1). Contract calls require a connected wallet and gas costs are paid in testnet sats.
Wallet Integration
MyTXO uses the OP_NET WalletConnect SDK (@btc-vision/walletconnect) to connect wallets. All on-chain actions require a connected wallet.
OP_WALLET Extension
Connect the OP_WALLET browser extension to sign transactions. The extension handles key management and signing for all contract interactions.
Wallet-Required Actions
Registration, profile updates, friend requests, guestbook signing, content minting, and likes all require a connected wallet. No on-chain action proceeds without it.
Gas Costs
Gas costs are paid in testnet sats. OP_NET testnet uses a Signet fork; obtain testnet sats from a faucet to interact with contracts.
Profile System
Wallet-first registration and on-chain profile data. Profiles live at clean URLs and display data stored directly on OP_NET.
Wallet-First Registration
New users register at /register. Connect your wallet first; the registration flow creates your on-chain identity via MyTXORegistry.
Clean URLs
Profiles are served at mytxo.space/{username}. Usernames are unique and stored on-chain.
On-Chain Profile Data
Display name, bio, avatar inscription ID, CSS inscription ID, and playlist inscription ID are stored on-chain in MyTXORegistry. Updates require a wallet-signed transaction.
Music Player
The music player loads audio from Ordinals inscriptions. The playlist pointer in the registry points to the inscribed playlist data.
CSS Customization
Profile styling is driven by inscribed CSS files. The CSS inscription ID in the registry references the stylesheet; update the inscription to change your theme.
Legend Score
Computed from social and registry data. Reflects friend count, guestbook activity, likes, and other on-chain engagement. Displayed on profiles.
Content Model
Two content types: blurbs (short) and blogs (long-form). Both are minted as on-chain tokens and can appear in the feed.
Blurbs
Short posts up to 280 characters. Minted as on-chain tokens via MyTXOContent. Each blurb is a distinct token on OP_NET.
Blogs
Long-form content. Title and content hash are stored on-chain; full text lives in the database. The on-chain token references the content by hash for integrity.
Publish to Feed
Optional toggle when composing. When enabled, content appears in the on-chain feed and is discoverable by other users.
On-Chain Feed
The feed scans OP_NET blocks for contract events and surfaces activity across the platform.
Event Types
The feed displays:
- New registrations (MyTXORegistry)
- Friend acceptances (MyTXOSocial)
- Guestbook signs (MyTXOSocial)
- Content mints (MyTXOContent)
Auto-Refresh
The feed auto-refreshes every 30 seconds to pull new events from OP_NET blocks.
YOUTXO Protocol v2.0
The YOUTXO Protocol separates concerns across three sat ranges on a single UTXO. Each user gets one UTXO that serves as their entire on-chain identity, from their Creator Card to every piece of content they ever publish.
Card Range
Creator Card — the user's Bitcoin business card (master assembler, identity, HTML, CSS)
Feature Range
Profile structure, widgets, feature cards — the presentation/logic layer
Content Range
Raw content data (blurbs, blogs, media) — reinscribed with each new piece of content
Feature cards (sat4-19) are the presentation/logic layer — they contain display code that knows how to render content. Content sats (sat20+) are the data layer — raw JSON payloads reinscribed with each new piece of content. When a user posts a blurb, sat20 is reinscribed with the latest blurb JSON, which includes a previous pointer forming a linked list.
Sat Allocation Map
Card Range (sat0-3) — Inscribed at account creation
| Sat | Name | Content-Type | Description |
|---|---|---|---|
| sat0 | Master Assembler | text/html | Permanent HTML loader. Fetches sat1-3 for card rendering. Never updated. |
| sat1 | Core Identity | application/json | Username, displayName, pfp, bio, links, btcAddress. Shared across all features. Updatable. |
| sat2 | HTML Structure | text/html | Canonical Creator Card v1.0 template. LOCKED — same for all cards. |
| sat3 | CSS Styles | text/css | Visual styling. Updatable. Editions: default, og-gold, custom. |
Feature Range (sat4-19) — Inscribed when features activate
| Sat | Name | Phase | Description |
|---|---|---|---|
| sat4 | Profile Assembler | Phase 2 | Full profile page HTML that orchestrates all widgets. |
| sat5 | Profile CSS | Phase 2 | Theme/styles for the full profile. |
| sat6 | Feature Registry | Phase 2 | JSON manifest listing active features. |
| sat7 | Friends / Top 8 | MVP | Display logic for the Top 8 friends widget. |
| sat8 | Blurbs Feature Card | MVP | Display logic for rendering blurbs. Fetches data from sat20. |
| sat9 | Blogs Feature Card | MVP | Display logic for rendering blogs. Fetches data from sat21. |
| sat10-19 | Reserved | Future | Music player, guestbook, gallery, etc. |
Content Range (sat20+) — Reinscribed with each new piece of content
| Sat | Name | Content-Type | Description |
|---|---|---|---|
| sat20 | Blurbs Content | application/json | Latest blurb JSON. Reinscribed per blurb. Linked list via 'previous' field. |
| sat21 | Blogs Content | application/json | Latest blog JSON (title + markdown). Reinscribed per blog. |
| sat22+ | Reserved | — | Future content types (media, audio, etc.) |
Inscription Costs (Estimated)
The Utility Ladder
Progressive value — start with a simple business card for a few dollars, grow into a full on-chain social identity over time. Each level builds on the previous.
A permanent, styleable identity card on Bitcoin. Update your look anytime.
Your card becomes an interactive page with widgets and customization.
Blurbs, blogs, friends, music — each a modular, activatable feature.
YOUTXO identity works across any platform that adopts the protocol.
Your inscribed identity enters the BLiX 3D world on Bitmap.
Architecture
Tech Stack
Container Layout
services:
app: # mytxo-app — Next.js production build
# Exposed: 127.0.0.1:8086 -> :3000
opnet: # mytxo-opnet — OP_NET smart contract API
# OP_NET SDK + Subfrost JSON-RPC, :4000
db: # mytxo-db — PostgreSQL 17 Alpine
# Internal network only, persisted volume
redis: # mytxo-redis — Redis 7 Alpine
# Internal network only, persisted volume
# Host Caddy: mytxo.space -> localhost:8086 (auto-SSL)
# mytxo-app calls mytxo-brc20 internally via http://brc20:4000Authentication
X OAuth 2.0 Flow
- User clicks "Sign in with X"
- Redirect to X OAuth consent screen (PKCE + state param)
- X redirects back with auth code
- Backend exchanges code for access + refresh tokens
- Fetch user profile (username, bio, avatar)
- Existing user: log in, set session. New user: redirect to signup wizard
- HTTP-only session cookie stored in Redis (7-day TTL)
Passkey Wallet Flow (PassSeeds)
The passkey wallet follows the PassSeeds approach (reference: github.com/bitbragi/passseeds). WebAuthn PRF extension is used for seed derivation, with a fallback of hashing the P-256 public key from attestation. BIP86 taproot derivation paths produce four addresses: Creator ID, Inscriptions, Payments, and Signing.
PassSeeds Flow
- User creates passkey — WebAuthn registration with Face ID, Touch ID, or device PIN
- Seed extraction — PRF extension extracts 32-byte seed, or hash of P-256 public key
- HD wallet derivation — BIP86 taproot paths: Creator ID, Inscriptions, Payments, Signing
- Client-side signing — Every inscription signed locally, keys re-derived from passkey each time
Features
Powerful tools made accessible through intuitive wizards.
Affordable Audio Inscribing
Inscribe music and audio directly on Bitcoin at accessible prices. Creators permanently preserve their sound alongside their identity.
On-Chain Guestbook
Visitors sign your guestbook via wallet connect. Cryptographic signatures verified on-chain — a permanent record of your community.
Rich Article Composer
Full rich-text editor for long-form content. Format beautifully, then inscribe permanently on Bitcoin with one click.
Cross-Platform Identity
YOUTXO Creator Cards are a plug-and-play identity standard. Any platform can adopt them as an account system.
Intuitive Wizards
Every inscription flow is guided step-by-step. Zero Bitcoin knowledge required through clear, friendly wizards.
Personal Profile Pages
Your permanent home on Bitcoin. Showcasing your Creator Card, blurbs, blogs, Top 8 friends, and more.
Inscription System
All signing happens in the user's wallet. The backend never holds private keys. PSBTs are constructed client-side, signed by the wallet, and broadcast via mempool.space API.
- User fills out form (Creator Card / Blurb / Blog)
- Frontend builds inscription payload (JSON, HTML, or CSS)
- Frontend requests fee estimation from mempool.space
- Frontend constructs PSBT with appropriate UTXOs
- PSBT sent to wallet for signing (extension or passkey re-derive)
- Broadcast signed tx via mempool.space API
- Backend records inscription in DB, feed updated
Structured Properties (tag 17)
Every inscription carries protocol metadata:
--trait "protocol" "youtxo"
--trait "component" "master|identity|card-html|card-css|feature-*|content-*"
--trait "version" "1.0" (identity)
--trait "locked" "true" (card-html)
--trait "edition" "default" (card-css)API Reference
Auto-generated from the codebase. Run npm run docs:generate to refresh.
Admin Dashboard
| GET | /api/admin/content | — |
| GET | /api/admin/inscriptions | — |
| GET | /api/admin/presale | Status breakdown |
| GET | /api/admin/stats | Build daily signup chart data |
| GET | /api/admin/system/health | Database health |
| GET | /api/admin/users/[id] | Remove sensitive tokens |
| GET | /api/admin/users | — |
Authentication
| POST | /api/auth/logout | — |
| GET | /api/auth/me | — |
| POST | /api/auth/wallet/register | — |
| GET | /api/auth/x/callback | Helper: redirect or popup-close depending on mode |
| POST | /api/auth/x/complete | Validate username format |
| GET | /api/auth/x/login | Check if this is a popup auth flow |
Content
| GET | /api/blogs/drafts | — |
| GET | /api/blogs | POST /api/blogs - Create a new blog |
| POST | /api/blogs | POST /api/blogs - Create a new blog |
| GET | /api/blurbs | POST /api/blurbs - Create a new blurb |
| POST | /api/blurbs | POST /api/blurbs - Create a new blurb |
Social
| GET | /api/features | — |
| POST | /api/features | — |
| GET | /api/friends | — |
| PUT | /api/friends | — |
Feed
| GET | /api/feed | — |
| POST | /api/feed | — |
Inscriptions
| POST | /api/inscriptions/confirm | POST /api/inscriptions/confirm - Record completed inscription |
| POST | /api/inscriptions/prepare | POST /api/inscriptions/prepare - Prepare inscription payload |
Presale
| POST | /api/presale/broadcast | Records a successfully broadcast presale transaction in the database. |
| GET | /api/presale/current | Presale round data denominated in sats (on-chain authority) |
| POST | /api/presale/purchase | Presale purchase — validates cap, calls OP_NET service, creates DB record |
| POST | /api/presale/verify | Look up the participation record |
Profile
| GET | /api/profile/[username] | — |
Users
| GET | /api/users/check | Validate format |
| PUT | /api/users/me | — |
Wallet
| POST | /api/wallet/broadcast | POST /api/wallet/broadcast - Broadcast signed transaction |
| GET | /api/wallet/fees | — |
OP_NET Service (Internal :4000)
| GET | /health | — |
| GET | /balance/:address | — |
| GET | /presale/state | — |
| POST | /presale/construct-tx | — |
| POST | /presale/broadcast | — |
$MYTXO Token
Total Supply
21,000,000,000
Network
Bitcoin (BRC-20)
Platform
Subfrost
Distribution
Staking & Fee Discounts
| Staked | Fee Discount | Voting Power |
|---|---|---|
| 100,000 $MYTXO | 10% off | 2x |
| 500,000 $MYTXO | 50% off | 2x |
| 1,000,000 $MYTXO | 100% off (zero fees) | 2x |
Maximum 21,000 users can achieve zero fees (1M tokens each = 21B supply).
Roadmap
Bitcoin business cards. On-chain identity via YOUTXO Protocol.
Content activation. Short-form and long-form on Bitcoin.
Global feed, $MYTXO presale round 1, community growth.
Cards become profiles. Widget system + guestbooks activate.
Affordable audio inscribing + patent-like documents.
Follows, DMs, discovery, mobile apps, full $MYTXO utility.
YOUTXO identities enter the BLiX 3D world on Bitmap.
Design System
"MySpace Nostalgia + Clean Modern Structure" — Bold blues, square corners, visible structure, and personality. Verdana for all text provides the authentic MySpace feel with consistent rendering across every device and platform.
Typography
Color Palette
BG Deepest
#0A1628
Blue Darkest
#003366
Blue Dark
#004080
Blue Primary
#0066CC
Blue Light
#3399FF
Blue Lightest
#CCE5FF
BG Page
#D4D4D4
BG Card
#FFFFFF
Gold
#FFD700
Orange
#FF6600
Green
#00CC00
BTC Orange
#F7931A
Key Design Rules
- ZERO border radius on structural elements (cards, buttons, inputs)
- Visible 1-2px solid borders on cards, not box-shadows
- Deep blue sticky header with subtle glass effect
- Light grey page background (#D4D4D4)
- White card backgrounds with solid borders
- Glass effects ONLY on header, modals, tooltips, toasts
- Material Icons (Classic Outlined) for all icons — no emojis
- Square buttons with visible borders and bold text
- Gold accents for Bitcoin/premium elements
- Dense information layout, personality over empty minimalism
- Retro hover effects: color shifts, underlines (not subtle opacity fades)
- Verdana for all text (authentic MySpace font stack)
