SEICHO
Strategic Market Research
Technical referenceBase Mainnet · 8453

Architecture / authentication

Wallet authentication

SEICHO uses a human-readable off-chain wallet signature to prove control of an address. Authentication does not approve tokens and does not submit an on-chain transaction.

Signature vs transaction

ActionOn-chainCan move fundsPurpose
Login signaturesignMessageNoNoProves control of the connected wallet.
ERC-20 approvalapproveYesCreates a finite allowanceAuthorizes the core contract as spender.
SubscriptionsubscribeYesTransfers the exact computed paymentCreates or extends paid access.

Login sequence

  1. The frontend submits the wallet address and chain ID to the nonce endpoint.
  2. The backend generates a 64-character opaque nonce with a five-minute expiry.
  3. The nonce is stored with wallet, chain, purpose and payload hash.
  4. The wallet signs the exact message returned by the backend.
  5. The backend reconstructs the message and verifies the signature with viem.verifyMessage.
  6. The nonce is consumed atomically before the session is committed.
  7. The session expires no later than 31 days or the verified subscription expiry, whichever occurs first.

Message format

The production login message follows this format:

SEICHO Authentication

Action: wallet_login
Wallet: 0xYourWalletAddress
Chain ID: 8453
Payload Hash: <64 lowercase hexadecimal characters>
Nonce: <64 lowercase hexadecimal characters>

Sign this message to authenticate. This does not authorize a blockchain transaction.

Replay protection

Nonce lifetime
5 minutes
Nonce use
Single-use; consumed within the login transaction
Binding
Wallet address, Base chain ID, purpose and payload hash
Session maximum
31 days, capped by subscription expiry
Server verification
Message reconstructed and signature recovered server-side

Other signatures

Logged-in wallet users may be asked for similarly structured security signatures when linking or unlinking a Google identity or revoking a trusted device. These messages include a purpose-specific payload hash and a single-use nonce.

Administrative content mutations use a separate SEICHO Admin Action message containing domain, chain ID, action, resource, payload hash, nonce and expiry. The backend accepts it only from the authenticated wallet that currently matches the contract owner().