Masca

Decentralized Identity / Web3

Masca

A MetaMask Snap that turns the wallet into a decentralized identity hub

The challenge

Managing decentralized identity across dapps means wrestling with multiple DID methods, credential formats, and storage backends, with no consistent place for users to hold their credentials. Wallets handle keys and tokens well but offer no native way to store and present verifiable credentials. Developers who want to add identity features end up reimplementing the same low-level logic.

What we built

Lutra Labs built Masca as a MetaMask Snap that extends the wallet with decentralized identity capabilities, letting users create DIDs, store verifiable credentials, and generate verifiable presentations directly from MetaMask. It builds on the W3C DID and Verifiable Credentials standards and supports multiple DID methods and signature formats so credentials remain portable across ecosystems. Credentials can be kept locally in the encrypted Snap state or synced to the Ceramic Network, keeping the user in control of their data. A companion library, Masca Connector, lets dapp developers integrate DIDs and VCs without implementing method-specific logic themselves.

Highlights

  • Extends MetaMask via the Snaps platform, reusing the wallet's key management and security model
  • Supports multiple DID methods (did:ethr, did:key, did:pkh, did:jwk, did:polygonid) and formats (JWT, JSON-LD, EIP712)
  • Built on W3C standards for Decentralized Identifiers and Verifiable Credentials
  • Flexible storage: encrypted local Snap state or the Ceramic Network
  • Masca Connector library for dropping DID/VC support into any dapp
  • Integrations with Polygon ID and OpenID Connect (OIDC) identity flows

Outcome

Published as a Snap on the official MetaMask Snaps Directory.

Tech stack

  • TypeScript
  • MetaMask Snaps
  • W3C DIDs
  • W3C Verifiable Credentials
  • Ceramic Network
  • Polygon ID
  • OpenID Connect
  • JSON-LD
  • JWT
  • EIP712
  • Ethereum
Visit project