- Home
- Ethereum wallet
Use your Ethereum wallet
Connect MetaMask, Rabby, Rainbow, or Trust Wallet. Use the supported account connection flow and retain your wallet’s recovery material.
The Bitcoin option works identically with keys from BTC, BCH, or BSV. They share the same cryptography.
There are two layers here, and keeping them apart is the whole point. Your identity attestation hashes live on BSV. That is the anchor chain, it is where the record is written, and it does not change. Generating the identity is the other layer, and for that you can use keys you already hold somewhere else.
Same curve, same key, different encoding
This is arithmetic, not a bridge or a wrapped asset.
Ethereum and Bitcoin both use the secp256k1 elliptic curve. One private key produces the same public key on both, and only the address encoding differs. Whether the wallet can use that address depends on its supported signing methods and the connection scheme. Preserve the original recovery material.
Connect through the account wallet flow
Client side. Nothing here sends a private key anywhere.
Wallet management is a custom Sigma account API requiring an authenticated session, an owned profile, and the supported wallet proof. Installing the OAuth plugin does not mount that wallet route in your application.
// Open Sigma, sign in, and select the profile you control.
// Choose Wallets in the account navigation and follow its proof flow.
window.location.assign('https://auth.sigmaidentity.com/account');
// For app sign-in, use OAuth + PKCE and a server-side callback.
// The wallet connection API is not an OAuth callback.window.ethereum is the injected browser wallet, so this path covers extension and in-app browser wallets. A Ledger or Trezor reaches it the same way, by being connected through one of those wallets rather than through its own desktop app.
What Sigma does with the signature
The public key is recovered from the signature and re-encoded as a Bitcoin address. Sigma never sees the private key, because it never needs to.
import { PublicKey } from '@bsv/sdk';
// Address encoding only: this does not connect a wallet or prove ownership.
// verifiedPublicKeyHex must come from a separately verified wallet proof.
const publicKey = PublicKey.fromString(verifiedPublicKeyHex);
const address = publicKey.toAddress();How this relates to Sign-In with Ethereum
If you have used Sign-In with Ethereum, the shape will be familiar. The user signs a message with a wallet they already control. Account login and backup unlock are separate steps with their own supported credentials. Two differences are worth knowing before you plan an integration.
The message format is Sigma's own
The connection message is a short Sigma specific string rather than the structured EIP-4361 message that SIWE defines. If you already parse SIWE messages server side, expect to handle this one separately.
You get an identity, not just a session
SIWE authenticates a session for one application. Sigma issues a BAP identity and tokens through its OAuth 2.1 provider, so the same identity can be presented to any other application that accepts Sigma, and it persists beyond the session.
Wallets you can connect
Recovery depends on the wallet
Follow the wallet’s supported backup and recovery process. Hardware devices preserve their key-custody boundary; connecting one does not require exporting its phrase or guarantee support for another chain.
Preserve connection-specific recovery material
Smart account signing differs from recovering an externally owned public key. Use an explicitly supported connector and retain its backup and metadata; an address alone cannot recover a signing key.