Architecture
System boundaries
SEICHO combines a Next.js client, a session backend and a set of non-proxy contracts on Base. Authentication and payments are separate flows with separate authorization models.
System overview
Connects the wallet, requests signatures and submits explicit transactions.
Issues nonces, verifies signatures, reads access and creates bounded sessions.
Store account and access state, collect approved payments and apply renewal rules.
Chain ID 8453. Production contract state and payment events are publicly readable.
The frontend never receives the wallet private key. It asks the wallet provider to sign a human-readable authentication message or to submit a specific contract call. The backend independently verifies the login signature and reads contract state over an RPC endpoint.
Trust boundaries
- Wallet boundary
- The wallet displays and authorizes signatures and transactions.
- Backend boundary
- The backend controls application sessions and protected content access.
- Contract boundary
- Base contracts enforce payment, allowance use and subscription state.
- Operator boundary
- The current contract owner retains the documented administrative powers.
Subscription lifecycle
- The frontend reads accepted payment tokens and current pricing.
- The user chooses tier, duration, token and optional auto-renewal.
- If allowance is insufficient, the user submits an ERC-20 approval.
- The user separately submits the account/subscription transaction.
- The core recomputes price, enforces a user-supplied maximum and pulls the exact amount.
- The backend later reads effective access from the deployed contracts.
Data and custody
Subscription and account ownership state is on-chain. Research content, user sessions, trusted-device records and application data are handled by the backend. Payment tokens remain in the user wallet until an authorized contract path calls transferFrom.
The core temporarily receives subscription payments and distributes configured commissions and treasury amounts. It does not custody the user's wallet and cannot sign on the user's behalf.