What Non-Custodial Means
In a custodial model, a third party holds private keys and can move funds on users’ behalf. SocketFi is the opposite:
SocketFi infrastructure routes requests and verifies authorization, but it never holds signing material that could authorize wallet operations. The passkey credential that authorizes the wallet lives on the user’s device and nowhere else.
What SocketFi Can and Cannot Do
SocketFi can:- Deploy wallet contracts on behalf of your application
- Route authentication challenges to the user’s device
- Verify WebAuthn responses and issue sessions
- Provide recovery infrastructure when a user loses their passkey
- Help your application read wallet state and submit authorized transactions
- Sign transactions on a user’s behalf
- Access, freeze, or move user assets
- Execute operations on a wallet without a valid passkey signature from the user’s device
- Override wallet policies
Users Authorize Everything
Every state-changing wallet operation requires an explicit passkey signature from the user. The wallet smart contract enforces this on-chain — authorization is not a policy layer that can be bypassed at the application level. This means:Wallet Address as User Identity
Because the wallet address is stable, globally unique, and owned exclusively by the user, it is the most reliable identity anchor available in your system. Use it as the canonical user identifier in your backend.verifyAuth() is stable across logins, device changes, credential rotations, and account recovery. It will never change for a given user.
Verifying Identity on Your Backend
When your frontend sends a wallet address to your backend, you must verify it server-side before trusting it. Never accept a wallet address from the client without verification — a malicious client could claim any address.Communicating Ownership to Users
Users often do not realize they own their wallet in the same way they would own a seed-phrase wallet. Consider surfacing this clearly in your application:- Show the wallet address (or a truncated version) somewhere accessible in account settings
- Explain during onboarding that their assets belong to them and are protected by their passkey
- When prompting for transaction approval, reinforce that only they can authorize this action