Identity
Email + scrypt password. Session cookie on coinbased.net. Merchants never store it.
Wallet
Readers buy CoinBased coins. Merchants debit them. The number on the user row is a cache; the transactions table is the truth.
Email + scrypt password. Session cookie on coinbased.net. Merchants never store it.
FIAT_PURCHASE rows from sandbox (and later a real processor). Positive amount, no app_id.
MERCHANT_SPEND rows, negative amount, app_id set. Idempotent if the merchant sends reference_id.