Technical Transparency

Technology

We openly share the complete technical architecture of EternalTrace, because trust should be built on verifiable facts.

System Overview

EternalTrace is a full-stack web application whose core function is writing user-submitted content to the Bitcoin blockchain. The system is structured in three layers — frontend, backend, and blockchain — connected via a standardized REST API.

Frontend
Next.js 14 · TypeScript · Tailwind CSS
  • ·SSR/SSG rendering with App Router
  • ·Privy SDK for email, Google login, and embedded wallets
  • ·Bilingual i18n (Chinese/English) with Cookie persistence
  • ·Stripe.js secure integration — no card data stored locally
  • ·Real-time miner fee display from mempool.space API
  • ·Drag-and-drop image upload with client-side size estimation
Backend
NestJS · TypeScript · Prisma ORM
  • ·RESTful API design with Swagger documentation
  • ·PostgreSQL as the primary database; Redis for caching
  • ·Privy JWKS public-key JWT validation
  • ·Sharp image processing: compression to < 50KB, WebP output
  • ·Puppeteer + QRCode for A4 digital certificate PDF generation
  • ·Feishu Webhook for system error alerting
Blockchain
Bitcoin Ordinals · OrdinalsBot API
  • ·Ordinals protocol to inscribe content into a Bitcoin Satoshi
  • ·OrdinalsBot API broadcasts transactions to global nodes
  • ·Custom receive address support (bc1p/bc1q/1/3)
  • ·Three fee tiers: Economy / Standard / Express
  • ·Inscription ID & Sat Number permanently verifiable on-chain
  • ·Real-time status tracking with Webhook callbacks
Authentication
Privy · JOSE · JWT
  • ·Privy manages user identity (email, Google OAuth)
  • ·Auto-generated embedded Ethereum wallet (EIP-4361)
  • ·NestJS guard validates every request via Privy JWKS
  • ·Public endpoints (@Public) require no token
  • ·Sensitive operations require an authenticated session
Payments
Stripe · Checkout Sessions · Webhook
  • ·Stripe Checkout Session handles all payments
  • ·Supports credit cards, Apple Pay, and Google Pay
  • ·USD billing with CNY reference price displayed in the UI
  • ·Stripe Webhook signature verification (rawBody mode)
  • ·Payment confirmation triggers the inscription pipeline
  • ·No payment card data is stored by this platform
Certificates
Puppeteer · QRCode · PDF
  • ·Server-side A4 HTML template rendered in Node.js
  • ·Puppeteer renders and exports a PDF binary stream
  • ·QRCode links to the Ordinals.com verification page
  • ·Certificate includes: name, dates, Inscription ID, Sat Number
  • ·Downloaded directly in the browser — no server storage required

Data Flow

01

User uploads photo + life story; client-side compression to < 50KB

02

Fetch real-time miner fees from mempool.space; calculate quote (including 25% platform fee)

03

User selects speed; order created in NestJS; redirect to Stripe Checkout

04

Stripe Webhook confirms payment; inscription task triggered

05

OrdinalsBot broadcasts transaction; Bitcoin miners confirm into a block

06

Inscription complete; Webhook updates database; memorial page goes live

07

User downloads PDF digital certificate as permanent proof of inscription

Openness and Transparency

Blockchain is fundamentally trustless. All inscription data written to the Bitcoin blockchain can be independently verified via Ordinals.com, mempool.space, and other open tools — no trust in this platform required. Even if EternalTrace ceases operation, all inscribed memorial content will remain permanently accessible across all global Bitcoin nodes. This is our most fundamental commitment to our users.